読者です 読者をやめる 読者になる 読者になる

アラカン"BOKU"のITな日常

あれこれ興味をもって考えたことを書いてます

ディープラーニングの手書き数字認識率向上で試行錯誤した話の続き。

手作りディープラーニング実装で、正解率向上のために色々試みた事について書きます。

 

前回に引き続き、色々知恵は絞ってみたんですが、今回は「あまりうまくいかなかったこと」の報告になります。トホホ・・です。

 

全結合ニューラルネットワークディープラーニング)で、正解率をあげるためのアイディアを試してみたけど、空振りでした。

 

それどころか、前回成果があった!!と喜んでいた学習データを水増しするアプローチも、結局、誤差の範囲にすぎなかったとわかったという「落ち」もあって、散々でした。

 

今週は、次の3つのアプローチを試みてみました。

  1. 同じやり方でバッチサイズを色々と変えてみた
  2. 学習データの水増しパターンで「ノイズ」を作ってみた
  3. 複数経路で評価してベストな結果のみ残す方法をやってみた

 

バッチサイズを変えてみた

学習する時に、常に学習データ全件を対象にすると、時間に対する学習の進み方が遅くて不利なのは常識になっているようです。

 

それで、ミニバッチ法と言って、適当なサイズ(これをバッチサイズといいます。例えば、100件等)の学習データをランダムに切り出して、それで学習を行うやり方をとってます。

 

今まで、本とかで100になっているのが多いので、なんとなくそれでやってました。

 

が、それに疑問をもたずにやってていいのか?ひょっとしたら、他の数値の方が良い結果になるかもしれない・・と思いました。で、バッチサイズを50~100の単位で増やしたり、減らしたりして、20回学習を繰り返した時点の平均的な正解率を見てみたわけです。

 

結果グラフを保存するのを忘れた(泣)ので、言葉で書きますが、今回試した範囲では結局100が一番結果が良かったです。

 

本に書いてあるのはダテではないということですね。

 

水増しパターンでノイズを作った

前回は、左寄せ、右寄せでバリエーションを作ったので、そのバリエーションを増やして色々やってみました。

 

上ずらし、下ずらし、90度回転、180度回転、270度回転、そしてノイズです。

 

加工例の画像です。ノイズは上段の真ん中にある、ちょっとひび割れしたみたいに見える加工です。

f:id:arakan_no_boku:20161210153550j:plain

 

実は、個人的にノイズには期待してました。

 

不正解率の高い画像が、数字の一部がかけた様なパターンが多いので、ひょっとして、それに近いのを擬似的に学習させたら、いい結果がでるんじゃないかと仮説をたててたわけです。

 

結果は、散々でした。

 

回転系もノイズも逆に平均して1%くらい正解率が下がってしまいました。まあ、これも誤差の範囲で、結局変わらないということなんですが。

 

ベストチョイスをやってみた

今度は、一回の学習で複数のミニバッチを並行させて結果を比較し、一番いいものだけをアウトプットする方法(ベストチョイス法と勝手に命名しました)を試してみました。

 

学習をすすめる過程で、ランダムに抽出したバッチデータによって、正解率が下振れすることがままあります。

 

なので、一回の処理内で、バッチサイズ単位のデータ抽出を複数回やって、最後に損失率を比較して一番いいものだけをアウトすると、その振れ幅を小さくして効率的に学習がすすむのではないかという仮設をたてたわけです。

 

本来は、この辺を並列処理させるといいんですが、そこまで作り込むと失敗した時のダメージがきついので、シーケンシャルに2回処理して比較するパターンで試してみました。

 

シーケンシャルなので、時間は単純に1.5倍くらいかかるようになりました。まあ、当たり前です。

 

結果はというと、何もしない時と何の変化もありません。

 

下がりもしないけど、上がりもしない。と・・。そのくせ時間だけはかかるという・・・うーーーん、一番、面白くない結果です。

 

デバッグ的に動かしてみたら、結局、普通に動かすのと同じことをやっていただけなんだと気がついて、まあ、そりゃそうだろうなと思ったんですけど。

 

さらにショックなことが

実は、上記を色々試す過程で、ソースの一部にバグを見つけてしまいました。

 

で、それを修正したところ、前回もっとも結果のよかった「学習データ水増しパターン」よりも、何も余分なことをせずに普通に実行した方が結果がよくなってしまったのです。

 

正解率が最高で98.4%まで上がったのは、とてもうれしいのですけど、前回水増しパターンという自分のアイディアにちょっと酔っていた自分としては、これも微妙としかいいようのない落ちでした。やれやれ。