JDLA E資格受験 2020#1 まとめ＆復習

2020年2月21日にE資格を受験しました。
~~現時点で合否は不明ですが~~、(※合格してました 2020/03/05追記)覚えている範囲で問題のまとめ&復習をします。

下記記事(2019年#1試験記録)を参考にすると、昨年の問題と重複する設問も結構あったようです。
[JDLA　E資格（2019年第１回）受験報告（仮）](https://qiita.com/shiroutosan/items/8bc90e7efd5b7fc840cd)

先の記事は試験概要も丁寧にご説明してくれています。
これから受験される方も是非参考にしてください。

# 設問34問
覚えてるのは30問ほど
各設問毎に小問が3~4問あります。合計104問ぐらい。

なお記載の順番と実際の出題の順番はバラバラです。
去年も出てるっぽい問題には★を付けました。


##1. 確率分布★
正規分布を仮定した最尤推定に関連した問題。

下記記事の内容が近い。
[【機械学習ステップアップ】確率モデルの考え方](https://www.hellocybernetics.tech/entry/2018/07/16/234815)

本問題に限らず、
上記ブログは機械学習まわりの数式と概念の理解に非常に助けになりました。

##2. ResNet★
Resnetの層の深さを変えた場合の、ImageNetとCifer-10の訓練誤差と汎化誤差について。
ほぼグラフを読み解く問題でしたが、知識問題も1問あった気がします。

下記記事の内容が近い。
[ディープラーニング ResNet のヒミツ](http://terada-h.hatenablog.com/entry/2016/12/13/192940)


##3. GRU★
・各ゲートの名称(どっちがresetでどっちがupdateか)
・RNNと比較したときの特徴とか
・実装①weightを行列で一括処理する書き方
・実装②GRUの隠れ状態の出力

下記書籍のLSTM、GRU実装あたりの内容。
[(書籍)ゼロから作るDeep Learning2](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E7%B7%A8-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873118360/ref=pd_sbs_14_img_0/356-9556196-1851205?_encoding=UTF8&pd_rd_i=4873118360&pd_rd_r=698cabf4-c1f4-449f-8b1a-9299a83bcb7d&pd_rd_w=YMSjV&pd_rd_wg=PqaDj&pf_rd_p=ca22fd73-0f1e-4b39-9917-c84a20b3f3a8&pf_rd_r=YB4CQC09QK418CA529N8&psc=1&refRID=YB4CQC09QK418CA529N8)

##4. グラフ理論と連鎖率
・Affine layerの誤差逆伝搬
・単純な連鎖率

下記書籍読んでれば解けます。
[(書籍)ゼロから作るDeep Learning](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%A3%85-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873117585)


##5. Adagrad
実装問題ですがAdagradの定義式を覚えてないと解答不可。
自分は忘れてました。
RMSPropとかもっと覚えにくいのも出るっぽいので一通り復習した方が良いです。

[深層学習の最適化アルゴリズム](https://qiita.com/ZoneTsuyoshi/items/8ef6fa1e154d176e25b8)


##6. 中間層が2層のDNN★
・重みの初期化
・逆伝搬時のバイアスの計算
その他4問ほどあった気がする。

ほぼ実装問題。下記書籍読んでれば解けます。
[(書籍)ゼロから作るDeep Learning](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%A3%85-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873117585)

##7. Transformer
・self Attentionがネットワーク内のどこに使われているか
・Transformerの嬉しさ(⇒並列計算ができる)
・Transformerの実装

初見でしたが、問われたのはAttentionの実装部分だけなので下記書籍内容で対応可。
[(書籍)ゼロから作るDeep Learning2](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E7%B7%A8-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873118360/ref=pd_sbs_14_img_0/356-9556196-1851205?_encoding=UTF8&pd_rd_i=4873118360&pd_rd_r=698cabf4-c1f4-449f-8b1a-9299a83bcb7d&pd_rd_w=YMSjV&pd_rd_wg=PqaDj&pf_rd_p=ca22fd73-0f1e-4b39-9917-c84a20b3f3a8&pf_rd_r=YB4CQC09QK418CA529N8&psc=1&refRID=YB4CQC09QK418CA529N8)

##8. Segmentation
・U-NetとかFCNとかのモデル構造の特徴

まったく覚えておらず解けませんでした…
[U-Net：ディープラーニングによるSemantic Segmentation手法
](https://blog.negativemind.com/2019/03/15/semantic-segmentation-by-u-net/)

##9. DQN★
・Experience Replayの特徴
・Target-Q-Networkの固定の仕方（２つある価値観数のどちらを固定するか）
・Bellman最適方程式

[最近のDQN](https://www.slideshare.net/mooopan/dqn-58511529)

##10. 識別関数、識別モデル、生成モデル★
・識別モデルの代表例
・k-meansは生成モデルかどうか

下記記事の内容をそのまま理解しておけば解けました。
[識別関数、識別モデル、生成モデルの違いを解説](https://www.hellocybernetics.tech/entry/2017/06/08/010513)

##11. CNN★
・畳み込みの一般化数式
・層の深さとパラメータ数、受容野

下記書籍に「層を深くするモチベーション」について記載がありますが、そこら辺を問われました。
[(書籍)ゼロから作るDeep Learning](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%A3%85-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873117585)


##12. カーネル法★
・計算量は何に依存するか
・Φの内積うんぬん
・カーネルトリックをよく使う機械学習(svm)
これもうろ覚えであんまりできなかった…。理論を理解してないと答えられない問題でした。

あまりいい参考文献を知らないので知っている方教えてください。

##13. ロジスティック回帰★
・シグモイド関数の定義式
・損失関数の定義式
・オッズがどうなるか

オッズとか覚えてませんでしたが、定義式が書いてあったので解けたと思います。
[ロジスティック回帰分析の例や説明変数を解説！](https://to-kei.net/regression/logistic_regression/)

##14. 情報理論基礎★
・自己情報量の定義式
・情報エントロピーの定義式
・カルバックライブラーの定義式

こちらが非常にわかりやすかった。
[情報理論の基礎～情報量の定義から相対エントロピー、相互情報量まで～](https://logics-of-blue.com/information-theory-basic/)

##15. 物体検出★
・IoUの定義
・rcnnの処理手順
・yoloがなぜ早いか

こちらの記事を読んでおけば対応できます。
[物体検出についての歴史まとめ](https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9)

##16. kNN(k近傍法)
・最近傍のk点を選ぶ実装
・kの数を変えるとどんなグラフになるか

k近傍法が「周辺k点の多数決」である情報を知っていれば解けます。

##17. 次元削減手法★
・線形な次元削減手法を選ぶ(⇒主成分分析)
・主成分分析はどんな処理に帰結するか(⇒分散共分散行列の固有値問題)
・非線形な次元削減手法を選ぶ(⇒オートエンコーダ)

ここら辺の内容。
[自己符号化器（オートエンコーダ）と主成分分析との関係](https://www.hellocybernetics.tech/entry/2016/11/21/041607)

##18. mobilenet
・Depthwise Separable Convolutionの性質
・空間方向、ch方向どちらがDepthwise、Pointwiseか
・入出力のパラメータ数

知りませんでした。
[MobileNet(v1,v2,v3)を簡単に解説してみた](https://qiita.com/omiita/items/77dadd5a7b16a104df83)

##19. wavenet
・diluted convolutionを使う利点(受容野が広がる)

他にもモデル上のテクニックを聞かれましたが失念しました。
[WaveNetまとめ](https://qiita.com/MasaEguchi/items/cd5f7e9735a120f27e2a)

##20. バッチ正規化★
・Batch Normalizationの特徴
・Layer Normalozationの特徴

Batch Normalization以外詳しく学んでなかったので困りました。
[Batch Normalizationとその派生の整理](https://gangango.com/2019/06/16/post-573/)

##21.  正則化★
・L2正則化の実装(誤差逆伝搬もあり)
・Lpノルムの定義式
・Lpノルムの性質、別名

下記解説ぐらいの内容は覚えておいた方が良いかも。
[過学習と正則化](https://www.jstage.jst.go.jp/article/bjsiam/28/2/28_28/_pdf/-char/ja)

##22. GAN★
・GeneratorとDiscriminatorの関係(D(x)とD(g(z))の関係)
　⇒学習が進むとどうなるか
・Conditional Gan、DCGANの性質

ここら辺の内容。
[はじめてのGAN](https://elix-tech.github.io/ja/2017/02/06/gan.html)

##23. 固有値、固有ベクトル計算★
2×2の行列問題でした。
[JDLA E資格対策　応用数学編](https://qiita.com/arajiru/items/66b38a19a00ea001882e#%E7%A2%BA%E7%8E%87)

##24. BLEUスコア
・brevity penaltyの定義式
・他の評価手法と比較した特徴、優位性

「他の評価手法と比べた優位性」みたいなところは頻出ですね。
[自然言語処理における評価法のまとめ](https://qiita.com/inatonix/items/84a66571029334fbc874)

##25. オートエンコーダ★
・一層の自己符号化ネットワークの数式表現
・不完備な符号化とはどんな定義か

[DeepLearning 14章 自己符号化器](https://www.slideshare.net/hironokawashima/deeplearning-14)
[自己符号化器（オートエンコーダ）と主成分分析との関係](https://www.hellocybernetics.tech/entry/2016/11/21/041607)

##26. 汎化誤差と訓練誤差★
・教師データ・テストデータとの関係、過学習との関係等

バイアス、バリアンス、ノイズあたりの話です。下記記事の内容が近い。
[機械学習とは何か](https://logics-of-blue.com/%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%8B/)

##27. 学習方法★
・半教師あり学習、マルチタスク学習等の性質等

##28. 混合行列
・正答率の定義とか
[【超初心者向け】F値のくどい解説とPythonでの実装例。](https://tips-memo.com/python-f-measure)

##29. 学習時のデータの取り扱い方法★
・Holdout法、k分割交差検証法等の定義と性質

##30. 方策勾配法★
・定義式と性質について
・SARSAとの関連

下記内容くらいです。
[方策勾配定理のすっきりした証明](https://qiita.com/itok_msi/items/3c278e06cf2b0bb32f4e)
[深層強化学習アルゴリズムまとめ](https://qiita.com/shionhonda/items/ec05aade07b5bea78081)

# おまけ
・参考にした書籍
[ゼロから作るDeep Learning](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95Python%E3%81%A7%E5%AD%A6%E3%81%B6%E3%83%87%E3%82%A3%E3%83%BC%E3%83%97%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E7%90%86%E8%AB%96%E3%81%A8%E5%AE%9F%E8%A3%85-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873117585)
[ゼロから作るDeep Learning2](https://www.amazon.co.jp/%E3%82%BC%E3%83%AD%E3%81%8B%E3%82%89%E4%BD%9C%E3%82%8BDeep-Learning-%E2%80%95%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E7%B7%A8-%E6%96%8E%E8%97%A4-%E5%BA%B7%E6%AF%85/dp/4873118360/ref=pd_sbs_14_img_0/356-9556196-1851205?_encoding=UTF8&pd_rd_i=4873118360&pd_rd_r=698cabf4-c1f4-449f-8b1a-9299a83bcb7d&pd_rd_w=YMSjV&pd_rd_wg=PqaDj&pf_rd_p=ca22fd73-0f1e-4b39-9917-c84a20b3f3a8&pf_rd_r=YB4CQC09QK418CA529N8&psc=1&refRID=YB4CQC09QK418CA529N8)

言わずと知れた名著ですが、E資格対策の観点から言うと
実装のテクニックと各モデルの弱点、改善点が概念から解説されている点がありがたいです。

・問題内容について
定義式の暗記が必要な問題は2割ほど。
あとは概念を理解していれば正解を選べる問題が多かったです。
特に実装に関しては、コードにコメントもしてあるので、「ゼロつく」を参考に実装したことがあるレベルならじっくり読めば答えられると思います。

# その他参考リンク
[第三回JDLA e資格に合格したので感想を書く](https://qiita.com/picklep22716972/items/d0d6a4f2a9bbfb700321)

# 受験結果(2020/03/05追記)
合格してました。以下成績です。
応用数学：83.33%
機械学習：69.23%
深層学習：68.83%

※受験者平均
応用数学70.93%
機械学習63.80%
深層学習60.58%
[E資格（エンジニア資格）2020#1」結果発表](https://www.jdla.org/news/detail/20200303001/)

合格率68%なので平均以上取れてれば十分合格できるみたいです。