Main Content

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

2 次元自己組織化マップ

1 次元の問題と同様に、この自己組織化マップは、入力ベクトルが発生する入力空間のさまざまな領域を表すことを学習します。ただしこの例では、ニューロンはラインではなく 2 次元グリッドに配置されます。

四角形内の 1000 個の 2 要素ベクトルを分類します。

X = rands(2,1000);
plot(X(1,:),X(2,:),'+r')

Figure contains an axes object. The axes contains a line object which displays its values using only markers.

ニューロンの 5 行 6 列の層を使用して、上記のベクトルを分類します。各ニューロンが異なる四角形の領域に応答し、近傍ニューロンが隣接する領域に応答するようにします。

ネットワークは入力の次元と一致するように構成されます。初期の重みをプロットするために、ここでこの手順が必要です。通常、構成は学習時に自動的に実行されます。

net = selforgmap([5 6]);
net = configure(net,X);

plotsompos を使用し、作成したネットワークを可視化できます。

各ニューロンは、その 2 つの重みの位置で赤い点によって表されます。最初は、すべてのニューロンがベクトルの中央に同じ重みをもつため、1 つの点のみ表示されます。

plotsompos(net)

Figure SOM Weight Positions (plotsompos) contains an axes object. The axes object with title SOM Weight Positions, xlabel Weight 1, ylabel Weight 2 contains 3 objects of type line. One or more of the lines displays its values using only markers

次に、1000 個のベクトルでマップの学習を 1 エポック行い、ネットワークの重みを再プロットします。

学習後、ニューロンの層の自己組織化が始まっていることに注意してください。これにより、各ニューロンが入力空間のそれぞれ異なる領域を分類し、隣接する (接続された) ニューロンが隣接する領域に応答するようになります。

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

Figure Neural Network Training (27-Jul-2023 15:32:38) contains an object of type uigridlayout.

plotsompos(net)

Figure SOM Weight Positions (plotsompos) contains an axes object. The axes object with title SOM Weight Positions, xlabel Weight 1, ylabel Weight 2 contains 3 objects of type line. One or more of the lines displays its values using only markers

これで、ベクトルをネットワークに与えてどのニューロンが応答するかを確認することにより、ベクトルを分類できるようになりました。

"1" で示されるニューロンが応答したため、x はそのクラスに属します。

x = [0.5;0.3];
y = net(x)
y = 30×1

     0
     0
     0
     0
     0
     0
     0
     0
     0
     0
      ⋮