Deep learning勉強筆記7mmj blog

エンジニア 伍
エンジニア 伍
2018年03月20日

CNNの簡単紹介2

前回は、CNNの思想と簡単なやり方を紹介しました。
CNNは画像認識の領域で使われているニューラルネットワークです。
今回はもうすこし詳しく紹介します。

典型的なニューラルネットワークと比べて、CNNの処理には、畳み込み層(convolutiona)とプーリング層(pooling)この2つの特別な層があります。

畳み込み層(convolutiona)

畳み込み層(convolutiona)は、データの畳み込みを処理する層です。この層はCNNで一番重要な層です。
具体的な計算方法は:

少し説明します。
最初に入力した画像は5*5のマスです。上記画像の一番左の図です。
真ん中の図はfilterの列です。この列は特徴を取得するためのものです。
左列の図から3*3マスを一つずつ取得して、filterと計算し、一つの値を出力します。
その結果が右の図です。
5*5のマスの中には、9つの3*3マスがありますので、最後の結果は3*3マスになりました。

上記の算式は、その具体的な計算方法です。
要するに、マスの運算です。
(詳しい内容についてはwikiで探してみてください。)

この中で一番重要なものは、filterの選択です。
先に説明したとおり、所得する特徴はfilter部分で決めているからです。filterの大小も重要ですが、それを決める方法は多分やってみないとわからないです(笑)。

プーリング層(pooling)

次にプーリング層(pooling)を説明します。
畳み込み層後、データ量は減少しました。(上の例についてだと、5*5のマスが3*3のマスになりました)
でも、このままで利用すると、overfittingの問題が発生しやすいです。
なので、もっと抽象の処理が必要です。

これはプーリング層(pooling)で行います。
プーリング層(pooling)は、特徴を計算する層です。計算方法は、普通は最大値を取るだけです。
例えば、
31 10 25
12 23 10
11 23 14
このような行列なら、この中での最大値31を取って、戻します。
この最大値は、実際にはこのエリアの特徴です。

プーリング層(pooling)の処理が終わったら、データ量はもっと減少します。
最初は5*5のマスでしたが、処理後は1つの数字になりました。

以上、CNNの基礎2を紹介しました。

2018年03月20日

エンジニア 伍 |

« »
このページのトップへ