見出し画像

第2回:陸遜・法正をAI画像判定「過学習解消に向けて」


AIを手軽に導入出来る「MatrixFlow」を使いディープラーニングを実施。機械学習の実装体験/個人の振り返り用としてnoteに記す。


目的:陸遜と法正の画像を分類したい

画像1


課題:過学習を解消

「過学習(過適合)」とは、学習(訓練)データにあまりに適合しすぎて、学習(訓練)データでは正解率が高いのに学習(訓練)データとは異なるデータ(例えば、評価データ)では正解率が低くなってしまう、つまり、学習(訓練)データだけに最適化されてしまって汎用性がない状態に陥ることです。 https://ai-kenkyujo.com/2020/01/16/kagakushu/


第1回のディープラーニングの解析結果

画像3

学習回数:4
機械学習:10秒
使用データ:20枚
正答率:50%


対策:


①学習データを増やす

20枚 ⇛ 80枚 (4倍に増強)

スクリーンショット 2020-03-14 13.37.54


②正規化する

データを一定のルールに基づいて変換し、利用しやすくする操作


正規化する理由


もし特定の変数に大きな値が入っている場合、そのまま学習に使うと、その変数に引き寄せされてしまう。各関数の分散を揃えていくことにより、どの変数に対しても平等に取り扱うことができる


正規化の代表的な方法:データの標準化


入力データの変数を平均0、分散1になるように変換する操作

データの標準化をすることにより入力するデータの各変数は平等に取り扱うことができるが、ディープラーニングは層を重ねているため、入力データ以外の各層においても同様のことが出来ないか  → バッチ正規化


バッチ正規化

各層への入力を正当化することで、学習を安定化し、過学習を起こしにくくする操作のこと


補足:各層で伝わってきたデータをその層で、また正規化を行う。バッチ正規化を使うことにより学習が向上し、過学習を起こしにくくなる


MatrixFlowでの標準化方法

スクリーンショット 2020-03-14 14.06.39


データ入り口(画像)→標準化にチェック


スクリーンショット 2020-03-14 14.07.47


※ 「バッチ正規化」を「二次元畳み込み層」の真下に再設置(矢印に注意)


再度AIに学習をさせて精度の違いの確認


学習率:0.0001

バッチサイズ:64

エポック:15

学習回数:16

評価間隔(学習データ):1

評価間隔(テストデータ):1


学習結果:

スクリーンショット 2020-03-14 14.11.42

「test_loss と test_accuracy」の乖離や「train_accuracy と test_accuracy」の乖離が第1回目と比べると大幅に小さくなった


第1回 ディープラーニング解析結果との比較

画像8


推論結果

スクリーンショット 2020-03-14 14.22.59


推論結果:80枚中48枚正解(train_accuracy:約60%)

学習回数:16
使用データ:80枚
正答率:60%

第1回目と比べると精度率が10%向上


第3回では、学習用データをさらに追加するため「データ拡張」を行い、精度向上をすることを目標とする。


参考:



この記事が気に入ったらサポートをしてみませんか?