|
前提知識
・ニューラルネットワークとは
・誤差逆伝播法
・画像認識方法
こちらでニューラルネットワークによる画像認識方法を説明しましたが、そこでは97%程度の正解率とする事ができました。
正解率を上げるために、単純にノード数を増やしたり学習の回数を増やしてもそれ以上学習率は上げることはできませんでした。
ここでは、更に学習率を向上させる方法として畳み込みニューラルネットワークを説明します。
■考え方
これまで説明したニューラルネットワークは、画像データを1次元のデータとして扱っています。従って、ピクセル単位での前後の画像データとの繋がりは考慮していますが、
画像で考えた時に周辺とのデータの繋がりは考慮できていません。例えば以下の画像を見てみると、ニューラルネットワークではこの画像を3と認識してしまいました。
人間が見ると9であることが解るでしょう。これは下記部分の線がつながっているか否かで判断しています。人間と同じように、
周辺とのデータとの関係性を判断する(画像を2次元データとして扱う)のが畳み込みニューラルネットワークの考え方です。

■フィルタ処理
画像データを2次元データとして扱う具体的なやり方として、フィルタ処理があります。フィルタ処理は画像データと掛けたものを足し合わせる積和演算を加えることで、
フィルタをスライドさせながら画像全体に対して積和演算をしていくことを畳み込み演算(Convolution)といいます。詳細はこちらで説明。

<フィルタの値をどのように設定するか>
フィルタには平滑化フィルタやエッジ検出フィルタなどいろんな種類のフィルタがありますが、特定のフィルタを設定する訳ではありません。まず積和演算はパーセプトロンの演算と同じとみなすことが出来ます。
となると、誤差逆伝播法により、各フィルタの値を重みとして扱って学習することが出来ます。

<フィルタ処理をニューラルネットワークに組み込み>
以下となります。

■プーリング層
画像データは、同じ数字であっても必ずしも同じピクセルの位置に配置される訳ではなく、ずれたりします。そういった場合においても、画像データを同じデータに近づけるための手法がプーリングといいます。
考え方は、画像データを以下の様に区切り、区切った中での最大値を出力します。これを最大プーリングといいます。他にも平均値を出す手法を平均プーリングといいます。

結果を見ると、画像がずれていたとしてもプーリングをすることで、元の画像情報(のプーリング結果)と近い情報を得る事が出来るのが解ります。
■ドロップアウト
学習データに極端にフィットさせた状態であるオーバーフィッティングを防ぐための手法となります。仕組みとしては、出力の半分をランダムに選択し、選択した出力を0にします。これでオーバーフィッティングした重みをリセットする効果があります。

■全部繋げた場合の例
以下となります。これらを実装した畳み込みニューラルネットワークの実装例はこちらを参照。

サブチャンネルあります。⇒ 何かのお役に立てればと
|
|