ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

JDLA E資格合格体験記

無事E資格に合格したので、後に続く人の参考になればと思い合格体験記を書きます。

spec

試験勉強を始める前に、どれだけの知識・経験があるのかは勉強量に大きく差がでてきます。簡単に自分のスペックをまとめるとこんな感じです。

  • 理学部物理学科卒
  • 仕事で組込の画像処理を10年以上
  • CNNや物体検出は、推論をCで実装して人に教えられるレベル
  • CourseraのMLコースを最後までやった
  • ゼロから作るディープラーニングは①、②とも実装済み。

大学で習ってない数学(ベイズや情報理論)が全然駄目で、機械学習は少々、Deep Learningは画像系のCNN以外は実務経験も無しという感じです。画像処理(Computer Vision)では、普通に線形代数を使うので行列の苦手意識は無かったです。

作戦

認定講座はスキルアップAIを選びました。会社のお金で受講するのでなるべく安くするように指示があり、2社まで絞ってスキルアップAIを選びました。この時点ではどこが良いのかさっぱり分からなかったですが、もう一社の方は競合禁止的な縛りが厳しく断念しました。受講していないので比較は出来ないのですが、スキルアップAIの講座は素晴らしく、最後まで諦めることなく勉強を続ける事ができました。お勧めです。

www.skillupai.com

講義の内容はこちらに詳しく書いてあります。認定試験を突破するためには、通常の受講に加えて以下の4点をクリアーする必要があります。

  • ①通し課題において基準精度を達成し、そのソースコード一式を提出
  • ②DL、ML、数学の知識テストに合格

スキルアップAIの講座に申し込むと、推薦図書を教えてもらえるのでリストを見ながら持っていない物は全部購入し、Mindjet社のMindmapを使って、いつ何を勉強するのかを整理しました。

f:id:natsutan:20200304081452p:plain
mm

カリキュラムの前半が既知の部分だったので、この間に上の課題をクリアーするようにしました。数学が分からないと勉強が二度手間になるので、数学→機械学習→Deep Learningの順番で合格できるようにスケジュールを立てました。会社には週の1日はE資格の勉強に充てるとは宣言していたのですが、業務が忙しくなればそんなことは言ってられないのでなるべく前倒しで勉強していきました。後半からぐっと難易度が上がったので正解でした。 なんにせよ最初に数学をやってしまうのが良いと思います。特にスキルアップAIの講座では数学と機械学習は別講座で、分かっている前提で講義が進みます。最初に数学は押さえましょう。

基本的な周期としては、こんな感じです。

  • ①ゼロから作るdeep learningやイラストで学ぶディープラーニングで予習しながらノートを作る。
  • ②ノートを見ながら予習動画を見る。勘違いしていたところはノートに赤線。理解が怪しいところは質問
  • ③演習課題を解く。理解が怪しいところを質問
  • ④「深層学習」の対応する場所を読む
  • ⑤暗記する所は単語帳を作成。

勉強の進捗は会社の週報で報告しました。他の人に取っては不要な情報ですが、必ず報告する事で進捗の管理がしっかりできました。今も当時の報告を見ながら振り返っています。

老眼が始まっていたので、まず近距離眼鏡を新調しました。これも良かったです。

時期別対策

10月

まずは数学を固めながら、ゼロから作るdeep learning①をひたすら実装して行きました。この本の実装をするのが2回目で、CourseraのMLコースでも近いことをやっていたので、実質三週目。講義の演習も含めると人生で4回実装したことになります。合わせて逆行列の復習や機械学習のエッセンスをさっと呼んでました。無事、数学の試験を突破。

11月

機械学習の総復習。scikit-learnとTFによる実践機械学習、機械学習のエッセンス等を手を動かして勉強していきました。いろんなCNNの応用に絡んでイラストで学ぶディープラーニングに出てくるネットワークや用語をノートにまとめてました。あとim2colの復習。

MNISTっぽい通し課題もこの辺で終わらせるつもりでしたが予想以上に難易度が高く、ぐぬぬとなってました。

順調に勉強ができていた時期です。無事、機械学習の試験を突破。この時は最後100点で突破したのでうれしかったです。

12月

勉強が苦しくなってきた時です。仕事で大きな失注がありモチベーションが下がっていた所に、未知のゾーンである生成モデルに入りました。生成モデルの数式は覚えれば良いのですが、特にVAEが何をやっているのか分からなくて先生に何度も質問をしていました。予習を完全に終わらせてから講義に入るというサイクルが崩れかけたのがこの頃です。

会社から有休取れプレッシャーが厳しくなってきたので、12月の最後は有給を取って1週間休みにしながらも会社でずっとE資格の勉強をしていました。休みだって言ってるのに、【重要】みたいな会議の連絡が飛んできていくつかは会議に出ましたが、勉強する場所代だと思って会議出てました。この追い込み時期で、ゼロから作るディープラーニング②の実装、通し課題、DL試験を突破しました。特にDL試験は、強化学習やアテンション等勉強していないところがあるにも関わらず一発で合格したので、だいぶ自信つきました。

ここで、講義の課題をクリアーしないと試験の申し込みすらできないと言うことに気がつき勉強のピッチを上げました。申し込み自体は誰でもできて、試験本番までに課題をクリアーすると思ってました。有給で全力で課題に取り組んだ結果、年内に試験の申し込みできました。近くて大きな会場の方が有利なので、早めに申し込んだ方が良いですね。

年末にスキルアップAIから模試の連絡が入りました。個人で払うには結構なお値段ですが、確実に合格率が上がると思ったので即答で申し込みました。結果的にはこの模試は非常に良かったです。会社に交渉すれば会社の経費で受けられた可能性もありましたが、上に書いたように大きな失注をした後だったので気が引けました。

1月

1月2日までは確実に勉強していたのですが、3日から勉強しなくなってしまいました。家族の調子が悪くなったり、仕事も上手く行かず下がったモチベーションを上げるのは難しかったです。作りながら学ぶ深層強化学習をなんとかやりきり、講義はギリギリついて行ったレベルです。単語帳やノートの復習なども全然出来なかったです。

1月はプリキュアが終わりに向かい、毎週プリキュア終わるの嫌だーって泣いてました。今もこれ書きながら最終回のカウントダウンを思い出して泣けてきました。

2月

2月に入って新しいプリキュアが始まると急にモチベーション上がってきました。良かった。

月初に模試を受けました。模試のおかげで10点くらいは点数が上がったと思います。機械があるなら是非受けましょう。

2月は新しいテキストは一切せず、通勤中に単語帳で覚える、作ったノートの復習、逆行列や特異値分解を確実にできるようにしていました。苦手な所の講義動画を見ながら、再度演習を解いてました。

模試は受けよう

スキルアップAIの講座を受講していると試験直前に模試を受ける事ができました。合格率を確実にあげるので、みんな受けた方が良いです。今までの講義と違い、完全に資格対策なので解説なども点を取るための解説が聞けます。特に始めて受験する方には重要なアドバイスをいくつももらえました。僕はこの模試で自分の間違えるポイントが良く分かりました。

まず行列の計算が出来てなかったこと。特異値分解のレベルで無く、2x2の固有値を求める程度の問題が、式は完全に頭に入っているのに計算を間違える事に気がつきました。ゆっくり計算をしながら何処で間違えるのかを調べると、近距離の眼鏡をかけてないと自分の書いた字がよく見えて無くて五分五分で計算間違いをしていることに気がつきました。ここから毎日逆行列の計算をしたり、特異値分解をするようにしました。試験当日も確実に近距離の眼鏡で受検するようにしました。

もう一つが、山が当たったときに問題を最後まで読まない癖も分かりました。具体的にはLSTMやGRUの活性化関数を選ぶ問題で、予想通りの問題が出るとうれしくなってtanhではなくそれより先に出てきたtanを選んでしまいました。模試でミスしたおかげで、どんなにeasyに見える問題でも最後まで選択肢読もうと心に決めました。

こんな感じで自分の弱点がわかるので、ぜひ模試は受けて欲しいです。

模試に関してはスキルアップAIさんにお願いしたいことが一つありました。講座の申し込み時に模試をオプションで示して欲しかったです。会社のお金で受ける場合、後から追加で決済を上げるというのは難しく結局自腹で受講してしまいました。模試があるなら、最初から模試込みで決済を上げられるので確実に会社のお金で模試受けられるのでうれしい人多いと思います。

勉強に使った本

教科書

実質、この3冊は教科書かと。

深層学習

試験の数式がこの本の書き方からでるので必読。本の説明そのままの問題もでます。何気に、Deep Learningに必要な数学の所は良くまとまっていると思います。

ゼロから作るディープラーニング① ②

これを母国語で読めるのは幸せ。全部読んで実装しよう。

数学

初めての情報理論

エントロピーやKLダイバージェンスが演習付きで学べます。機械学習やディープラーニングで良く出てくる -p*log(p)を実際に簡単な例題で計算することで雰囲気が良く分かって良いです。

これなら分かる応用数学教室

以前から持っていた本です。行列の手計算はこの本が一番分かりやすいです。こちらも手を動かして理解を確認できます。

機械学習

まずはCourseraのMLコースだと思います。言語がoctaveなのでPythonと同時に学ぶと混乱します。E資格の勉強を始める前に最後までやりきると良いです。

初めてのパターン認識

一通りのことは書いてあるので、全部読んだ方が良いです。良く分からなくなったらこの本に戻る感じで使ってました。

PRML

分からない所を読んでもさっぱりですが、分かったところを読むと面白い本でした。ちょっとでも分からない所が出てきたらそれ以上読まないという使い方をしていました。個人的にこの本の数式が好きですし、正則化等理解してから読むと点が上がりそうな気がします。確率分布がまとまっているのも良かったです。

scikit-learnとTFによる実践機械学習

テキストがライブラリの使い方について書いてるのかアルゴリズムについて書いているのか微妙な感じで勉強のテキストとしてはどうよってのは正直あります。ただ、各手法に対してライブラリを使って結果がみれるというのは良かったです。コードメインで。

機械学習のエッセンス

PCAの実装確認はこの本を参考にしました。試験対策としては、(そういう本じゃ無いので)微妙なところはあるのですが、プログラミングの本として読んでいると、筆者の軸足がプログラマより数学者よりで面白い記述が所々にありました。(なんか読んでいておもしれーって所が何カ所があったのですが記録するのを忘れました。)間違いなく良い本です。

Deep Learning

基本的に、講義の内容を押さえ、上に書いた教科書をやっておけば良いかと思います。 CourseraのMLコースは、正則化やモーメンタムといった学習アルゴリズムもカバーしているのでお勧めです。

GoogleNetや物体検出については、このCourseraの2回目と3回目が分かりやすかったです。

www.coursera.org

MobileNet含むCNN全般に関してはこれも参考になりました。マーチンが日本に来たときに、直で聞けたので印象に残っています。

www.youtube.com

強化学習については、たくさん本を買って比べる時間が無かったので最初にやった一冊だけを紹介します。他の深層教科学習の本が駄目というわけではないので、いろいろ探してみてください。強化学習に関してはスキルアップAIの講座のテキストが一番良かったです。ある程度試験対策と割り切って、俯瞰的な説明がありなんとなく雰囲気は分かって正解は選べるようになりました。

PythonとKerasによるディープラーニング

いろいろ動くコードが載っているので勉強になります。試験範囲ではデータオーギュメンテーション、AE、VAE、GAN、転移学習辺りが参考になるかと。

作りながら学ぶ深層強化学習

手を動かしながら強化学習を動かすというスタンスで分かりやすかったです。とりあえずこの本で勉強すればなんとなく実装の雰囲気と、数式が分かるのと思います。強化学習は他にも良さそうな本がありましたが、時間なくこの一冊しか読めませんでした。

最後に

振り返って見ると、1月以外はモチベーションを上手く保てたかなと思います。10月からの勉強時間はざっくり400時間です。最初に会社に相談して、週の1日はE資格の勉強に当てることでOKもらいました。それでは足りないので毎日2時間程度+土日のどちらかは一日勉強。12月末は休みをがっつり取って勉強に充てました。勉強時間多いですが、シラバス以外のOpenPoseやブースティング等、名前だけ知っていた物もノートにまとめたりしていたので若干遠回りはしています。合格したから言えますが勉強楽しかったです。

試験前日は下見に行き、不安を感じている自分に気がついたのでプリティストアによってキュアエールのグッズを買ってきました。当日問題が難しかったときも、キュアエールが応援してくれたので頑張れたと思います。とにかく自分のモチベーションの状態を分かるようにすることと、モチベーションを上げた状態の保ち方を確立してあると勉強が続けられるかなと思います。

試験結果はこんな感じで、まあ安全圏にはいるけども間違いもそこそこありました。

応用数学:91.67% 機械学習:84.62% 深層学習:84.42%

スキルアップAIの先生には本当にお世話になりました。分からない所は直ぐ教えていただきました。若く個性的な先生が多く、ああ時代は若い人が主役になってるんだなとヒシヒシと感じました。他の人のもやっとした質問にも丁寧に答えられているなという印象でした。振り返って見て記憶に残っているのはVAEで、何回も何回も分かるまで答えていただきました。正直その時は分かってなかったのですが、2月くらいに突然なるほどと腑に落ちたので教えていただいた成果がでました。試験にもバッチリ出て、正解を選ぶことが出来ました。先生のおかげで無事合格できました。ありがとうございます。これから受ける方はスキルアップAIお勧めしておきます。