신경망에서 학습, 검증 및 테스트 세트의 차이점은 무엇입니까?


155

이 라이브러리 를 사용하여 학습 에이전트를 구현하고 있습니다.

교육 사례를 생성했지만 유효성 검사 및 테스트 세트가 무엇인지 확실하지 않습니다.
교사는 말합니다 :

70 %는 교육 사례 여야하고 10 %는 테스트 사례이며 나머지 20 %는 검증 사례입니다.

편집하다

교육용 코드가 있지만 교육을 언제 중단 해야할지 모르겠습니다 .

  def train(self, train, validation, N=0.3, M=0.1):
    # N: learning rate
    # M: momentum factor
    accuracy = list()
    while(True):
        error = 0.0
        for p in train:
            input, target = p
            self.update(input)
            error = error + self.backPropagate(target, N, M)
        print "validation"
        total = 0
        for p in validation:
            input, target = p
            output = self.update(input)
            total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output

        accuracy.append(total)
        print min(accuracy)
        print sum(accuracy[-5:])/5
        #if i % 100 == 0:
        print 'error %-14f' % error
        if ? < ?:
            break

편집하다

유효성 검사 데이터를 사용하여 평균 20의 평균 오류를 얻을 수 있습니다 .20 번의 훈련 반복 후에 80 % 여야합니까?

평균 오류 = 유효성 검사 데이터의 입력 / 크기가 주어지면 유효성 검사 대상과 출력 간의 절대 차이의 합입니다.

1
        avg error 0.520395 
        validation
        0.246937882684
2
        avg error 0.272367   
        validation
        0.228832420879
3
        avg error 0.249578    
        validation
        0.216253590304
        ...
22
        avg error 0.227753
        validation
        0.200239244714
23
        avg error 0.227905    
        validation
        0.199875013416

1
"... 그게 80 % 여야합니까?" 아니요, 평균 오류와 정확한 백분율은 서로 다른 두 가지입니다. 목표 값이 5.0이고 뉴런이 4.8을 리턴했다고 가정하십시오 (즉, 0.2의 오류). 데이터에 따라 0.2의 오류가 허용 될 수 있으므로 오류가 충분히 작 으면 해당 인스턴스가 올바르게 지정된 것으로 간주 할 수 있습니다. 따라서 목표가 10 개이고 그 중 7 개에 대한 분류 오류가 허용 가능한 범위 내에 있으면 데이터의 70 %를 올바르게 분류했을 것입니다.
Kiril

교사가 요구하는 종료 기준은 무엇입니까?
Kiril

답변:


292

훈련 및 검증 세트는 훈련 중에 사용됩니다.

for each epoch
    for each training data instance
        propagate error through the network
        adjust the weights
        calculate the accuracy over training data
    for each validation data instance
        calculate the accuracy over the validation data
    if the threshold validation accuracy is met
        exit training
    else
        continue training

훈련을 마치면 테스트 세트에 대해 실행하고 정확도가 충분한 지 확인합니다.

훈련 세트 :이 데이터 세트는 신경망의 가중치를 조정하는 데 사용됩니다.

검증 세트 :이 데이터 세트는 과적 합을 최소화하는 데 사용됩니다. 이 데이터 세트로 네트워크의 가중치를 조정하는 것이 아니라 훈련 데이터 세트보다 정확도가 높아지면 실제로 네트워크에 표시되지 않은 데이터 세트보다 정확도가 향상되는지 확인하는 것입니다. 또는 적어도 네트워크에서 훈련되지 않은 것 (즉, 검증 데이터 세트). 훈련 데이터 세트에 대한 정확도는 증가하지만 검증 데이터 세트에 대한 정확도는 동일하게 유지되거나 감소하는 경우 신경망에 과도하게 적합하므로 훈련을 중단해야합니다.

테스트 세트 :이 데이터 세트는 네트워크의 실제 예측 전력을 확인하기 위해 최종 솔루션을 테스트하는 데만 사용됩니다.


그것의 파이썬 : xi는 단지 정지 기준을 얻을 수 없습니다. 값이 수렴하지만 항상 약간의 변동이 있습니다.
Daniel

@Daniel, 훈련 정확도가 변동되거나 검증 정확도가 변동합니까? 검증 정확도가 변동될 수 있지만 훈련 정확도가 변동될 가능성은 적습니다. "input, target = p"라고 말하면 둘 다 p로 설정한다는 의미입니까?
Kiril

나는 파이썬에별로 좋지 않으므로 코드가 약간 혼란스러워 보입니다 ... 일반적으로 유효성 검사 정확도가 특정 임계 값 (70 % 또는 90 %)을 충족하면 훈련을 중단하고 싶습니다. 귀하의 데이터.
Kiril

5
검증 과정은 훈련 과정에서 사용됩니다. 테스트 세트가 아닙니다. 테스트 세트를 사용하면 1) 트레이닝 세트가 충분한 지 여부와 2) 유효성 검사 세트가 과적 합 방지 작업을 수행했는지 여부를 확인할 수 있습니다. 교육 과정에서 테스트 세트를 사용하는 경우 이는 다른 유효성 검사 세트 일 뿐이며 새 데이터가 네트워크에 공급 될 때 발생하는 결과를 보여주지 않습니다.
Anton Andreev

2
@AntonAndreev 나는 그것을 얻지 못한다. 당신의 대답에 따르면 , 신경 네트워크의 가중치를 조정하는데도 validation set또는도 test set사용 되지 않습니다 . 왜으로하지 가중치를 훈련하는 데 사용되는 동일한 데이터 집합, 사용할 수 validation settest set? 그것들을 분리하여 얻는 것은 무엇입니까?
길리

77

학습 세트 : 학습에 사용되는 분류 세트의 매개 변수 (예 : 가중치)에 맞는 예제 세트입니다.

밸리데이션 세트 : 신경망에서 숨겨진 유닛의 수를 선택하기 위해 분류기의 파라미터 (즉, 가중치가 아닌 아키텍쳐)를 튜닝하는데 사용되는 예제 세트.

테스트 세트 : 완전히 지정된 분류기의 성능 [일반화]을 평가하기 위해서만 사용되는 예제 세트.

에서 ftp://ftp.sas.com/pub/neural/FAQ1.txt의 섹션 " 인구, 샘플 무엇, 훈련 설정, 디자인 설정, 검증 "

오류 표면은 데이터 세트 (배치 학습)와 다른 데이터 세트에 따라 다릅니다. 따라서 테스트 세트 데이터에 대해 매우 적합한 로컬 최소값을 찾으면 이는 좋은 점이 아니며 동일한 문제에 대해 다른 데이터 세트에서 생성 된 표면에서 매우 나쁜 점일 수 있습니다. 따라서 훈련 세트에 적합한 가중치 구성을 찾을뿐만 아니라 오류가없는 새로운 데이터 (훈련 세트에없는)를 예측할 수있는 모델을 계산해야합니다. 즉, 네트워크는 예제 를 일반화 하여 데이터를 학습 하고 훈련 데이터를 과적 합하여 단순히 훈련 세트를 기억하거나로드하지 않도록해야합니다.

유효성 검사 데이터 세트는 배우고 자하는 기능에 대한 데이터 세트이며 네트워크를 직접 학습하는 데 사용하지는 않습니다. 훈련 데이터 세트라고하는 일련의 데이터로 네트워크를 훈련하고 있습니다. 그래디언트 기반 알고리즘을 사용하여 네트워크를 학습하는 경우 오류 표면과 특정 시점의 그래디언트가 훈련 데이터 세트에 완전히 의존하므로 훈련 데이터 세트가 직접 가중치를 조정하는 데 사용됩니다. 네트워크를 과도하게 사용하지 않으려면 유효성 검사 데이터 세트를 네트워크에 입력하고 오류가 특정 범위 내에 있는지 확인해야합니다. 검증 세트가 직접 netowork의 무게를 조정하기 위해 사용하지 않기 때문에 검증에 대한 좋은 오류와 테스트 세트는 네트워크가 기차 세트 예제에 대해 잘 예측한다는 것을 나타냅니다.

조기 중지는 훈련을 중지하는 방법입니다. 이용 가능한 다른 변형이 있으며, 주요 개요는 기차 및 유효성 검사 세트 오류가 모두 모니터링되며, 각 반복 (백프로 프 및 형제)에서 기차 오류가 감소하고 처음에는 유효성 검사 오류가 감소합니다. 유효성 검사 오류가 발생하기 시작하면 교육이 중단됩니다. 이 시점의 가중치 구성 은 네트워크에서 보이지 않는 데이터뿐만 아니라 훈련 데이터를 잘 예측하는 모델을 나타냅니다 . 하지만 유효성 검사 데이터가 실제로가중치 구성을 선택하기 위해 가중치 구성에 간접적으로 영향을줍니다. 여기에서 테스트 세트가 시작됩니다.이 데이터 세트는 교육 과정에서 사용되지 않습니다. 유효성 검사 세트를 기반으로 모델을 선택하면 테스트 세트 데이터가 네트워크 모델에 적용되고이 세트에 대한 오류가 발견됩니다. 이 오류는 동일한 문제에 대해 완전히 새로운 데이터에서 기대할 수있는 오류를 나타냅니다.

편집하다:

또한 유효성 검사 세트에 대한 데이터가 충분하지 않은 경우 교차 검증 을 사용하여 매개 변수를 조정하고 테스트 오류를 ​​추정 할 수 있습니다 .


11
나는 이런 의미없는 의견을 게시하지는 않겠다는 것을 알고 있지만이 답변에 크게 감사드립니다. :)
Llamageddon

6

교차 검증 세트는 모델 선택에 사용됩니다. 예를 들어, 주어진 매개 변수 세트에 대해 오류가 가장 적은 다항식 모델을 선택하십시오. 그런 다음 테스트 세트를 사용하여 선택한 모델의 일반화 오류를보고합니다. 여기에서 : https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets


1
Andrew Ng의 수업도 수강하고 있습니다. 검증 세트는 교육의 일부 여야합니다. 하이퍼 파라미터를 돌리는 데만 사용해야합니다.
Jack Peng

4

우리는 검증 세트를

  • 훈련 중 모델이 일반화되는 정도 측정
  • 모델 교육을 중단 할시기를 알려주십시오. 유효 손실이 감소하는 것을 중지 할 때 (특히, 유실 손실이 증가하기 시작하고 교육 손실이 여전히 감소 할 때)

검증 세트가 사용 된 이유 :

검증 세트가 사용 된 이유


2

트레이닝 세트에서 모델을 학습 한 다음 테스트 세트에서 성능을 측정한다고 가정 해보십시오. 여전히 개선의 여지가 있다고 생각하고 하이퍼 파라미터를 조정 해보십시오 (모델이 신경망 인 경우 하이퍼 파라미터는 레이어의 수 또는 레이어의 노드입니다). 이제 약간 더 나은 성능을 얻습니다. 그러나 모델에 다른 데이터가 적용되면 (테스트 및 교육 세트에 없음) 동일한 수준의 정확도를 얻지 못할 수 있습니다. 이는 테스트 세트에서 더 나은 정확도를 얻기 위해 하이퍼 매개 변수를 조정하는 동안 약간의 바이어스를 도입했기 때문입니다. 기본적으로 모델과 하이퍼 파라미터를 조정하여 해당 트레이닝 세트에 가장 적합한 모델을 생성했습니다.

일반적인 해결책은 훈련 세트를 더 분할하여 검증 세트 를 만드는 것 입니다 . 이제 당신은

  • 훈련 세트
  • 테스트 세트
  • 검증 세트

이전과 동일하게 진행하지만 이번에는 유효성 검사 세트를 사용하여 성능을 테스트하고 하이퍼 파라미터를 조정합니다. 보다 구체적으로, 축소 된 트레이닝 세트 (즉, 전체 트레이닝 세트에서 검증 세트를 뺀 것)에 대해 다양한 하이퍼 파라미터가있는 여러 모델을 훈련시키고 검증 세트에서 가장 잘 수행되는 모델을 선택합니다.

유효성 검사 세트에서 최고 성능 모델을 선택하면 전체 트레이닝 세트 (유효성 검사 세트 포함)에서 최고 모델을 학습하면 최종 모델이 제공됩니다.

마지막으로, 일반화 오류의 추정치를 얻기 위해 테스트 세트에서이 최종 모델을 평가합니다.


0

Training Dataset : 모델에 맞는 데이터 샘플입니다.

밸리데이션 데이터 셋 : 모델 하이퍼 파라미터를 튜닝하면서 훈련 데이터 셋에 대한 모델의 편견없는 평가를 제공하는 데 사용되는 데이터 샘플. 유효성 검증 데이터 세트에 대한 기술이 모델 구성에 통합됨에 따라 평가가 더 편향됩니다.

테스트 데이터 세트 : 교육 데이터 세트에 대한 최종 모델 적합에 대한 편견없는 평가를 제공하는 데 사용되는 데이터 샘플입니다.


-15

간단한 단어로 훈련 세트, 테스트 세트, 검증 세트를 정의하십시오.

훈련 세트 : 가장 가까운 이웃을 찾는 데 사용됩니다. 검증 세트 : 열차 세트에 적용되는 다른 k를 찾기위한 것입니다. 테스트 세트 : 향후 최대 정확도와 보이지 않는 데이터를 찾는 데 사용됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.