【ディープラーニング協会 E資格】受かるためにやるべきこと

2020/03/03 **ディープラーニング協会 E資格2020#1に合格**しました。
この経験を踏まえ、**E資格に合格するためには何をすべきか**について記載していきたいと思います。

ちなみに、私の得点率は以下の通りでした。

|応用数学|機械学習|深層学習|
|---|---|---|
|91.67%|76.92%|70.13%|

2020#1の**平均点**は

|応用数学|機械学習|深層学習|
|---|---|---|
|70.93%|63.80%|60.58%|
で、**合格率は68.04%**なので、**高得点ではないが、合格するには十分** 程度の得点率です。
この程度で良ければぜひ参考にして下さい。

合格ラインは公表されないのですが、得点率6割程度でも十分受かるのではないかと思います。
応用数学は問題数が少ないですし。
参考：[「E資格（エンジニア資格）2020#1」結果発表](https://www.jdla.org/news/detail/20200303001/)

#目次
1. [E資格に関する情報が少ない](#1-e資格に関する情報が少ない)
2. [出題形式](#2-出題形式)
3. [受講したJDLA認定プログラム](#3-受講したjdla認定プログラム)
4. [E資格に受かるためにやるべきこと](#4-e資格に受かるためにやるべきこと)
    1. [試験対策に特化した勉強ってしたくないよね](#4-1-試験対策に特化した勉強ってしたくないよね)
    2. [これさえやれば受かる！(はず)](#4-2-これさえやれば受かるはず)
5. [受験時の注意](#5-受験時の注意)
6. [E資格って取っても意味ない?](#6-e資格って取っても意味ない)
7. [より高得点を目指すためには](#7-より高得点を目指すためには)
   1. [知識系](#7-1-知識系)
   2. [実装系](#7-2-実装系)
8. [さいごに](#8-さいごに)

#1. E資格に関する情報が少ない
私がこの記事を書こうと思った背景として、**E資格に関する情報が少ない**というのが挙げられます。
私が過去の試験情報について調べ始めたのは試験本番1ヶ月程前でした。
しかし、**あまり情報がなく、非常に不安な気持ちになったのを覚えています。**

最終的に私がE資格の情報を得るために参考にしたサイトは以下の2つです。
①[JDLA　E2020シラバス](https://www.jdla.org/wp/wp-content/uploads/2019/09/JDLA_E%E3%82%B7%E3%83%A9%E3%83%90%E3%82%B9_2020%E7%89%88.pdf)
②[JDLA　E資格（2019年第１回）受験報告（仮）](https://qiita.com/shiroutosan/items/8bc90e7efd5b7fc840cd)

①は公式なので当然です。
E資格の出題問題は、**「シラバスより、JDLA認定プログラム修了レベルの出題」**と明記されています。
なのでシラバスを見て、**学習内容に抜け漏れがないかチェック**しました。
私はJDLA認定プログラムとして[zero2one](https://zero2one.jp/)を受講したのですが、
SSDなど、シラバスの範囲の一部が抜けていたので、自己学習で補完しました。

また、②についてはQiitaの記事なので公式ではないのですが、
出題のポイントが全問記載されており、実際の問題がイメージできました。
そして受験後見てみても、受験した年が違うので出題範囲の違いこそありますが、内容は大きくズレてはいないと思います。

#2. 出題形式
時間は120分で問題数は約100~110問。
つまり**1問1分**です。時間ないです。
ほとんど全て4択からの選択形式でした。2択はなし。
複数回答も記憶にはないです。(5つの選択肢から当てはまるものを2つ選べ的な。あったらゴメンナサイ。)
回答は全てPC上で行います。画面の説明もちゃんとあります。
また、固有値など計算問題も少し出題されましたが、紙とペンが机に置いてあるため、それを使って計算します。


#3. 受講したJDLA認定プログラム
私は[zero2one](https://zero2one.jp/)を受講しました。
![zero2one.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173913/2f879657-25c5-e7dc-c202-667cfdcc535f.png)

会社都合で受講したので、他の認定プログラムについては何があるかすら知らない状態です。
ですが、2020#1の試験に関しては、**zero2oneをちゃんとやっていれば合格できたのは間違いないです。**
また、zero2oneは**全てe-learning**なので個人によって合う/合わないはあると思います。

#4. E資格に受かるためにやるべきこと
##4-1. 試験対策に特化した勉強ってしたくないよね
E資格を受験するにあたり、試験に合格することが目的の人はあまりいないと思います。
E資格を受験する過程で**知識を得ることを目的としている**人がほとんどなのではないでしょうか。
とはいえ、せっかく受ける試験ですので当然合格はしたいと思います。
なので、**「これさえすれば試験に合格できる」、というものをお伝えしますので、自信をつけて頂いた後で自己研鑽のための勉強を是非実施してください。**
試験に受かるか不安だから、、という理由で試験対策に特化した勉強はあまりしたくないと思います。

##4-2. これさえやれば受かる！(はず)
とにかく、JDLA認定プログラムの<font color="red">**例題や模擬試験をオーバーフィッティングするまで繰り返し解いてください。**</font>
これで半分は点数取れるのではないかと思います。
残りの半分を勘で解いて1/4の確率で正解したとして、得点率は50+50*0.25=**62.5%**です。
**正直、試験に受かるだけならこれで受かってしまいます。**
実際は、わからない問題も4択ではなく2択か3択ぐらいにはなると思います。
そしたら得点率はもっとあがります。
逆に言うと、**落ちる人はtrain dataのAccuracyが低い人**なのではないかと思います。
それぐらい、**例題や模擬試験は重要**です。
そっくりそのままはなかなかないですが、<font color="red">**即答できるレベルの問題はかなり出題されます。**</font>
あとは、**シラバスを見て未学習部分について補完**してください。


#5. 受験時の注意
[2. 出題形式](#2-出題形式)のところでも記載しましたが、
**時間のわりに問題数が多い**です。
時間が120分で、問題数が100~110問程度なので基本**1問1分**です。

私の場合、**試験が終わったのが30分前**でした。
その後、**見直しも100問程度見る**のでけっこう時間がかかります。
**見直し1問につき10秒だと16.7分、1問につき20秒だと33.3分なので20秒かけると間に合いません。**
問題文と選択肢4つ読んだら10秒ぐらいかかります。
なので**考える時間は実質10秒以下**です。
つまりコードなんて読んでる時間はないです。
コードを読んだり**時間がかかるところはどんどん後回し**にしてください。
<font color="red">**確実に取れるところを取れば受かります。**</font>

その他いくつか追加してまとめると、

```
- 確実に取れるところを取る
- 時間がかかるものは後回し
- 正しいものを選べ、間違ったものを選べを見間違えない。
- 120分トイレに行けないので事前にいっておく、水分たくさん取らない
```
注意点として思いつくのは以上です。


#6. E資格って取っても意味ない?
資格あるあるの疑問だと思います。
もちろん国家資格ではないので、取ったからと言って特定の業務に従事できるようになるわけではありません。
取得することのメリットをいくつかあげておきます。
%は個人的な重みです。

- **E資格合格を目指し、勉強することで知識が得られる(90%)**
- **転職の際に一定の知識があることの証明ができる(9%)**
- **合格したら名刺にロゴを入れられる(1%)**
- **会社によってはインセンティブがあるかも(0%)**

私の場合、業務でディープラーニングを使ったことがなく、
読書とパッケージを使った簡単な実装ぐらいしか経験がなかったので
ディープラーニングの知識を少し深められたのは非常に良かったです。

理解の度合いとしては、こういうのを見せられた時に
![GRU.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173913/0817e51f-c77c-eeff-df0b-757762d3ea09.png)
**は？意味不明すぎ。**
だったのが、
**あーそういうことね。**ぐらいにはなります。

だいぶ適当でしたが、一つ言えることは、今後どんどん新しいアルゴリズムが出てくると思います。
E資格を通して知識を得ることで、**それを学習した際の理解の速さ/深さが変わってくる**と思います。

#7. より高得点を目指すためには
これまでは受かるためにどうするか、という観点で色々記載してきましたが、
ここでは高得点を目指すためにどうするか、について記載したいと思います。

何度も記載していますが、E資格はとにかく**時間が足りない**です。
なので、**高得点を取るためには知識である程度の問題を即答し、
実装系の問題に時間をかける必要がある**と思っています。
知識系・実装系それぞれについて高得点を目指す方法を記載していきます。

##7-1. 知識系
**①Goodfellowの「深層学習」を全部読み、理解してください。**
E資格はGoodfellow本を参考に作っている節がかなりあります。
Goodfellow本で使われている日本語訳と同じ単語がE資格にも出てきたり(「不完備な⾃⼰符号化器」など)
松尾先生も監訳していますので、E資格の作問時にかなり参考にしていると思います。
**そもそも良本ですし、全部読むべきです。**

**②シラバスに書いてあるもののうち、新しめのアルゴリズムの理解を深めてください。**
シラバスにはいくつか新しめのアルゴリズムが記載されていますが、Goodfellow本には新しめのアルゴリズムは載っていないですし、場合によってはJDLA認定プログラムでも説明していないアルゴリズムがシラバスに載っている可能性があります。
そこについては**論文を読むなり色んな記事を読むなり自己学習するしかない**です。
ただ、1,2年前レベルで新しいアルゴリズムは出なかったので、
それ以前のアルゴリズムであればネット上に良記事がたくさんあるかと思います。私はそこで学習しました。
2020#1(2/22)の試験では、**efficientnetやBERTは範囲外**でした。

##7-2. 実装系
実際の試験では、VScodeのスクリーンショットが貼ってあり、Pythonコードの穴埋め問題が出題されますが、**ここでもアルゴリズムの知識が問われます。**
<font color="red">**知識系では「正しい数式を選べ」だったのが、実装系では「正しい数式を正しくコードに落としたものを選べ」に置き換わる**</font>感じです。
もちろん**簡単な実装系の問題もあります**が、**高得点を取れるか取れないかの境目は知識+コードの問題で正解できるかどうか**だと思います。しかも時間がない中で解く必要があります。

ここで正解できるためには、[7-1. 知識系](#7-1-知識系)を読んで知識を得た上で、
**axis=0かaxis=1の違いを正しく認識できるレベルで時間をかける必要があります。**
axis=0、axis=1違いの問題だけで3問ぐらい出た気がしますが、
私はそこまで追う時間がなく、適当に答えました。。


#8. さいごに
最後に、E資格受験直後のtwitterの阿鼻叫喚をご覧ください。
![受験直後.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/173913/912c61f6-39b5-668f-68b4-b065a328142a.png)
確かに、受験直後はこういう気持ちになります。
また来年か、、って気持ちになります。

ただこんなツイートしつつ、7割の人は受かってますので。。
というと3割は落ちるのか・・と不安になる人もいるかもしれませんが、序盤に記載した通り、**JDLA認定プログラムの例題や模擬試験をオーバーフィッティングしていればほぼほぼ受かります。**「試験に合格する」にはそれに尽きます。

それでは、皆様の健闘を祈ります。