ニューラルネットワークのコンボリューションが便宜を超えた数学的理由はありますか?


14

畳み込みニューラルネットワーク(CNN)では、畳み込みを進める前に、各ステップでの重み行列の行と列を反転させてカーネル行列を取得します。これは、Hugo Larochelleによる一連のビデオで説明されています

隠されたマップを計算する[...]カーネル行列を使用して、前の層からチャネルを持つ離散畳み込みを行うことに対応するであろう、そのカーネルは隠された重み行列から計算されるWij、我々は、行を反転して、列。

ここに画像の説明を入力してください

他のタイプのNNのように、畳み込みの縮小ステップを通常の行列乗算と比較する場合、便宜性は明確な説明になります。しかし、これは最も適切な比較ではないかもしれません...

デジタルイメージング処理では、画像へのフィルターの畳み込みの適用(これは実用的な直感のための素晴らしいYouTubeビデオです)は次のように関連しているようです:

  1. 畳み込みは連想的である(相互)相関はそうではないという事実。
  2. 時間領域での畳み込みは周波数領域での乗算と同じであるため、画像の周波数領域でフィルターを乗算として適用する可能性(畳み込み定理)。

DSP 相関のこの特定の技術環境では、次のように定義されます。

FI(x,y)=j=NNi=NNF(i,j)I(x+i,y+j)

これは本質的に、アダマール製品のすべてのセルの合計です。

FI(x,y)=[F[N,N]I[xN,yN]F[N,0]I[xN,yN]F[N,N]I[xN,y+N]F[0,N]I[x,yN]F[0,0]I[x,y]F[0,N]I[x,y+N]F[N,N]I[x+N,yN]F[N,0]I[x+N,y]F[N,N]I[x+N,y+N]]

ここで、はフィルター関数(行列として表される)であり、I x y は位置x y )の画像のピクセル値です。F(i,j)I(x,y)(x,y)

ここに画像の説明を入力してください

相互相関目的は、プローブ画像とテスト画像の類似を評価することです。相互相関マップの計算は、畳み込み定理に依存しています。


一方、畳み込みは次のように定義されます。

FI(x,y)=j=NNi=NNF(i,j)I(xi,yj)

これは、フィルターが対称である限り、フィルターの行と列を反転した相関操作と同じです。

FI(x,y)=[F[N,N]I[xN,yN]F[N,0]I[xN,yN]F[N,N]I[xN,y+N]F[0,N]I[x,yN]F[0,0]I[x,y]F[0,N]I[x,y+N]F[N,N]I[x+N,yN]F[N,0]I[x+N,y]F[N,N]I[x+N,y+N]]

ここに画像の説明を入力してください


[1474141626164726412674162616414741]

ここに画像の説明を入力してください


計算上、両方の演算はフロベニウスの内積であり、行列乗算のトレースを計算することになります。


質問(コメントと最初の回答の後に再編成):

  1. CNNでの畳み込みの使用はFFTにリンクされていますか?

私がこれまでに収集したものから、答えはノーです。畳み込みのGPU実装を高速化するためにFFTが使用されています。ただし、アクティベーション前のステップで畳み込みを使用しているにもかかわらず、FFTは通常CNNの構造またはアクティベーション関数の一部ではありません。

  1. CNNの畳み込みと相互相関は同等ですか?

はい、それらは同等です。

  1. 「違いがない」という単純な場合、重みをカーネルマトリックスに反転するポイントは何ですか?

畳み込みの連想性(数学の証明に有用)も、FTと畳み込み定理に関する考慮事項も適用されません。実際、反転は行われないようにも見えます(相互相関は単に畳み込みと誤ってラベル付けされています)(?)。


アントニは、ウェイトを反転させるソースを指摘できますか?@hosseinが指摘したように、順序を反転するだけで、畳み込みでできる相互相関で何でもできます。したがって、この周波数領域のものはすべて無関係です。
seanv507

@ seanv507 OPを編集して、あなたが私に尋ねていると思うもののソースを含めました。たたみ込みは、反転されたフィルター行列との相互相関と同じ操作ですが、離散たたみ込みの「痛み」を超えることができない場合、なぜそれを超えるのかわかりません相関により達成されます。与えられた答えは明らかに知識がありますが、コメントに収めることができ、2つの異なる操作の背後にある理由(DSPからMLに引き継がれる「伝統」ですか?)、学習プロセスに関する意味、 FTとの関係。
アントニ・パレラダ

1
アントニ、裏返す必要はありません。それは単なる慣習です。dspでは、人々は相互相関ではなく畳み込みについて話します。相互相関ニューラルネットワークは舌から離れません。しかし、より自然な(人間が解釈する)操作は、CNNの相互相関(テンプレートマッチング)です(たとえば、回転対称ではなく垂直エッジフィルターを検討してください)。私はヒューゴlarochelleは多分むしろ相互相関よりもコンボリューションは、標準的な機能である数値計算ライブラリについて話していると思うので、(彼は効果的にコンボリューションすることにより行うことができる相互相関を言っている。)。
seanv507

1
アントニ、最初の2つの質問/回答に同意し、私のコメントは3番目の質問に答えていました。
seanv507

1
CNNとFFTの間に必ずしも直接リンクがあるわけではありませんが、通常の畳み込みの合計を保持するときにFFTを使用することでCNNの高速化が得られることを示す証拠があります。例についてはこちらをご覧ください:arxiv.org/pdf/1312.5851.pdf
アレックスR.

回答:


8

畳み込みまたは相関を使用する場合、ニューラルネットワークでできることには違いはありません。これは、フィルターが学習され、CNNが畳み込み演算を使用して特定のタスクを実行することを学習できる場合、相関演算を使用して同じタスクを実行することも学習できるためです(各フィルターの回転バージョンを学習します)。

相関よりも畳み込みについて考える方が直感的であると時々感じる理由についての詳細を見つけるには、この投稿が役に立つかもしれません。

畳み込みと相互相関の間に違いがない場合、重みをカーネル行列に反転させるポイントは何であるかというこの疑問が残っています。イアン・グッドフェローらによるディープラーニングのからいくつかの文章を含めたいと思います。この質問に答えるには:

「カーネルを反転させる唯一の理由は、可換プロパティを取得することです。可換プロパティは証明を書くのに便利ですが、通常はニューラルネットワーク実装の重要なプロパティではありません... 多くの機械学習ライブラリは相互相関を実装しますが、呼び出す畳み込み

要点は、畳み込みは古典的なマシンビジョンアプリケーションでのお気に入りの操作ですが、畳み込みニューラルネットワークの実装の多くでは相関に置き換えられることです。


ありがとうございました。リンク先のブログを注意深く読みましたが、畳み込みの使用は単に相関と同等ではなく、周波数領域の機能選択に対応しているようです。これについて詳しく説明する回答を探しています。
アントニ・パレラダ

私が知っているように、両方が2つのマトリックスのドット積を行うので、それらはできることは同等ですが、畳み込みはドット積の前にフィルター行列を反転し、CNNはフィルターを学習するため、反転したフィルターを学習できます。
ホセイン

Hosseinsの説明に+1、ただしブログのリンクには-1。このブログは主にハードウェアに焦点を当てており、彼は畳み込みやその他の信号処理の概念に関するバックグラウンドのないCSの男です。
seanv507

CNNの畳み込みとフーリエ変換の関係(またはその欠如)について、いくつかの追加のパラグラフがあることを引き続き主張したいと思います。
アントニ・パレラダ

2

FFTと畳み込みの間のリンクには実用的な理由があります。

畳み込みは、時間/画像ドメインで遅いです。適用するn×n 1ピクセルへのフィルターが必要 On2乗算と加算。のすべてのピクセルに適用するN×N したがって、画像には n2N2操作。これは急速に成長し、多数の操作は余分な時間を必要とするだけでなく、より多くの数値誤差をもたらします。

畳み込み定理によると、時間領域での畳み込みは、周波数領域での点ごとの乗算と同等です。FFTは高速です。優れた漸近性能を備えています。ON2ログN2実際の実装は、多くの場合、高度に最適化されています。したがって、フーリエ領域に切り替えると、で畳み込みを実行できますON2 の代わりに、時間(点ごとの乗算が支配的です) On2N2。これにより、FFT->乗算->逆FFTルートを下るのがはるかに複雑に見えますが、かなり高速化できます。詳細はこちら

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