- @ThothChildren
- 2018.12.1
- PV 355
Growing Neural Gas
ー 概要 ー
Growing Neural Gas(成長型ニューラルガス)とは、教師なしニューラルネットワークの一つで、Neural Gasが強く初期値に依存してしまうのを避け必要とあればネットワークを拡張するNeural Gasの一種.良い性能を発揮することで知られ、クラスタ分析においてはk-meansよりも優れていると言われる.
この章を学ぶ前に必要な知識
条件
- 入力は多数のベクトル
- 出力ユニットの数は特に決める必要はない
効果
- 入力ベクトルのトポロジカルな関係を学習することができる
- ユニットの数を柔軟に変化させながらベクトル量子化を行う
ポイント
- Neural Gasとは異なり、ユニット間にエッジを持つことがあり、各ユニットはエラー積算値を保持
- はじめは二つのユニットだけを持ち、データに応じて適切にユニット数を増やしていく(必要があれば減らす)
解 説
Growing Neural Gas(成長型ニューラルガス)とは、教師なしニューラルネットワークの一つで、Neural Gasが強く初期値に依存してしまうのを避け必要とあればネットワークを拡張するNeural Gasの一種.
多くのケースで、良い性能を発揮することで知られ、クラスタ分析においてはk-meansよりも優れていると言われる. | Growing Neural Gasとは |
Growing Neural Gasの概念図 | |
Growing Neural GasはNeural Gasと似ている部分が多い.
エッジの追加とユニット(ニューロン)の追加が行われている.
エラー積算値を各ユニットが保持しているのも特徴.
Growing Neural Gasのアルゴリズム
1. 二つのユニット(ニューロン)をランダムに初期化.
2. 入力データを一つ取り出す.
3. 最も入力データに近いものをs1として二番目に近いものをs2とする
4. s1から伸びているエッジの年齢を全て1足す.
5. s1のエラー積算値にs1と入力データの誤差距離を足し合わせる.
6. 通常のNeural Gasと同様に「それぞれのユニットと入力データの誤差」を元に近いユニットの更新を行う.
7. s1とs2がエッジで繋がっていれば、そのエッジの年齢を0とする.もしエッジがなければ新しくエッジを繋げる.
8. エッジの年齢が閾値a_maxを超えているものを除去.もしこれによって一つもエッジを持たないユニットができたらそれらも除去する.
9. 特定回数入力データを使って学習をしたら,
最もエラー積算値の大きいユニットとそのユニットに最も近いユニットの間に新しいユニットを挿入する.
重みは上記二つの重みを足して半分にしたもので元あったエッジを除去し新しく加える.
10. 全部のエラー積算値を一定の割合をかけて小さくする.
11. 一定の条件を満たしていなかったら2.からやり直し. | Growing Neural Gasのアルゴリズム |
Fritzkeらによる元論文はリンクを参照 | 外部リンク 元論文 |
YoutubeにおけるGrowing Neural Gasのデモ.
学習の過程が見られる. | |
NeuralGasによる学習と
Growing Neural Gasによる学習
(上記論文より引用).
Neural Gasはあらかじめ100個のユニットと決めている. |
この章を学んで新たに学べる
Comments