2014-11-10 4 views
1

유효성 검사 집합에서 계산 된 오류가 증가하기 시작하면 네트워크 교육을 중단하고 싶습니다. 나는 훈련 알고리즘으로 RPROP와 BasicNetwork를 사용하고, 나는 다음과 같은 훈련을 반복해야 : 나는 훈련을 중지해야하는 경우 가중치가 이미 파악하기 전에 변경 되었기 때문에이 작동하지 않습니다 분명히Encog - 유효성 검사 설정이있는 EarlyStoppingStrategy

double validationError = 999.999; 


    while(!stop){ 

     train.iteration(); //weights are updated here 

     System.out.println("Epoch #" + epoch + " Error : " + train.getError()) ; 

     //I'm just comparing to see if the error on the validation set increased or not 
     if (network.calculateError(validationSet) < validationError) 
      validationError = network.calculateError(validationSet); 

     else 
      //once the error increases I stop the training. 
      stop = true ; 

     System.out.println("Epoch #" + epoch + "Validation Error" + network.calculateError(validationSet)); 

     epoch++; 

    } 
     train.finishTraining(); 

을 아닙니다. 어쨌든 나는 한 걸음 뒤로 물러나서 오래된 가중치를 사용할 수 있습니까?

또한 메서드를 사용하여 필요한 내용 인 EarlyStoppingStrategy 클래스를 볼 수 있습니다. 그러나 실제로 왜 EarlyStoppingStrategy 생성자가 유효성 검사 집합과 테스트 집합을 모두 사용하는지 이해할 수 없습니다. 네트워크의 출력을 테스트하기 전에는 유효성 검사 집합 만 필요하고 테스트 집합은 전혀 사용하지 않아야한다고 생각했습니다. |

Proben1 :

답변

2

는 Encog의 EarlyStoppingStrategy 클래스는이 논문에 따라 조기 정지 전략을 구현 신경망 벤치 마크 문제 및 벤치마킹 규칙

의 설정 (전체가 자바 독에 포함되어 인용한다)

방금 ​​유효성 검사 설정의 오류가 더 이상 그냥 사용할 수 있습니다 향상 즉시 멈추지하려면 여기에있는 Encog SimpleEarlyStoppingStrategy :

org.encog.ml.train.strategy.end.SimpleEarlyStoppingStrategy

참고 SimpleEarlyStoppingStrategy는 Encog 3.3이 필요하다는.

+0

감사합니다. Jeff! 제 질문에 대한 답변을 해주셔서 감사합니다. Encog 3.3으로 라이브러리를 업데이트하고 중단 전략을 추가했습니다. 그러나 SimpleEarlyStoppingStrategy가 유효성 검사 집합의 오류가 개선되지 않는다고 판단하는 방법에 대해서는 명확하지 않습니다. 출력을 기반으로 문제의 가중치 세트를 가장 잘 선택하지 않은 것으로 보입니다. 다른 질문으로 게시해야할까요? – wFateem

+1

"checkFrequency"반복마다 유효성 검증 세트의 현재 오류를 점검합니다. 검증 오류가 더 이상 개선되지 않으면 교육이 중단됩니다. – JeffHeaton