Main Content

적응 선형 예측

이 예제에서는 신호의 현재 값과 지난 4개 값이 주어졌을 때 적응 선형 계층이 다음 값을 예측하도록 학습하는 방법을 보여줍니다.

딥러닝 신경망을 사용하여 시계열 데이터를 전망하는 방법에 대한 자세한 내용은 딥러닝을 사용한 시계열 전망 항목을 참조하십시오.

파형 정의하기

다음은 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');

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

신경망을 위해 문제 설정하기

그런 다음 신호를 셀형 배열로 변환합니다. 신경망은 시간 스텝을 주어진 각 시간에서 행렬의 열로 표현되는 샘플들과 구별하기 위해 시간 스텝을 셀형 배열의 열로 표현합니다.

signal = con2seq(signal);

문제 설정을 위해 신호의 처음 5개 값을 초기 입력 지연 상태로 사용하고, 나머지 값을 입력값으로 사용하겠습니다.

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

이제 목표값이 입력값과 일치하게끔 정의합니다. 신경망은 마지막 5개의 값만 사용하여 현재 입력값을 예측해야 합니다.

T = signal(6:end);

선형 계층 만들기

함수 linearlayer는 마지막 5개 입력값으로 된 탭 지연과 단일 뉴런을 갖는 선형 계층을 만듭니다.

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 contains an axes object. The axes object with title Output and Target Signals contains 2 objects of type line.

오차 또한 플로팅할 수 있습니다.

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 contains an object of type line.

초기 오차를 제외하면 오차의 크기가 작으며 신경망이 시스템 천이의 시작 지점에서와 천이 후에 시스템의 동작을 학습한다는 사실을 알 수 있습니다.

이 예제에서는 신호 동작에 변동이 있음에도 불구하고 신호의 현재 값과 지난 값으로부터 다음 값을 예측할 수 있는 적응 선형 신경망을 시뮬레이션하는 방법을 살펴보았습니다.