SOMの理論的な例をたくさん見てきましたが、1つはっきりしないことがあります。それは、ノードの場所がその重みに依存しているということです。たとえば、重みが大きいノードはマップの片側にあり、重みが小さいノードはマップ上で遠くにありますか?
1 に答える
いいえ。SOM(別名Kohonen Map)では、「ニューロン」ではなく、重み関数がデータに適用されます。
重みは、マップの構築(トレーニング)中に使用されます。つまり、各反復で、および各反復内の各格子セルに対して計算されます。言い換えると、マップの構築を含む各反復について、重み関数を使用して、セルの位置/位置を決定する際のこれらのポイントの寄与をスケーリングします。
コホーネンマップ内のデータポイントの位置は、そのデータポイントに最も近いマップ内のラティスセルによって決定されます。つまり、コホーネンマップを作成するには、データセット内の各ポイントを、に最も近いラティス内のセルに繰り返し再割り当てする必要があります。それ。
これを考える1つの方法は次のとおりです。KohonenMapは、データを2次元の固定トポロジ、つまりラティス、たとえば通常のグリッドにマッピングするだけです。
トレーニングフェーズ(マップの作成)の各反復では、各データポイント(必要な場合)を、それに最も近いラティス内の最も近いセルに再割り当てします。次に、セルの位置は、(i)前の反復からそのセルに割り当てられたデータポイントに基づいて調整されます。(ii)隣接するセルのデータポイント。
(i)および(ii)のデータポイントの値がセル位置の新しい値にどのように寄与するかは、各データポイントの重みによって決定され、重み関数によって決定されます。これは直感と一致しています。セルから離れたポイントは、セルに近いデータポイントと比較して、セルの新しい値への影響が小さいはずです。Kohonenマップでは、重み関数がこの制約を適用します。教科書の重み関数はガウス関数です。Pythonの場合:
def gaussian(dist, t, alpha=1.0, sigma=1.0) :
from math, import e
return alpha * t * e**(-dist/(2*sigma*t))**2
この関数では、distはセルの中心からのデータポイントの距離であり、tは時間です(たとえば、マップ作成中の各反復は時計の1ティックです)。
したがって、ガウス曲線を想像してみてください。その中心を半分にカットします。x軸は距離であり、y軸は重みを表します。したがって、距離が増加すると、重みは減少します。同様に、tが増加すると、重みも増加します。これは、Kohonenマップを構築する上で重要な要素です。反復が増えると(マップの構築中)、隣接するポイントが特定のセルの再配置に与える影響はますます少なくなります。したがって、時間と重みの関係の重要性は、セル位置の変化率が時間の経過とともに減少することです(位置は反復ごとに変化が少なくなります)。最終的には、次の反復で位置が変化しなくなります。これは、コホネンマップ。
データポイントの重みはこれと何の関係がありますか?さて、前の反復でのその格子セルの位置は、そのセルのデータポイントと隣接するセルのデータポイントによって決定され、新しいセルの位置へのそれらのポイントの寄与は、重み関数に従って決定されます。
最後に、データポイントの重みは、実際にはそのデータポイントの固有の属性ではありません。一つには、それはマップ構築中にのみ有用であり、もう一つには、データポイントは実際には重み値を持っていません-むしろ、マップ構築中の各反復で、特定のセルに割り当てられたデータポイントと隣接するセル内のそれらのポイントは特定の格子セルの新しい位置を計算するために使用されます。この計算では、各データポイントに重みを割り当てることにより、セルの中心からの各ポイントの距離が考慮されます。したがって、その重みの値は、その反復とそのセルの中心に対してのみ意味があります。たとえば、次のセルの中心を計算する場合などです。同じデータポイントは、そのセルの中心までの距離が異なるため、重みが異なります。