フィルターとアクティベーションマップは、畳み込みニューラルネットワークでどのように接続されますか?


11

特定のレイヤーのアクティベーションマップは、そのレイヤーのフィルターにどのように接続されていますか?フィルターとアクティベーションマップの間でたたみ込み演算を行う方法については質問していません。これら2つが持つ接続の種類について質問しています。

たとえば、完全な接続を実行したいとします。特定のレイヤーにf個のフィルターとn個のアクティベーションマップがあります。次のレイヤーでf * n個のアクティベーションマップを取得すると、新しいレイヤーごとにアクティベーションマップの数が増加します。これは、私が想定している方法です。

または、各フィルターが1つのアクティベーションマップのみに接続されていると言うこともできます。この場合、フィルターの数はアクティベーションマップの数と等しくなり、すべてのレイヤーは同じ数のフィルターとアクティベーションマップを持ちます。これは私のネットワークの現在のアーキテクチャであり、うまく学習しているようです。

私の混乱の主な原因は、私がオンラインで見るconvnetsの図を見ていることです。それらのいくつかは、次のように、フィルターとアクティブ化マップの間に「完全な接続」ここに画像の説明を入力してください を持っています- 最初のレイヤーには、4つのアクティブ化マップと、おそらく2つのフィルターがあります。各マップは各フィルターで畳み込まれ、次のレイヤーに8つのマップが作成されます。素晴らしく見える。

しかし、ここには私には意味をなさないアーキテクチャがあります- ここに画像の説明を入力してください 最初のレイヤーの6つのマップから2番目のレイヤーの16のマップにどのように進むのですか?6枚から16枚の地図を取得する方法は考えられますが、意味がありません。

回答:


10

あなたが投稿した2番目のたたみ込みニューラルネットワーク(CNN)アーキテクチャは、このペーパーからのものです。この論文では、著者はレイヤS2とC3の間で何が起こるかを説明しています。彼らの説明はあまり明確ではありませんが。このCNNアーキテクチャは「標準」ではないので、CNNの最初の例としてはかなり混乱する可能性があります。

CNNアーキテクチャ

28×285×5M×MN×NMN(MN+1)×(MN+1)

レイヤーS2とレイヤーC3の間で何が起こるかは次のとおりです。レイヤーS2の6つの特徴マップから生成されたレイヤーC3の16の特徴マップがあります。レイヤーC3 のフィルターの数は確かに明らかではありません。実際、アーキテクチャ図だけからは、これらの16のフィーチャマップを生成するフィルターの正確な数を判断することはできません。この論文の著者は、次の表(8ページ)を提供します。

レイヤーS2とC3間の接続

表を使用して、次の説明を提供します(7ページの下部)。

5×5

表では、著者はレイヤーC3のすべての特徴マップが3つ以上の特徴マップ(8ページ)を組み合わせることによって生成されることを示しています。

最初の6つのC3機能マップは、S2の3つの機能マップの隣接するすべてのサブセットから入力を受け取ります。次の6つは、4つの連続するすべてのサブセットから入力を受け取ります。次の3つは、4つのいくつかの不連続なサブセットから入力を受け取ります。最後に、最後のものはすべてのS2フィーチャーマップから入力を受け取ります。

さて、レイヤーC3にはいくつのフィルターがありますか?残念ながら、彼らはこれを説明していません。最も単純な2つの方法は次のとおりです。

  1. C3機能マップごとにS2機能マップごとに1つのフィルターがあります。つまり、同じC3機能マップに関連付けられたS2機能マップ間でフィルターを共有するフィルターはありません。
  2. C3機能マップごとに1つのフィルターがあり、結合されたレイヤーS2の(3つ以上の)機能マップ全体で共有されます。

どちらの場合も、「組み合わせる」とは、S2フィーチャマップグループごとの畳み込みの結果を、C3フィーチャマップを生成するために組み合わせる必要があることを意味します。作成者はこれがどのように行われるかを指定していませんが、追加が一般的な選択です(たとえば、このページの中央付近のアニメーションgifを参照してください)

作者はいくつかの追加情報を提供していますが、それは私たちがアーキテクチャを解読するのに役立ちます。彼らは、「レイヤーC3には1,516のトレーニング可能なパラメーターがある」(8ページ)と言います。この情報を使用して、上記のケース(1)と(2)を決定できます。

(6×3)+(9×4)+(1×6)=60(1410+1)×(1410+1)=5×55×5×60=1,5001,500+16=1,516(5×5×16)+16=416

したがって、上記の表Iをもう一度見ると、各S2機能マップに関連付けられている10の異なる C3フィルターがあります(したがって、合計で60の異なるフィルター)。

著者はこのタイプの選択について説明します。

[レイヤーC3の]異なる特徴マップは、異なる入力セットを取得するため、異なる(うまくいけば補完的な)特徴を抽出する必要があります。

これで状況が明確になればいいのですが。


3

@の前の値がフィルターの量を示し、特徴マップの量を示さないことは確かに正しいです(ただし、最初の畳み込み層の場合、これらの値は一致します)。

最後の質問について:はい、レイヤーlのすべてのフィーチャマップをレイヤーl + 1のすべてのフィルターに接続することは理にかなっています。これの唯一の理由は、機能マップを組み合わせる方法(パス)が増えるため、ネットワークの表現力が大幅に向上するためです。これにより、入力画像にあるものを区別しやすくなります。

最後に、自分で実装してニューラルネットワークのスキルを練習しているかどうかはわかりませんが、特定のタスクに畳み込みネットワークを適用したい場合は、Theano、Brainstorm、Caffeなどの優れたニューラルネットワークライブラリがすでにいくつかあります。


私がやろうとしていることは、それらを比較するための両方の方法でベンチマークを行うことだと思います。完全に接続されていないバージョンでは、分類をより速くトレーニングして計算します。しかし、正確さはより重要です。完全に接続されていないバージョンでは、各フィルターは、より一般的なタスクではなく、より具体的なタスクにローカライズされています。完全に接続されたバージョンでは、単一タイプの機能ではなく、以前のすべてのフィルターに最適なものに基づいてフィルターが更新されます。私はc#を使用してネットワークを100%ゼロから作成しています。確かに物事を行うための簡単な方法ではありません...しかし、それは私に深遠なことを教えてくれました
Frobot 2015年

それは健全な計画のように聞こえます。幸運を!
Sjoerd、2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.