Main Content

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

2 次元自己組織化マップ

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

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

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

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

ニューロンの 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 contains 3 objects of type line.

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

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

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

Figure Neural Network Training (12-Apr-2022 00:54:13) 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 contains 3 objects of type line.

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

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

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

     0
     0
     0
     0
     0
     0
     0
     0
     0
     0
      ⋮