적응 선형 예측
이 예제에서는 신호의 현재 값과 지난 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');
신경망을 위해 문제 설정하기
그런 다음 신호를 셀형 배열로 변환합니다. 신경망은 시간 스텝을 주어진 각 시간에서 행렬의 열로 표현되는 샘플들과 구별하기 위해 시간 스텝을 셀형 배열의 열로 표현합니다.
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 E = cell2mat(T)-cell2mat(Y); plot(timex,E,'r') hold off xlabel('Time'); ylabel('Error'); title('Error Signal');
초기 오차를 제외하면 오차의 크기가 작으며 신경망이 시스템 천이의 시작 지점에서와 천이 후에 시스템의 동작을 학습한다는 사실을 알 수 있습니다.
이 예제에서는 신호 동작에 변동이 있음에도 불구하고 신호의 현재 값과 지난 값으로부터 다음 값을 예측할 수 있는 적응 선형 신경망을 시뮬레이션하는 방법을 살펴보았습니다.