- 
	  
	  
	  
	  
	    @ThothChildren
	  
	 - 2018.12.1
 - PV 614
 
競合学習
ー 概要 ー
      競合学習(Competitive Learning)とは教師なし学習で頻繁に行われる学習で、最も入力データに反応したニューロンのみ更新したりするようなニューロン同士で競わせるような学習.winner-take-allな学習で勝者となったニューロンは入力データにより近くなるように更新する.自己組織化マップは競合学習の一つ.競合学習では入力層と競合層を持つ.
    
    
  
    
	  この章を学ぶ前に必要な知識
	
	 条件
		  - 入力はベクトル
 - 出力はあるニューロンが1を出す
 - 競合層のニューロンの数を決めておく
 
 効果
		  - クラスタがあればそれを学習することができる
 - 教師なし学習によってクラスタを代表するようなベクトルを見つけ出せる
 - 入力データに対して最も反応したニューロンがそのクラスタであることを示す
 
 ポイント
		  - アクティブになるニューロンは一つだけのため、それを勝者総取り(winner-take-all)ニューロンと呼ぶ.
 - アクティブ度合いは、入力データとニューロンの持つ重みベクトルの内積で決める
 - アクティブになったニューロンだけ重みを更新してより入力に近づける
 - 自己組織化マップは競合学習の一種
 
解 説
競合学習(Competitive Learning)とは教師なし学習で頻繁に行われる学習で、最も入力データに反応したニューロンのみ更新したりするようなニューロン同士で競わせるような学習.
winner-take-allな学習となっており、最も入力に反応し勝者となったニューロンは入力データにより近くなるように更新する.
自己組織化マップは競合学習の一つ.  | 競合学習とは  | 
競合学習のネットワークは入力層と競合層がある.
以下の図のように通常のニューラルネットワークとは異なり、各ノードが重みベクトルwを持つことに注意.スカラーな一つの重みではない.
そしてこの重みが特徴ベクトルを表す.  | 競合学習のネットワーク  | 
![]()  | Competitive Learning(競合学習)の概念図  | 
競合学習の学習過程は非常にシンプル.以下に示す.
今回は全ての重みと入力ベクトルは正規化されているものとします.
競合学習のアルゴリズム
1. 競合層の各ニューロンが持つ重みベクトル\(w\)を0~1の値で初期化する.
2. ある与えられたデータ\(x\)を入力として、全ての競合層のニューロンが持つそれぞれの\(w\)とで距離を計算します(内積やユークリッド距離など).
3. 2.で計算した値が最も反応したニューロンを勝者として、それをアクティブなニューロンとし、それ以外の全ての競合層のニューロンを非アクティブなニューロンとします.
4. 3.でアクティブなニューロンのみ、重みを更新します.
識別時
識別時は、学習したネットワークに入力を与えてどのニューロンが最も反応するかを計算します.どのクラスタかを知りたい場合は最も反応したニューロンにラベル付けすればいい.  | 競合学習の学習と識別  | 
最も反応したニューロンのみを更新する勝者総取りを行う競合学習を紹介しました.
それをHard Competitive Learning(ハード競合学習)と言います.
この手法には幾らか欠点があり、初期値が悪すぎると常に非アクティブなユニット(ニューロン)となってしまい何もせずにdead units(neuron)として学習を終えてしまう可能性があります.この場合はそれらはエラーを抑えるような働きをすることもすることなく学習が終わってしまいます.
これは初期値のせいでもあるため、初期値を入力データからランダムに選択するようなことをすることで改善される可能性があります.
また初期値に強く依存して学習のたびに結果が全く異なってしまう可能性があります.
Soft Competitive Learning(ソフト競合学習)を導入してwinner-take-mostという形である程度似ているものや近いものにも更新をかけることで上記のような問題を解決することができます.  | Hard Competitive Learning(ハード競合学習)とSoft Competitive Learning(ソフト競合学習)について  | 
この章を学んで新たに学べる
	  
	
	  Comments
	
      

