2017/07/01

MLを実装する際の方法論2

いきなりまとめ


MLのアルゴリズムの調査にはとても時間がかかる。
問題に応じたベストプラクティス知ることで開発効率を上げることができる。


Today I Learned


11 Practical Methodology
を参考に。


デザインプロセス


  • ゴールを決める(エラー指標、ターゲット、パフォーマンス指標)
  • ベースモデルを作る
  • システムの問題を調べる(overfitting、underfitting、a defect in the data、software)
  • 徐々に修正を加える(データ追加、ハイパーパラメーター調整、アルゴリズム)


データ収集


ベースラインモデルを構築した後はパフォーマンスの測定とその改善。
初心者は多くのアルゴリズムを試そうとするが多くのデータを集める方がはるかにうまくいく。

もっとデータ収集すべきか否かをどうやって決めるのか。
まず、トレーニングデータに対するパフォーマンスが良好かどうかを見る。
良好でないならlearning algorithmがトレーニングデータを使っていない証拠だから、モデルのキャパを増加させる(レイヤーを追加する、hidden unitsを加える、learning rateを変更するなど)。
それでもパフォーマンスが良好でないなら、データの質に問題があるかもしれない。
ノイズが含まれているか、そもそも入力データが予測するための情報を含んでいないかもしれない。
データ集めのやり直し。

トレーニングデータに対するパフォーマンスが良好なら次はテストデータ。
テストデータに対するパフォーマンスがトレーニングに対するパフォーマンスよりはるかに悪ければ最も有効な対策はデータをもっと集めること。
ラベル付きデータを集めることがobject recognitionでは最も重要な要因。

しかし、医療などでは多くのデータを集めることは困難。
代替案として、モデルのキャパを減少させるか、regularizationを向上させるか(weigth decay coefficientsの調整やdropoutを加えることなど)。

それでもギャップが埋まらない場合はやはりデータを集めるのが良い。
どの程度データを集めるべきか?
トレーニングサイズとgeneralization errorをプロット、それを外挿し見当をつける。
少々のデータを加えたところでパフォーマンスには影響しないためlog-scaleで検討をつける。

どうしてもさらなるデータが集められない場合にはlearning algorithm自体を向上させるしかない。
これはまさに現在研究されている最中。


ハイパーパラメーターの調整


ハイパーパラメーターの選択には2つの方法がある。
マニュアルか自動か。
前者ではMLモデルとハイパーラメーターに対する理解が必要。
後者では必要ないが計算コストがかかる。


・マニュアル

マニュアルでハイパーパラメーターを設定する場合にはハイパーパラメーター、トレーニングエラー、一般化エラー、計算コストの関係について理解が必要。

マニュサルサーチの目標は制約下において最も低い一般化エラーを達成すること。
モデルのeffective capacityを調整することで様々なタスクに対処する。
effective capacityは3つの要素からなる。
モデルのrepresentational cpaacity、トレーニングにおけるlearning algorithmの能力、モデルの一般化の程度。


・ハイパーパラメーターと一般化エラー

一般化エラーはハイパーパラメーターに対して通常U字型。
low capacityとhigh capacityの中間において一般化エラーが最も小さくなる。

あるハイパーパラメーターでは値を増加させるとcapacityが増加しオーバーフィッティングになる。
レイヤーやhidden unitを追加するとrepresentational capacityは高くなる(複雑な関数型が表現可能となる)。
別のハイパーパラメーターでは小さくするとオーバーフィッティングになる(weight decay coefficient)。

ハイパーパラメーターはU字のすべての値を探索できるわけではない(binaryであったりdiscreteであったりmin、maxがあったりするため)。
モデルのcapacityを下げるだけのハイパーパラメーターもある。

learning rateは最も重要なハイパーパラメーター。
learning rateが適切なときにモデルのeffective capacityは最も高くなる。
learning rateはトレーニングエラーに対してU字型。
learning rateが低すぎるとトレーニングエラーが高い地点に永久にとらわれてしまう可能性がある


・トレーニングエラーと一般化エラー

learning rate以外のパラメーターを調整する際にはトレーニングとテストの両エラーを監視する必要がある。

トレーニングエラーが目標よりも高いときはキャパを増やすしかない。
テストエラーが目標より高いときはregularization hyperparametersを変更しeffective model capacityを減らす(dropoutやweight decayを追加すること)。

通常は巨大なモデルをregularizeすればベストなパフォーマンスになる。

トレーニグエラーが低いときにはサンプルを追加すれば一般化エラーも低下する。
モデルのキャパとトレーニングデータを増加させ続けるのはコストがかかるが確実に成功する。


・サーチ

ハイパーパラメーターサーチのためのアルゴリズムにはさらにsecondary hyperparametersが必要となる。
良好なパフォーマンスを得るためのsecondary hyperparametersを選択するのは簡単。

ハイパーパラメーターの数が3個程度ならgrid searchがよい。
サーチするリストはその中にoptimal valueが入るように保守的に選択すべき。
特に値はlog scalでリストすること。
grid searchはリストの範囲を狭めつつ繰り返し実行するとベストなパフォーマンスが得られる。
grid searchの欠点は計算コストが指数的に増加すること。

それ以外の場合はrandom searchが良い。
プログラムしやすく、収束するのもはるかに速い。
サーチリストは離散化や2値化すべきではない。
そうすることではるかに多くの値がサーチでき、計算コストが減る。
グリッドサーチと比較し指数的に効率的な場合もある。

0 件のコメント:

コメントを投稿

Relation Netowrksの概要

いきなりまとめ Relation Netowrksとは関係性の推論を行えるニューラルネット。 画像や音声の単純な認識ではなく、複雑な思考が可能。 例えば、 グレーの物体から最も離れている物体の形は何か? ボールは今何処にあるか? ランダムに動くボール群のどれが...