Main Content

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

線形予測の設計

この例では、最後の 5 つの値が与えられた場合に時系列の次の値を予測するように線形ニューロンを設計する方法を説明します。

波形の定義

ここで、時間は 1/40 秒のステップで 0 秒から 5 秒まで定義されます。

time = 0:0.025:5;

時間を基準にして信号を定義できます。

signal = sin(time*4*pi);
plot(time,signal)
xlabel('Time');
ylabel('Signal');
title('Signal to be Predicted');

Figure contains an axes object. The axes object with title Signal to be Predicted, xlabel Time, ylabel Signal contains an object of type line.

ニューラル ネットワーク用の問題の設定

次に、信号の変換は cell 配列に変換されます。ニューラル ネットワークはタイム ステップを cell 配列の列として表し、与えられた時間でそれらを異なるサンプルから区別します。これらは行列の列で表されます。

signal = con2seq(signal);

問題を設定するには、信号の最初の 4 つの値を初期の入力遅延状態として使用し、最後のステップを除く残りを入力として使用します。

Xi = signal(1:4);
X = signal(5:(end-1));
timex = time(5:(end-1));

これで、ターゲットが入力と一致するように、ただし 1 タイムステップ前にシフトして定義されます。

T = signal(6:end);

線形層の設計

これで、関数 newlind は、1 つのニューロンをもつ線形層を設計します。このニューロンは、現在の値と過去の 4 つの値を与えられると信号の次のタイムステップを予測します。

net = newlind(X,T,Xi);
view(net)

線形層のテスト

これで、入力と遅延状態を指定してネットワークを関数のように呼び出し、その時間応答を取得することができます。

Y = net(X,Xi);

出力信号をターゲットとともにプロットします。

figure
plot(timex,cell2mat(Y),timex,cell2mat(T),'+')
xlabel('Time');
ylabel('Output -  Target +');
title('Output and Target Signals');

Figure contains an axes object. The axes object with title Output and Target Signals, xlabel Time, ylabel Output - Target + contains 2 objects of type line. One or more of the lines displays its values using only markers

誤差をプロットすることもできます。

figure
E = cell2mat(T)-cell2mat(Y);
plot(timex,E,'r')
hold off
xlabel('Time');
ylabel('Error');
title('Error Signal');

Figure contains an axes object. The axes object with title Error Signal, xlabel Time, ylabel Error contains an object of type line.

誤差が非常に小さいことに注目してください。

この例では、現在および過去の値から信号の次の値を予測する動的線形ネットワークを設計する方法を説明しました。