このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
適応線形予測
この例では、現在の値および最後の 4 つの値が与えられた場合に信号の次の値を予測するように、適応線形層に学習させる方法を示します。
深層学習ネットワークを使用して時系列データを予測する方法については、深層学習を使用した時系列予測を参照してください。
波形の定義
ここで、2 つの時間セグメントは、1/40 秒のステップで 0 秒から 6 秒まで定義されます。
time1 = 0:0.025:4; % from 0 to 4 seconds time2 = 4.025:0.025:6; % from 4 to 6 seconds time = [time1 time2]; % from 0 to 6 seconds
次は、ある周波数で始まり、別の周波数に遷移する信号です。
signal = [sin(time1*4*pi) sin(time2*8*pi)]; plot(time,signal) xlabel('Time'); ylabel('Signal'); title('Signal to be Predicted');
ニューラル ネットワーク用の問題の設定
次に、信号が cell 配列に変換されます。ニューラル ネットワークはタイムステップを cell 配列の列として表し、与えられた時間でそれらを異なるサンプルから区別します。これらは行列の列で表されます。
signal = con2seq(signal);
問題を設定するには、信号の最初の 5 つの値を初期の入力遅延状態として、残りを入力として使用します。
Xi = signal(1:5); X = signal(6:end); timex = time(6:end);
これで、ターゲットは入力と一致するように定義されました。ネットワークは、最後の 5 つの値のみを使用して現在の入力を予測します。
T = signal(6:end);
線形層の作成
関数 linearlayer
は、最後の 5 つの入力のタップ遅延を伴う 1 つのニューロンを使用して線形層を作成します。
net = linearlayer(1:5,0.1); view(net)
線形層の適応
関数 adapt
は、各タイムステップの終了時に出力とターゲットの一致度に応じて入力の重みとバイアスを調整しながら、入力に基づきネットワークのシミュレーションを行います。更新されたネットワーク、ネットワークの出力、およびネットワークの誤差が返されます。
[net,Y] = adapt(net,X,T,Xi);
出力信号をターゲットとともにプロットします。
figure plot(timex,cell2mat(Y),timex,cell2mat(T),'+') xlabel('Time'); ylabel('Output - Target +'); title('Output and Target Signals');
誤差をプロットすることもできます。
figure E = cell2mat(T)-cell2mat(Y); plot(timex,E,'r') hold off xlabel('Time'); ylabel('Error'); title('Error Signal');
初期の誤差を除いて誤差が非常に小さいことと、ネットワークがシステムの遷移開始時と遷移後の動作を学習することに注目してください。
この例では、信号の動作が変化しても現在および過去の値から信号の次の値を予測できる適応線形ネットワークをシミュレートする方法を説明しました。