メインコンテンツ

trainrp

説明

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

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

trainrp は、弾性逆伝播法アルゴリズム (Rprop) に従って重みとバイアスの値を更新するネットワーク学習関数です。

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

  • net.trainParam.epochs — 学習の最大エポック数。既定値は 1000 です。

  • net.trainParam.show — 表示間のエポック数 (表示なしは NaN)。既定値は 25 です。

  • net.trainParam.showCommandLine — コマンド ライン出力の生成。既定値は false です。

  • net.trainParam.showWindow — 学習 GUI の表示。既定値は true です。

  • net.trainParam.goal — 性能目標。既定値は 0 です。

  • net.trainParam.time — 最大学習時間 (秒単位)。既定値は inf です。

  • net.trainParam.min_grad — 性能の勾配の最小値。既定値は 1e-5 です。

  • net.trainParam.max_fail — 検証エラーの最大回数。既定値は 6 です。

  • net.trainParam.lr — 学習率。既定値は 0.01 です。

  • net.trainParam.delt_inc — 重みの変化のインクリメント。既定値は 1.2 です。

  • net.trainParam.delt_dec — 重みの変化のデクリメント。既定値は 0.5 です。

  • net.trainParam.delta0 — 初期の重みの変化。既定値は 0.07 です。

  • net.trainParam.deltamax — 重みの最大変化。既定値は 50.0 です。

すべて折りたたむ

この例では、trainrp 学習関数を使用してフィードフォワード ネットワークに学習させ、入力 p とターゲット t をもつ問題を解く方法を示します。

ネットワークを使って求解する入力 p とターゲット t を作成します。

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

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

net = feedforwardnet(2,'trainrp');

ネットワークの学習とテストを行います。

net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.1;
net = train(net,p,t);
a = net(p)

その他の例については、help feedforwardnethelp cascadeforwardnet を参照してください。

入力引数

すべて折りたたむ

入力ネットワーク。ネットワーク オブジェクトとして指定します。ネットワーク オブジェクトを作成するには、feedforwardnetnarxnet などを使用します。

出力引数

すべて折りたたむ

学習済みネットワーク。network オブジェクトとして返されます。

学習記録 (epoch および perf)。フィールドがネットワーク学習関数 (net.NET.trainFcn) によって異なる構造体として返されます。含まれるフィールドには以下のものがあります。

  • 学習、データ分割、性能の関数およびパラメーター

  • 学習セット、検証セット、およびテスト セットのデータ分割インデックス

  • 学習セット、検証セット、およびテスト セットのデータ分割マスク

  • エポックの数 (num_epochs) および最適なエポック (best_epoch)

  • 学習の状態名の一覧 (states)

  • 学習全体を通じて値を記録する各状態名のフィールド

  • 最適なネットワーク性能 (best_perfbest_vperfbest_tperf)

詳細

すべて折りたたむ

アルゴリズム

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

重みとバイアスの変数 X に対する性能 perf の微分の計算には、逆伝播が使用されます。各変数は、以下に従って調整されます。

dX = deltaX.*sign(gX);

ここで、deltaX の要素はすべて delta0 に初期化されており、gX は勾配です。各反復で、deltaX の要素が変更されます。gX の要素によって、ある反復から次の反復までに符号が変化した場合、deltaX の対応する要素が delta_dec ずつ減少します。gX の要素によって、ある反復から次の反復まで符号が変化しなかった場合、deltaX の対応する要素が delta_inc ずつ増加します。次を参照してください。Riedmiller, M., and H. Braun, “A direct adaptive method for faster backpropagation learning: The RPROP algorithm,” Proceedings of the IEEE International Conference on Neural Networks,1993, pp. 586–591.

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

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

  • time の最大値を超える。

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

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

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

参照

[1] Riedmiller, M., and H. Braun, “A direct adaptive method for faster backpropagation learning: The RPROP algorithm,” Proceedings of the IEEE International Conference on Neural Networks,1993, pp. 586–591.

バージョン履歴

R2006a より前に導入