trainlm
Levenberg-Marquardt 역전파
설명
net.trainFcn = 'trainlm'
은 신경망의 trainFcn
속성을 설정합니다.
[
은 trainedNet
,tr
] = train(net
,...)trainlm
을 사용하여 신경망을 훈련시킵니다.
trainlm
은 Levenberg-Marquardt 최적화 알고리즘에 따라 가중치와 편향 값을 업데이트하는 신경망 훈련 함수입니다.
trainlm
은 툴박스에서 가장 빠른 역전파 알고리즘인 경우가 많으며, 여타 알고리즘보다 메모리를 많이 요구하긴 하지만 가장 먼저 선택하는 지도 학습 알고리즘으로 강력 추천되고 있습니다.
아래에 디폴트 값과 함께 표시된 다음의 trainlm
훈련 파라미터에 따라 훈련이 이루어집니다.
net.trainParam.epochs
— 훈련할 최대 Epoch 횟수. 디폴트 값은 1000입니다.net.trainParam.goal
— 성능 목표. 디폴트 값은 0입니다.net.trainParam.max_fail
— 최대 검증 실패 횟수. 디폴트 값은6
입니다.net.trainParam.min_grad
— 최소 성능 기울기. 디폴트 값은1e-7
입니다.net.trainParam.mu
— 초기mu
. 디폴트 값은 0.001입니다.net.trainParam.mu_dec
—mu
의 감소 인자. 디폴트 값은 0.1입니다.net.trainParam.mu_inc
—mu
의 증가 인자. 디폴트 값은 10입니다.net.trainParam.mu_max
—mu
의 최댓값. 디폴트 값은1e10
입니다.net.trainParam.show
— 다음 표시까지 진행할 Epoch 횟수(표시하지 않으려면NaN
). 디폴트 값은 25입니다.net.trainParam.showCommandLine
— 명령줄 출력값 생성. 디폴트 값은false
입니다.net.trainParam.showWindow
— 훈련 GUI 표시. 디폴트 값은true
입니다.net.trainParam.time
— 훈련을 진행할 최대 시간(단위: 초). 디폴트 값은inf
입니다.
검증 벡터는 검증 벡터에 대한 신경망 성능이 증가하지 않거나 max_fail
회 Epoch 연속으로 변화가 없으면 훈련을 조기에 중지하는 데 사용됩니다. 테스트 벡터는 신경망이 잘 일반화되고 있는지 추가로 확인하는 데 사용되지만 훈련에는 영향을 주지 않습니다.
예제
입력 인수
출력 인수
제한 사항
이 함수는 성능을 제곱 오차의 평균 또는 합이라고 가정하는 야코비 행렬을 계산에 사용합니다. 따라서 이 함수를 사용하여 훈련된 신경망은 mse
또는 sse
성능 함수를 사용해야 합니다.
세부 정보
알고리즘
trainlm
은 신경망의 NET.divideFcn
속성이 데이터 분할 함수로 설정된 경우, 검증 벡터와 테스트 벡터를 사용하여 훈련을 지원합니다. 검증 벡터는 검증 벡터에 대한 신경망 성능이 증가하지 않거나 max_fail
회 Epoch 연속으로 변화가 없으면 훈련을 조기에 중지하는 데 사용됩니다. 테스트 벡터는 신경망이 잘 일반화되고 있는지 추가로 확인하는 데 사용되지만 훈련에는 영향을 주지 않습니다.
trainlm
은 신경망의 가중치, 순 입력값, 전달 함수가 도함수를 갖는 한 어떤 신경망도 훈련시킬 수 있습니다.
역전파는 가중치와 편향 변수 X
에 대한 성능 perf
의 야코비 행렬 jX
을 계산하기 위해 사용됩니다. 각 변수는 Levenberg-Marquardt 알고리즘에 따라 조정됩니다.
jj = jX * jX je = jX * E dX = -(jj+I*mu) \ je
여기서 E
는 모든 오차이고 I
는 단위 행렬입니다.
위에서 보여진 변경의 결과로 성능 값이 감소될 때까지 조정 값 mu
는 mu_inc
만큼 증가합니다. 그런 다음 변경이 신경망에 적용되고, mu
가 mu_dec
만큼 감소됩니다.
다음 조건 중 하나라도 충족되면 훈련이 중지됩니다.
epochs
(반복)의 최대 횟수에 도달함.time
의 최대 값이 초과됨.성능이
goal
로 최소화됨.성능 기울기가
min_grad
아래로 떨어짐.mu
가mu_max
를 초과함.(검증을 사용하는 경우) 검증 성능(검증 오류)이 마지막으로 감소한 이후로
max_fail
배 넘게 증가함.
버전 내역
R2006a 이전에 개발됨