自己組織化写像
全重みベクトルをランダマイズする
入力ベクトルを一つ用意する
マップ上の全てのノード一つ一つに対して、 入力ベクトルと各ノードの重みベクトル間の(非)類似度を計算する。(非)類似度にはユークリッド的な距離が用いられる(=各要素の差の自乗和) 各ノードを検査して、最も距離が小さい(ベクトル間の距離が短い=もっとも良く一致した)ノードを見つける。このノードをBMUと呼ぶ (Best Maching Unit)。
BMUの近傍のノード(各ノードの「位置」が判っているので、「近傍」のノードを探し出すことができる)の重みベクトルを次のように変更し、入力ベクトルに近付ける。 Wv(t + 1) = Wv(t) + Θ(t)α(t)(D(t) - Wv(t)) 近傍のノード以外は重みを変化させない。 繰り返し回数が増える程、Θは適用する範囲を狭くし、αも小さい値にする(近傍半径の収縮と学習係数の減少。下記GTM参照)
λに達していなければ2.に戻る。
入力ベクトルを様々に振れば、このような繰り返しによって、似た性質のノード(似た重みベクトルをもったノード)が競合層の上で「物理的な」クラスタを形成する。
ベクトルは太字で表す。
t = 現在の繰り返し回数
λ = 最大繰り返し回数
Wv = 現在の重みベクトル
D = 目的とする入力
Θ(t) = BMU(後述)からの距離によって変化する値(近傍半径)
α(t) = 時間によって変化する係数(学習係数)