後続の畳み込み層はどのように機能しますか?


29

この質問は、「畳み込み層が正確にどのように機能するか」に要約されます。

私が持っていると仮定しグレースケール画像を表示します。したがって、画像には1つのチャネルがあります。最初のレイヤーでは、k 1個のフィルターとパディングを使用して3 × 3の畳み込みを適用します。次に、5 × 5の畳み込みとk 2フィルターを備えた別の畳み込み層があります。フィーチャーマップはいくつありますか?n×m3×3k15×5k2

タイプ1畳み込み

最初のレイヤーが実行されます。その後、特徴マップ(各フィルターに1つ)があります。これらはそれぞれ、サイズn × mです。すべての単一のピクセルを取ることにより作成された3 3 = 9つのパディングされた入力画像から画素を。k1n×m33=9

次に、2番目のレイヤーが適用されます。すべての単一フィルターは、各機能マップに個別に適用されます。これにより、k 1 個のすべての特徴マップに対して個の特徴マップが生成されます。したがって、2番目のレイヤーの後にk 1 × k 2の特徴マップがあります。新しい特徴マップの各のすべての単一のピクセルを取ることによって作成されました5 5 = 25前からパッド入りの特徴マップの「ピクセル」。k2k1k1×k255=25

システムが学習する必要がありのパラメータを。k133+k255

タイプ2.1畳み込み

前と同様:最初のレイヤーが実行されます。その後、特徴マップ(各フィルターに1つ)があります。これらはそれぞれ、サイズn × mです。すべての単一のピクセルを取ることにより作成された3 3 = 9つのパディングされた入力画像から画素を。k1n×m33=9

以前とは異なり、2番目のレイヤーが適用されます。単一のフィルターはすべて同じ領域に適用されますが、以前のすべての機能マップが適用されます。これにより、2番目のレイヤーが実行された後、合計で個の機能マップが作成されます。新しい特徴マップの各のひとつひとつのピクセルは、服用によって作成しまっkは25 5 = 25 K 2パディング機能の「ピクセル」は以前からマッピングされます。k2k255=25k2

システムが学習する必要がありのパラメータを。k133+k255

タイプ2.2畳み込み

上記のように、代わり有すると学習すると、単に他の入力特徴マップのコピーを取得したフィルタごとにパラメータを、次のものがK 13 3 + K 2K 15 5つの偶然にし学ぶ必要があります。55=25k133+k2k155

質問

  1. タイプ1またはタイプ2は通常使用されますか?
  2. Alexnetではどのタイプが使用されますか?
  3. GoogLeNetではどのタイプが使用されますか?
    • タイプ1と言うと、なぜ畳み込みが意味をなさないのですか?データに定数を掛けるだけではありませんか?1×1
    • タイプ2と言う場合、2次コストを説明してください(たとえば、ディープビジョンネットワークでは、2つの畳み込み層が連鎖している場合、フィルターの数が均一に増加すると、計算が2次増加します)

すべての答えについて、あなたの答えが正しいといういくつかの証拠(論文、教科書、フレームワークのドキュメント)を提供してください。

ボーナス質問1

プーリングは常に機能マップごとにのみ適用されますか、それとも複数の機能マップに対しても実行されますか?

ボーナス質問2

42×3143×4×5

私の研究


しばらくしてから:畳み込みニューラルネットワークアーキテクチャの分析と最適化、特に第2章と図2.2および図2.3。
マーティントーマ

回答:


5

上記の選択肢についてはわかりませんが、一般的に使用される方法は次のとおりです。

k23˙3˙k1+k1˙5˙5˙k2

ボーナス1:プーリングは機能マップごとに個別に行われます。

ボーナス2:「スライド」の順序は重要ではありません。実際、各出力は前のレイヤーに基づいて計算されるため、出力フィルターの応答は互いに依存しません。それらは並行して計算できます。


1
この質問を完全に忘れました。一方、私はCNNについて修士論文を書きました。第3章では、それらの仕組みについて説明します。
マーティントーマ

1
明確にする:タイプ2.2は(この回答に記載されている)正しいものである
マーティン・トーマ

1
誰もが実際にこれを実際にたい場合に備えて、Googleシートに深い畳み込みニューラルネットを実装しました。:それはCNNを通じてそれのように動作として、CNNが答えを予測するまでは、ピクセルのためのフィルタ、および入力画像、ピクセルを見ることができるdocs.google.com/spreadsheets/d/...
bwest87

5

私はこの同じ質問に数時間苦労しました。私がそれを理解するのを助けたサイトを共有すると思った。

答えは、2番目の畳み込み層のフィルターは、1番目の層のフィルターと同じ次元ではないということです。一般に、フィルターは入力と同じ次元数を持たなければなりません。したがって、最初のconvレイヤーでは、入力は2次元です(画像であるため)。したがって、フィルターにも2つの次元があります。最初のconvレイヤーに20個のフィルターがある場合、最初のconvレイヤーの出力は20の2D特徴マップのスタックです。したがって、最初のconvレイヤーの出力は3次元であり、3番目の次元のサイズは最初のレイヤーのフィルターの数に等しくなります。

これで、この3Dスタックが2番目のconvレイヤーへの入力を形成します。2番目のレイヤーへの入力は3Dであるため、フィルターも3Dにする必要があります。3番目の次元の2番目のレイヤーのフィルターのサイズを、最初のレイヤーの出力であるフィーチャマップの数と等しくします。

これで、最初の2次元で畳み込みます。行と列。したがって、各第2層フィルターと特徴マップのスタック(第1層の出力)の畳み込みにより、単一の特徴マップが生成されます。

したがって、2番目のレイヤーの出力の3番目の次元のサイズは、2番目のレイヤーのフィルターの数に等しくなります。


2

この講義とこの視覚化を確認してください

通常、タイプ2.1の畳み込みが使用されます。入力にはNxMx1イメージがあり、最初の畳み込みの後、N_1xM_1xk_1を取得するため、最初の畳み込み後のイメージにはk_1チャネルがあります。新しい次元N_1とM_1は、ストライドSとパディングPに依存します:N_1 =(N-3 + 2P)/ S + 1、M_1を同様に計算します。最初のconvレイヤーには、3x3xk_1 + k_1の重みがあります。非線形関数のバイアスにk_1が追加されました。

2番目のレイヤーには、サイズがN_1xM_1xk_1の入力画像があります。ここで、k_1は新しいチャンネル数です。2回目の畳み込みの後、N_2xM_2xk_2イメージ(配列)を取得します。2番目のレイヤーに5x5xk_2xk_1 + k_2パラメーターがあります。

k_3フィルターと入力NxMxC(Cは入力チャネルの数)を使用した1x1コンボリューションの場合、新しいイメージ(配列)NxMxk_3が取得されるため、1x1が有効です。この論文で紹介されまし

ボーナス1:プーリングは機能マップごとに適用されます。

詳細については、スタンフォード大学のCNNコースのスライドをご覧ください-畳み込みが複数の入力チャネルからどのように加算されるかを視覚的に確認できます。


2
リンクのみの回答は推奨されません。リンクが機能しなくなる可能性があります。関連情報をインライン化できますか?
ショーンオーウェン

1
視覚化は本当に役に立ちました。ひらめきの瞬間は、フィルターが2Dではなく3Dであることに気づいたときでした。
kmace

1
素晴らしいリンク、私のためにソートされたもの。しかし、あなたの答えは、リンクで述べられていることと矛盾しているようです。具体的には、convレイヤー2では、各受容フィールドは寸法5x5xk_1の3Dです。
ダニエルシュラウグ

@DanielSchlaugあなたは正しいです、私は答えを修正しました。
pplonski

1

k1331k1

k255k1k2

つまり、畳み込み層のカーネルは、前の層の出力の深さにまたがっています。

1×1kn11kn1

投機:

ボーナスの質問2は私がよく知っているものではありませんが、畳み込みの深度パラメーターは余分な次元になると思います。

mnknmnkn+1kn

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.