E資格2020#1合格体験記

# E資格2020#1を受験してみて

2020年2月21、22日に行われたE資格試験を受験してきました。
3月3日に結果が発表され、無事合格していました！（嬉）
合格通知のメールには各分野でどれくらいの得点率だったかが記載されており、私の結果はこんな感じでした。
■分野別の得点率
応用数学：91.67%
機械学習：92.31%
深層学習：76.62%

初受験にしては割と取れたほうなのでは、、！
しかもAIの事前知識もなく、Pythonなんて触ったこともなかったのに。
さらに言うと、本腰入れた勉強は2か月前に急いでスタートしたのに。

そんなゼロスタートの僕でもなんとかなったので、これから受験される皆さんも頑張り方次第でなんとかなるはずです！
※ちなみに、僕は特別頭がいいわけではありません、、。

それでは今回の受験を踏まえて、僕なりにE資格を受けるにあたってどういうことに注意して勉強すべきなのかを共有していきたいと思います。


## 僕の勉強開始前のスペック
大学卒業後、そのまま今のSIer企業に勤めて3年目。
アプリ開発系の部署で約1年間コーディングをしてきました。

開発言語はJavaやVB.NET、C#、PHP等。どれも薄く広くという感じで、簡単なコーディングはできるレベルです。

AIの知識なし、Pythonも名前を耳にしたことがある程度。
ディープラーニングって実際なにすんの、、？状態。
数学は高校の時の知識がすっかり抜けていました。


## 受験までのスケジュール
2019/11上旬　部長に「E資格トライアル申し込んでおいたから頑張ってね」と僕の意思も確認せずに急に開始を宣言される。

2019/11下旬　JDLA認定プログラムの講習がスタート。全６回。

2019/12　　　JDLA認定プログラムの講習を受ける。自宅では講習で出された課題をこなす。
　　　　　　　この時はまだ課題以外の勉強はしていなかった。

2020/1　　　 正月休みを使って認定プログラムの修了課題に取り組む。課題はIrisデータを使って多クラス分類せよ、というもの。
　　　　　　　これがなかなかうまくいかなくて、めっちゃ焦る。
　　　　　　　あれ？講習受けてるだけじゃあまり身に付いてない、、？と気づく。
　　　　　　　書籍「ゼロつく」の①②を急いで購入する。

2020/01中旬　認定プログラムの会社から例題が提供される。
　　　　　　　え、全然講習でやってない内容ばっかりじゃん！！と、自主学習がめっちゃ必要なことに気づく。
　　　　　　　本気で勉強開始。（何をしたかは後述します。）
　　　　　　　平日は3～4時間、休日は6～9時間くらい近所のファミレスで勉強。

2020/02/22　E資格受験。

## どんな勉強をしたのか
### ①例題を完答できるようにする
まずは自分が受けている認定プログラムの会社から公開されている例題をすべて答えられるようにすること。これが基本的なベースです。

試験問題の中には例題の通りに出題されることもあります。
あ！これ例題で見たやつだ！って問題が何問かありました。

例題通りじゃなくても、例題を解答できる知識があれば答えられる問題も多々あります。

僕は例題を4周くらいしました。理解が難しい問題は最悪答えを覚えてしまう、でもいいと思います。

応用数学は例題が解ければ大丈夫なレベルです。


### ②例題の答えだけではなく問題文にも着目する
例題を繰り返し行っていると、答えは完璧に答えられるようになってきます。
しかし、繰り返すうちに無意識的に問題文を読まなくなります。

ただ、試験では例題の問題文の中身もちゃんと把握してないと答えられない場合があります。

例えば・・・
MobileNetはDepthwise(空間方向)とPointwise(チャネル方向)に畳み込みを行う。
それぞれの式を答えよ。

という例題があったとします。
勉強中は、あーはいはい、これね、といった感じでしっかり問題文を読みませんでした。

しかし試験ではこう聞かれました。
MobileNetの空間方向とチャネル方向の式を答えよ。

これは、Depthwiseが空間方向で、Pointwiseがチャネル方向だよなっていう知識がないと間違えてしまいます。
僕はDepthwiseの式はもちろん答えられます。例題でも聞かれているからです。

しかしDepthwiseが空間方向なのかチャネル方向なのかはあやふやでした。例題で問題文にさらっと書かれているけど問いとして聞かれていないからきっちり覚えていませんでした。

**例題で問題文に書かれているからといって、試験でも問題文に書かれているとは限らない**ということです。
なので問題文の内容も聞かれて答えられるようにしておく必要があります。


### ③数式を覚える
皆さんは難しい数式を見て理解できますか？

僕は理解できない数式も多かったし、論文にまで目を通してしっかり理解する時間と余裕がありませんでした。
※本当は理解できたほうが良いし、理解できなければいけいないのは分かっていますが、
それはE資格に受かった後で、ということにしました(笑)

まずはE資格に合格する、という目的の為だけであれば、**数式は暗記**してください。
理解できない以上、合格する為にはそうするしかないです。
試験では理解できているかどうかではなく、答えが合っているかどうかなので。

Numpyのコードは暗記しなくてもいいです。
数式が分かっていれば、あとはコード化すればいいだけなので。

公式の証明も覚えなくていいです。公式の最終系しか出題されないので。

Q学習の更新式や、方策勾配定理の公式なんかは必須です。
最適化だとSGDからAdamまで、何が出題されても答えられるようにしておきましょう。
※2020#1ではAdamが出題されました。

プラスやマイナス、2乗の位置も狙われやすいので完璧に覚えてください。

暗記していれば試験で5秒で即答できますよ！


### ④ゼロつく①②を読む
散々たくさんの方に言われていますが、「ゼロから作るDeepLerning」という本はE資格受験の勉強に必須だと思います。

コードはNumpyベースで紹介されているし、初心者でもわかりやすいようにとても細かく解説してくれています。

特に①、②はE資格の出題範囲に入っているので、この２冊はオススメです。
僕はim2colとかLSTMとかはこの本で理解しました。


### ⑤先人たちの声を聞く
「E資格 合格体験記」等で検索するといろんな方がE資格の情報を上げてくれています。
僕はその記事を参考にして勉強してました。

特に**こんな問題が出たよ、と教えてくれている記事は必読**です。

シラバスには載っていないけど、オッズとやらの式が出たり、サポートベクターマシーンの問題ではカーネル法まで出るなど、
めっちゃ重要な情報です！実際2020#1も出題されました。僕はその記事通りに勉強していたので回答することができました。

まだ数回しか実施していない試験ですし、情報は多いに越したことはないので、
ネットで色々な情報を収集して対策しましょう。

僕が参考にしたオススメの先人たちの声
・[JDLA　E資格（2019年第１回）受験報告（仮）](https://qiita.com/shiroutosan/items/8bc90e7efd5b7fc840cd)
・[JDLA E資格の受験体験記（試験問題・勉強法・難易度・感想など）](https://www.book-buku-bucky.com/entry/E%E8%B3%87%E6%A0%BC%E3%80%81%E5%8B%89%E5%BC%B7%E6%B3%95%E3%80%81%E9%9B%A3%E6%98%93%E5%BA%A6%E3%80%81%E6%84%9F%E6%83%B3%E3%81%AA%E3%81%A9)
・[JDLAのE資格を受験してみた！ ディープラーニング新資格 受験レポート【2018年9月】](https://mlaym.hatenadiary.jp/entry/2018/10/01/131745#%E5%AE%9F%E9%9A%9B%E3%81%AE%E8%A9%A6%E9%A8%93%E3%81%A7%E5%95%8F%E3%82%8F%E3%82%8C%E3%81%9F%E3%81%93%E3%81%A8%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88)
・[JDLA Deep Learning for ENGINEER 2019#2 (E資格)](https://qiita.com/masahiro-t/items/5996ea085b1e1801a971)

## おわりに

個人的にE資格を受けてみて、**どれだけ暗記しているか**が大事だなと思いました。
数式をはじめ、暗記していれば即答できる問題も結構あります。

覚えた数式を使ってこの問題を解け、という問題はほとんど出ないです。
そう考えると、数式の使い方なんか知らなくても**形を覚えたもん勝ち**っていう感じですよね。

Numpyの実装力も必要、と言われていますが、個人的にそんなことなかったなと思います。
数式をNumpyで表記できればいいので、その為のめっちゃ基本的な実装力が必要ってことでしょうか、、？


それでは試験本番まで勉強頑張ってください！