E資格振り返り（2024#1）

こんにちは。べんと申します。

本日は、2024年2月16日に受験した「JDLA Deep Learning for ENGINEER 2024 #1」の結果が返ってきましたので、振り返りを残しておきたいと思います。私も過去の偉人の軌跡を参考にさせていただきましたので、これから受験されるどなたかのお役に少しでも立てればと思います。



## JDLA Deep Learning for ENGINEERについて

- 通称（？）[E資格](https://www.jdla.org/certificate/engineer/#certificate_No04)
- ディープラーニングの理論から応用、また最新のトレンド技術に対する理解が問われます
- CBT（Computer Based Test）形式で、120分の間に100問程度の問題に回答します
- 技術の進歩に従い1～2年ごとに試験範囲が改訂されています。次の改訂は次回（2024#2）からです

計算問題用に、画面の端には電卓機能がついているので、ご利用になることをお勧めします。（私は最後の問題に至るまで電卓の存在に気づかず苦労したので・・・）



## 認定プログラム

E資格の受験には、[JDLA認定プログラム](https://www.jdla.org/certificate/engineer/programs/bizlist/)を修了する必要があります。学習方法や予算にあわせてどれを選んでいただいてもいいようです。

私はスキルアップAI社の[「現場で使えるディープラーニング基礎講座」](https://www.skillupai.com/deep-learning/)を選択しました。基礎的なところから最新のトレンド、また試験に出そうなポイントまでをわかりやすく解説していただき、ディープラーニングの基礎をまんべんなく抑えるのには非常にありがたいものでした。

サンプルプログラムも多く、概念はわかるけどどう動くの？といったものも理解しやすかったように思います。



## 認定プログラム以外の学習

学習時間の合計は、おおよそですが3カ月、90時間くらいだと思います（たぶん）。

- 認定プログラム
  - 講義の受講　20時間
  - サンプルプログラムの研究　20時間
  - 課題　20時間
- 書籍による興味のある分野の自習　10時間
- シラバス（試験範囲）に記載のあるモデルの文献調査　20時間

私の場合、大学時代に行列演算や情報理論を専門的に勉強しており、その流れで機械学習についてもなんとなくレベルでは理解していたので、98%の時間は深層学習に、残りの2%を開発環境の学習に使っています。

これは私見ですが、試験に合格するだけであれば認定プログラムの内容をきちんと理解すれば十分だと思います。しかし、データがモデルの中でどのように処理されていくのか、また自分で実装することを想定した場合には、書籍や論文、またgithub等で実装を確認しておくのがおススメです。


### 書籍による興味のある分野の自習

[こちらの記事](https://qiita.com/nekot0/items/144f9206a1c6ee2879fe)の一部でも紹介していますが、もう少し勉強しようと思って読んだ本は下記の通りです。


- [ゼロから作る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 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%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_lpo_sccl_1/357-9065975-0455302?pd_rd_w=b27Co&content-id=amzn1.sym.c9d355d3-7242-4c45-8731-d024dd5a0fb6&pf_rd_p=c9d355d3-7242-4c45-8731-d024dd5a0fb6&pf_rd_r=2BTDEAEPTH7SWJZ1TFPK&pd_rd_wg=AKOgp&pd_rd_r=abbd9074-a1aa-44c3-8002-81e58ba41452&pd_rd_i=4873118360&psc=1)

<p float="left">
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/514778/1f7a9e4c-d189-f631-bb02-1429ab763621.png" width="150" style="margin-right: 10px;">
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/514778/34ba52ae-655e-2dce-c33b-342562062f61.png" width="150" style="margin-right: 10px;"> 
</p>

「ゼロつく」として知られるシリーズです。過去の多くの受験者の方々のおススメだったので、一応読んでおこうと思い購入。シリーズ1冊目は、幸いにも私の受講した認定プログラムの総復習となっていたので、復習の手間が省けました。

シリーズ2冊目の方は自然言語処理に特化しており、認定プログラム内で省略されていた箇所が丁寧に解説されていたため、この分野の理解が深まりました。

ただし、初版2018年、第二版2020年の本なので、TransformerやGPTまわりの詳細には触れておらず、ここは別の方法で補完しました。


- [BERT入門ーープロ集団に学ぶ新世代の自然言語処理](https://www.amazon.co.jp/BERT%E5%85%A5%E9%96%80%E3%83%BC%E3%83%BC%E3%83%97%E3%83%AD%E9%9B%86%E5%9B%A3%E3%81%AB%E5%AD%A6%E3%81%B6%E6%96%B0%E4%B8%96%E4%BB%A3%E3%81%AE%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86-AI-Data-Science%E5%AE%9F%E5%8B%99%E9%81%B8%E6%9B%B8-%E4%BD%90%E8%97%A4/dp/4865943404)
- [BERTによる自然言語処理入門: Transformersを使った実践プログラミング](https://www.amazon.co.jp/BERT%E3%81%AB%E3%82%88%E3%82%8B%E8%87%AA%E7%84%B6%E8%A8%80%E8%AA%9E%E5%87%A6%E7%90%86%E5%85%A5%E9%96%80-Transformers%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E5%AE%9F%E8%B7%B5%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0-%E3%82%B9%E3%83%88%E3%83%83%E3%82%AF%E3%83%9E%E3%83%BC%E3%82%AF%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE/dp/427422726X/ref=pd_bxgy_q_d_sccl_2/357-9065975-0455302?pd_rd_w=yjnDm&content-id=amzn1.sym.b0f20d0c-a46c-4eac-8870-379b9351576f&pf_rd_p=b0f20d0c-a46c-4eac-8870-379b9351576f&pf_rd_r=QXVNTQPVAEC23XWHX8R3&pd_rd_wg=nqr6Y&pd_rd_r=cd100e1b-e180-4f0f-a9a6-38f45a5096e6&pd_rd_i=427422726X&psc=1)

<p float="left">
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/514778/912febdf-8399-c928-4671-f8f156f64759.png" width="140" style="margin-right: 10px;">
  <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/514778/dc5e45ad-8f18-d6b1-9fab-b1d68f52508f.png" width="150" style="margin-right: 10px;"> 
</p>

Transformer周辺の理解を深めるため、なんとなく店頭に並んでいた2冊を購入。Transformerの応用（一部）であるBERTについて、概念と使い方はこの2冊で理解できました。（2冊読みましたが、内容に大きな差はなかったように思います。1冊でよかったかも・・・）

ただし、データ処理の具体的な流れや、GPT等のBERT以外のモデルについてはあまり詳細に語られていないので、後述（文献調査）の方法で理解しました。



- [Python機械学習プログラミング［PyTorch＆scikit-learn編］](https://www.amazon.co.jp/Python%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%EF%BC%BBPyTorch%EF%BC%86scikit-learn%E7%B7%A8%EF%BC%BD-impress-gear-Sebastian-Raschka/dp/429501558X/ref=pd_lpo_sccl_1/357-9065975-0455302?pd_rd_w=yftSZ&content-id=amzn1.sym.c9d355d3-7242-4c45-8731-d024dd5a0fb6&pf_rd_p=c9d355d3-7242-4c45-8731-d024dd5a0fb6&pf_rd_r=1GF9QNE6R16AK0NF54HC&pd_rd_wg=USPnF&pd_rd_r=f934f0c6-ca77-4acc-9486-94f3a12bd91f&pd_rd_i=429501558X&psc=1)

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/514778/2cebe5d4-b14f-d7ca-f89e-c1bc14c069da.png" width="200">

試験ではPytorchまたはTensorflowを使ったプログラムの問題が出題されます。いずれのフレームワークもあまり馴染みがなかったので、一冊あってもいいかと思い購入。（なお、これから学ぶならPytorchだろうと決め打ちでフレームワークも決定。）

非常にボリュームの大きい本なので、購入時点でなじみの深かったCNN部分だけを読みました。もともとnumpyだけで作っていた自作CNNをPytorchで書き直すことで、なんとなく理解した気になりました。機械学習の範囲についても気になるところだけ読んで終了しました。

本書のカバー範囲は機械学習～深層学習のほぼ全範囲にわたっているので、今後も辞書的な使い方をすることを想定し、机の手の届く範囲に飾っています。


- [1日で基本が身に着くDocker/Kubernetes](https://www.amazon.co.jp/%E3%81%9F%E3%81%A3%E3%81%9F1%E6%97%A5%E3%81%A7%E5%9F%BA%E6%9C%AC%E3%81%8C%E8%BA%AB%E3%81%AB%E4%BB%98%E3%81%8F-Docker-Kubernetes%E8%B6%85%E5%85%A5%E9%96%80-%E4%BC%8A%E8%97%A4-%E8%A3%95%E4%B8%80/dp/4297114283/ref=sr_1_6?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=203G33MCB9JU&dib=eyJ2IjoiMSJ9._vQ57_PK9nU1x9sUsfuuc5J2Xhq95yXqd9ECzr8f0cOgPurZqNndwg8jUvjlanTa4cFVZEzOSgZwR6wZNKPnQ3Pmie-GlH8ak4eCxz-joZweEc1lMfe2LTL4r6m3Xqphw-eE_lw-NWfbAqvHx3enggy4cP5XwPQ5QtIqD7ivCGeHM9BS174Spk0bo1rbqfAEJdvPESAjcfHcXHeFsKj5C_34vnH55FkTFtkLL629oV3I7BKOtNz6c_cs_vCqj5VHMFwNyKTKMuWahbEGoT249-xS4ht11cONDSsv4hk6Wmw.V20dNHraXYjtycnnZE04K8fCtF5hboy-93EoISJrESs&dib_tag=se&keywords=docker+kubernetes&qid=1708266708&sprefix=docker+kubernete%2Caps%2C245&sr=8-6)

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/514778/804decf0-287c-f2f3-fa64-56423b2b1974.png" width="150" style="margin-right: 10px;">

開発環境については今後も実践で使うだろうと思い、一冊購入。試験範囲としてはDockerの基本的な使い方を理解しておけば十分です。



### シラバスに記載のあるモデルの文献調査

シラバスに記載のあるモデルについては、特に想定される入力データがどのような形式で、モデル内でどのように処理されるのかをイメージするため、文献調査を行いNotionにまとめていました。

文献調査といいつつ、実行したのはQiitaの論文紹介記事の確認、論文へのアクセス、あとはChatGPTの活用です。

論文やその紹介記事を確認することで、モデルの構造や特徴は理解しやすくなっているのですが、実際にはどのような入力/出力データの形式か、モデル内の各レイヤーがどのように作用するのかまでイメージできるレベルの記載があるものは少なかった印象です。ChatGPT（GPT-4）は2023年4月までの情報、つまりは今回の試験範囲のほとんどの情報はもっているので、自分がどこまで理解していて何がわからないのかを言語化し、納得するまで質問を繰り返すことで、疑問点はすべて解決することができました。



## 試験結果

無事に合格することができました。

■分野別の得点率
応用数学：86 ％
機械学習：90 ％
深層学習：87 ％
開発環境：86 ％

昔からテストで100点がとれない人でしたが、今回も何を間違えたのかが気になります。

なお、合格点は明記されていませんが、得点率でおおよそ60%強でしょうか。（https://www.jdla.org/news/20240308001/）



## 感想（まとめ）

総じて、すべての学習プロセスを通して楽しめたと思います。

試験範囲が非常に広いにもかかわらず、認定プログラムの解説がわかりやすかったこと、それでもわからないところはChatGPTが解決してくれたことで、AIと呼ばれる分野の基礎をかなりのスピードで吸収できたのではないかと思います。日々新たな知識が入ってくる感覚が奇妙でした。

今回獲得したノウハウは、今後間違いなく必要になってくるものだと思います。

機会があれば別の資格試験にもチャレンジするかも？


べん