mlaym’s blog

機械学習、データ分析のお仕事をしていますので、それらについて。

JDLAのE資格を受験してみた! ディープラーニング新資格 受験レポート【2018年9月】

f:id:mlaym:20180930071040j:plain

JDLA(日本ディープラーニング協会)のE資格の試験が、9月29日(土)に初めて行われました! 

第1回ということで過去問もなく情報が少ない中でしたが、受験してきましたのでそのレポートを書きたいと思います。 

 

日本ディープラーニング協会とは

ディープラーニングを中心とする技術による日本の産業競争力の向上を目指す」ことを目的に活動している一般社団法人です。
東大の松尾先生をはじめ、国内の企業や有識者の方が参画されていますね。

一般社団法人 日本ディープラーニング協会 Japan Deep Learning Association

協会では、人材育成として2つの検定試験を行っています。

  • G検定(ジェネラリスト)
  • E資格(エンジニア)

 

 

 

E資格の試験概要

概要 ディープラーニングを実装するエンジニアの技能を認定する
受験資格 JDLA認定プログラムを修了していること
試験方法 120分の会場試験にて、小問106問の知識問題(多肢選択式)
試験会場 全国の指定試験会場
出題範囲 シラバスを参照
試験日 2018年9月29日(土) 13:00または15:30開始
受験料 ・一般 32,400円
・学生 21,600円
・JDLA正会員・賛助会員 27,000円
申し込み 2018年9月1日(土)〜9月22日(土)
合格発表 2018年10月12日(金)

 

mlaym.hatenadiary.jp

申し込み方法

認定プログラムを終了すると、JDLAからメールで受験申込コードが届きます。それをもって、CBT-Solutionsから申し込みます。決済はクレジットカードが使えました。
なお、受験資格は認定プログラム修了後の2年間有効です。

試験方法

PCを使った多肢選択式で全て4択問題で、複数選択する問題もなかったと思います。
また、数値を入力するような問題はありませんでした。

受験にかかる費用

JDLAの認定プログラムの受講料がかかるため個人では敷居が高いかもしれません。
最も安いプログラムを受講したのですが、15万円かかりました。
受験料も一般で32,400円と割高です。
私も会社を説得して受験することができました。

試験会場

当初は東京、大阪の2カ所とアナウンスされていたのですが、最終的には全国各所で受験可能となりました。
Web申し込みの試験会場選択の時に初めて会場が分かったのですが、主要都市にはそれなりに会場が用意されたようです。
(これに関しては、なるべく事前にWebサイトへ情報掲載して欲しかったです。開始時刻も不明だったため移動手段や宿泊の見込みが立ちませんでした。)

難易度

試験の難易度は、IPAレベル3〜4になるとのことでかなり難しい試験だと思います。
ちなみにG検定(ジェネラル)の方は「ディープラーニングを事業に活かすための知識」を主眼としていて、IPAレベル1相当だそうです。

 

実際の試験で問われたこと(レポート)

知識を問う問題と、pythonとnumpyを使った実装を問う問題に大きく分かれます。

「知識があるだけでは意味がない、実装できなければ」

ということなのですね。

実装を問う問題では、途中まで示されるプログラムに合わせて空欄を埋める必要があり、丸暗記は通用しません。
numpyの基本的な配列操作については、習熟しておく必要があると感じました。 

試験問題はもちろんメモも持ち帰ることができず、具体的な例題とはいきませんが、以下、記憶を頼りにメモしていきます。

特異値分解

2×3の行列に対する特異値分解を手計算する問題が出ました。(試験開始直後にこの問題が現れるので、受験者がいっせいにマウスからペンに持ち換えるという光景となりました)
2番目の特異値だけが空欄となっていたため、実際には固有値の計算ができれば答えられたと思います。

f:id:mlaym:20181004093533j:plain

ちなみに、メモ用紙を使って手計算する必要があったのはこの一問だけでした。

サポートベクタマシン

サポートベクタマシンの一連の特徴を複数問にわたって詳しく問われました。サポートベクタ、カーネル法、境界線までの距離の数式など。

K−Means/K-Means++

K-Meanの実装について具体的に問われました。ほぼ認定プログラムの演習問題どおりの内容だったと思います。
K-Means++でのセントロイドの位置の初期化、numpyの乱数生成について知っておく必要がありました。

順伝播/逆伝播

行列の積の逆伝播の実装が出題されました。↓で紹介する「ゼロつく」や認定プログラムの演習で、計算グラフとあわせてしっかりと学んだところ。偏微分、連鎖律の理解も必要です。
仮に他の問題ができても、ここが分かっていないとE資格に合格してはいけないのではないかとすら思います。

f:id:mlaym:20181004094625p:plain

活性化関数

シグモイド、ソフトマックス、ReLU、Leaky ReLU、Maxoutについて問われました。問題文にはPReLUも登場。
ReLU、Leaky ReLUについてはnumpyによる実装を問われました。

正規化

平均を引いて、標準偏差で割るという標準化の数式が出ました。

ノルム

ノルムの一般形が問われました。L(N)ノルムの場合の数式です。

f:id:mlaym:20181002133336p:plain

正則化

L2正則化項の数式を答える問題が出ました。他にも全体的に正則化の理解が必要な問題が多いと感じました。

ドロップアウト

ドロップアウトの実装が問われました。ユニットの消去確率が変数としてある場合に、マスクを取得するためのソースはどうなる?というイメージ。

f:id:mlaym:20181002132744p:plain

また、ドロップアウトとアンサンブル学習の関係や、それってブースティングに近いの?といった知識も問われました。

AdaGrad

最適化アルゴリズムであるAdaGradの実装に関する問題です。
SGD、モメンタム、AdaGrad、RMSProp、Adamの一連のアルゴリズムの数式を押さえておく必要がありそうです。今後も順番に出題されるのではないでしょうか。

CNN/畳み込み

畳み込みに関しては全体的に深く問われました。それだけ現在の深層学習において重要事項なのでしょう。

  • 畳み込みの特徴
  • 畳み込み演算の実装
  • GoogLeNetの特徴
  • ResNetの特徴

ResNet登場前のモデルで層を増やしていった場合と、ResNetで層を増やしていった場合の学習曲線を見て、特徴を答える問題も出ました。

プーリング

プーリングは局所領域の位置ズレに対して頑健といった特徴や、numpyを使った実装などが問われました。

LSTM/GRU

特にGRUついて複数問にわたって詳しく問われました。
LSTMに張っていたので少し面食らいましたが、GRUもさらっとは押さえておいたのでなんとかなりました。(↓で紹介している「ゼロつく❷」の付録に説明がありますね)
あと、勾配クリッピングは勾配爆発と勾配消失とどちらに効く?というような知識も問われました。

Seq2Seq

モデル図を選択する問題が出ました。

f:id:mlaym:20181002131451p:plain

 

双方向RNN

同じくモデル図を選択する問題が出ました。こんな感じの。

f:id:mlaym:20181002132031p:plain

Attention 

まったくノーマークだったのですが、Global AttentionとLocal Attentionそれぞれについて、Contextベクトルを求める数式が問われました。

word2vec

word2vecについて詳しく問われました。
どのようなモデルか。学習によって得られるどの部分の重みを分散表現とするか。CBOWとskip-gramの違い。Negative Samplingなどの計算量を減らす工夫など。

物体検出

R-CNN、Fast R-CNN、Faster R-CNNのそれぞれの特徴について、さらっと問われました。
ここらは出そうと思ってYoLoも含めてかなり細かく押さえておいたので、ちょっと残念でした笑
また、なぜかSSDが講座等でも全く触れられないんですよね。試験でも問われることはありませんでした。

セグメンテーション

FCNについて問われました。
また、転置畳み込みの精度を改善する目的で行う後処理とは何かも問われました。知らなかったので消去法でいきましたが、「条件付確率場」が正解なのでしょうか。

オートエンコーダ/VAE

オートエンコーダの数式が問われました。
あとCVAEが選択肢にあったり、Reconstraction Errorを答えさせる問題もありました。

GAN/Conditional GAN

GANの特徴について問われました。Descriminatorの学習が進むと、D(G(z))は大きくなる?小さくなる?
また、Conditional GANのモデル図の選択問題が出ました。
他にも○○GANといった発展系ぽい選択肢が出てきましたが、私は知りませんでした。

識別モデル/生成モデル

識別モデル、生成モデルのそれぞれを表す条件付確率の式が問われました。

強化学習

Experience Replay、Target Q-Networkなどが問われました。
Target Q-Networkに関しては、価値関数を固定するとだけ理解していたのですが、2つある価値関数の片方を固定するの? 両方を固定するの?のように問われて迷いました。

 

今後の受験対策

受験対策本として私のオススメを3冊ご紹介します。

深層学習

公式にはアナウンスされていませんが、一部の認定講座では教科書として案内があったそうです。
内容的には読み応えがありすぎるのですが・・・笑、これ1冊を理解できるレベルであれば、十分に合格可能なんだと思います。あと実装力と。

by カエレバ

ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装

ライブラリを使用せずにゼロから深層学習を作って理解することがコンセプトで、E資格の趣旨と重なります。感動的に分かりやすい1冊で、認定プログラムもこの本の内容に沿っているように思います。
これを十分に理解することで、実装力の素地は固まるのではないでしょうか。
python基礎からパーセプトロンによるXORのおなじみの実装にはじまり、ディープラーニングの基本的な理論(順伝播、逆伝播)と実装、最適化手法、CNNや有名モデルの特徴まで網羅した内容となっています。

by カエレバ

ゼロから作るDeep Learning ❷ ―自然言語処理編

「ゼロつく」第2段は自然言語処理をテーマとして、言語モデル、RNNの実装を取り上げています。
これまた感動的に分かりやすく、word2vec、LSTM/GRU、Attentionといった試験でも問われた内容をとても詳しく解説しています。

by カエレバ

まとめ

事前にあった情報のとおり、難易度はかなり高いと感じました。
第1回の試験ということで情報も少なく、みなさん苦労されたようです。
私が受講した認定プログラムの運営者側でも少し混乱が見られましたし。

資格の認知度は当然まだ高くなく、今回の受験者数は全国で328人だそうです。資格を持っていること自体が企業や個人としてアピールになるように、今後のJDLAの活動に期待しています。

また、G検定(ジェネラル)とE資格(エンジニア)の合格者によるコミュニティもありますので、そこでの活動を広げていくこともきっと必要になってくるんでしょう。自分としてもお手伝いできればなと思います。

今後のE資格試験は、2019年2月23日、8月31日にそれぞれ予定されていまね。
それでは、第2回の試験会場でお会いしましょう・・・笑

追記(10/12)〜合格発表〜

無事合格しておりました (^_^)