自己組織化写像

自己組織化写像（じこそしきかしゃぞう、Self-organizing maps, SOM, Self-organizing feature maps, SOFM）はニューラルネットワークの一種であり、大脳皮質の視覚野をモデル化したものである。自己組織化写像はコホネンによって提案されたモデルであり、教師なし学習によって入力データを任意の次元へ写像することができる。主に1～3次元への写像に用いられ、多次元のデータの可視化が可能である。出力となる空間をマップ (map)、競合層 (competitive layer)、もしくは出力層 (output layer) と呼ぶ。出力層に対して入力データの空間を入力層(input layer)と呼ぶこともある。自己組織化写像はコホネンマップ (Kohonen map)、コホネンネットワーク (Kohonen network)、自己組織化マップ、ソム (SOM) などと呼ぶこともある。
自己組織化写像は複数の人工ニューロンが接続された構造である。この人工ニューロンはノード (node)、もしくはユニット (unit) と呼ぶこともある。

**定性的紹介**
自己組織化写像は入力層と競合層（出力層）からなる2層構造の教師なし学習ニューラルネットワークである。入力層は単に入力を与えるだけであるため、競合層のみを単に自己組織化写像と呼ぶこともある。
入力は次元の数値データであり、出力は競合層に配置されたノードとなる。各ノードは次元空間上に配置され、それぞれのノードに入力データの次元と同じ次元のベクトルが対応付けられている。この対応付けられたベクトルのことを重みベクトルと呼び、この重みベクトルを更新することで学習が行われる。
競合層のノード配置の次元は自由に設定できる。最も基本的な利用法は、2次元上にノードを配置し、高次元データを学習させることで高次元データの関係性を可視化するというものである。このように、自己組織化写像は高次元のデータ間に存在する非線形な関係を簡単に幾何学的関係を持つ像に変換することができる。
現在、自己組織化写像には様々なバリエーションがあり、従来の自己組織化写像を基本SOM (Basic SOM, BSOM) と呼ぶことがある。しかし、BSOMという略し方は後述するバッチ学習SOM (Batch Learning SOM, BL-SOM) と混同しかねないため望ましくない。

**基本SOMの算法**

**前提**
ネットワークにおける実際の学習はベクトル量子化を参考にしている。技術的には「教師（監督）なし学習」とはいうものの、「我々には望んだ結果がある」という点で「監督」がついている（SOMにおいては、BMUの選定がそれ。算法参照）。
もうすこし算法をみていこう。10×10の人工ニューロン（以下「ノード」）の配列を作る（「競合層」）。それぞれのノードには一つずつの重みベクトルがあり、自分の「物理的な位置」について全智である（つまり、配列の添字を自分自身が知っている）。各ノードが持つ重みベクトルの成分は入力ベクトル（後述）と同じ次元を持つ。それらの重みベクトルの内容は初期化時にランダマイズされることによく注意して欲しい。
さて、ここでマップへの入力を用意する。通例に倣って、色を表現するベクトルを三つ作ろう。計算機科学の世界では、色は赤、緑、青の三つの要素で表現できる。従って、入力ベクトルは3要素を持ち（3次元ベクトルである）、一つ一つのベクトルには色空間の中に対応点がある。
 R = 
 G = 
 B = 

**変数**
ベクトルは太字で表す。- t = 現在の繰り返し回数- λ = 最大繰り返し回数- Wv = 現在の重みベクトル- D = 目的とする入力- Θ(t) = BMU（後述）からの距離によって変化する値（近傍半径）- α(t) = 時間によって変化する係数（学習係数）

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

**この算法についての解析的アプローチ**
SOMのアルゴリズムにはどんな次元の特徴ベクトルでも入力できるが、多くの応用では、入力の次元は高い。出力されるマップは1次元や2次元など、入力と異なる次元でも構わない（「近傍」が定義できればよい（→位相幾何学））。しかしポピュラーなのは2次元もしくは3次元のマップである。なぜなら、SOMは次元の拡大でなく、主に次元の削減に用いられるからである。
アルゴリズムはニューラルネットの用語を用いることで容易に記述できる。各々のニューロンは出力のマップ上にそれぞれ固有の「物理的な」位置を持っている。入力に対して、一番近いウェイトベクトルを持っていたニューロンを「勝者」と呼び、勝者の重みベクトルはより入力ベクトルに近くなるように修正される。この「勝者が全部とる (winner-take-all, WTA)」プロセスは競合学習と呼ばれる。
それぞれのニューロンは近傍を持っている。あるニューロンが勝者となった場合、その近傍のニューロンもまた重みベクトルを修正される。このプロセスを、全てのデータについて、何度も（通常、たくさん）繰り返す。
このネットワークは最終的には、入力データセット中のグループまたはパターンを出力ノードに関連付ける結果となる。それら関連づけられたニューロンは入力パターンの名前で呼んでもよいことになる（色のベクトルを学習したなら色ニューロンのように）。
他の多くのニューラルネット同様、SOMにも2つのフェーズがある。- 学習プロセスにおいては、写像が構築される。ニューラルネットは競合学習を用いて自己組織化する。ネットワークは多くの入力を必要とする。次のフェーズで出現しそうな入力ベクトルをあらん限り食わせるといい（あれば、だが）。さもなければ、入力ベクトルを何度も繰り返し与える。- 写像プロセスにおいては、新しい入力ベクトルは速やかにマップ上の位置が与えられ、自動的に分類される。ただ一つの勝者ニューロンが存在する。このニューロンは重みベクトルが入力ベクトルに最も近いものであり、各ニューロンの重みベクトルと入力ベクトルとのユークリッド距離を計算することで簡単に決定できる。
generative topographic map (GTM) はSOMの新しいバージョンの一つである。GTMは1996年にBishop, Svensen, Williamsの論文中で初めて発表された。GTMは確率モデルであり、おそらく収束する。また、近傍半径の収縮や学習係数の減少を必要としない。
GTMは生成モデルである。入力データを「まず低次元空間側で確率的に点を選び、それを観測された高次元入力データの空間上の点に滑らかな関数で写像した後でノイズを加えたもの」と仮定する。低次元側の確率分布、滑らかな関数、そして高次元側でのノイズのパラメータは全てEMアルゴリズム (:en:EM_algorithm) によって入力データから学習される。

**ニューラルネットとしてのSOM**
大脳皮質の視覚野は、コラム構造を持っている。このコラム構造は生得的なものではなく、学習によって得られるものである。この視覚野におけるコラム構造の自己組織化をモデル化したものが自己組織化写像である。WillshawとVon Der Malsburgによって1976年に提案された。

**クラスタリング手法としてのSOM**
SOMはk平均法に位相の概念を入れたものである。また、k平均法はBL-SOMにおいて近傍半径を0、学習係数を1に固定したものと等価である。

**可視化手法としてのSOM**
高次元のデータや、ベクトル空間上にないデータを、2次元の平面上などのより低次元で容易に観察できる空間に写像する（次元削減する）ことで可視化できる。次元削減によって可視化を行う手法としては他に主成分解析などがある。曲面上に分布している場合は主成分解析ではうまく削減できないが、SOMなら高次元空間上でのニューロンの配置が曲面にフィットするよう変形するので表示用の空間を有効に利用できる。

**アルゴリズム**
SOMのアルゴリズムは大きく分けて2つ存在する。一つは大脳視覚野のモデルであったことに由来するオンライン学習モデルである。このモデルでは、データが入力されるたびに学習が行われる。後から入力されたデータのウェイトが高くなる傾向がある。また、各ニューロンの初期値はランダムに設定される。
一方、SOMを解析手法と見て、データの入力順序に依存する性質を取り除くための変更が加えられたものがBL-SOMである。BL-SOMではニューロンは主成分解析を用いて求められた主成分軸の張る空間上に整然と初期配置される。また、全てのデータを各々のニューロンに分類し終わった後で各々のニューロンが同時に学習を行う。

**SOMのバリエーション**
 バッチ学習SOM (Batch Learning SOM, BL-SOM)：全ての入力を与えた後に重みベクトルの更新を行うSOM（学習順序に依存する性質が除去される）- 木構造SOM (Tree Structured SOM, TS-SOM)：複数のSOMを木構造にしたSOM（上位のSOMが下位のSOMをガイドすることで計算時間が短縮される）- 適応部分空間SOM (Adaptive Subspace SOM, AS-SOM)：各ノードが線形部分空間などの多様体を表現するように作られたSOM- 球面SOM (Spherical SOM)：出力のマップを球面にしたSOM（端がなくなるため、学習における偏りが軽減される）- 中央値SOM (Median SOM): 非ベクトル的データに応用可能にしたもの- 階層的SOM (Hierarchical Self-Organizing Map, Hierarchical Feature Map, HFM)- 双曲面SOM (Hyperbolic SOM, HSOM)

**書籍**
この分野の代表的な書籍としては、考案者自身による著書『自己組織化マップ』が挙げられる。

**参考文献**

**関連項目**
 自己組織化- ニューラルネット- クラスタリング- アルゴリズム- アソシアトロン

**外部リンク**
 自己組織化マップ