ドキュメンテーション

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

trainbr

ベイズ正則化逆伝播

構文

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

説明

trainbr は、レーベンバーグ・マルカート法の最適化に従って重みとバイアスの値を更新するネットワーク学習関数です。誤差と重みの二乗の結合を最小化して、正しい結合を判定し、適切に汎化を行うネットワークを生成します。このプロセスは、ベイズ正則化と呼ばれます。

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

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

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

net.trainParam.epochs1000

学習エポックの最大回数

net.trainParam.goal0

性能目標

net.trainParam.mu0.005

マルカート調整パラメーター

net.trainParam.mu_dec0.1

mu の減少係数

net.trainParam.mu_inc10

mu の増加係数

net.trainParam.mu_max1e10

mu の最大値

net.trainParam.max_failinf

検証エラーの最大回数

net.trainParam.min_grad1e-7

性能の勾配の最小値

net.trainParam.show25

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

net.trainParam.showCommandLinefalse

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

net.trainParam.showWindowtrue

学習 GUI の表示

net.trainParam.timeinf

最大学習時間 (秒単位)

検証の停止は既定では無効になっている (max_fail = inf) ため、誤差と重みの最適な結合が見つかるまで学習を継続できます。ただし、max_fail を 6 または他の厳密に正の値に設定して検証を有効にしている場合、より短い学習時間で重みとバイアスの最小化を実現できることもあります。

ネットワークの利用

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

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

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

どちらの場合も、結果として得られるネットワークで train を呼び出すことによって、ネットワークが trainbr により学習します。例については、feedforwardnet および cascadeforwardnet を参照してください。

ここでは、入力 p およびターゲット t で構成される問題を、ネットワークを使用して解きます。これには、ノイズを含む正弦波のあてはめが必要です。

p = [-1:.05:1];
t = sin(2*pi*p)+0.1*randn(size(p));

2 個のニューロンがある隠れ層を持つフィードフォワード ネットワークが作成されます。

net = feedforwardnet(2,'trainbr');

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

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

制限

この関数は、性能が二乗誤差の平均または和であると仮定して、ヤコビアンを計算に使用します。そのため、この関数によって学習するネットワークでは、mse または sse のいずれかの性能関数を使用しなければなりません。

アルゴリズム

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

ベイズ正則化は、誤差と重みの二乗の線形結合を最小化します。さらに、学習の終了時に結果として得られるネットワークの汎化品質が良好になるように、線形結合を変更します。ベイズ正則化の詳細は、MacKay (Neural Computation, Vol. 4, No. 3, 1992, pp. 415 to 447) および Foresee and Hagan (Proceedings of the International Joint Conference on Neural Networks, June, 1997) を参照してください。

このベイズ正則化は、レーベンバーグ・マルカート法アルゴリズム内で行われます。重みとバイアスの変数 X に対する性能 perf のヤコビアン jX の計算には、逆伝播が使用されます。各変数は、レーベンバーグ・マルカート法に従って調整されます。

jj = jX * jX
je = jX * E
dX = -(jj+I*mu) \ je

ここで、E はすべての誤差であり、I は単位行列です。

上記の変更によって性能値が減少するまで、適応値 mumu_inc ずつ増加します。その後、ネットワークに対して変更が行われ、mumu_dec ずつ減少します。

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

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

  • time の最大値を超える。

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

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

  • mumu_max を超える。

参照

[1] MacKay, David J. C. "Bayesian interpolation." Neural computation. Vol. 4, No. 3, 1992, pp. 415–447.

[2] Foresee, F. Dan, and Martin T. Hagan. "Gauss-Newton approximation to Bayesian learning." Proceedings of the International Joint Conference on Neural Networks, June, 1997.

R2006a より前に導入