web-dev-qa-db-ja.com

CNN入力層にはいくつのニューロンがありますか?

すべての文献で、彼らは、convnetの入力層は形状(幅、高さ、チャネル)のテンソルであると述べています。完全に接続されたネットワークには、画像(グレースケール画像を考慮)のピクセル数と同じニューロン数の入力層があることを理解しています。だから、私の質問は、畳み込みニューラルネットワークの入力層にいくつのニューロンがあるのか​​ということです。 下の画像 誤解を招くようです(または私はそれを間違って理解しました)入力層に3つのニューロンがあると言います。もしそうなら、これらの3つのニューロンは何を表していますか?彼らはテンソルですか? CNNの私の理解から、サイズ(高さ、幅、チャネル)のニューロンは1つだけであるべきではありませんか?私が間違っている場合は私を訂正してください

7
adrshm91

いくつかの用語を誤解しているようですが、畳み込み層には3次元があることにも混乱しています。

編集:CNNへの入力層が畳み込み層であることを明確にする必要があります。

任意の層のニューロンの数は、開発者によって決定されます。完全に接続された層の場合、通常、入力ごとにニューロンが存在します。したがって、質問で述べたように、画像の場合、完全に接続された入力層のニューロンの数は、ピクセルの数と同じになる可能性があります(開発者が何かのこの時点でダウンサンプリングしたい場合を除く)。これは、各チャネル(幅、高さ、チャネル)のすべてのピクセルを取得する完全に接続された入力レイヤーを作成できることも意味します。畳み込み層とは異なり、各入力は入力ニューロンによって1回だけ受信されます。

畳み込み層の動作は少し異なります。畳み込み層の各ニューロンには、局所受容野と呼ばれるものがあります。これは、ニューロンが入力全体に接続されているのではなく(これは、完全に接続されていると呼ばれます)、入力の一部(空間的にローカルである必要があります)のみに接続されていることを意味します。これらの入力ニューロンは、入力データの小さなセクションの抽象化を提供します。これを入力全体でまとめると、機能マップと呼ばれます。

畳み込み層の重要な特徴は、それらが空間的に不変であることです。これは、画像全体で同じ特徴を探すことを意味します。結局のところ、オブジェクト認識でトレーニングされたニューラルネットワークが、画像の左下隅にある場合にのみ自転車を認識することは望ましくありません。これは、ローカル受容野全体のすべての重みが同じになるように制約することによって実現されます。入力全体をカバーし、1つの特徴を探す畳み込み層のニューロンは、filtersと呼ばれます。これらのフィルターは2次元です(画像全体をカバーします)。

ただし、畳み込み層全体で1つの機能(コーナーなど)のみを検索すると、ネットワークの容量が大幅に制限されます。そのため、開発者はいくつかのfiltersを追加して、レイヤーが入力全体にわたっていくつかの機能を検索できるようにします。このフィルターのコレクションは、3次元の畳み込み層を作成します。

お役に立てば幸いです。

編集-opがルーズエンドをクリアするために与えた例を使用して:

OPの質問:(27 X 27)の画像があると想像してください。そして、それぞれのサイズ(3 X 3)のフィルターが3つあるとしましょう。したがって、合計で3 X 3 X 3 = 27個のパラメーター(W)があります。だから私の質問は、これらのニューロンがどのように接続されているのですか?各フィルターは27ピクセル(ニューロン)以上反復する必要があります。したがって、一度に9つの入力ニューロンが1つのフィルターニューロンに接続されます。そして、これらの接続は、フィルターがすべてのピクセルを反復するときに変化します。

回答:まず、受容野が重なるのが一般的(そしてしばしば重要)であることに注意することが重要です。したがって、左上のニューロン(ニューロンA)の3x3受容野が1のオーバーラップ/ストライドの場合、その右側のニューロン(ニューロンB)の受容野にも3x3受容野があり、その左端の3つの接続がニューロンAの右端の接続と同じ入力。

そうは言っても、これを視覚化したいと思うので、オーバーラップがない場合は例に固執し、画像の周囲にパディングは必要ないと想定します。解像度27x27の画像があり、3つのフィルターが必要な場合(これが私たちの選択です)。次に、各フィルターには81個のニューロン(ニューロンの9x9 2Dグリッド)が含まれます。これらのニューロンのそれぞれには、9つの接続があります(3x3受容野に対応)。 3つのフィルターがあり、それぞれに81個のニューロンがあるため、243個のニューロンがあります。

それで問題が解決することを願っています。あなたがあなたの用語(層、フィルター、ニューロン、パラメーターなど)と混同していることは私には明らかです。これらのことをよりよく理解するためにいくつかのブログを読んでから、CNNに焦点を当てることをお勧めします。幸運を :)

まず、画像をクリアしましょう。この画像は、入力層に正確に3つのニューロンがあることを示していません。これは、視覚化のみを目的としています。この画像は、ネットワークの一般的なアーキテクチャを示しており、各層を任意の数のニューロンで表しています。

ここで、CNNを理解するには、CNNが画像でどのように機能するかを確認するのが最善です。

画像は2Dオブジェクトであり、コンピューターでは2Dマトリックスとして表され、各セルにはピクセルの強度値があります。画像は複数のチャネルを持つことができます。たとえば、カラー画像の従来のRGBチャネルです。したがって、これらの異なるチャネルは、画像内の同じ場所の画像の異なる寸法(RGBの場合は色の寸法)の値と考えることができます。

一方、神経層は一次元です。それらは一方の端から入力を受け取り、もう一方の端から出力を提供します。では、1Dニューラルレイヤーで2D画像をどのように処理するのでしょうか。ここで、畳み込みニューラルネットワーク(CNN)が機能します。

1つのチャネル、次に連続するチャネルの連続する行を連結することにより、2D画像を単一の1Dベクトルに平坦化できます。サイズ(幅、高さ、チャネル)の画像は、サイズ(幅x高さxチャネル)の1Dベクトルになり、CNNの入力レイヤーに送られます。したがって、あなたの質問に答えるために、CNNの入力層には、そのすべてのチャネルにわたって画像内のピクセルと同じ数のニューロンがあります。

ニューロンの基本的な概念について混乱していると思います。

CNNの私の理解から、サイズ(高さ、幅、チャネル)のニューロンは1つだけであるべきではありませんか?

ニューロンは、一度に複数の数値を処理できない単一の計算単位と考えてください。したがって、単一のニューロンが画像のすべてのピクセルを一度に処理することはできません。画像全体を扱うために、多くのニューロンで構成される神経層が装備されています。

これがあなたの疑問のいくつかを解決することを願っています。コメント欄でお気軽にご質問ください。 :)

編集:

したがって、(27 X 27)の画像があると想像してください。そして、それぞれのサイズ(3 X 3)のフィルターが3つあるとしましょう。したがって、合計で3 X 3 X 3 = 27個のパラメーター(W)があります。だから私の質問は、これらのニューロンがどのように接続されているのですか?各フィルターは27ピクセル(ニューロン)以上反復する必要があります。したがって、一度に9つの入力ニューロンが1つのフィルターニューロンに接続されます。そして、これらの接続は、フィルターがすべてのピクセルを反復するときに変化します。

私の理解は正しいですか? CNNを接続のあるニューロンとして視覚化しようとしています。

CNNフィルターを視覚化する簡単な方法は、画像上を移動する小さなウィンドウとしてそれらを想像することです。あなたの場合、サイズ3x3のフィルターが3つあります。

  1. 私たちは通常、同じローカル受容野から(michael_question_answererとして)異なる種類の特徴を学習するために複数のフィルターを使用します-)適切に言えば)またはより簡単な用語、私たちのウィンドウ。各フィルターの重みはランダムに初期化されるため、各フィルターはわずかに異なる機能を学習します。

  2. ここで、各フィルターが画像上を移動し、一度に3x3グリッドのみをカバーすると想像してください。ウィンドウが右にどれだけシフトし、どれだけ下にシフトするかを指定するstride値を定義します。各位置で、ウィンドウのフィルターの重みと画像ピクセルは、作成された新しいボリュームに単一の新しい値を与えます。したがって、あなたの質問に答えるために、インスタンスでは、合計3x3 = 9ピクセルが、1つのフィルターに対応する9つのニューロンに接続されています。他の2つのフィルターについても同じです。

視覚化によってCNNを理解するためのあなたのアプローチは正しいです。ただし、用語の基本的な理解を深める必要があります。ここに役立つはずのいくつかの素晴らしいリソースがあります: http://cs231n.github.io/convolutional-networks/

https://adeshpande3.github.io/A-Beginner%27s-Guide-To-Understanding-Convolutional-Neural-Networks/

お役に立てれば。好奇心を持ち続けてください:)

4
Manish Dash