Fast AI 2018 Lesson 1

はじめに

数ヶ月前にKaggle Kernel上でFast AIの教材を使って学べるようになったという話を聞いて、 はじめてみることにしました。今までは自分お金を払ってサーバーを借りて学習環境をセットアップする必要があったので無料の学習サービスといえど、やっかいな点だったので、これは嬉しい。

第1回講義資料

  • 講義動画 

Deep Learning For Coders—36 hours of lessons for free

  • 対応ノート(Kernel)

fast.ai lesson 1 | Kaggle

講義動画はyoutubeからでも見れるが、fast aiのページにはその回の講義に関する情報も記載されているから必ずそちらから見るようにとのこと。

講義の題材

犬と猫の画像分類器の実装

今回学んだこと

各種ツールの使い方

  • Jupiter Note Book
  • 各種ライブラリ(Numpy, FastAI独自ライブラリ) FastAI独自のライブラリはPyTorchをベースに作られていて、講義の後半ではPyTorchについても触れていくとのこと。

fast aiの学習アプローチについて

 トップダウン方式

学習者のモチベーションを保つために始めにコード駆動で(半ばブラックボックス化された)ライブラリを用いて概形を掴んだあとに、 その都度必要な知識を学んでいく

Deep Learningの(かなり)雑な理解

  • Deep Learningでは線形層と非線形層が組み合わさることによって柔軟な関数を作ることができる
  • パラメータチューニングの勾配降下で行う

    • 式のイメージは x' = x - dy/dx * (learning_rate)で 関数の値が減っていく方向に徐々にxの値を動かしていき、局所解を見つけに行く
    • learning_rateはハイパーパラメータで学習の速度を決める。大きすぎると学習スピードは早いが収束しなくなってしまう。小さすぎると今度は学習が終わらなくなってしまう。learn.lr_find()というfast aiのライブラリを使うと、ある程度よしなに決定してくれるようである。(論文で発表された効果的なlearning_rateの決定方法が実装されてある。)
  • もう1つのハイパーパラメータ epock数について  - 訓練データに対して何回学習を行うか、を決める数

    • この値は正直なんでもよいが、以下の理由からおのずと数は限られてくる
      • あまり大きいと過学習を起こす
      • そもそものデータ数が多いと学習が終わらなくなったりする

感想

初回ということもあって、技術的なことに関しては終始ざっくりとした説明であった。(題材の画像分類器の実装自体はライブラリのコードを使って3行で終えている)。 ただ、トップダウン方式のアプローチにもあるようにこれから深掘りされていくと思うと楽しみ。 次回の講義では今回の画像認識手法が通用しないようなトピックを扱って、新たに知識を得ていくそう。