このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
trainlm
レーベンバーグ・マルカート法逆伝播
説明
net.trainFcn = 'trainlm'
は、ネットワークの trainFcn
プロパティを設定します。
[
は、trainedNet
,tr
] = train(net
,...)trainlm
を使用してネットワークに学習させます。
trainlm
は、レーベンバーグ・マルカート法の最適化に従って重みとバイアスの値を更新するネットワーク学習関数です。
trainlm
は多くの場合、ツールボックスで最も高速な逆伝播アルゴリズムです。他のアルゴリズムより多くのメモリを必要としますが、このアルゴリズムを教師ありアルゴリズムの第 1 候補とすることを強く推奨します。
学習は trainlm
の学習パラメーターに従って行われます。以下に、学習パラメーターをその既定値と共に示します。
net.trainParam.epochs
— 学習の最大エポック数。既定値は 1000 です。net.trainParam.goal
— 性能目標。既定値は 0 です。net.trainParam.max_fail
— 検証エラーの最大回数。既定値は6
です。net.trainParam.min_grad
— 性能の勾配の最小値。既定値は1e-7
です。net.trainParam.mu
— 初期mu
。既定値は 0.001 です。net.trainParam.mu_dec
—mu
の減少係数。既定値は 0.1 です。net.trainParam.mu_inc
—mu
の増加係数。既定値は 10 です。net.trainParam.mu_max
—mu
の最大値。既定値は1e10
です。net.trainParam.show
— 表示間のエポック数 (表示なしはNaN
)。既定値は 25 です。net.trainParam.showCommandLine
— コマンド ライン出力の生成。既定値はfalse
です。net.trainParam.showWindow
— 学習 GUI の表示。既定値はtrue
です。net.trainParam.time
— 最大学習時間 (秒単位)。既定値はinf
です。
検証ベクトルは、検証ベクトルに対するネットワーク性能が改善できない、または max_fail
エポック連続して変化しない場合に、学習を早期に停止するために使用されます。テスト ベクトルは、ネットワークの汎化が適切に行われていることを詳しく調べるために使用されますが、学習には影響しません。
例
入力引数
出力引数
制限
この関数は、性能が二乗誤差の平均または和であると仮定して、ヤコビアンを計算に使用します。そのため、この関数によって学習するネットワークでは、mse
または sse
のいずれかの性能関数を使用しなければなりません。
詳細
アルゴリズム
ネットワークの NET.divideFcn
プロパティがデータ分割関数に設定されている場合、trainlm
は検証ベクトルおよびテスト ベクトルを使用する学習をサポートします。検証ベクトルは、検証ベクトルに対するネットワーク性能が改善できない、または max_fail
エポック連続して変化しない場合に、学習を早期に停止するために使用されます。テスト ベクトルは、ネットワークの汎化が適切に行われていることを詳しく調べるために使用されますが、学習には影響しません。
trainlm
は、重み関数、正味入力関数、および伝達関数に導関数がある限り、任意のネットワークの学習を行うことができます。
重みとバイアスの変数 X
に対する性能 perf
のヤコビアン jX
の計算には、逆伝播が使用されます。各変数は、レーベンバーグ・マルカート法に従って調整されます。
jj = jX * jX je = jX * E dX = -(jj+I*mu) \ je
ここで、E
はすべての誤差であり、I
は単位行列です。
上記の変更によって性能値が減少するまで、適応値 mu
が mu_inc
ずつ増加します。その後、ネットワークに対して変更が行われ、mu
が mu_dec
ずつ減少します。
次のいずれかの条件が発生すると、学習が停止します。
epochs
(反復回数) の最大数に達する。time
の最大値を超える。性能が
goal
に最小化される。性能の勾配が
min_grad
より小さくなる。mu
がmu_max
を超える。検証性能 (検証誤差) が、最後の低下以降、
max_fail
回を超えて増加する (検証の使用時)。
バージョン履歴
R2006a より前に導入