いきなりまとめ
MLのアルゴリズムの調査にはとても時間がかかる。
問題に応じたベストプラクティス知ることで開発効率を上げることができる。
Today I Learned
11 Practical Methodology
を参考に。
背景
MLを現実の問題にうまく適用するにはアルゴリズムや原理を知っているだけでは不十分。
特定の問題にどのアルゴリズムが適しているか、得られた結果をどのようにモニターし対応すればいいのかを知らなければならない
もっとデータを集めるか、モデルキャパシティを変更するか、どの程度一般化するか、ソフトをデバッグするか、最適化を促進するか、といったことにはとても時間がかかるため。
デザインプロセス
- ゴールを決める(エラー指標、ターゲット、パフォーマンス指標)
- ベースモデルを作る
- システムの問題を調べる(overfitting、underfitting、a defect in the data、software)
- 徐々に修正を加える(データ追加、ハイパーパラメーター調整、アルゴリズム)
ゴールを決める
パフォーマンス指標はaccuracyが一般的だがエラー指標に応じて決める。
実践では複雑なパフォーマンス指標が用いられる(スパムフィルター、レアイベントなど)。
PRカーブのAUC、Fスコア、coverageとaccuracy(グーグルマップのアドレス解読)など。
ベースモデルを作る
データの構造に応じてモデルのカテゴリーを決める。
たとえば、固定長ベクトルをインプットとするならFCレイヤーを持ったモデル。
入力が画像ならCNNを使う。
入出力がsequenceならGRUを使う。
optimization algorithmは SGD with momentum with a decaying learning rateがよい。
もしくはAdam。
データセットが1000万ないときはmild form of regularizationを導入した方がよい。
Early stoppingはマスト。
dropoutは実装しやすく、多くのモデルやトレーニングアルゴリズムに適合する。
batch normalizationはgeneralization errorを減らすことがあり、dropoutが不要になることもある。
事前に研究されている分野ならばそのモデルをコピーするだけでうまくいくかもしれない。
unsupervised-learningから始めるべきかどうかは分野による。
NLPではunsupervised word embeddingsがとても有益だと知られている。