adapt
신경망을 시뮬레이션하며 데이터에 맞게 조정
구문
[net,Y,E,Pf,Af,tr] = adapt(net,P,T,Pi,Ai)
도움말 보기
help network/adapt
를 입력합니다.
설명
이 함수는 매번 입력값이 주어질 때마다 신경망 출력값과 오차를 계산합니다.
[net,Y,E,Pf,Af,tr] = adapt(net,P,T,Pi,Ai)
는 다음과 같은 입력값을 받습니다.
net | 신경망 |
P | 신경망 입력값 |
T | 신경망 목표값(디폴트 값 = 0) |
Pi | 초기 입력 지연 조건(디폴트 값 = 0) |
Ai | 초기 계층 지연 조건(디폴트 값 = 0) |
그런 다음 적응 파라미터가 net.adaptParam
인 적응 함수 net.adaptFcn
을 적용한 후에 다음을 반환합니다.
net | 업데이트된 신경망 |
Y | 신경망 출력값 |
E | 신경망 오차 |
Pf | 마지막 입력 지연 조건 |
Af | 마지막 계층 지연 조건 |
tr | 훈련 기록( |
여기서 T
는 선택 사항으로, 목표값이 필요한 신경망에서만 사용하면 됩니다. Pi
와 Pf
도 선택 사항으로, 입력 지연 또는 계층 지연이 있는 신경망에서만 사용해야 됩니다.
adapt
함수의 신호 인수는 셀형 배열이나 행렬의 형식을 가질 수 있습니다.
셀형 배열 형식이 표현하기 가장 쉬운 형식입니다. 입력값과 출력값이 여러 개인 신경망에서 사용하기에 가장 편리하며, 입력값의 시퀀스를 다음과 같이 표현할 수 있습니다.
P |
| 각각의 |
T |
| 각각의 |
Pi |
| 각각의 |
Ai |
| 각각의 |
Y |
| 각각의 |
E |
| 각각의 |
Pf |
| 각각의 |
Af |
| 각각의 |
여기서
Ni | = | net.numInputs |
Nl | = | net.numLayers |
No | = | net.numOutputs |
ID | = | net.numInputDelays |
LD | = | net.numLayerDelays |
TS | = | 시간 스텝의 개수 |
Q | = | 배치 크기 |
Ri | = | net.inputs{i}.size |
Si | = | net.layers{i}.size |
Ui | = | net.outputs{i}.size |
Pi
, Pf
, Ai
, Af
의 열은 가장 오래된 지연 조건부터 가장 최근까지의 순서로 정렬됩니다.
Pi{i,k} | = | 시간 |
Pf{i,k} | = | 시간 |
Ai{i,k} | = | 시간 |
Af{i,k} | = | 시간 |
행렬 형식은 하나의 시간 스텝만 시뮬레이션하는 경우에(TS = 1
) 사용할 수 있습니다. 입력값과 출력값이 하나만 있는 신경망에서 사용하기에 편리하지만, 더 많은 신경망에서도 사용 가능합니다.
각 행렬 인수는 대응되는 셀형 배열 인수의 요소를 하나의 행렬에 저장하여 찾습니다.
P | ( |
T | ( |
Pi | ( |
Ai | ( |
Y | ( |
E | ( |
Pf | ( |
Af | ( |
예제
여기서는 스텝이 12개인 시퀀스 2개(여기서 T1
은 P1
에 좌우됨)를 사용하여 필터의 동작을 정의합니다.
p1 = {-1 0 1 0 1 1 -1 0 -1 1 0 1}; t1 = {-1 -1 1 1 1 2 0 -1 -1 0 1 1};
linearlayer
를 사용하여 입력 범위 [-1 1]
, 뉴런 1개, 입력 지연 0과 1, 학습률 0.1인 계층을 만듭니다. 그런 다음 선형 계층을 시뮬레이션합니다.
net = linearlayer
([0 1],0.1);
여기서 신경망은 시퀀스 전체를 한 번 통과한 결과에 대해 적응합니다.
신경망의 평균 제곱 오차가 표시됩니다. (adapt
를 처음 호출하는 것이므로 Pi
의 디폴트 값이 사용됩니다.)
[net,y,e,pf] = adapt(net,p1,t1); mse(e)
오차가 상당히 큰 것을 볼 수 있습니다. 여기서 신경망은 다시 한 번 12개의 시간 스텝에 대해 적응합니다. 이번에는 이전의 Pf
를 새 초기 지연 조건으로 사용합니다.
p2 = {1 -1 -1 1 1 -1 0 0 0 1 -1 -1}; t2 = {2 0 -2 0 2 0 -1 0 0 1 0 -1}; [net,y,e,pf] = adapt(net,p2,t2,pf); mse(e)
여기서는 전체 시퀀스를 100번 통과한 결과에 대해 신경망이 적응합니다.
p3 = [p1 p2]; t3 = [t1 t2]; for i = 1:100 [net,y,e] = adapt(net,p3,t3); end mse(e)
시퀀스 통과 100회 이후의 오차는 매우 작습니다. 신경망이 입력 신호와 목표 신호 간 관계에 잘 적응한 것입니다.
알고리즘
adapt
는 net.adaptParam
으로 지정된 적응 파라미터 값을 사용하여 net.adaptFcn
으로 지정된 함수를 호출합니다.
TS
개 스텝을 갖는 입력 시퀀스가 주어지면 신경망이 다음과 같이 업데이트됩니다. 입력 시퀀스의 각 스텝이 한 번에 하나씩 신경망에 입력됩니다. 각각의 스텝이 제시된 후 시퀀스의 다음 스텝이 입력되기 전에 신경망의 가중치와 편향 값이 업데이트됩니다. 따라서 신경망은 TS
회 업데이트됩니다.
버전 내역
R2006a 이전에 개발됨