*本記事は旧TechblogからCOLORSに統合した記事です。
目次
- 自己紹介
- E資格とは
- 試験に出題された内容
- 勉強方法
- 使用した参考書
- 受験した感想
- まとめ
自己紹介
こんにちは。株式会社エイアイ・フィールドのK.Tと申します。
前職ではソフトウェアエンジニアとして5年間パッケージソフト開発の仕事をしていました。現在は機械学習、ディープラーニングを用いたレコメンドエンジンの開発に携わっています。
先日 2020/2/22(土)に JDLA Deep Learning for ENGINEER (以下、E資格) を受験し、無事合格することができました。
今回は試験の内容や受験した感想について書きたいと思います。
E資格とは
日本ディープラーニング協会 (以下、JDLA) が提供している資格です。ディープラーニングを実装するエンジニアの技能を認定することを目的とした資格です。機械学習やディープラーニングの各種アルゴリズムの内容や実装について理解しているかどうかを問う試験となっています。
試験は年2回(2月、8月)行われ、受験するためには「JDLA認定プログラム」に認定された講座を受講し、受験資格を得る必要があります。過去の試験の合格率は60%から70%ほどだそうです。
JDLAについて
JDLAは日本社会におけるディープラーニングの活用の推進や人材の育成を目的として2017年に設立され、日本の人工知能研究の第一人者である松尾豊氏が理事長を務めています。ちなみにJDLAではE資格の他にもG検定という資格を提供しており、こちらはディープラーニングに関する基礎的な知識を問う内容となっています。
どんな人におすすめの資格か
機械学習やディープラーニングに関して、実装を含めた基本から理解したい人におすすめの資格だと思います。JDLAの認定講座を受講 + 試験に向けた勉強に取り組むことで、必然的にこの辺りの知識が身に付くと思います。
ひとつ難点をあげるとすれば、認定講座の受講にかなりのお金と時間がかかるため、受験までのハードルが高いことです。 幸いエイアイ・フィールドはE資格に合格すると、その受験料と認定講座受講料が支給されるのですが、すべて自費だったら正直受験していなかったと思います…。
ちなみに認定講座はいくつかの企業から提供されており、私は「AIジョブカレ」という講座を受講しました。講座は機械学習やディープラーニングの内容が基礎からわかりやすく簡潔にまとまっており、試験勉強の際にも役立ちました。
試験の形式
CBT形式で、全国にあるテストセンターでの受験となります。
試験時間は120分で、問題数は100問程度でした。
試験に出題された内容
E資格の出題内容は大きく分けて応用数学、機械学習、深層学習の3つに分かれています。それぞれの分野で、実際に試験に出題された内容は以下のような感じでした。うろ覚えな個所や間違っている部分もあると思いますが、受験予定の方の参考になれば幸いです。
応用数学
線形代数、情報量、確率の基本的な計算問題が出題されました。
- 線形代数: 2×2行列の固有値、固有ベクトル導出
- 情報量・KLダイバージェンス・エントロピーの計算
- 事前確率・事後確率の計算
機械学習
機械学習に関する問題もしっかり出題されました。
k近傍法については Python のソースコードの穴埋め問題が出題されました。
- ロジスティック回帰
- 主成分分析
- SVM(カーネルトリック)
- k近傍法 (実装)
- 混同行列
- 訓練誤差と汎化誤差の関係
深層学習
CNNに関する問題がやや多かった印象です。ネットワーク図やソースコードの穴埋め問題もそれなりに出題されました。ディープラーニングの各種アーキテクチャは、ネットワーク図とセットで覚えておくといいと思います。また、物体検出や機械翻訳などの評価指標の計算問題も出題されたため、主要なタスクの評価指標も確認しておくと良いでしょう。
- 誤差逆伝播法、計算グラフの穴埋め
- Adam(実装)
- 多層ニューラルネットワーク (実装)
- Layer Normalization
- 畳み込みの計算量
- ResNet
- MobileNet
- DenseNet
- Depthwise Convolusion, Pointwise Convolusion
- セマンティックセグメンテーション(U-Net)
- 物体検出(YOLO, SSD, IOU の計算)
- GRU (実装)
- 機械翻訳・BLEU の計算
- Attention(実装)
- Transformer
- GAN, DCGAN
- Q学習
- WaveNet
(実装)と書いてある項目は Python のソースコードの穴埋め問題です。これは Numpy を使用して実装した場合の適切なソースコードを問うものです。普段は scikit-learn や Keras などのライブラリ任せの部分も、計算の流れをある程度理解しておく必要があります。
受験時は問題をしっかり読んだため、かなり遅めのペースで回答していたと思いますが、全て問題を解き終わった時には残り時間は5分程度でした。ですので、時間制限が厳しい試験ではないと思います。また、一見わからない問題でも、問題文をよく読むと選択肢が2種類まで絞れるような場合もあったため、問題文はしっかり読むといいと思います。
勉強方法
年明けの1月中旬くらいから本格的に試験勉強を開始しました。E資格のシラバスに記載されている出題内容を確認し、各項目について一つ一つ勉強していきました。項目について勉強する際は、基本的には JDLA 認定講座の教材か、以下で紹介している機械学習やディープラーニングに関する書籍を参照し、載っていない項目に関しては Qiitaなどの WEB サイトのまとめ記事を活用しました。勉強時間は総計で50-60時間程度だったかと思います。
使用した参考書
勉強の際に主に使用した参考書を紹介します。
応用数学
JDLA 認定講座の教材のみで、特に参考書は使用しませんでした。
機械学習
- [第2版]Python 機械学習プログラミング 達人データサイエンティストによる理論と実践
- 機械学習に必要な知識が一通りまとまっている良書です。
- 機械学習のエッセンス -実装しながら学ぶPython,数学,アルゴリズム
- 機械学習に必要なPython や数学の解説が丁寧です。機械学習アルゴリズムの Numpy による実装方法も参考になります。
深層学習
- ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装
- ディープラーニングの基礎とCNNについての内容が主です。超大事です。
- ゼロから作るDeep Learning ❷ ―自然言語処理編
- 自然言語処理とRNN, Attention など、発展的なディープラーニングを主に扱っています。
上記の本はどれも理論だけでなく、Python によるアルゴリズムの実装まで乗っているため、非常に参考になります。特に「ゼロから作る Deep Learning」シリーズは解説もわかりやすくおすすめです。試験のソースコード穴埋め問題も、この本のソースコードほぼそのままという問題もありました。git で公開されているソースコードを全部暗記するくらいの気持ちでやるといいと思います。
受験した感想
機械学習やディープラーニングに関しては以前から勉強していたのですが、E資格受験にあたり基本的な部分から勉強することで、アルゴリズムに関する知識が定着したと思います。逆誤差伝搬法など何となく理解していた部分も、勉強しなおすいい機会になり良かったです。願わくばもう少し受験のハードルを下げてほしいと思います…。
まとめ
E資格の勉強を通して機械学習やディープラーニングに関する基本知識が付けられたと思うので、今後は kaggle などのコンペや論文の実装に挑戦するなどして、さらに知識を深めていきたいです。 E資格はまだ新しい資格で情報も少ないため、本記事が受験を検討されている方の参考になれば幸いです。