2016/03/06

[ai]『深層学習』の8章に挫折してCNTKを試す (8) - 最終回

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 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。