Deep learning勉強筆記7

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を紹介しました。

リモートワークも可能なWebエンジニア&フロントエンドエンジニアを募集しています。

WEBエンジニア・プログラマー募集情報
フロントエンドエンジニア募集情報

カテゴリー別のブログ記事を見る


Webエンジニア・プログラマー >

フロントエンド >

QAエンジニア >

会社・職場環境紹介 >

社内イベント >

在宅リモートワーク >

関連記事

最近の記事 おすすめ記事
  1. 新人さん向けの品質についての読書会

  1. 今週のコーディング素振り(2018/3/25)

  2. ランチ会でFizzBuzz大会をやってみました

  3. ISO審査を受けました

カテゴリー

アーカイブ

検索


TOP
TOP