Main Content

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

誤差の重みを使用したニューラル ネットワークの学習

既定の平均二乗誤差性能関数 (浅層の多層ニューラル ネットワークの学習と適用を参照) では、次のように各二乗誤差が同じ割合で性能関数に寄与します。

F=mse=1Ni=1N(ei)2=1Ni=1N(tiai)2

ただし、本ツールボックスでは、次のように各二乗誤差に別々の重み付けが可能です。

F=mse=1Ni=1Nwie(ei)2=1Ni=1Nwie(tiai)2

誤差の重み付けオブジェクトは、ターゲット データと次元が同じである必要があります。このようにして、タイム ステップ、標本数、信号数、または要素数に従って誤差に重み付けすることができます。時間列の最初の誤差よりも時間列の最後の誤差の重み付けを大きくする例を以下に示します。誤差の重み付けオブジェクトは、train の呼び出しの最後の引数として渡されます。

y = laser_dataset;
y = y(1:600);
ind = 1:600;
ew = 0.99.^(600-ind);
figure
plot(ew)

Figure contains an axes object. The axes object contains an object of type line.

ew = con2seq(ew);
ftdnn_net = timedelaynet([1:8],10);
ftdnn_net.trainParam.epochs = 1000;
ftdnn_net.divideFcn = '';
[p,Pi,Ai,t,ew1] = preparets(ftdnn_net,y,y,{},ew);
[ftdnn_net1,tr] = train(ftdnn_net,p,t,Pi,Ai,ew1);

Figure Neural Network Training (29-Aug-2023 21:20:42) contains an object of type uigridlayout.

この図は、この例における誤差の重み付けを示しています。学習データには 600 個のタイム ステップがあり、誤差は指数関数的に重み付けされます。最後の二乗誤差の重みは 1 で、最初のタイム ステップにおける二乗誤差の重み付けは 0.0024 です。

学習済みネットワークの応答を次の図に示します。この応答を、時系列時間遅れニューラル ネットワークの設計で説明した、二乗誤差に対する指数関数的な重み付けなしで学習させたネットワークの応答と比較すると、シーケンスの後の方の誤差はシーケンスの前の方の誤差よりも小さいことがわかります。後の方で発生する誤差が小さいのは、それらの誤差が前の方の誤差よりも、重み付けされた性能インデックスに大きく寄与するためです。