思考ノイズ

無い知恵を絞りだす。無理はしない。

Chainer - ミニバッチベースの各モデルの学習結果を比較してみる

昨日に続き、Chainerのお勉強。第4章のIris識別方法を比較してみたものの備忘録です。

Chainerによる実践深層学習

Chainerによる実践深層学習

第4章ではChainerの例としてアヤメの花びらのデータから種類を判別するスクリプトがかかれているのですが、いくつかのモデルを紹介して、コードが以下のようにアップデートされていきます。

  • 通常のミニバッチ (4.4)
  • 誤差の累積 (4.5)
  • Softmax Cross Entropy (4.7)
  • ロジスティック回帰 (4.8)

これらのミニバッチをベースにした学習精度を比較します。バッチするファイルの選択はランダムに行っているため、実行ごとのデータの取り方によって結果は毎回変わってしまいます。正しい比較のため、同じデータをとって3000回学習した場合にこの4つのモデルで正解率と損失係数を並べて比べ、判別効率がどの程度変わるのかグラフで視覚化してみたいと思います。

では結果をどん。上にも書きましたが、毎回選ばれるランダム値によって結果が違ってくるので、3パターンを並べてみます。

f:id:bython-chogo:20170920004559p:plain f:id:bython-chogo:20170920004712p:plain f:id:bython-chogo:20170920004904p:plain

正解率の良い順としては、ロジステック回帰>誤差の累積=Softmax Cross Entropy>(通常の)ミニバッチでしょうか。今回はロジスティック回帰が相性が良いみたいです。大体は1000~1500ぐらいで上に張り付くようですが、通常のミニバッチは学習が少し遅いようです。また、損失率は別のモデルに対してそのまま比較することには意味がないこともわかります。なるほど。

前回: bython-chogo.hatenablog.com