learncon
良心的バイアス学習関数
構文
[dB,LS] = learncon(B,P,Z,N,A,T,E,gW,gA,D,LP,LS)
info = learncon('code')
説明
learncon は良心的バイアス学習関数で、各ニューロンがほぼ同じ割合の時間で応答するように、平均出力が最も低いニューロンの正味入力を増加させるために使用されます。
[dB,LS] = learncon(B,P,Z,N,A,T,E,gW,gA,D,LP,LS) は、いくつかの入力を取ります。
B |
|
P |
|
Z |
|
N |
|
A |
|
T |
|
E |
|
gW | 性能に関する |
gA | 性能に関する |
D |
|
LP | 学習パラメーター。なし。 |
LS | 学習状態。初期値は |
これは、以下を返します。
dB |
|
LS | 新しい学習状態 |
学習は learncon の学習パラメーター (以下に既定値を示す) に従って行われます。
LP.lr - 0.001 | 学習率 |
info = learncon(' は、サポートされている各 code')code 文字ベクトルに関する有用な情報を返します。
'pnames' | 学習パラメーターの名前 |
'pdefaults' | 既定の学習パラメーター |
'needg' | この関数が |
Deep Learning Toolbox™ 2.0 の互換性: 前述の LP.lr は、Deep Learning Toolbox 2.0 ソフトウェアの trainc で使用されるバイアス時定数を 1 から引いた値に等しくなります。
例
ここでは、3 つのニューロンをもつ層に対し、ランダムな出力 A とバイアス ベクトル W を定義します。また、学習率 LR も定義します。
a = rand(3,1); b = rand(3,1); lp.lr = 0.5;
learncon は、バイアスの変化の計算でこれらの値のみを必要とするため (下の「アルゴリズム」を参照)、これらをそのように使用します。
dW = learncon(b,[],[],[],a,[],[],[],[],[],lp,[])
ネットワークの利用
learncon を使用して学習させるため、カスタム ネットワークの i 層のバイアスを準備するには、次のようにします。
net.trainFcnを'trainr'に設定します。(net.trainParamは自動的にtrainrの既定のパラメーターになります。)net.adaptFcnを'trains'に設定します。(net.adaptParamは自動的にtrainsの既定のパラメーターになります。)net.inputWeights{i}.learnFcnを'learncon'に設定します。各
net.layerWeights{i,j}.learnFcnを'learncon'に設定します。各重みの学習パラメーターのプロパティが、自動的にlearnconの既定のパラメーターに設定されます。
ネットワークに学習させるには (またはネットワークが適応できるようにするには)、次のようにします。
目的に合わせて
net.trainParam(またはnet.adaptParam) プロパティを設定します。train(またはadapt) を呼び出します。
アルゴリズム
learncon は、最初に各ニューロンの "良心"、つまり出力のランニング平均を更新することで、特定のニューロンのバイアス変化 db を計算します。
c = (1-lr)*c + lr*a
次に、この良心を使用して、良心の値が小さい場合に最大となるニューロンのバイアスを計算します。
b = exp(1-log(c)) - b
(learncon は呼び出されるたびにバイアス値から C を再生します。)
バージョン履歴
R2006a より前に導入