畳み込み演算と完全接続の関係

最近、李宏毅のMLコースを見て、以前に書いた関連ブログを思い出したので、補足を作成しましょう(下の写真はコースPPTからのものです)

1.畳み込みニューラルネットワーク構造

CNN構造全体
ここに画像の説明を挿入

2、コンボリューションと完全接続

畳み込みは非常に特殊な操作であり、ニューラルネットワークとは関係がないと思われるかもしれませんが、実際にはニューラルネットワークです。実際、畳み込みカーネル(フィルター)は特別な「ニューロン」です。

畳み込みは、実際には完全に接続されたレイヤーであり、ある程度の重みがなくなります。下の図の緑色のボックスで識別されるフィーチャマップの出力は、実際には隠れレイヤーの神経の出力です。
ここに画像の説明を挿入

具体的な説明は次のとおりです。

次の図に示すように、畳み込みを行うときは、画像の左上隅にフィルターを配置し、内積を行って値3を取得します。これ、画像の6 * 6行列まっすぐにすることと同じです。このベクトルはの右側に入力され、ピンクのニューロンがあります(ボールは右端の図にあります)。ニューロン入力の出力後、3が取得されます。(ニューロンを結ぶ派手な線については心配しないでください。以下で説明します)
ここに画像の説明を挿入

  • 各「ニューロン」は画像の一部のみを検出します(ここでのニューロンとは、畳み込み演算での同様のニューロンを指します)。

画像の左上隅にフィルターを配置すると、フィルターはそれに一致する9ピクセルを考慮します。この時点で、6 * 6の36ピクセルを入力としてベクトルにまっすぐにすると、9ピクセルは次のようになります。それぞれ、上の図の右側にある1、2、および3の番号が付けられたピクセル値、7、8、および9の番号が付けられたピクセル値、および13、14、および15の番号が付けられたピクセル値に対応します。 (上の図の色付きの線に接続されている値)。

フィルタと画像行列の内積の後に得られる出力3が、特定のニューロンを介した入力ベクトルによって得られる出力3であると言えば、そのようなニューロンが存在することを意味します。これは、重みとの関係です。 、しかし、1、2、3、7、8、9、13、14、15の番号が付けられた9つのピクセルにのみ接続され、このニューロンとこれらの9つのピクセルの間の接続にマークされた重みはフィルターですこれらの9つの値行列([[1、-1、-1]、[-1,1、-1]、[-1、-1,1]])

対照的に、完全に接続されたニューロンは36個の入力すべてに接続する必要がありますが、パターンを検出するために画像全体を見る必要がないことがわかっているため、(畳み込み操作を実行して)9個の入力を接続するだけで済みます。 、9入力ピクセルで十分なのでこれを行うときは、使用するパラメーターが少なくなります。

  • 「ニューロン」間でパラメータを共有する

ストライド= 1でフィルターを移動すると、フィルターと画像行列の内積を介して別の出力値-1が得られます。この-1は別のニューロンの出力であると想定します。次に、このニューロンはどの入力に接続しますか。 ?? 下の図の枠で囲まれた領域は、ピクセル2、3、4、ピクセル8、9、10およびピクセル14、15、16に対応します。
ここに画像の説明を挿入

上の図から、出力が3と-1の2つのニューロン(ピンクのボール)は、それぞれ画像の2つの異なる位置にパターンがあるかどうかを検出するため、完全に接続されていることがわかります。2つの異なることがあります。 、および各ニューロンには、独自の独立した重みが必要です。

ただし、畳み込みを行うときは、最初に前に接続された各ニューロンの重みを減らし、次にいくつかのニューロン(上の図の出力が3と-1である2つのニューロンなど)を強制しますが、それらは1つのグループの重みを共有する必要があります。 2つのニューロンに接続されているピクセルオブジェクトが異なる(つまり、入力が異なる)場合、それらが使用する重みは、フィルターの要素値と同じである必要があります。これを重み共有と呼びます。これを行う場合、以前よりも少ないパラメーターを使用します

  • 総括する

フィルタが画像マトリックス上を移動して畳み込み演算を実行する場合、各移動は実際にはこの場所に特定のパターンがあるかどうかを検出します。完全に接続されたレイヤーの場合、画像全体を検出します。したがって、実際には異なります。毎回画像のさまざまな場所にパターンがあるかどうかを確認する必要があるため、これらのニューロンは画像全体のすべてのピクセルに接続する必要があり、さまざまなニューロンの接続の重みは互いに独立しています。

畳み込み層の場合、まず、画像の一部を検出するため、ニューロンを画像のピクセルの一部に接続するだけで済み、対応する接続​​に必要な重みパラメーターが減少します。同じものが使用されますフィルターは異なる位置のパターンを検出するため、これは畳み込み層でも実際には同じです。したがって、ニューロンは異なりますが、それらに接続されているピクセルオブジェクトは異なりますが、「同じことを行う」ことを前提としています。同じフィルターが使用されていることを前提として、これらのニューロンが使用する重みパラメーターはすべて同じです。このような重みの共有により、ネットワークに必要な重みパラメーターが再び削減されます。CNNの本質は、パラメータを削減するプロセスです。

3. 1 * 1コンボリューションと完全接続

1 * 1フィルターによって得られる最終的な特徴マップは元の画像と同じサイズですが、元の画像のチャネルはフィルターのチャネルに応じて変更できるため、次元が減少する可能性があります。

セクション2の内容によると、たとえば、3x3フィルターによって形成される「ニューロン」は、まっすぐにされた後、元の画像の各ピクセル値に部分的に接続されますが、1x1フィルターによって形成される「ニューロン」は元の画像マトリックスが直線化された後、すべてのピクセルの値に接続され、すべての重みがフィルター内の値になります。したがって、現時点では完全に接続されたネットワークに相当します。

4.特定のタスクでCNNを使用するための条件

CNNを使用するための条件付きベース:

(1)3つのプロパティ

  • 一部のパターンは画像全体よりもはるかに小さい-プロパティ1

    たとえば、鳥のくちばしが特徴である鳥の画像は、画像全体の小さな領域にあります。つまり、各ニューロンは小さな領域に接続するだけでよく、全体像全体に接続する必要はないため、対応するパラメーターも少なくなります。

  • 同じパターンが異なる地域に表示されます-プロパティ2

    同じパターンが画像の異なる部分に表示される場合がありますが、それらは同じ形状で同じ意味を表すため、同じニューロンと同じパラメータを使用して同じ検出器で検出することもできます。たとえば、2つの画像、1つのくちばしが左上隅にあり、もう1つが中央にありますが、左上隅にくちばしがあるかどうかを具体的に検出するために2つの異なる検出器をトレーニングする必要はありません。は中央のくちばしです。したがって、ほぼ同じ機能を持つこれらのニューロンにパラメータのセットを共有するように要求できます同じパラメータのセットを共有すると、合計パラメータの量を減らすことができます。

  • ピクセルをサブサンプリングしても、オブジェクトは変更されません-プロパティ3

    たとえば、画像をサブサンプリングするには、奇数行と偶数列のピクセルを削除し、画像を元のサイズの1/4に変換します。この画像の見方には影響しません。この観察に基づいて、Maxプーリングが利用可能です。レイヤー

(2)2つのアーキテクチャ

畳み込みアーキテクチャ:プロパティ1およびプロパティ2用

最大プーリングアーキテクチャ:プロパティ3の場合

おすすめ

転載: blog.csdn.net/weixin_43901214/article/details/111705025