Artificial-neural-network-learning-vector-quantization
学習ベクトル量子化
学習ベクトル量子化(LVQ)は、ベクトル量子化(VQ)やコホーネン自己組織化マップ(KSOM)とは異なり、基本的には教師あり学習を使用する競争力のあるネットワークです。 各出力ユニットがクラスを表すパターンを分類するプロセスとして定義できます。 教師あり学習を使用するため、ネットワークには、出力クラスの初期分布とともに、既知の分類を持つ一連のトレーニングパターンが与えられます。 トレーニングプロセスの完了後、LVQは入力ユニットを出力ユニットと同じクラスに割り当てることにより、入力ベクトルを分類します。
建築
次の図は、KSOMのアーキテクチャに非常によく似たLVQのアーキテクチャを示しています。 ご覧のとおり、入力ユニットの数は「n」*、出力ユニットの数は「m」です。 レイヤーは、ウェイトを使用して完全に相互接続されています。
使用されるパラメーター
以下は、LVQトレーニングプロセスとフローチャートで使用されるパラメーターです。
- x =トレーニングベクトル(x〜1〜、…、x〜i〜、…、x〜n〜)
- T =トレーニングベクトルのクラス x
- * w〜j〜 = j ^ th ^ *出力単位の重みベクトル
- * C〜j〜 = j ^ th ^ *出力ユニットに関連付けられたクラス
トレーニングアルゴリズム
- ステップ1 *-参照ベクトルを初期化します。これは次のように実行できます-
- ステップ1(a)-与えられたトレーニングベクトルのセットから、最初の「 m 」(クラスターの数)トレーニングベクトルを取得し、それらを重みベクトルとして使用します。 残りのベクトルは、トレーニングに使用できます。
- ステップ1(b)-初期重みと分類をランダムに割り当てます。
- ステップ1(c)-K平均法を適用します。
- ステップ2 *-参照ベクトル$ \ alpha $を初期化する
- ステップ3 *-このアルゴリズムを停止するための条件が満たされない場合、ステップ4〜9に進みます。
ステップ4 *-すべてのトレーニング入力ベクトル *x についてステップ5〜6を実行します。
ステップ5 *- *j = 1からm および i = 1からn のユークリッド距離の平方を計算する
D(j)\:= \:\ displaystyle \ sum \ limits _ \ {i = 1} ^ n \ displaystyle \ sum \ limits _ \ {j = 1} ^ m(x _ \ {i} \:-\: w _ \ {ij})^ 2
ステップ6 *-勝利ユニット *J を取得します(* D(j)*は最小です)。
- ステップ7 *-次の関係により、勝利ユニットの新しい重量を計算します-
- T = C〜j〜*の場合、$ w _ \ {j}(new)\:= \:w _ \ {j}(old)\:+ \:\ alpha [x \:-\:w _ \ {j }(old)] $
- T≠C〜j〜*の場合、$ w _ \ {j}(new)\:= \:w _ \ {j}(old)\:-\:\ alpha [x \:-\:w _ \ {j }(old)] $
- ステップ8 *-学習率$ \ alpha $を下げます。
- ステップ9 *-停止条件をテストします。 次のようになります-
- エポックの最大数に達しました。
- 学習率はごくわずかな値に減少しました。
フローチャート
バリアント
他の3つのバリアント、すなわちLVQ2、LVQ2.1およびLVQ3がKohonenによって開発されました。 これら3つのバリアントすべての複雑さは、勝者と次点ユニットが学習するという概念のため、LVQよりも複雑です。
LVQ2
前述のように、上記のLVQの他のバリアントの概念、LVQ2の状態はウィンドウによって形成されます。 このウィンドウは、次のパラメータに基づいています-
- x -現在の入力ベクトル
- * y〜c〜- *x に最も近い参照ベクトル
- * y〜r〜- *x に次に近い他の参照ベクトル
- * d〜c〜- *x から* y〜c〜*までの距離
- * d〜r〜- *x から* y〜r〜*までの距離
入力ベクトル x は、次の場合にウィンドウに収まります。
\ frac \ {d _ \ {c}} \ {d _ \ {r}} \:> \:1 \:-\:\ theta \:\:and \:\:\ frac \ {d _ \ {r }} \ {d _ \ {c}} \:> \:1 \:+ \:\ theta
ここで、$ \ theta $はトレーニングサンプルの数です。
更新は、次の式で行うことができます-
$ y _ \ {c}(t \:+ \:1)\:= \:y _ \ {c}(t)\:+ \:\ alpha(t)[x(t)\:-\:y_ \ {c}(t)] $ *(異なるクラスに属する) *
$ y _ \ {r}(t \:+ \:1)\:= \:y _ \ {r}(t)\:+ \:\ alpha(t)[x(t)\:-\:y_ \ {r}(t)] $* (同じクラスに属する)*
ここで、$ \ alpha $は学習率です。
LVQ2.1
LVQ2.1では、2つの最も近いベクトル、すなわち* y〜c1〜および y〜c2〜*を取ります。ウィンドウの条件は次のとおりです-
Min \ begin \ {bmatrix} \ frac \ {d _ \ {c1}} \ {d _ \ {c2}}、\ frac \ {d _ \ {c2}} \ {d _ \ {c1}} \ end \ { bmatrix} \:> \ :( 1 \:-\:\ theta)
$$ Max \ begin \ {bmatrix} \ frac \ {d _ \ {c1}} \ {d _ \ {c2}}、\ frac \ {d _ \ {c2}} \ {d _ \ {c1}} \ end \ { bmatrix} \:
更新は、次の式で行うことができます-
$ y _ \ {c1}(t \:+ \:1)\:= \:y _ \ {c1}(t)\:+ \:\ alpha(t)[x(t)\:-\:y_ \ {c1}(t)] $ *(異なるクラスに属する) *
$ y _ \ {c2}(t \:+ \:1)\:= \:y _ \ {c2}(t)\:+ \:\ alpha(t)[x(t)\:-\:y_ \ {c2}(t)] $* (同じクラスに属する)*
ここで、$ \ alpha $は学習率です。
LVQ3
LVQ3では、2つの最も近いベクトル、すなわち* y〜c1〜および y〜c2〜*を取ります。ウィンドウの条件は次のとおりです-
Min \ begin \ {bmatrix} \ frac \ {d _ \ {c1}} \ {d _ \ {c2}}、\ frac \ {d _ \ {c2}} \ {d _ \ {c1}} \ end \ { bmatrix} \:> \ :( 1 \:-\:\ theta)(1 \:+ \:\ theta)
ここで$ \ theta \ approx 0.2 $
更新は、次の式で行うことができます-
$ y _ \ {c1}(t \:+ \:1)\:= \:y _ \ {c1}(t)\:+ \:\ beta(t)[x(t)\:-\:y_ \ {c1}(t)] $ *(異なるクラスに属する) *
$ y _ \ {c2}(t \:+ \:1)\:= \:y _ \ {c2}(t)\:+ \:\ beta(t)[x(t)\:-\:y_ \ {c2}(t)] $* (同じクラスに属する)*
ここで、$ \ beta $は、学習率$ \ alpha $および $ \ beta \:= \:m \ alpha(t)$ の倍数で、すべての 0.1 <m <0.5