ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

trainscg

スケーリング共役勾配法逆伝播

構文

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

説明

trainscg は、スケーリング共役勾配法に従って重みとバイアスの値を更新するネットワーク学習関数です。

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

[net,tr] = train(net,...) は、trainscg を使用してネットワークの学習を行います。

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

net.trainParam.epochs1000

学習エポックの最大回数

net.trainParam.show25

表示間のエポック数 (表示なしは NaN)

net.trainParam.showCommandLinefalse

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

net.trainParam.showWindowtrue

学習 GUI の表示

net.trainParam.goal0

性能目標

net.trainParam.timeinf

最大学習時間 (秒単位)

net.trainParam.min_grad1e-6

性能の勾配の最小値

net.trainParam.max_fail6

検証エラーの最大回数

net.trainParam.sigma5.0e-5

2 階微分近似のための重みの変更量の決定

net.trainParam.lambda5.0e-7

ヘッシアンの不定性を調整するパラメーター

ネットワークの利用

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

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

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

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

ここでは、入力 p およびターゲット t で構成される問題を、ネットワークを使用して解きます。

p = [0 1 2 3 4 5];
t = [0 0 0 1 1 1];

2 つの隠れニューロンおよびこの学習関数を持つ 2 層フィードフォワード ネットワークが作成されます。

net = feedforwardnet(2,'trainscg');

ネットワークの学習と再テストが行われます。

net = train(net,p,t);
a = net(p)

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

アルゴリズム

trainscg は、重み、正味入力、および伝達関数に導関数がある限り、任意のネットワークの学習を行うことができます。重みとバイアスの変数 X に対する性能 perf の微分の計算には、逆伝播が使用されます。

スケーリング共役勾配法アルゴリズムは、traincgptraincgf、および traincgb のように共役方向に基づきます。ただし、このアルゴリズムは反復ごとの直線探索を行いません。スケーリング共役勾配法アルゴリズムの詳細は、Moller (Neural Networks, Vol. 6, 1993, pp. 525–533) を参照してください。

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

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

  • time の最大値を超える。

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

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

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

参照

Moller, Neural Networks, Vol. 6, 1993, pp. 525–533

R2006a より前に導入