畳み込みニューラルネットワーク(CNN)では、畳み込みを進める前に、各ステップでの重みの行列の行と列を反転させてカーネル行列を取得します。これは、Hugo Larochelleによる一連のビデオで説明されています。
隠されたマップを計算する[...]カーネル行列を使用して、前の層からチャネルを持つ離散畳み込みを行うことに対応するであろう、そのカーネルは隠された重み行列から計算されるWij、我々は、行を反転して、列。
他のタイプのNNのように、畳み込みの縮小ステップを通常の行列乗算と比較する場合、便宜性は明確な説明になります。しかし、これは最も適切な比較ではないかもしれません...
デジタルイメージング処理では、画像へのフィルターの畳み込みの適用(これは実用的な直感のための素晴らしいYouTubeビデオです)は次のように関連しているようです:
- 畳み込みは連想的であるが(相互)相関はそうではないという事実。
- 時間領域での畳み込みは周波数領域での乗算と同じであるため、画像の周波数領域でフィルターを乗算として適用する可能性(畳み込み定理)。
DSP 相関のこの特定の技術環境では、次のように定義されます。
F∘I(x,y)=∑j=−NN∑i=−NNF(i,j)I(x+i,y+j)
これは本質的に、アダマール製品のすべてのセルの合計です。
F∘I(x,y)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢F[−N,−N]I[x−N,y−N]⋮F[0,−N]I[x,y−N]⋮F[N,−N]I[x+N,y−N]⋯⋱⋯⋱⋯F[−N,0]I[x−N,y−N]⋮F[0,0]I[x,y]⋮F[N,0]I[x+N,y]⋯⋱⋯⋱⋯F[−N,N]I[x−N,y+N]⋮F[0,N]I[x,y+N]⋮F[N,N]I[x+N,y+N]⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
ここで、はフィルター関数(行列として表される)であり、I (x 、y )は位置(x 、y )の画像のピクセル値です。F(i,j)I(x,y)(x,y)
相互相関の目的は、プローブ画像とテスト画像の類似性を評価することです。相互相関マップの計算は、畳み込み定理に依存しています。
一方、畳み込みは次のように定義されます。
F∗I(x,y)=∑j=−NN∑i=−NNF(i,j)I(x−i,y−j)
これは、フィルターが対称である限り、フィルターの行と列を反転した相関操作と同じです。
F∗I(x,y)=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢F[N,N]I[x−N,y−N]⋮F[0,N]I[x,y−N]⋮F[−N,−N]I[x+N,y−N]⋯⋱⋯⋱⋯F[N,0]I[x−N,y−N]⋮F[0,0]I[x,y]⋮F[−N,0]I[x+N,y]⋯⋱⋯⋱⋯F[N,−N]I[x−N,y+N]⋮F[0,−N]I[x,y+N]⋮F[−N,−N]I[x+N,y+N]⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
⎡⎣⎢⎢⎢⎢⎢⎢⎢1474141626164726412674162616414741⎤⎦⎥⎥⎥⎥⎥⎥⎥
計算上、両方の演算はフロベニウスの内積であり、行列乗算のトレースを計算することになります。
質問(コメントと最初の回答の後に再編成):
- CNNでの畳み込みの使用はFFTにリンクされていますか?
私がこれまでに収集したものから、答えはノーです。畳み込みのGPU実装を高速化するためにFFTが使用されています。ただし、アクティベーション前のステップで畳み込みを使用しているにもかかわらず、FFTは通常CNNの構造またはアクティベーション関数の一部ではありません。
- CNNの畳み込みと相互相関は同等ですか?
はい、それらは同等です。
- 「違いがない」という単純な場合、重みをカーネルマトリックスに反転するポイントは何ですか?
畳み込みの連想性(数学の証明に有用)も、FTと畳み込み定理に関する考慮事項も適用されません。実際、反転は行われないようにも見えます(相互相関は単に畳み込みと誤ってラベル付けされています)(?)。