cntkファイルのパラメータを変更して、比較してみよう。
比較する値は、ErrorPrediction/Sampleだ。
layerTypes
- Sigmoid
- 0.04145937
- Tanh
- 0.049751244
RectifiedLinear
- 0.063018242
何回かやると結果が多少違うのかと思ったが、そうでもないようだ。
乱数的なものがあまりないのか?
ともかく、Sigmoidが一番結果がよいようだ。
サンプル数が603個なので、Sigmoidは25、Tanhは30、RectifiedLinearは38間違った分類を行ったということでよいのかな。
トレーニングデータは10000。
多いのか少ないのかわからん。
layerSizes
では、Sigmoidのまま、中間層を増やしてみよう。
- 2 hidden
- 0.04145937
- 1 hidden
- 0.04145937
- 3 hidden
- 0.3946932
- 5 hidden
- 0.46766169
おっ、と思ったが、桁が1つ上がってる。
確か、多層にすると発散するとか何とかってのが以前の問題点だったはずだから、増やせばいいというものでも無いのだろう。
minibatchSize
次はなんだ?
ミニバッチのサイズとかか。
- 25
- 0.04145937
- 10
- 0.04145937
- 40
- 0.036484245
- 50
- 0.039800995
75にしたら、SymFromAddr errorが発生してしまった。
WindowsのくせにUTF-8出力かよ・・・。
ミニバッチのサイズは、特に決め方が無いらしい。
大きいと確率的勾配降下法の良さが損なわれるらしい。
learningRatesPerMB
ミニバッチ当たりの学習比率か。
- 0.5:0.2*20:0.1
- 0.04145937
- 0.3:0.2*20:0.1
- 0.044776119
- 0.8:0.2*20:0.1
- 0.03814262
- 0.9:0.2*20:0.1
- 0.03814262
- 0.5:0.5*20:0.1
- 0.04145937
- 0.5:0.1*20:0.1
- 0.039800995
- 0.5:0.2*20:0.2
- 0.04145937
- 0.5:0.2*20:0.5
- 0.04145937
適当にやってみたが、そもそも値の見方がわからん。
ドキュメントには「比率*ecpoch : 残り」とあるけど、コロンが2つあるし。
じゃあ、ここまでで成績がよかった値を全部突っ込むと、よりよい結果になるのか?
- Sigmoid(変更無し)
layerSizes=2:50*2:2(変更無し)
minibatchSize=40
learningRatesPerMB=0.8:0.2*20:0.1 - 0.03814262
そういうわけでもない。
そもそも、こういうパラメータをあれこれ考えるのがめんどくさいから機械学習させてるんじゃないのか?という気になってきた。
もうちょっと機械的にパラメータが決められないと、つらいぞ。
そういうのが、最近の研究で定型化してきたというところなのだろうか。
今回で挫折シリーズを終えて、使い方じゃないことも調べていこう。
0 件のコメント:
コメントを投稿
コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。
注: コメントを投稿できるのは、このブログのメンバーだけです。