先日東京大学松尾研究室が主催した、deep learning教育プログラムである、
dl4usを修了しました。
今回はdl4usがどのようなものだったか、と受けた感想を述べたいと思います。
1.募集要項
12月ぐらいにdl4usの募集が始まり、インターネット上で応募しました。
応募の際に機械学習の経験や、Pythonの経験、所属等も問われましたが、
当選した方々を見るに、当選の可否にはあまり関係が無かったように思います。
蓋を開けてみると、多くの人からの応募が!
先日募集したディープラーニングの教育プログラム DL4USですが、予想を大幅に超える1900人以上の方からの応募があり、多くの方に受講いただけませんでした。現状のリソースの限界で申し訳ありません。今後受講人数を拡大すべく努力しますので、引き続きよろしくお願いします。https://t.co/aHT1DPxbOS
— 松尾 豊 (@ymatsuo) 2018年1月11日
このように2000名程度の応募があったため、当初受講者を100人程度にする予定だったように見受けられますが、
300人程度が受講するに至ったようです。
また、受講するにあたって、オンライン上でテストを受講する必要がありましたが、
numpyを利用した基礎的な操作を問うものでした。
オンライン上で教育を受けるぐらい意識がある層には、全く問題にならないぐらい(差が付かない)の難易度です。
私はPythonはそんなに書いたことがなく、業務で書いたのも受講中からですが、入力ミスが無ければ、全問正解だったと思います。
時間もたっぷりありますので、ある程度のgoogle力があれば覚えてなくても答えられます。
2.学習環境
学習する環境はiLectというものを用いており、
こちらにgithubからのOAuthでloginします。
github上にプライベートレポジトリが建てられていまして、
運営への質問や、受講者同士の議論はgithub上のissueで行われます。
また、使い方や進め方等はレポジトリ上に書かれていたと思います。
なので、githubアカウントが必要です。
iLectでは、クレジットが配賦され、
1時間あたり2クレジットでVMを利用することができます。
後述するlesson毎に40クレジット、後半は60クレジット(80クレジットだったかも)が割り当てられ、好きな時間にVMを起動して学習させていきます。
学習はjupyter notebook上で、Keras(Tensor flowバックエンド)のコードをいじって行います。割り当てられるGPUはGRID K520のようでした。
jupyter notebookでの学習ですので、かなり効率が良いです。
lessonのトピックに対して説明とコードが用意されており、
トピック毎にあるまとまりで、deep learningを行うことができます。
受講者が増えた影響で、VMがなかなか起動しないというトラブルに遭遇された方もいらっしゃったようですが、私は特に影響なかったです。
私はほぼ休日しか学習できなかったので、そのせいかもしれませんが。
3.講義内容について
講義内容は全部で6lessonと公式には書いてありますが、
実際には7lessonで構成されていました。
修了条件はlesson2とlesson4における課題提出と、最終レポートの提出です。
それぞれの学習内容は下記です。
①手書き文字認識をしよう(ニューラルネットワーク入門)
みんな大好きmnistの手書き文字を用いて、deep learningの基礎を概観する回です。
one-hot表現や評価関数等の基礎的な説明と共に、ニューラルネットの構成要素を学びます。
②畳み込みニューラルネットワーク (CNN)
Fashion MNISTとCifar-10を用いて、CNNを使ってみよう、という回です。
CNNの基礎を学習できます。
また、lesson2ではCifar-10の画像分類が宿題でした。
私はResNetを実装して、提出しましたが、識別率が本番で確か86%程度しか出ず、
入賞しませんでした。
90%出している人がどのような実装なのか知りたいと思っています。
また、ディープラーニングは結果が出るまでに時間がかかるので、
デバックとか性能向上のためには、お化けのようなスペックのインフラを整える必要があることも、このとき分かりました。
③系列データで予測させてみよう(RNN, LSTM)
飛行機の乗客数の時系列データを使って、RNNとLSTMを学ぶ回です。
RNN系のニューラルネットワークの基礎を学ぶことができます。
④ニューラル翻訳モデルを作ってみよう(Seq2Seq, Attention)
RNNの発展として、汎用性の高いSeq2Seqを用いて、英日翻訳を実装する回です。
宿題としては、BLEUスコアの高さを競うものが出ました。
このときは大して時間が取れませんでしたので、
あまりサーベイもできず、
Attention機構を組み込んだLSTMしか実装することができませんでした。
結果は覚えていませんが、かなり微妙だったと思います。
こちらももちろん入賞せず。
⑤画像からキャプションを生成してみよう
今までの応用で、MS-COCOのデータを用いて、
CNN+RNNのニューラルネットを作成してみよう、という回です。
このあたりから難しくなってきたなと感じた覚えがあります。
⑥ニューラルネットに画像を生成させよう
GANを用いた画像生成の回です。
fashion-mnistの画像を使って、conditional GANもやりました。
ランダムノイズからそれなりの画像が生成される様子が見られて面白かったです。
⑦ニューラルネットでゲームを攻略するAIをつくろう
openAI gymのゲームを用いて深層強化学習をする回です。
ブロック崩しをやりましたが、与えられているサンプルコードで、
iLectの環境で動かすと、16時間程度学習させて4個程度しか崩せるようになりませんでした。
24時間程度学習させると、8個ぐらいは崩せるようになった覚えがあります。
強化学習は本当に時間がかかりますし、効果が出るかも後にならないと分からないので、
Alpha goがあのぐらいお化けスペックのPCで実験されていたのも納得しました。
⑧最終レポート
学んだことを生かして、何かやってpdfA4 4~8枚にまとめて出してね、という課題でした。
私は名探偵コナンのコナン君を老けさせるというテーマで課題に取り組みましたが、
上手くいかなかったです。。。
その話は別の記事にまとめられたらな、と思っています。
4.全体感想
初回だったからか、サンプルコードに統一感が無かったり、運用で苦労されている印象を受けましたが、
基本的に私は自分でなんとかするの精神で生きていますので、特に不満は無かったです。
逆にdeep learningの基礎を幅広く学ぶことができたので、運良く当選して良かったです。
ただし、Optimizer等の理論や、ReLUを使用する際に、初期値に何故Heの方法を使うと良いのか等が私は気になってしまったので、
今緑本を使って勉強しているところです。
つまり、そのような部分が分からないとイライラするタイプの人には微妙な講座かもしれません。
アプリケーションを作製できることに重点を置いていますので、一つ一つの理論まで立ち入ったりはしません。
最後になりましたが、
もうすぐ懇親会があるのでそちらも楽しみにしています。
ずさずさ
最新記事 by ずさずさ (全て見る)
- Azure Functions V1を使う - 2019年1月6日
- EventGridの使用を始めるときにつまずいたところ - 2018年12月2日
- サーバレス周りの話 - 2018年9月17日