Main Content

traingd

경사하강법 역전파

설명

net.trainFcn = 'traingd'는 신경망의 trainFcn 속성을 설정합니다.

[trainedNet,tr] = train(net,...)traingd를 사용하여 신경망을 훈련시킵니다.

traingd는 경사하강법에 따라 가중치와 편향 값을 업데이트하는 신경망 훈련 함수입니다.

아래에 디폴트 값과 함께 표시된 다음의 traingd 훈련 파라미터에 따라 훈련이 이루어집니다.

  • net.trainParam.epochs — 훈련할 최대 Epoch 횟수. 디폴트 값은 1000입니다.

  • net.trainParam.goal — 성능 목표. 디폴트 값은 0입니다.

  • net.trainParam.lr — 학습률. 디폴트 값은 0.01입니다.

  • net.trainParam.max_fail — 최대 검증 실패 횟수. 디폴트 값은 6입니다.

  • net.trainParam.min_grad — 최소 성능 기울기. 디폴트 값은 1e-5입니다.

  • net.trainParam.show — 다음 표시까지 진행할 Epoch 횟수(표시하지 않으려면 NaN). 디폴트 값은 25입니다.

  • net.trainParam.showCommandLine — 명령줄 출력값 생성. 디폴트 값은 false입니다.

  • net.trainParam.showWindow — 훈련 GUI 표시. 디폴트 값은 true입니다.

  • net.trainParam.time — 훈련을 진행할 최대 시간(단위: 초). 디폴트 값은 inf입니다.

입력 인수

모두 축소

입력 신경망으로, network 객체로 지정됩니다. network 객체를 만들려면 feedforwardnet 또는 narxnet 등을 사용하십시오.

출력 인수

모두 축소

훈련된 신경망으로, network 객체로 반환됩니다.

훈련 기록(epochperf)으로, 신경망 훈련 함수(net.NET.trainFcn)에 따라 필드가 결정되는 구조체로 반환됩니다. 다음과 같은 필드를 포함할 수 있습니다.

  • 훈련, 데이터 분할, 성능 함수와 파라미터

  • 훈련, 검증, 테스트 세트의 데이터 분할 인덱스

  • 훈련, 검증, 테스트 세트의 데이터 분할 마스크

  • Epoch 횟수(num_epochs) 및 최적의 Epoch(best_epoch).

  • 훈련 상태 이름 목록(states).

  • 훈련 전체에 걸쳐 기록된 각 상태 이름에 대한 필드

  • 최적의 신경망의 성능(best_perf, best_vperf, best_tperf)

세부 정보

모두 축소

신경망 사용

feedforwardnet 또는 cascadeforwardnet으로 traingd를 사용하는 표준 신경망을 만들 수 있습니다. traingd를 사용하여 훈련할 사용자 지정 신경망을 준비하려면 다음을 수행하십시오.

  1. net.trainFcn'traingd'로 설정합니다. 이렇게 하면 net.trainParamtraingd의 디폴트 파라미터로 설정됩니다.

  2. net.trainParam 속성을 원하는 값으로 설정합니다.

두 경우 모두, 그 결과 생성되는 신경망에 train을 호출하면 이 신경망을 traingd를 사용하여 훈련시킵니다.

예제는 help feedforwardnethelp cascadeforwardnet을 참조하십시오.

경사하강법 역전파

배치 최속강하법 훈련 함수는 traingd입니다. 가중치와 편향은 성능 함수의 음수 기울기 방향에서 업데이트됩니다. 배치 최속강하법을 사용하여 신경망을 훈련시키려면 신경망 trainFcntraingd로 설정하고 함수 train을 호출해야 합니다. 주어진 신경망과 관련된 훈련 함수는 오직 한 개입니다.

traingd와 관련된 훈련 파라미터는 다음과 같이 7개입니다.

  • epochs

  • show

  • goal

  • time

  • min_grad

  • max_fail

  • lr

가중치와 편향의 변경은 학습률 lr에 기울기의 음수를 곱하여 판단합니다. 학습률이 높을수록 스텝이 커집니다. 학습률이 너무 크면 알고리즘의 안정성이 떨어지게 됩니다. 학습률을 너무 작게 설정하면 알고리즘이 수렴하는 데 오래 걸립니다. 학습률 선택에 대한 논의는 [HDB96]의 12-8페이지를 참조하십시오.

훈련 상태는 알고리즘의 show회 반복마다 표시됩니다. (showNaN으로 설정된 경우에는 훈련 상태가 표시되지 않습니다.) 나머지 파라미터들이 훈련 중지 시점을 결정합니다. 훈련은 반복 횟수가 epochs를 초과하거나 성능 함수가 goal 아래로 떨어지거나 기울기의 크기가 mingrad보다 작거나 훈련 시간이 time초보다 길어지면 중지됩니다. 조기 중지 기법과 관련 있는 max_fail에 대한 논의는 일반화 개선에서 확인할 수 있습니다.

다음 코드는 입력값 p와 목표값 t로 구성된 훈련 세트를 만듭니다. 배치 훈련의 경우, 모든 입력 벡터는 하나의 행렬에 배치됩니다.

p = [-1 -1 2 2; 0 5 0 5];
t = [-1 -1 1 1];

피드포워드 신경망을 만듭니다.

net = feedforwardnet(3,'traingd');

이 간단한 예제에서는 나중에 소개되는 기능을 끕니다.

net.divideFcn = '';

이 시점에서 몇 가지 디폴트 훈련 파라미터를 수정해 봅니다.

net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 300;
net.trainParam.goal = 1e-5;

디폴트 훈련 파라미터를 사용하려는 경우, 위의 명령은 필요하지 않습니다.

이제 신경망을 훈련시킬 준비가 되었습니다.

[net,tr] = train(net,p,t);

훈련 기록 tr에는 훈련 진행 상황에 대한 정보가 포함되어 있습니다.

이제 훈련된 신경망을 시뮬레이션하여 훈련 세트의 입력값에 대한 응답을 얻을 수 있습니다.

a = net(p)
a =
   -1.0026   -0.9962   1.0010   0.9960

알고리즘

traingd는 신경망의 가중치, 순 입력값, 전달 함수가 도함수를 갖는 한 어떤 신경망도 훈련시킬 수 있습니다.

역전파는 가중치와 편향 변수 X에 대한 성능 perf의 도함수를 계산하기 위해 사용됩니다. 각 변수는 경사하강법에 따라 조정됩니다.

dX = lr * dperf/dX

다음 조건 중 하나라도 충족되면 훈련이 중지됩니다.

  • epochs(반복)의 최대 횟수에 도달함.

  • time의 최대 값이 초과됨.

  • 성능이 goal로 최소화됨.

  • 성능 기울기가 min_grad 아래로 떨어짐.

  • (검증을 사용하는 경우) 검증 성능(검증 오류)이 마지막으로 감소한 이후로 max_fail배 넘게 증가함.

버전 내역

R2006a 이전에 개발됨

참고 항목

| | |