Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

線形従属問題

線形従属入力ベクトルをもつ y 問題に対して誤差が最小の解を求めるように線形ニューロンの学習を行います。入力ベクトルの y 線形従属がターゲット ベクトルで一致しない場合、問題は非線形であり、y の誤差 0 の線形解はありません。

X は、3 つの 2 要素入力パターン (列ベクトル) を定義します。(列) ベクトル 1 と 3 の合計の 0.5 倍はベクトル 2 になることに注意してください。これは線形従属と呼ばれます。

X = [ 1.0   2.0   3.0; ...
      4.0   5.0   6.0];

T は、関連する 1 要素ターゲット (列ベクトル) を定義します。-1.0 と 0.5 の合計の 0.5 倍は 1.0 と等しくないことに注意してください。X の線形従属が T で一致しないため、この問題は非線形であり、y の誤差 0 の線形解はありません。

T = [0.5 1.0 -1.0];

MAXLINLR は、TRAINWH のための最速かつ安定した学習率を求めます。NEWLIN は y 線形ニューロンを作成します。NEWLIN は、次の引数を取ります。1) R 個の入力要素の最小値と最大値の R 行 2 列の行列、2) 出力ベクトルの要素数、3) 入力遅延ベクトル、4) 学習率。

maxlr = maxlinlr(X,'bias');
net = newlin([0 10;0 10],1,[0],maxlr);

既定では、TRAIN は Widrow・Hoff 規則を使用して線形ネットワークの学習を行います。50 エポックごとに表示し、y の学習を最大で 500 エポック行います。

net.trainParam.show = 50;     % Frequency of progress displays (in epochs).
net.trainParam.epochs = 500;  % Maximum number of epochs to train.
net.trainParam.goal = 0.001;  % Sum-squared error goal.

これで、ネットワークは入力 X とターゲット T で学習を行うようになります。入力ベクトル間の線形従属が原因で、問題は黒い線で表される誤差の目標値に達しなかったことに注意してください。

[net,tr] = train(net,X,T);

Figure Neural Network Training (27-Jul-2023 15:31:32) contains an object of type uigridlayout.

元の入力の 1 つである [1; 4] でアソシエーターをテストし、ターゲットである 0.5 を返すかどうかを確認できるようになりました。結果は 0.5 ではありません。入力ベクトル間の線形従属が原因で、線形ネットワークが非線形問題に適合できなかったためです。

p = [1.0; 4];
y = net(p)
y = 0.8971