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