learnlv1
LVQ1 重み学習関数
構文
[dW,LS] = learnlv1(W,P,Z,N,A,T,E,gW,gA,D,LP,LS)
info = learnlv1('code')
説明
learnlv1 は、LVQ1 重み学習関数です。
[dW,LS] = learnlv1(W,P,Z,N,A,T,E,gW,gA,D,LP,LS) は、いくつかの入力を取ります。
W |
|
P |
|
Z |
|
N |
|
A |
|
T |
|
E |
|
gW | 性能に関する |
gA | 性能に関する |
D |
|
LP | 学習パラメーター。なし。 |
LS | 学習状態。初期値は |
これは、以下を返します。
dW |
|
LS | 新しい学習状態 |
学習は learnlv1 の学習パラメーター (以下に既定値を示す) に従って行われます。
LP.lr - 0.01 | 学習率 |
info = learnlv1(' は、次の各 code')code 文字ベクトルに関する有用な情報を返します。
'pnames' | 学習パラメーターの名前 |
'pdefaults' | 既定の学習パラメーター |
'needg' | この関数が |
例
ここでは、1 つの 2 要素入力と 3 つのニューロンをもつ層に対し、ランダムな入力 P、出力 A、重み行列 W、および出力勾配 gA を定義します。また、学習率 LR も定義します。
p = rand(2,1); w = rand(3,2); a = compet(negdist(w,p)); gA = [-1;1; 1]; lp.lr = 0.5;
learnlv1 は、重みの変化の計算でこれらの値のみを必要とするため (下の「アルゴリズム」を参照)、これらをそのように使用します。
dW = learnlv1(w,p,[],[],a,[],[],[],gA,[],lp,[])
ネットワークの利用
lvqnet で learnlv1 を使用する標準的なネットワークを作成できます。learnlv1 を使用して学習させるため、カスタム ネットワークの層 i の重みを準備するには、次のようにします。
net.trainFcnを'trainr'に設定します。(net.trainParamは自動的にtrainrの既定のパラメーターになります。)net.adaptFcnを'trains'に設定します。(net.adaptParamは自動的にtrainsの既定のパラメーターになります。)各
net.inputWeights{i,j}.learnFcnを'learnlv1'に設定します。各
net.layerWeights{i,j}.learnFcnを'learnlv1'に設定します。(各重みの学習パラメーターのプロパティが、自動的にlearnlv1の既定のパラメーターに設定されます。)
ネットワークに学習させるには (またはネットワークが適応できるようにするには)、次のようにします。
目的に合わせて
net.trainParam(またはnet.adaptParam) プロパティを設定します。train(またはadapt) を呼び出します。
アルゴリズム
learnlv1 は、指定されたニューロンについて、ニューロンの入力 P、出力 A、出力勾配 gA、および学習率 LR に基づき、LVQ1 規則に従って重みの変化 dW を計算します。ここで、i は、出力 a(i) が 1 であるニューロンのインデックスです。
dw(i,:) = +lr*(p-w(i,:)) (gA(i) = 0; の場合)、= -lr*(p-w(i,:)) (gA(i) = -1 の場合)
バージョン履歴
R2006a より前に導入