Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

畳み込みニューラル ネットワークについて

畳み込みニューラル ネットワーク (ConvNet) は深層学習に広く使用されているツールです。イメージを入力とする場合に特に適していますが、テキスト、信号、およびその他の連続応答などの他の用途にも使用されます。他のタイプのニューラル ネットワークとは次のいくつかの点で異なっています。

畳み込みニューラル ネットワークは視覚皮質の生物学的構造からヒントを得ています。視覚皮質には単純型細胞と複雑型細胞が含まれています [1]。これらの細胞は、視野の小領域に基づいて活性化することがわかっています。これらの小領域は、受容野と呼ばれます。この研究結果からヒントを得て、畳み込み層のニューロンは、他のタイプのニューラル ネットワークのように全結合になるのではなく、その前の層の小領域に結合します。ニューロンは、イメージのこれらの小領域の外にある領域には反応しません。

これらの小領域は重なっている場合があります。したがって、ConvNet のニューロンは、空間相関のある結果を生成します。一方、他のタイプのニューラル ネットワークでは、ニューロンは結合を共有せず、独立の結果を生成します。

また、全結合ニューロンを使用するニューラル ネットワークでは、入力のサイズが大きくなるにつれてパラメーター (重み) の数が急速に増えます。畳み込みニューラル ネットワークでは、結合の数を減らし、重みを共有して、ダウンサンプリングを行うことで、パラメーターの数を減らしています。

ConvNet は畳み込み層、最大プーリング層または平均プーリング層、全結合層などの複数の層で構成されています。

Deep learning architecture diagram. The first image shows an example of a deep learning network architecture. The second image shows an example of how data passes through deep learning layers. As the data passes through the network, the layers learn more complex shapes which combine to create a probability for each class.

ConvNet の各層のニューロンは、3 次元に配置されており、3 次元の入力を 3 次元の出力に変換します。たとえば、イメージ入力では、最初の層 (入力層) がイメージを、イメージの高さ、幅、カラー チャネルを次元とする 3 次元の入力として保持します。最初の畳み込み層のニューロンが、これらのイメージの領域に結合し、これらのイメージを 3 次元の出力に変換します。各層の隠れユニット (ニューロン) は元の入力の非線形結合を学習します。これは特徴抽出と呼ばれます [2]。これらの学習された特徴は活性化とも呼ばれ、ある層から次の層への入力になります。最後に、学習した特徴はネットワークの最後にある分類器または回帰関数の入力になります。

ConvNet のアーキテクチャは、含まれる層のタイプと数によって異なる可能性があります。含まれる層のタイプと数は、特定の用途またはデータによって変わります。たとえば、カテゴリカル応答がある場合、分類関数と分類層が必要です。一方、応答が連続的である場合は、ネットワークの最後に回帰層が必要です。畳み込み層が 1 つまたは 2 つしかない小規模なネットワークは、少量のグレースケール イメージ データを学習するには十分かもしれません。一方、数百万個のカラー イメージを含むより複雑なデータについては、複数の畳み込み層と全結合層を持つ、より複雑なネットワークが必要になる場合があります。

MATLAB® の畳み込みニューラル ネットワークの層は次の方法で連結できます。

layers = [imageInputLayer([28 28 1])
          convolution2dLayer(5,20)
          reluLayer
          maxPooling2dLayer(2,'Stride',2)
          fullyConnectedLayer(10)
          softmaxLayer
          classificationLayer];

ネットワークの層を定義した後、関数 trainingOptions を使用して学習オプションを指定しなければなりません。次に例を示します。

options = trainingOptions('sgdm');

次に、関数 trainNetwork を使用して、学習データでネットワークの学習を行います。データ、層、学習オプションは学習関数の入力になります。次に例を示します。

convnet = trainNetwork(data,layers,options);

ConvNet の層の詳細は、畳み込みニューラル ネットワークの層の指定を参照してください。学習パラメーターの設定は、パラメーターの設定と畳み込みニューラル ネットワークの学習を参照してください。

参照

[1] Hubel, H. D. and Wiesel, T. N. '' Receptive Fields of Single neurones in the Cat’s Striate Cortex.'' Journal of Physiology. Vol 148, pp. 574-591, 1959.

[2] Murphy, K. P. Machine Learning: A Probabilistic Perspective. Cambridge, Massachusetts: The MIT Press, 2012.

参考

|

関連するトピック