Main Content

traingdm

モーメンタム項付き勾配降下法を使用した逆伝播

構文

net.trainFcn = 'traingdm'
[net,tr] = train(net,...)

説明

traingdm は、モーメンタム項付き勾配降下法に従って重みとバイアスの値を更新するネットワーク学習関数です。

net.trainFcn = 'traingdm' は、ネットワークの trainFcn プロパティを設定します。

[net,tr] = train(net,...) は、traingdm を使用してネットワークに学習させます。

学習は traingdm の学習パラメーターに従って行われます。以下に、学習パラメーターをその既定値と共に示します。

net.trainParam.epochs1000

最大学習エポック数

net.trainParam.goal0

性能目標

net.trainParam.lr0.01

学習率

net.trainParam.max_fail6

検証エラーの最大回数

net.trainParam.mc0.9

モーメンタム定数

net.trainParam.min_grad1e-5

性能の勾配の最小値

net.trainParam.show25

進行状況の表示間隔のエポック数

net.trainParam.showCommandLinefalse

コマンド ライン出力の生成

net.trainParam.showWindowtrue

学習 GUI の表示

net.trainParam.timeinf

最大学習時間 (秒単位)

ネットワークの利用

traingdmfeedforwardnet または cascadeforwardnet を使用する標準的なネットワークを作成できます。traingdm を使用して学習が行われるようにカスタム ネットワークを準備するには、以下のようにします。

  1. net.trainFcn'traingdm' に設定します。これにより、net.trainParam traingdm の既定のパラメーターに設定されます。

  2. net.trainParam プロパティを目的の値に設定します。

どちらの場合も、結果として得られるネットワークで train を呼び出すことによって、traingdm を使用してネットワークの学習を行います。

例については、help feedforwardnet および help cascadeforwardnet を参照してください。

詳細

すべて折りたたむ

モーメンタム項付き勾配降下法

勾配降下法には、traingd のほかに 3 つのバリエーションがあります。

traingdm によって実装されているモーメンタム項付き勾配降下法では、ネットワークが局所勾配だけでなく、誤差曲面の最新のトレンドにも応答できます。モーメンタムは、ローパス フィルターのように機能して、ネットワークが誤差曲面の小さな特徴を無視できるようにします。モーメンタムを使用しない場合、浅い局所的最小値でネットワークが止まる可能性があります。モーメンタムを使用すると、ネットワークがこのような最小値に陥らずに済みます。モーメンタムについては、[HDB96] の 12-9 ページを参照してください。

モーメンタム項付き勾配降下法は、2 つの学習パラメーターに依存しています。パラメーター lr は、単純な勾配降下法と同様に、学習率を示します。パラメーター mc は、モーメンタムの量を定義するモーメンタム定数です。mc は、0 (モーメンタムなし) から 1 に近い値 (大きなモーメンタム) までの範囲で設定されます。モーメンタム定数が 1 の場合、局所勾配の影響をまったく受けないネットワークになるため、学習が適切に行われません。

p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];
net = feedforwardnet(3,'traingdm');
net.trainParam.lr = 0.05;
net.trainParam.mc = 0.9;
net = train(net,p,t);
y = net(p)

アルゴリズム

traingdm は、重み関数、正味入力関数、および伝達関数に導関数がある限り、任意のネットワークの学習を行うことができます。

重みとバイアスの変数 X に対する性能 perf の微分の計算には、逆伝播が使用されます。各変数は、モーメンタム項付き勾配降下法に従って調整されます。

dX = mc*dXprev + lr*(1-mc)*dperf/dX

ここで、dXprev は重みまたはバイアスに対する前の変更です。

次のいずれかの条件が発生すると、学習が停止します。

  • epochs (反復回数) の最大数に達する。

  • time の最大値を超える。

  • 性能が goal に最小化される。

  • 性能の勾配が min_grad より小さくなる。

  • 検証性能 (検証誤差) が、最後の低下以降、max_fail 回を超えて増加する (検証の使用時)。

バージョン履歴

R2006a より前に導入