ペパボ研究所 研究員/プリンシパルエンジニアの三宅(@monochromegane)です。 ペパボ研究所では、新卒のエンジニア研修の一環として、2020年7月13日から5日間に渡って機械学習入門の研修を担当しました。 本エントリでは、研修内容をスライドと共に紹介します。
GMOペパボの新卒エンジニア研修における機械学習研修の位置付け
GMOペパボの新卒エンジニア研修は、5月のGMOインターネットグループでの合同研修プログラム(GMO Tech Bootcamp)と、6〜7月のGMOペパボでの研修プログラムから構成されています。 6月以降の研修では、Webアプリケーション、フロントエンド、セキュリティ、コンテナとデプロイなど様々な技術要素についてプログラムが組まれており、今年から機械学習研修がこれに連なることになりました。
VP of Engineering 兼技術部長の @hsbt の言葉を借りると「GMOペパボの新卒エンジニア研修は、サービスを作るための技術要素や観点について、現時点で一番良いやり方を一通り学ぶことをゴールとして設計」されています。 機械学習研修もこの要件を満たすよう、機械学習の初学者が、その手法のコンセプトを学び、手法を用いる際の設計や手順が研修前と比較して具体化できるカリキュラムが必要です。
ペパボ研究所では、なめらかなシステムのコンセプトのもと、様々な研究開発に取り組んでいます。 これらの研究では、情報システムと利用者の関係を把握し最適なサービスを提供するため、機械学習の手法も採用しています。 加えて、ペパボ研究所はミッションとして「事業を差別化する技術を生み出す」を掲げており、機械学習の手法や観念の浸透がとても重要だと考えています。 これらの理由から、ペパボ研究所でカリキュラムの作成を含む、機械学習研修を担当することになりました。
しかしながら、広く深い機械学習の分野を5日間(それぞれ午前のみ)で全てを理解することは困難です。 そのため、入門として最も基礎的な部分である、機械学習のコンセプト、そして機械が学習するということに対する技術的な解像度の向上、そして機械学習の手法を用いたタスク解決の幾つかの例に触れることを通して、研修完了後に自走できる状態になってもらいたいと考えました。
機械学習研修のカリキュラム
この機械学習入門を実現する教材について、自作も検討しましたが、Googleの公開している、機械学習の独習用短期集中コースであるCrash Courseが、コンセプトへの言及、演習の充実さ、学習時間について適していたため、こちらを主体に進めることとしました。 また、上述の目的を果たすために、研究員による機械学習入門のミニ座学を毎日追加することにしました。 Crash Courseでは、機械学習のコンセプトを理解するため、非常に手厚く概念レベルについての説明や挙動の可視化が行われており初学者が直感的に学習を進めることができます。 そこで、ミニ座学でTensorFlowやKerasで華麗に隠蔽されている詳細な部分について補足することで両面から一層理解を深めてもらいたいという狙いです。
最後に研修中のサポート体制では、疑問の即時解決をモットーにしました。 機械学習の初学者にとってつまづく点はたくさんあります。 これらを早い段階で解消していくことが効率的な学習に重要だと考えたためです。 頼もしいことに、新卒のパートナーはこれまでの研修を通して、疑問や不明点をSlack等のツールを用いてアウトプットすることに慣れており、この面では五月雨式にくる質問に対してなるべく早く回答するだけでこれを達成できたと思っています。
機械学習研修のスケジュール
上述の位置付けとカリキュラム、サポート体制の構想を元に2020年度は下記のスケジュールで研修を実施しました。
## 7/13(月)
### デイリーオリエンテーション(10:00-10:30)
- 自己紹介
- 機械学習を習得したらやってみたいことを教えてもらう
- 機械学習イントロダクション(10min)@miyakey
### 機械学習コース受講(10:30-12:45)
- Framing(15min)
- Descending into ML(20min)
- Reducing Loss(60min)
- First Steps with TF(65min)
### デイリーサマリー(12:45-13:00)
- 当日学んだこと、不明点を自分なりに要約する
- 「機械学習を習得したらやってみたいこと」に対して学んだ知識を適用する
## 7/14(火)
### デイリーオリエンテーション(10:00-10:15)
- 昨日の軽いおさらい(不明点などに答える)
- 勾配降下法の学習について(5min)@miyakey
- TensorFlowで隠蔽されている学習の挙動について理解を深めてもらう
### 機械学習コース受講(10:15-12:45)
- Generalization(15min)
- Training and Test Sets(25min)
- Validation Set(35min)
- Representation(35min)
### デイリーサマリー(12:45-13:00)
同じ
## 7/15(水)
### デイリーオリエンテーション(10:00-10:15)
- 昨日の軽いおさらい(不明点などに答える)
- Kerasによるモデル構築について(5min)@komei
- 予め実装されていたモデルについてコンポーネントやオプションについて理解を深めてもらう
### 機械学習コース受講(10:15-12:45)
- Feature Crosses(70min)
- Regularization for Simplicity(40min)
- Logistic Regression(20min)
- Classification(90min) の Precision and Recall まで
### デイリーサマリー(12:45-13:00)
同じ
## 7/16(木)
### デイリーオリエンテーション(10:00-10:15)
- 昨日の軽いおさらい(不明点などに答える)
- 正則化について(5min)@zaimy
- TensorFlowで隠蔽されている正則化の挙動について理解を深めてもらう
- ロジスティック回帰について(5min)@zaimy
- TensorFlowで隠蔽されている学習の挙動について理解を深めてもらう
### 機械学習コース受講(10:15-12:45)
- Classification(90min) ROC Curve and AUCから
- regularization: Sparsity(20min)
- Neural Networks(65min)
- Training Neural Networks(10min)
### デイリーサマリー(12:45-13:00)
同じ
## 7/17(金)
### デイリーオリエンテーション(10:00-10:15)
- 昨日の軽いおさらい(不明点などに答える)
- 誤差逆伝播法について(5min)@miyakey
- TensorFlowで隠蔽されているニューラルネットワークの学習の挙動について理解を深めてもらう
### 機械学習コース受講(10:15-12:45)
- Multi-Class Neural Networks(45min)
- Embeddings(50min)
### デイリーサマリー(12:45-13:00)
同じ
ミニ座学
また、ミニ座学については下記の資料を元に行いました。
機械学習イントロダクション
勾配降下法
Kerasによるモデル構築
正則化、ロジスティック回帰
誤差逆伝播法
機械学習研修を終えて
今年からペパボ研究所が担当することとなった、機械学習の入門に関する研修について、位置付けと研修内容を紹介しました。 研修の振り返りでは、研修のボリュームについて、それから研修の前提知識について課題が見えました。 ボリュームについては、実施時間の予備評価は行ったものの、Crash Course完遂には研修期間が不足することが分かったため、より必要な部分までで範囲を区切る、またミニ座学の時間を短縮するなどの改善が必要になりそうです。 またミニ座学についての数学的な前提知識についてももう少しヒアリングなどを通して補足説明を先んじて行うこともできたなあと思います。 それでも、新卒研修自体は、受講する新卒パートナーが積極的に不明点をアウトプットしてくれたことでコミュニケーションによってこれらの課題を乗り越え、当初目標である、機械学習という手法を用いることに対するイメージの具体化を進めてもらえたのではないかと思います。
今後は、来年以降の研修も行っていくと共に、新卒以外であってもペパボのエンジニアが常に受講できる方式の検討を進めていきたいと思います。
【PR】パートナー積極採用中!
ペパボ研究所では、新しいパートナーを求めています。詳細については、当研究所のトップページをご覧ください。