Main Content

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

S1 列のバイアス ベクトル

P

1Q 列の 1 のベクトル

Z

SQ 列の重み付き入力ベクトル

N

SQ 列の正味入力ベクトル

A

SQ 列の出力ベクトル

T

SQ 列の層のターゲット ベクトル

E

SQ 列の層の誤差ベクトル

gW

性能に関する SR 列の勾配

gA

性能に関する SQ 列の出力勾配

D

SS 列のニューロン距離

LP

学習パラメーター。なし。LP = []

LS

学習状態。初期値は []

これは、以下を返します。

dB

S1 列の重み (またはバイアス) 変更行列

LS

新しい学習状態

学習は learncon の学習パラメーター (以下に既定値を示す) に従って行われます。

LP.lr - 0.001

学習率

info = learncon('code') は、サポートされている各 code 文字ベクトルに関する有用な情報を返します。

'pnames'

学習パラメーターの名前

'pdefaults'

既定の学習パラメーター

'needg'

この関数が gW または gA を使用すると 1 が返される

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 層のバイアスを準備するには、次のようにします。

  1. net.trainFcn'trainr' に設定します。(net.trainParam は自動的に trainr の既定のパラメーターになります。)

  2. net.adaptFcn'trains' に設定します。(net.adaptParam は自動的に trains の既定のパラメーターになります。)

  3. net.inputWeights{i}.learnFcn'learncon' に設定します。

  4. net.layerWeights{i,j}.learnFcn'learncon' に設定します。各重みの学習パラメーターのプロパティが、自動的に learncon の既定のパラメーターに設定されます。

ネットワークに学習させるには (またはネットワークが適応できるようにするには)、次のようにします。

  1. 目的に合わせて net.trainParam (または net.adaptParam) プロパティを設定します。

  2. train (または adapt) を呼び出します。

アルゴリズム

learncon は、最初に各ニューロンの "良心"、つまり出力のランニング平均を更新することで、特定のニューロンのバイアス変化 db を計算します。

c = (1-lr)*c + lr*a

次に、この良心を使用して、良心の値が小さい場合に最大となるニューロンのバイアスを計算します。

b = exp(1-log(c)) - b

(learncon は呼び出されるたびにバイアス値から C を再生します。)

バージョン履歴

R2006a より前に導入