Day 2 - Section 4 畳み込みニューラルネットワークの概念 のまとめ
この記事は個人的なお勉強用のメモです。
このお勉強の位置
深層学習 Day 2
Section 1 勾配消失問題
Section 2 学習率最適化手法
Section 3 過学習
Section 4 畳み込みニューラルネットワークの概念 ← これ
Section 5 最新のCNN
講義
CNN
畳み込みニューラルネットワーク
CNN(Convolutional Neural Network)
- 入力層(入力画像)
- 畳み込み層 * N
- プーリング層 * M
- 全結合層
- 出力層(出力画像)
主に画像データで使われる。
音声データでも使われる場合がある。
畳み込み層
- 入力値をフィルター(全結合でいう重み)に通す。
それぞれの要素とフィルターを掛けてすべて足す。 - 出力された値にバイアスを加える。
それぞれの要素にバイアスの値を加える。 - 活性化関数を実行する。
→ 出力値が出力される。
縦、横、チャンネルの3次元データをそのまま学習し、
次に伝えられる。(=3次元の空間情報の学習が可能)
パディング
一般的にはゼロパティングが使われる。
入力画像の周りをゼロで埋める。
パディングの目的:
出力サイズを調整するため。
(パディング無しの場合、出力サイズがどんどん小さくなってしまう)
ストライド
フィルターをいくつずらすか、という数値。
ストライドを大きくすると、出力サイズが小さくなる(画像が小さくなる)。
チャンネル
奥行きを処理するもの。
入力データのチャンネル数=フィルターのチャンネル数
チャンネルの例:
RGBの計3チャンネル
im2col
4次元の画像データを2次元の行列に変換する関数。
4次元とは
1:画像データの個数(1つのバッチ内での画像データの個数)
2:チャンネル数(例:3(=RGB))
3:縦のサイズ
4:横のサイズ
画像データの個数を次元に加えることで、複数の画像データを
まとめて変換できることがメリット。
プーリング層
- Maxプーリング
対象領域の最大値 - Averageプーリング
対象領域の平均値
実装演習
im2colの動作確認
col.transposeありで実行
col.transposeするとデータの入れ替えが発生する。
入力データ内のフィルターサイズに相当する(3,3)のデータを1行に変換している。
フィルターで処理しやすくするためか。
col.transposeをコメントアウトして実行
こちらはデータの1行に、入力データ内で重複したデータが出力されている。
これではおそらくフィルターの処理が効かない。
col2imの使用例
変数の存在をすっかり忘れていた。
模範解答はこちら。(ただし、実行結果は同じ)
CNNの実行
このCNNでは画像データを扱っているが、これまで勉強してきたNNと同様に、
学習できていることがわかる。
CNNのポイントはim2col関数。
forward関数からim2col関数を呼び出している。
※学習データの正解率が1に近いので一見過学習かと思われるが
学習データの精度とテストデータの精度に開きがないので、これは過学習ではない。
※ 実行が遅い場合はGPUを使うという方法がある。
確認テスト
出力サイズの計算
入力サイズ:6×6
フィルターサイズ:2×2
ストライド:1
パディング:1
\begin{align}
出力サイズ幅&=\frac{入力サイズ幅+パディング\times 2-フィルターサイズ幅}{ストライド}+1
\\
&=\frac{6+1\times 2 -2}{1}+1\\
&=7\\
出力サイズ高さ&=\frac{入力サイズ高さ+パディング\times 2-フィルターサイズ高さ}{ストライド}+1
\\
&=\frac{6+1\times 2 -2}{1}+1\\
&=7\\
\end{align}
修了テスト~練習問題~
問題64(畳み込み演算)
元のサイズ:224×224
チャンネル数:3
パディング:0
ストライド幅:1
フィルターサイズ:11×11
\begin{align}
出力サイズ高さ&=\frac{元のサイズ高さ+パティング\times 2 - フィルターサイズ高さ}{ストライド}+1\\
&=\frac{224+0\times 2-11}{1}+1\\
&=214\\
出力サイズ幅&=\frac{元のサイズ幅+パティング\times 2 - フィルターサイズ幅}{ストライド}+1\\
&=\frac{224+0\times 2-11}{1}+1\\
&=214\\
\end{align}
チャンネル数は3のまま。
問題65(畳み込み演算)
元のサイズ:224×224
チャンネル数:3
パディング:0
ストライド幅:4
フィルターサイズ:4×4
\begin{align}
出力サイズ高さ&=\frac{元のサイズ高さ+パティング\times 2 - フィルターサイズ高さ}{ストライド}+1\\
&=\frac{224+0\times 2-4}{4}+1\\
&=56\\
出力サイズ幅&=\frac{元のサイズ幅+パティング\times 2 - フィルターサイズ幅}{ストライド}+1\\
&=\frac{224+0\times 2-4}{4}+1\\
&=56\\
\end{align}
問題66(Maxプーリング)
2 | 4 | 3 | 2 |
---|---|---|---|
4 | 6 | 3 | 4 |
4 | 6 | 5 | 4 |
10 | 24 | 1 | 2 |
フィルター:2×2
ストライド幅:1
パディング:0
Maxプーリング
6 | 6 | 4 |
---|---|---|
6 | 6 | 5 |
24 | 24 | 5 |
問題67(Averageプーリング)
2 | 4 | 3 | 2 |
---|---|---|---|
4 | 6 | 3 | 4 |
4 | 6 | 5 | 4 |
10 | 24 | 1 | 2 |
フィルター:2×2
ストライド幅:2
パディング:0
Averageプーリング
4 | 3 |
---|---|
11 | 3 |
Author And Source
この問題について(Day 2 - Section 4 畳み込みニューラルネットワークの概念 のまとめ), 我々は、より多くの情報をここで見つけました https://qiita.com/amateur2020/items/47d961ebdb35368dc7f8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .