16,039
回編集
細編集の要約なし |
細編集の要約なし |
||
(同じ利用者による、間の11版が非表示) | |||
2行目: | 2行目: | ||
<font size="+1">[https://researchmap.jp/altfluss 古川 徹生]</font><br> | <font size="+1">[https://researchmap.jp/altfluss 古川 徹生]</font><br> | ||
九州工業大学 大学院生命体工学研究科 脳情報専攻<br> | 九州工業大学 大学院生命体工学研究科 脳情報専攻<br> | ||
DOI:<selfdoi /> | DOI:<selfdoi /> 原稿受付日:2021年8月21日 原稿完成日:2022年1月7日<br> | ||
担当編集委員:[https://researchmap.jp/wagaKBR_ 我妻 広明](九州工業大学大学院 生命体工学研究科 人間知能システム工学専攻)<br> | 担当編集委員:[https://researchmap.jp/wagaKBR_ 我妻 広明](九州工業大学大学院 生命体工学研究科 人間知能システム工学専攻)<br> | ||
</div> | </div> | ||
英:self-organizing map, Kohonen map <br> | |||
英略称:SOM<br> | |||
同義語:自己組織化写像<br> | |||
{{box|text= 自己組織化マップはT. | {{box|text= 自己組織化マップはT. Kohonenによって提案された教師なしニューラルネットの一種である。自己組織化マップはもともと大脳の機能局在の自己組織的な分化現象を説明する数理モデルに由来する。しかし、データ解析へ応用するため、ニューロン間の結合やダイナミクスが簡約化され、計算の効率化が図られている。自己組織化マップの学習原理はwinner-take-allによる競合学習とニューロンの空間的配置に基づく近傍学習の組み合わせである。自己組織化マップはデータの次元削減や可視化を行うニューラルネットであり、高次元データの可視化やデータマイニングなどの目的で幅広い分野で利用されてきた。}} | ||
==脳の数理モデルとしての自己組織化マップ== | ==脳の数理モデルとしての自己組織化マップ== | ||
[[大脳皮質]]には[[機能局在]]性があり、機能の類似する[[ニューロン]]は[[皮質]]上で隣接して分布することが知られる。また[[感覚]]系・[[運動]]系では身体的な空間的トポロジーが保存される[[トポグラフィックマッピング]]や[[体部位再現]]が知られる。これらの空間的な機能分化が自己組織的に生じる原理について、形式ニューロンを用いた数理モデルの研究が行われた。たとえばMarsburg<ref name=vonderMalsburg1973><pubmed>4786750</pubmed></ref>やAmari<ref name=Amari1980><pubmed>6246997</pubmed></ref>は外界からの刺激によりニューロンの機能局在と位相的な配置が自己組織化することを示した。 | |||
このような空間的機能分化の自己組織化は2種に分けられる<ref name=Kohonen2006><pubmed>16774731</pubmed></ref>[ | このような空間的機能分化の自己組織化は2種に分けられる<ref name=Kohonen2006><pubmed>16774731</pubmed></ref>。 | ||
タイプ1は[[レチノトピー]]を典型例とするトポグラフィックマッピングであり、入力が類似するニューロンが皮質上で近くに配置される自己組織化である。 | |||
タイプ2は[[視覚皮質]]における方向選択性ニューロンなどの機能局在であり、出力が類似するニューロンが皮質上で近くに配置される自己組織化である。 | |||
Kohonenはタイプ2の自己組織化の数理モデルを元に、ニューロン間の結合やダイナミクスを簡約化し、実データ解析に応用可能なシンプルなアルゴリズムに帰着した<ref name=Kohonen1982>'''T. Kohonen.(1982).'''<br>Self-organized formation of topologically correct feature maps. Biological Cybernetics, 43(1):59-69 [https://doi.org/10.1007/BF00337288 PDF]</ref>。これが自己組織化マップである。自己組織化マップは初期の提案からいくつかの改良を重ねており、最終形であるバッチ型自己組織化マップにおいては安定した学習が達成できる一方で、形式ニューロンを用いた数理モデルからは大きく様変わりしている<ref name=Kohonen2013><pubmed>23067803</pubmed></ref>。 | |||
==ニューラルネットとしての自己組織化マップ== | ==ニューラルネットとしての自己組織化マップ== | ||
[[ファイル:Furukawa Self organizing map fig1.png|サムネイル|図1. 自己組織化マップによる動物マップ <br> | [[ファイル:Furukawa Self organizing map fig1.png|サムネイル|'''図1. 自己組織化マップによる動物マップ'''<br>下表のデータをバッチ型自己組織化マップで学習した結果。哺乳類/鳥類、肉食/草 食、大型/小型などの動物の特徴に基づき、類似した動物の地図を作っている。このマップはU-matrix法<ref name=Ultsch1993>'''A. Ultsch. (1993).'''<br>Self-organizing neural networks for visualization and classification. In O. Opitz, B. Lausen, and R. Klar, editors, Information and Classification, pages 307-313. Springer, Berlin. | ||
[https://doi.org/10.1007/978-3-642-50974-2_31 PDF]</ref> | [https://doi.org/10.1007/978-3-642-50974-2_31 PDF]</ref>で色付けしており、赤い領域がクラスタ境界を表す。]] | ||
===入力と出力=== | ===入力と出力=== | ||
自己組織化マップの入力は通常、高次元のベクトルデータセットである。一方、出力はデータセットを低次元(通常は2次元) | 自己組織化マップの入力は通常、高次元のベクトルデータセットである。一方、出力はデータセットを低次元(通常は2次元)に射影したものであり、データ分布を地図として可視化して見ることができる。また低次元マップ空間から高次元データ空間への写像も、学習によって得られる。 | ||
'''図1'''は自己組織化マップにより得られた「動物マップ」である。入力データ(''' | '''図1'''は自己組織化マップにより得られた「動物マップ」である。入力データ('''下''')は16種の動物データであり、それぞれ15次元のベクトルで表されている。マップ上で類似する動物(哺乳類や鳥類、肉食や草食)は互いに近くに配置されている。 | ||
学習が終了した後、得られたマップは主に3つの用途で使うことができる。第一は、可視化によるデータマイニングである。動物マップの例ならば、どの動物が互いに似ているか、どのような動物クラスタ(類似する動物群)が存在するかを知ることができる。第二は新規データをマップ上へ射影することである。これにより新規データがマップのどこに位置するかを可視化できる。またラベル付き学習データを用いた場合は、新規データのラベルを推定することも可能である。動物マップの例ならば、新規の動物がマップのどこに位置するかを示したり、その動物が[[哺乳類]]か[[鳥類]]かを推測したりできる。第三は、新規データの予測や生成である。たとえば2種の中間的な性質を持つ動物の特徴を予測することができる。 | |||
===構造と学習原理=== | ===構造と学習原理=== | ||
[[ファイル:Furukawa Self organizing map fig2.png|サムネイル|'''図2. 自己組織化マップのアーキテクチャ'''<br>ニューロンはマップと呼ばれる低次元(通常は2次元)空間に格子状に配置されている。また各ニューロンは参照ベクトル<math>\mathbf{m}_i</math>を保持している。入力データ<math>x</math>に対し、もっとも近い参照ベクトルを持つニューロンが「勝者」となる。そして勝者ニューロンとその近傍ニューロンは、参照ベクトル<math>\mathbf{m}_i</math>が入力データ<math>x</math>との誤差が小さくなるように学習する。]] | |||
自己組織化マップではニューロン(ユニット)が低次元(通常は2次元)のマップ空間に格子状に並んだ構造を持つ('''図2''')。これは皮質上にニューロンが並んでいるものに見立てられる。またマップ空間においてニューロンの位置は固定されている。これらニューロンへの入力は<math>q</math>次元のベクトル<math>x = (x_1 , . . . , x_q )</math>であり、すべてのニューロンへ等しく入力される。<math>x</math>は<math>q</math>個の感覚ニューロンから皮質ニューロンへの入力に相当する。 | 自己組織化マップではニューロン(ユニット)が低次元(通常は2次元)のマップ空間に格子状に並んだ構造を持つ('''図2''')。これは皮質上にニューロンが並んでいるものに見立てられる。またマップ空間においてニューロンの位置は固定されている。これらニューロンへの入力は<math>q</math>次元のベクトル<math>x = (x_1 , . . . , x_q )</math>であり、すべてのニューロンへ等しく入力される。<math>x</math>は<math>q</math>個の感覚ニューロンから皮質ニューロンへの入力に相当する。 | ||
一方、各ニューロンは参照ベクトルと呼ばれる<math>q</math>次元のベクトル値<math>m_i =(m_{i1},...,m_{iq})</math>を保持する( | 一方、各ニューロンは参照ベクトルと呼ばれる<math>q</math>次元のベクトル値<math>m_i =(m_{i1},...,m_{iq})</math>を保持する(<math>i</math>はニューロンの番号)。参照ベクトルは感覚ニューロンから皮質ニューロンへのシナプス強度と解釈できる。ただし自己組織化マップでは各ニューロンが参照ベクトル値を記憶さえしていればよく、必ずしもシナプスという形で実装される必要はない。 | ||
自己組織化マップは[[競合原理]]と[[近傍学習原理]]という2つの原理で動作する。第一の競合原理では、入力データにもっとも合致するニューロンが勝者(最適ユニット: best matching unitとも呼ばれる)として選ばれる。すなわち入力データ<math>x</math>にもっとも近い参照ベクトル<math>m_i</math>を持つニューロンが勝者となり、そのデータを学習する権利をすべて獲得する。この競合原理は[[winner-take-all]]とも呼ばれる。 | |||
第二の原理である近傍学習は、勝者が獲得した学習の権利を近傍のニューロンに分配するものである。勝者に隣接するニューロンには入力データを学習する権利が分配される一方で、勝者から離れたニューロンには学習の権利が与えられない。近傍学習原理により、勝者およびその近傍ニューロンの参照ベクトルは入力<math>x</math>との誤差が小さくなるように更新され、次に同じ入力が来たときに再び勝者になりやすくなる。この2つの学習原理が位相的な順序を自己組織化する上で重要な役割を果たす。 | 第二の原理である近傍学習は、勝者が獲得した学習の権利を近傍のニューロンに分配するものである。勝者に隣接するニューロンには入力データを学習する権利が分配される一方で、勝者から離れたニューロンには学習の権利が与えられない。近傍学習原理により、勝者およびその近傍ニューロンの参照ベクトルは入力<math>x</math>との誤差が小さくなるように更新され、次に同じ入力が来たときに再び勝者になりやすくなる。この2つの学習原理が位相的な順序を自己組織化する上で重要な役割を果たす。 | ||
===オンライン型アルゴリズム=== | ===オンライン型アルゴリズム=== | ||
自己組織化マップの学習アルゴリズムは、[[競合]]・[[協調]]・[[適合]]という3プロセスの繰り返し計算である<ref name=Haykin1998>'''Haykin, S. (1998).'''<br>Neural Networks - A Comprehensive Foundation (2nd ed). Prentice Hall.</ref>。時刻<math>t</math>における入力データを<math>x(t)</math>とすれば、それにもっとも近い参照ベクトルを持つニューロン<math>c(t)</math>が時刻<math>t</math>の勝者となる: | |||
::<math>c(t)=arg\ m\underset{i}in||\mathbf{x}_{(t)}-\mathbf{m}_i(t)||</math> | ::<math>c(t)=arg\ m\underset{i}in||\mathbf{x}_{(t)}-\mathbf{m}_i(t)||</math> | ||
これが競合プロセスである。 | これが競合プロセスである。 | ||
一方、各ニューロンが学習する量はマップ空間上で勝者<math>c(t)</math>に近いニューロンほど大きい。この配分は近傍関数<math>h(\cdot,\cdot)</math>で決まる。近傍関数は勝者ニューロン<math>c</math>に対してニューロン<math>i</math>がどれくらいデータを学習するかを表し、しばしばガウス関数が用いられる: | |||
::<math>h_{ci} =h(\mathbf{z}_c,\mathbf{z}_i)=exp\left [-\frac{1}{2\rho^2(t)}||\mathbf{z}_c-\mathbf{z}_i||^2\right ]</math> | ::<math>h_{ci} =h(\mathbf{z}_c,\mathbf{z}_i)=exp\left [-\frac{1}{2\rho^2(t)}||\mathbf{z}_c-\mathbf{z}_i||^2\right ]</math> | ||
ここで<math>\mathbf{z}_c</math>, <math>\mathbf{z}_i</math>はマップ空間上でのニューロン<math>c</math>,<math>i</math>の座標であり、<math>\rho</math>は近傍の広さを決めるパラメータである。これが協調プロセスである。 | ここで<math>\mathbf{z}_c</math>, <math>\mathbf{z}_i</math>はマップ空間上でのニューロン<math>c</math>, <math>i</math>の座標であり、<math>\rho</math>は近傍の広さを決めるパラメータである。これが協調プロセスである。 | ||
最後に、入力<math>x(t)</math>との誤差が小さくなるように各ニューロンの参照ベクトルを更新する: | 最後に、入力<math>x(t)</math>との誤差が小さくなるように各ニューロンの参照ベクトルを更新する: | ||
53行目: | 61行目: | ||
ここで<math>\epsilon</math>は正の小さな定数である。これを適合プロセスである。 | ここで<math>\epsilon</math>は正の小さな定数である。これを適合プロセスである。 | ||
このように入力<math>x(t)</math>を変えながら競合・協調・適合プロセスを繰り返すのがオンライン型自己組織化マップのアルゴリズムである。また近傍の広さ<math>\rho</math> | このように入力<math>x(t)</math>を変えながら競合・協調・適合プロセスを繰り返すのがオンライン型自己組織化マップのアルゴリズムである。また近傍の広さ<math>\rho</math>は学習の初期に広くしておき、学習が進むに連れて小さくしていく。 | ||
このオンライン型アルゴリズムは、他の数理モデルや現実の脳との関連性を考えるうえで有用である。しかしオンライン型は学習時間がかかる上に計算結果が不安定であり、実データ解析には次に述べるバッチ型アルゴリズムを用いるべきであるとKohone自身も指摘している<ref name=Kohonen2013><pubmed>23067803</pubmed></ref>。 | |||
===バッチ型アルゴリズム=== | ===バッチ型アルゴリズム=== | ||
[[ファイル:Furukawa Self organizing map fig3.gif|サムネイル|'''図3. バッチ型自己組織化マップがデータ分布を学習する過程'''<br>自己組織化マップはデータ分布を多様体でモデル化する。]] | |||
入力データすべての集合を<math>X={\mathbf{x}_n}</math>とする。バッチ型アルゴリズムでは、学習の各ステップですべてのデータを用いる。 | 入力データすべての集合を<math>X={\mathbf{x}_n}</math>とする。バッチ型アルゴリズムでは、学習の各ステップですべてのデータを用いる。 | ||
競合プロセスでは、全データに対する勝者をすべて求める。 | 競合プロセスでは、全データに対する勝者をすべて求める。 | ||
::<math>\forall n, c(t)=arg\ m\underset{i}in||\mathbf{x}_{(t)}-\mathbf{m}_i(t)||</math> | ::<math>\forall n,</math> <math>c(t)=arg\ m\underset{i}in||\mathbf{x}_{(t)}-\mathbf{m}_i(t)||</math> | ||
続く協調プロセスでは、すべてのデータとニューロンの組み合わせについて学習量を決定する。 | 続く協調プロセスでは、すべてのデータとニューロンの組み合わせについて学習量を決定する。 | ||
::<math>\forall n,i</math> <math>h_{ni}(t) = h (c_n(t), i)</math> | ::<math>\forall n,i,</math> <math>h_{ni}(t) = h (c_n(t), i)</math> | ||
最後の適合プロセスでは、参照ベクトルを学習量の重み付き平均値へ更新する。 | 最後の適合プロセスでは、参照ベクトルを学習量の重み付き平均値へ更新する。 | ||
::<math>\forall i</math> <math>\mathbf{m}_i(t+1):=\frac{\sum_nh_{ni}(t)\mathbf{x}_n}{\sum_{n'}h_{n'i}(t)}</math> | ::<math>\forall i,</math> <math>\mathbf{m}_i(t+1):=\frac{\sum_nh_{ni}(t)\mathbf{x}_n}{\sum_{n'}h_{n'i}(t)}</math> | ||
これらを収束するまで繰り返すのがバッチ型アルゴリズムである。オンライン型が数百ないし数千ステップの繰り返し計算が必要なのに対し、バッチ型は数十ステップで収束する('''図3''')。また学習結果の安定性についてもバッチ型が優れている。 | |||
=== 自己組織化マップの学習理論 === | === 自己組織化マップの学習理論 === | ||
自己組織化マップの学習理論に関しては多くの研究が行われてきた。Kohonenの自己組織化マップに直接対応する目的関数は存在しないが、アルゴリズムをわずかに修正することで目的関数を得ることができる<ref name=Heskes2001><pubmed>18249959</pubmed></ref> | 自己組織化マップの学習理論に関しては多くの研究が行われてきた。Kohonenの自己組織化マップに直接対応する目的関数は存在しないが、アルゴリズムをわずかに修正することで目的関数を得ることができる<ref name=Heskes2001><pubmed>18249959</pubmed></ref>。また自己組織化マップのアルゴリズムは競合・協調プロセスをEステップ、適合プロセスをMステップとするEMアルゴリズムとして解釈できる<ref name=Heskes2001 /><ref name=Verbeek2005>'''J.J. Verbeek, N. Vlassis, and B.J.A. Kröse. (2005).'''<br>Self-organizing mixture models. Neurocomputing, 63(SPEC. ISS.):99-123 [https://doi.org/10.1016/j.neucom.2004.04.008 PDF]</ref>。 | ||
===自己組織化マップと機械学習=== | ===自己組織化マップと機械学習=== | ||
自己組織化マップは高次元データを低次元に射影して可視化するため、[[次元削減法]]の一種とみることができる。したがって高次元データの可視化やデータマイニングのみを目的とする場合は、他の次元削減法、たとえばt-SNE<ref name=VanDerMaaten2008>'''L. Van Der Maaten and G. Hinton. (2008).'''<br>Visualizing data using t-sne. Journal of Machine Learning Research, 9:2579-2625, 2008.</ref>、Isomap<ref name=Tenenbaum2000><pubmed>11125149</pubmed></ref>、Locally Linear Embedding <ref name=Roweis2000><pubmed>11125150</pubmed></ref>などでも代用できる。これらの手法と自己組織化マップの大きく異る点は、学習終了後、新規の入力データに対してもマップ上へ射影できること、および新規データの予測や生成ができるという点である。 | |||
新規データの射影・予測・生成も含めた自己組織化マップと等価な手法として、[[ガウス過程潜在変数モデル]](Gaussianprocess latent variable model, GPLVM)がある<ref name=Lawrence2004>'''N.D. Lawrence. (2004).''' Gaussian process latent variable models for visualisation of high dimensional data.</ref>。ガウス過程潜在変数モデルは[[ベイズ推論]]に基づくため柔軟な拡張が可能である。また[[教師なしカーネル回帰]](Unsupervisedkernelregression, UKR) は自己組織化マップと同じ目的関数を用いており、自己組織化マップの直接的な発展形と見ることができる<ref name=Meinicke2005><pubmed>16173183</pubmed></ref>。マップ空間を離散化する自己組織化マップと異なり、ガウス過程潜在変数モデルと教師なしカーネル回帰は低次元空間を連続空間のまま扱える。また可視化を目的としないのであれば、[[変分オートエンコーダ]](Variational auto-encoder, VAE)も自己組織化マップと同じ機能を持つ。現在の[[機械学習]]・[[AI]]の分野では自己組織化マップに代わってこれらの手法、とりわけガウス過程潜在変数モデルと変分オートエンコーダが広く使われている。 | |||
==参考文献== | ==参考文献== | ||
<references /> | <references /> |