traingdm
モーメンタム項付き勾配降下法を使用した逆伝播
構文
net.trainFcn = 'traingdm'
[net,tr] = train(net,...)
説明
traingdm
は、モーメンタム項付き勾配降下法に従って重みとバイアスの値を更新するネットワーク学習関数です。
net.trainFcn = 'traingdm'
は、ネットワークの trainFcn
プロパティを設定します。
[net,tr] = train(net,...)
は、traingdm
を使用してネットワークに学習させます。
学習は traingdm
の学習パラメーターに従って行われます。以下に、学習パラメーターをその既定値と共に示します。
net.trainParam.epochs | 1000 | 最大学習エポック数 |
net.trainParam.goal | 0 | 性能目標 |
net.trainParam.lr | 0.01 | 学習率 |
net.trainParam.max_fail | 6 | 検証エラーの最大回数 |
net.trainParam.mc | 0.9 | モーメンタム定数 |
net.trainParam.min_grad | 1e-5 | 性能の勾配の最小値 |
net.trainParam.show | 25 | 進行状況の表示間隔のエポック数 |
net.trainParam.showCommandLine | false | コマンド ライン出力の生成 |
net.trainParam.showWindow | true | 学習 GUI の表示 |
net.trainParam.time | inf | 最大学習時間 (秒単位) |
ネットワークの利用
traingdm
と feedforwardnet
または cascadeforwardnet
を使用する標準的なネットワークを作成できます。traingdm
を使用して学習が行われるようにカスタム ネットワークを準備するには、以下のようにします。
net.trainFcn
を'traingdm'
に設定します。これにより、net.trainParam
がtraingdm
の既定のパラメーターに設定されます。net.trainParam
プロパティを目的の値に設定します。
どちらの場合も、結果として得られるネットワークで train
を呼び出すことによって、traingdm
を使用してネットワークの学習を行います。
例については、help feedforwardnet
および help cascadeforwardnet
を参照してください。
詳細
アルゴリズム
traingdm
は、重み関数、正味入力関数、および伝達関数に導関数がある限り、任意のネットワークの学習を行うことができます。
重みとバイアスの変数 X
に対する性能 perf
の微分の計算には、逆伝播が使用されます。各変数は、モーメンタム項付き勾配降下法に従って調整されます。
dX = mc*dXprev + lr*(1-mc)*dperf/dX
ここで、dXprev
は重みまたはバイアスに対する前の変更です。
次のいずれかの条件が発生すると、学習が停止します。
epochs
(反復回数) の最大数に達する。time
の最大値を超える。性能が
goal
に最小化される。性能の勾配が
min_grad
より小さくなる。検証性能 (検証誤差) が、最後の低下以降、
max_fail
回を超えて増加する (検証の使用時)。
バージョン履歴
R2006a より前に導入