Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

1 次元自己組織化マップ

2 次元層のニューロンは、入力ベクトルが発生する入力空間のさまざまな領域を表すことを学習します。さらに、近傍ニューロンは類似の入力に応答するように学習するため、この層は与えられた入力空間のトポロジを学習します。

ここで 100 個のデータ点が単位円上に作成されます。

競合ネットワークは、これらの点を自然なクラスに分類するために使用されます。

angles = 0:0.5*pi/99:0.5*pi;
X = [sin(angles); cos(angles)];
plot(X(1,:),X(2,:),'+r')

Figure contains an axes object. The axes object contains an object of type line.

マップは 10 個のニューロンの 1 次元層になります。

net = selforgmap(10);

ネットワークの学習を 10 エポック行うように指定し、train を使用して入力データでネットワークに学習させます。

net.trainParam.epochs = 10;
net = train(net,X);

Figure Neural Network Training (12-Apr-2022 00:54:06) contains an object of type uigridlayout.

次に、plotsompos を使用して学習済みネットワークの重み位置をプロットします。

赤い点はニューロンの重みベクトルであり、青い線によって距離が 1 以内の各ペアを接続します。

plotsompos(net)

Figure SOM Weight Positions (plotsompos) contains an axes object. The axes object with title SOM Weight Positions contains 3 objects of type line.

マップを使用して [1; 0] などの入力を分類できるようになりました。上記の入力ベクトルは与えられた入力空間の一方の端に位置したため、ニューロン 1 と 10 のどちらかの出力が 1 になるはずです。最初の数値のペアはニューロンを示し、単一の数値はその出力を示します。

x = [1;0];
a = net(x)
a = 10×1

     0
     0
     0
     0
     0
     0
     0
     0
     0
     1