E資格合格のために勉強したことのまとめ

この度E資格2021#1に合格しました。
これで、以前取得したG検定と合わせて日本ディープラーニング協会の資格を取り切り一つのよい区切りになったと感じたので、これまでに自分が勉強した内容の振り返りをしようと思いこの記事を書くことにしました。

# 試験結果の振り返り

## 自分の分野別の得点率

**■分野別の得点率**
応用数学：83 ％
機械学習：92 ％
深層学習：79 ％
開発環境：92 ％

**[感想]**

合格ラインは開示されていないものの大体7割程度という話なので、それに比べると余裕のあるスコアで合格できたという感じです。ただ、深層学習の分野に関して実際に試験を受けてみてまだ自分の理解が甘いなと感じた点がいくつかあったので、もう1度復習・kaggeleやsignateなどで実装して試してみるなどしてより理解を深めていこうと思いました。

## 試験対策に関して

今回のE資格試験で試験対策を集中的に行った期間は１か月程度でした。そして、その１か月の中で平日は仕事終了後余力のある日(週1～2日)に1～2時間程度、休日に4時間程度の時間を試験対策に費やしました。
また、主に試験対策のコンテンツとして活用したのは「徹底攻略シリーズ」の問題集（後述）で、これを繰り返し解いて理解を万全にするという対策をしました。

# 学習したコンテンツに関して
ここでは、E資格・G資格取得までに自分が学習したコンテンツに関して「E資格の試験対策としての役に立った度」・「読破状況」・「難易度」・「感想」について述べたいと思います。
## ざっくりとした基準
* 役に立った度
    * ★1～★5の5段階
* 難易度
    * 初級  
      機械学習・深層学習の入門的な内容を学ぶためのコンテンツ。 
      プログラム・アルゴリズムに関する本の場合はpythonの基本的な文法が分かっている、理論に関する本の場合は微積・線形代数の基本的な計算ができるレベルの人を想定。     
      ざっくりと言ってG検定取得を目指す人向け。
    * 上級
      深層学習の各分野における発展的なモデルについてや、機械学習・深層学習の理論的な基礎を学ぶためのコンテンツ。    
      初級を前提知識とする。理論に関しては微積・線形代数の十分な知識を、プログラミングに関してはpythonで簡単なコードが自力でかけるレベル(atcoder beginner contestのA～B問題)を自力で書けるレベルを想定。  
      ざっくりと言ってG検定取得してからE検定取得までで必要な知識を学びたい人向け。
    * 超上級  
      E資格取得するにあたって必須とまでは言えないレベルの発展的な内容。  

## 学習したコンテンツ
* 『[徹底攻略ディープラーニングE資格エンジニア問題集 徹底攻略シリーズ](https://www.amazon.co.jp/徹底攻略ディープラーニングE資格エンジニア問題集-徹底攻略シリーズ-スキルアップAI株式会社-小縣-信也-ebook/dp/B08H79Y7X7)』
[![E_徹底攻略.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1024164/0c06d395-958a-da1a-b10b-c5f47078ca03.jpeg)](https://www.amazon.co.jp/徹底攻略ディープラーニングE資格エンジニア問題集-徹底攻略シリーズ-スキルアップAI株式会社-小縣-信也-ebook/dp/B08H79Y7X7)

    * 役に立った度：★★★★★
    * 難易度：上級
    * 読破状況：一通り読破。その後繰り返し解いた。
    * 感想  
      「試験対策に関して」の項でも述べたように自分は試験対策としてこの本を主軸に取り組みました。この本は、深層学習の基礎と各分野の概要を「[ゼロから作るＤｅｅｐ　Ｌｅａｒｎｉｎｇ](https://www.amazon.co.jp/ゼロから作るDeep-Learning-―Pythonで学ぶディープラーニングの理論と実装-斎藤-康毅/dp/4873117585)」(後述)や「[直感 Deep Learning](https://www.amazon.co.jp/Deep-Learning-―Python×Kerasでアイデアを形にするレシピ-Antonio-Gulli/dp/4873118263)」(後述)で一通り学んだ後のステップとして学ぶべき深層学習の各分野での発展的なタスク（CNNの物体検知、etc...）やモデル(自然言語処理のTransformer、ets...)に関して網羅的に学習することができるという印象です。これを読むことで、深層学習を使ってどのような問題が解決できるか？そしてそのために必要な準備や実装コストは？といったことに関してある程度イメージが着くようになるかと思うため、深層学習の入門的な内容を一通り学んだ後自分が注力するための分野を決める指針を得るために１度読んでみるといいと思います。ただ、強化学習・生成学習の２分野に関しては試験対策という面ではこの本で十分だと思うのですが、実際に実装・既存モデルをfine tuneして使ってみようと思うとこの本からそこに至るまで大きなギャップがあるように感じました。
また、**E資格はシラバスの改定頻度が早いため最新版を試験対策として使うことを推奨します。**
* 『[ゼロから作るDeep Learning ―Pythonで学ぶディープラーニングの理論と実装](https://www.amazon.co.jp/ゼロから作るDeep-Learning-―Pythonで学ぶディープラーニングの理論と実装-斎藤-康毅/dp/4873117585)』
[![ゼロ作.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1024164/dd09d488-c16d-0b1d-3b7c-c03487f84922.jpeg)](https://www.amazon.co.jp/ゼロから作るDeep-Learning-―Pythonで学ぶディープラーニングの理論と実装-斎藤-康毅/dp/4873117585)
    * 役に立った度：★★★★★
    * 難易度：初級
    * 読破状況：6章途中まで読了。
    * 感想  
      通称「ゼロ作」、深層学習の入門書として有名な本の１つ。ニューラルネットワークの仕組みを実装しながら理解することができる。自分は途中までしか読めていないが、6.1章まで読むことでニューラルネットワークの基本的な仕組み・概要は理解でき、ここまで理解できれば実際のモデル構築をフレームワークを使って実装するための最低限の知識は得られるという感覚です。また、G検定取得に関しても6.1章を読んだくらいの段階で取得しました。今後、時間があるときに未読の部分を読んでみたいと思っています。また、この本には続編として自然言語処理編とフレームワーク編の２冊が出ているのでそれらもいつか読んでみたいと思っています。
* 『直感 Deep Learning ―Python×Kerasでアイデアを形にするレシピ(https://www.amazon.co.jp/Deep-Learning-―Python×Kerasでアイデアを形にするレシピ-Antonio-Gulli/dp/4873118263)』
[![直感.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1024164/728b25d7-f035-0790-c47a-e0945a3ea411.jpeg)](https://www.amazon.co.jp/Deep-Learning-―Python×Kerasでアイデアを形にするレシピ-Antonio-Gulli/dp/4873118263)
     * 役に立った度：★★★★
     * 難易度：初級
     * 読破状況：全体にざっと目を通した程度
     * 感想  
       深層学習の様々なネットワークの概要とkerasによる実装例を学ぶことができます。自分は1~
3.3章までは詳しく目を通しそこから先はざっと概要をつかむ程度に読みました。1~3.3章くらいまででkerasの導入と基本的なネットワークの実装方法を学べるという感覚です。この本と上述の「ゼロ作」を読めば深層学習の入門～初級的な知識は１通り学びきることができると思います。
* 『[徹底攻略 ディープラーニングG検定 ジェネラリスト 問題集 徹底攻略シリーズ](https://www.amazon.co.jp/dp/B07NDVCN99/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)』
[![G検定.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1024164/b5410e85-1711-e2e9-8ce8-89d030519d69.jpeg)](https://www.amazon.co.jp/dp/B07NDVCN99/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
     * 役に立った度：★★
     * 難易度：初級
     * 読破状況：1回だけ全部解いた
     * 感想  
       「ゼロ作」と「直感 Deep Learning」を読んでいれば基本的に詰まることはないと思います。例外は法律に関する分野でこの本ではそこを中心に知識を補間すればよいのですがE資格の準備という面だとE資格では法律的な部分はあまり聞かれません。
* 『E資格対策講座(株式会社STANDARD)』  
     * 役に立った度：★★★★
     * 難易度：初級・上級
     * 読破状況：修了
     * 感想   
       E資格受験のため認定講座のうち自分が受けたもの。機械学習実践講座・深層学習実践講座・E資格取得対策講座の３つからなります。このうち、機械学習実践講座・深層学習実践講座は上述の「直感 Deep Learning」のハンズオンという位置づけで受講すると有用であると感じました。また、E資格取得対策講座に関しては前の2つの受講完了後に受けてみたところ難易度に非常にギャップがあると感じました。そして、E資格取得対策講座は前述の「徹底攻略ディープラーニングE資格エンジニア問題集 徹底攻略シリーズ」と内容的に被る部分が多く試験対策としてはどちらか片方自分にとってわかりやすいと感じた方を集中的に復習するとよいと思います。
* 『[言語処理のための機械学習入門 (自然言語処理シリーズ)](https://www.amazon.co.jp/言語処理のための機械学習入門-自然言語処理シリーズ-高村-大也/dp/4339027510)』
[![言語処理.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1024164/163354af-d5bd-da7b-4016-75a625ca70c4.jpeg)](https://www.amazon.co.jp/言語処理のための機械学習入門-自然言語処理シリーズ-高村-大也/dp/4339027510)
     * 役に立った度：★★★★
     * 難易度：上級
     * 読破状況：4.2章まで読んだ
     * 感想  
       この本では深層学習の話題は出てこないのですが、深層学習の土台となっている機械学習の基本的な知識や深層学習の応用領域の１つである自然言語処理の基礎知識を学ぶことができました。自分は情報系出身ではないのですが大学1～2年の微積・線形代数が理解できていれば十分読み進めていくことができる難易度と感じました。また、自分が読んだ4.2章までの知識と「直感 Deep Learning」の自然言語処理の部分の知識があれば「Attention Is All You Need」(後述)などの自然言語処理の深層学習の論文も読めるものが出てくるという感覚です。
* 『[Attention Is All You Need](https://arxiv.org/abs/1706.03762)』
     * 役に立った度：★★
     * 難易度：超上級
     * 読破状況：１通り目を通した。部署の勉強会で発表した。
     * 感想  
       BERTの祖先として自然言語処理の分野で有名な「Transformer」の論文です。部署の勉強会で発表するために元論文やその解説記事を読みました。自分は情報系ではないのですが、「直感 Deep Learning」と「言語処理のための機械学習入門」の知識があれば論文を読み進めていくことができました。「Transformer」については「徹底攻略ディープラーニングE資格エンジニア問題集 徹底攻略シリーズ」でも触れられてはいるのですが、実際に元論文に目を通すことで論文の中のどのような点が試験で問われるのかの勘所を得られたように思いました。そのため、この論文でなくてもよいのですが
「徹底攻略ディープラーニングE資格エンジニア問題集 徹底攻略シリーズ」で触れられているモデルに関して１つは元論文を試験までに読んでおくとよいと思います。

* 『[強化学習 (機械学習プロフェッショナルシリーズ)](https://www.amazon.co.jp/dp/B07XJXMQGD/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)』
[![強化学習.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1024164/e8d0def9-034c-514e-4763-748cc787325c.jpeg)](https://www.amazon.co.jp/dp/B07XJXMQGD/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)
     * 役に立った度：★★
     * 難易度：超上級
     * 読破状況：１通り目を通した
     * 感想  
       強化学習の本の輪読会に参加した時の題材となった教科書です。主に強化学習の数理の部分に重点を置いた理論の教科書で、数学に関する深い理解がないと読み進めていくのは難しかったです。自分では1読目ではストーリーや式展開で理解できないところが多々あり輪読会の参加で何とか大筋をつかめる程度理解できたという程度でした。また、理論面の説明がほとんどでこの本だけでは実装や扱うデータのイメージがわきづらかったです。なので、１冊目として（深層）強化学習の実装に重きを置いた入門書を読んだ上での２冊目として読むとよいと感じました。

# 最後に
これまで、E資格取得を１つの目標として機械学習分野の勉強を勉強してきましたが、取得してみてこれで機械学習エンジニアとしてようやくスタートラインに立ったんだなと感じました。今後は、kaggleやsignateなどの題材で実践・実装を通してE資格取得で得た知見を磨いていき機械学習エンジニアとしてレベルアップしていきたいと考えています。また、学習内容の棚卸をしてみてまだ読み切っていない本や続編がある本などあることを再認識したのでそれらに関しても時間を見つけて読んでいきたいと思いました。
最後に、E資格は簡単な資格ではなく仕事・学業をしながら取得するのは大変だと思います。そこで今後E資格の受験を考えてる方に、自分がE資格取得のために勉強した内容の棚卸が参考になれば幸いです。