Main Content

trainrp

탄력적 역전파

설명

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

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

trainrp는 탄력적 역전파 알고리즘(Rprop)에 따라 가중치와 편향 값을 업데이트하는 신경망 훈련 함수입니다.

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

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

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

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

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

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

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

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

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

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

  • net.trainParam.delt_inc — 가중치 변경량 증가 배율. 디폴트 값은 1.2입니다.

  • net.trainParam.delt_dec — 가중치 변경량 감소 배율. 디폴트 값은 0.5입니다.

  • net.trainParam.delta0 — 초기 가중치 변경. 디폴트 값은 0.07입니다.

  • net.trainParam.deltamax — 최대 가중치 변경. 디폴트 값은 50.0입니다.

예제

예제

모두 축소

이 예제에서는 trainrp 훈련 함수로 피드포워드 신경망을 훈련시켜 입력값 p와 목표값 t로 구성된 문제를 푸는 방법을 보여줍니다.

신경망으로 풀고자 하는 입력값 p와 목표값 t를 만듭니다.

p = [0 1 2 3 4 5];
t = [0 0 0 1 1 1];

은닉 뉴런 2개와 이 훈련 함수를 갖는 2계층 피드포워드 신경망을 만듭니다.

net = feedforwardnet(2,'trainrp');

신경망 훈련 및 테스트하기

net.trainParam.epochs = 50;
net.trainParam.show = 10;
net.trainParam.goal = 0.1;
net = train(net,p,t);
a = net(p)

더 많은 예제는 help feedforwardnethelp cascadeforwardnet 항목을 참조하십시오.

입력 인수

모두 축소

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

출력 인수

모두 축소

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

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

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

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

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

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

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

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

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

세부 정보

모두 축소

신경망 사용

feedforwardnet 또는 cascadeforwardnet으로 trainrp를 사용하는 표준 신경망을 만들 수 있습니다.

trainrp를 사용하여 훈련할 사용자 지정 신경망을 준비하려면 다음을 수행하십시오.

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

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

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

탄력적 역전파

다층 신경망은 일반적으로 은닉 계층에서 시그모이드 전달 함수를 사용합니다. 이러한 함수는 무한한 입력 범위를 유한한 출력 범위로 압축하므로 종종 “압축” 함수라고 부릅니다. 시그모이드 함수는 입력값이 커지면 기울기가 0에 가까워진다는 특징을 갖습니다. 이 때문에 최속강하법을 사용하여 시그모이드 함수를 갖는 다층 신경망을 훈련시킬 때 문제가 발생합니다. 기울기의 크기가 매우 작을 수 있으며, 이로 인해 가중치와 편향이 최적 값과 거리가 먼 경우에도 가중치와 편향의 변경량은 미소할 뿐이기 때문입니다.

탄력적 역전파(Rprop) 훈련 알고리즘의 목적은 편도함수의 크기가 갖는 이러한 해로운 효과를 제거하는 것입니다. 오직 도함수의 부호만 가중치 업데이트의 방향을 결정할 수 있고, 도함수의 크기는 가중치 업데이트에 영향을 주지 않습니다. 가중치 변경의 크기는 별도의 업데이트 값에 의해 결정됩니다. 각 가중치와 편향의 업데이트 값은 가중치 대비 도함수의 성능 함수가 2회 반복 동안 연속으로 같은 부호를 가질 때마다 delt_inc배만큼 증가합니다. 업데이트 값은 가중치 대비 도함수의 부호가 직전 반복의 그것과 다를 때마다 delt_dec배만큼 감소합니다. 도함수가 0이면 업데이트 값이 그대로 유지됩니다. 가중치가 진동할 때마다 가중치 변경량이 감소합니다. 가중치가 몇 회의 반복 동안 계속해서 동일한 방향으로 변경되면 가중치 변경량의 크기가 증가합니다. Rprop 알고리즘에 대한 전체 설명은 [RiBr93]에서 확인할 수 있습니다.

다음 코드는 이전 신경망을 다시 만들어서 Rprop 알고리즘을 사용하여 훈련시킵니다. trainrp의 훈련 파라미터는 epochs, show, goal, time, min_grad, max_fail, delt_inc, delt_dec, delta0, deltamax입니다. 처음 8개의 파라미터는 앞에서 설명했습니다. 마지막 2개는 각각 초기 스텝 크기와 최대 스텝 크기입니다. Rprop의 성능은 훈련 파라미터의 설정에 별로 민감하지 않습니다. 다음 예제에서 훈련 파라미터는 디폴트 값을 그대로 사용합니다.

p = [-1 -1 2 2;0 5 0 5];
t = [-1 -1 1 1];
net = feedforwardnet(3,'trainrp');
net = train(net,p,t);
y = net(p)

rprop는 일반적으로 표준 최속강하법 알고리즘보다 훨씬 빠릅니다. 또한, 메모리 요구 사항이 약간만 늘어난다는 것도 좋은 속성입니다. 각 가중치와 편향의 업데이트 값은 저장해야 하는데, 이는 기울기 값을 저장하는 것과 같습니다.

알고리즘

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

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

dX = deltaX.*sign(gX);

여기서 deltaX의 요소는 모두 delta0으로 초기화되고, gX는 기울기입니다. 각 반복에서 deltaX의 요소가 수정됩니다. 하나의 반복에서 다음 반복으로 넘어갈 때 gX의 요소의 부호가 변경되면 deltaX의 대응되는 요소는 delta_dec만큼 감소합니다. 하나의 반복에서 다음 반복으로 넘어갈 때 gX의 요소의 부호가 변하지 않으면 deltaX의 대응되는 요소는 delta_inc만큼 증가합니다. Riedmiller, M., and H. Braun, “A direct adaptive method for faster backpropagation learning: The RPROP algorithm,” Proceedings of the IEEE International Conference on Neural Networks,1993, pp. 586–591.

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

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

  • time의 최대 값이 초과됨.

  • 성능이 goal로 최소화됨.

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

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

참고 문헌

[1] Riedmiller, M., and H. Braun, “A direct adaptive method for faster backpropagation learning: The RPROP algorithm,” Proceedings of the IEEE International Conference on Neural Networks,1993, pp. 586–591.

버전 내역

R2006a 이전에 개발됨