深層学習のラベル精度向上のためにやったこと
前の記事で、無事マルチラベルのラベル付けができる学習モデルが作成できるようになりました。ただ、その精度は納得できるレベルではなかったので、その改善のために「やったこと」と「起きたこと」を説明します。
やったこと1: 教師データを増やす。
精度が低いのは教師データが少ないからだろう、ということで「教師データを増やす」→「学習モデルを作る」→「ラベル付けする」を繰り返します。
するとあることが起きます。それは…
- トレーニング用データのファイル作成ができなくなる。
エラーログを元に調べてみると、こんな記事を発見。これによると、macのPython3.4で、トレーニング用データをファイル出力するときのライブラリpickleに不具合があることが発覚!
そこでちょっと工夫して、教師データの上限を決めてランダムに選択するようにしてみたがかえって精度が悪くなる結果に。
苦肉の策として画像サイズを128→96にしてみたところ、精度もそれほど大きな違いがなかったのでこちらを採用して教師データを増やすことにしました。
その時の結果はこんな感じ。
- loss= 0.503688128473
- accuracy= 0.937188613881
やったこと2: 教師データを見直す。
過去に作成した教師データはラベル付けの基準が今と少し違うのが気になっていたので、改めて教師データを見直して修正。
しかし、見直したあとに作成した学習モデルでも大きな改善はみられず。(loss、accuracyの記録なし)
やったこと3: 期待から外れている画像の教師データを追加する。
毎日ラベル付けを行うようにして、その結果を閲覧、期待から外れている画像を補正のための教師データとして登録。
こうすればもっと精度が高くなることを期待しましたが、意外と精度は上がらず。
逆に大きく外れてしまう(特定のラベルが出やすくなる)事象が発生。
やったこと4: 合議制を導入。
画像サイズをもっと大きくしたり、層を増やしたり、…などが王道だと思われますが、残念ながら現在自宅の旧型mac-miniで頑張っているためマシンパワーは不足しており、さらに、上記の通りmac版のライブラリ不具合が判明しているのでちょっと小細工することに。
癖がある学習モデルから3つを選び、それぞれの分析結果を平均化して0.5以上(つまり、2つのモデルが判定したラベル)を採用することにしました。
現在は、自分としては70点くらいの結果は出ているかな、と思っています。
とは言っても、現在判定できるのは「イラスト」「文字」「ポスター・プラカード」くらいで「写真」の判定ができないのが残念なところです…
■最後に: 今後やりたいこと。
今後、精度改善としてやりたいこと。
- 画像サイズを大きくする。純粋にマシンパワーの問題なのでGCP上にTensorFlowで作り直してみたいです。ただ、データ量がそれなりにあるので個人の道楽にしてもいくらになるのか気になるところ。
- トレーニング用データのチューニング。現在の教師データはかなり偏りがあるので調整が必要と感じています。やり方はまだわかりませんが。
- 画像の別の情報を組み合わせた機械学習。例えば「写真」の判定は、色のスペクトルを取ればある程度判定できるのでは、と思ったり。
深層学習を自分でやってみた結果、細かいパラメータチューニングや、教師データの作成はほとんどブラックボックスなので職人芸が必要なように感じました。そういう意味では、ビジネスチャンスの匂いがします。ちょっと前にこんな記事がありましたし。
また何か実験してみたら報告します。
0 件のコメント:
コメントを投稿