이 라이브러리 를 사용하여 학습 에이전트를 구현하고 있습니다.
교육 사례를 생성했지만 유효성 검사 및 테스트 세트가 무엇인지 확실하지 않습니다.
교사는 말합니다 :
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
답변
훈련 및 검증 세트는 훈련 중에 사용됩니다.
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
훈련을 마치면 테스트 세트에 대해 실행하고 정확도가 충분한 지 확인합니다.
훈련 세트 :이 데이터 세트는 신경망의 가중치를 조정하는 데 사용됩니다.
검증 세트 :이 데이터 세트는 과적 합을 최소화하는 데 사용됩니다. 이 데이터 세트로 네트워크의 가중치를 조정하는 것이 아니라 훈련 데이터 세트보다 정확도가 높아지면 실제로 네트워크에 표시되지 않은 데이터 세트보다 정확도가 향상되는지 확인하는 것입니다. 또는 적어도 네트워크에서 훈련되지 않은 것 (즉, 검증 데이터 세트). 훈련 데이터 세트에 대한 정확도는 증가하지만 검증 데이터 세트에 대한 정확도는 동일하게 유지되거나 감소하는 경우 신경망에 과도하게 적합하므로 훈련을 중단해야합니다.
테스트 세트 :이 데이터 세트는 네트워크의 실제 예측 전력을 확인하기 위해 최종 솔루션을 테스트하는 데만 사용됩니다.
답변
학습 세트 : 학습에 사용되는 분류 세트의 매개 변수 (예 : 가중치)에 맞는 예제 세트입니다.
밸리데이션 세트 : 신경망에서 숨겨진 유닛의 수를 선택하기 위해 분류기의 파라미터 (즉, 가중치가 아닌 아키텍쳐)를 튜닝하는데 사용되는 예제 세트.
테스트 세트 : 완전히 지정된 분류기의 성능 [일반화]을 평가하기 위해서만 사용되는 예제 세트.
에서 ftp://ftp.sas.com/pub/neural/FAQ1.txt의 섹션 ” 인구, 샘플 무엇, 훈련 설정, 디자인 설정, 검증 “
오류 표면은 데이터 세트 (배치 학습)와 다른 데이터 세트에 따라 다릅니다. 따라서 테스트 세트 데이터에 대해 매우 적합한 로컬 최소값을 찾으면 이는 좋은 점이 아니며 동일한 문제에 대해 다른 데이터 세트에서 생성 된 표면에서 매우 나쁜 점일 수 있습니다. 따라서 훈련 세트에 적합한 가중치 구성을 찾을뿐만 아니라 오류가없는 새로운 데이터 (훈련 세트에없는)를 예측할 수있는 모델을 계산해야합니다. 즉, 네트워크는 예제 를 일반화 하여 데이터를 학습 하고 훈련 데이터를 과적 합하여 단순히 훈련 세트를 기억하거나로드하지 않도록해야합니다.
유효성 검사 데이터 세트는 배우고 자하는 기능에 대한 데이터 세트이며 네트워크를 직접 학습하는 데 사용하지는 않습니다. 훈련 데이터 세트라고하는 일련의 데이터로 네트워크를 훈련하고 있습니다. 그래디언트 기반 알고리즘을 사용하여 네트워크를 학습하는 경우 오류 표면과 특정 시점의 그래디언트가 훈련 데이터 세트에 완전히 의존하므로 훈련 데이터 세트가 직접 가중치를 조정하는 데 사용됩니다. 네트워크를 과도하게 사용하지 않으려면 유효성 검사 데이터 세트를 네트워크에 입력하고 오류가 특정 범위 내에 있는지 확인해야합니다. 검증 세트가 직접 netowork의 무게를 조정하기 위해 사용하지 않기 때문에 검증에 대한 좋은 오류와 테스트 세트는 네트워크가 기차 세트 예제에 대해 잘 예측한다는 것을 나타냅니다.
조기 중지는 훈련을 중지하는 방법입니다. 이용 가능한 다른 변형이 있으며, 주요 개요는 기차 및 유효성 검사 세트 오류가 모두 모니터링되며, 각 반복 (백프로 프 및 형제)에서 기차 오류가 감소하고 처음에는 유효성 검사 오류가 감소합니다. 유효성 검사 오류가 발생하기 시작하면 교육이 중단됩니다. 이 시점의 가중치 구성 은 네트워크에서 보이지 않는 데이터뿐만 아니라 훈련 데이터를 잘 예측하는 모델을 나타냅니다 . 하지만 유효성 검사 데이터가 실제로가중치 구성을 선택하기 위해 가중치 구성에 간접적으로 영향을줍니다. 여기에서 테스트 세트가 시작됩니다.이 데이터 세트는 교육 과정에서 사용되지 않습니다. 유효성 검사 세트를 기반으로 모델을 선택하면 테스트 세트 데이터가 네트워크 모델에 적용되고이 세트에 대한 오류가 발견됩니다. 이 오류는 동일한 문제에 대해 완전히 새로운 데이터에서 기대할 수있는 오류를 나타냅니다.
편집하다:
또한 유효성 검사 세트에 대한 데이터가 충분하지 않은 경우 교차 검증 을 사용하여 매개 변수를 조정하고 테스트 오류를 추정 할 수 있습니다 .
답변
교차 검증 세트는 모델 선택에 사용됩니다. 예를 들어, 주어진 매개 변수 세트에 대해 오류가 가장 적은 다항식 모델을 선택하십시오. 그런 다음 테스트 세트를 사용하여 선택한 모델의 일반화 오류를보고합니다. 여기에서 : https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets
답변
우리는 검증 세트를
- 훈련 중 모델이 일반화되는 정도 측정
- 모델 교육을 중단 할시기를 알려주십시오. 유효 손실이 감소하는 것을 중지 할 때 (특히, 유실 손실이 증가하기 시작하고 교육 손실이 여전히 감소 할 때)
검증 세트가 사용 된 이유 :
답변
트레이닝 세트에서 모델을 학습 한 다음 테스트 세트에서 성능을 측정한다고 가정 해보십시오. 여전히 개선의 여지가 있다고 생각하고 하이퍼 파라미터를 조정 해보십시오 (모델이 신경망 인 경우 하이퍼 파라미터는 레이어의 수 또는 레이어의 노드입니다). 이제 약간 더 나은 성능을 얻습니다. 그러나 모델에 다른 데이터가 적용되면 (테스트 및 교육 세트에 없음) 동일한 수준의 정확도를 얻지 못할 수 있습니다. 이는 테스트 세트에서 더 나은 정확도를 얻기 위해 하이퍼 매개 변수를 조정하는 동안 약간의 바이어스를 도입했기 때문입니다. 기본적으로 모델과 하이퍼 파라미터를 조정하여 해당 트레이닝 세트에 가장 적합한 모델을 생성했습니다.
일반적인 해결책은 훈련 세트를 더 분할하여 검증 세트 를 만드는 것 입니다 . 이제 당신은
- 훈련 세트
- 테스트 세트
- 검증 세트
이전과 동일하게 진행하지만 이번에는 유효성 검사 세트를 사용하여 성능을 테스트하고 하이퍼 파라미터를 조정합니다. 보다 구체적으로, 축소 된 트레이닝 세트 (즉, 전체 트레이닝 세트에서 검증 세트를 뺀 것)에 대해 다양한 하이퍼 파라미터가있는 여러 모델을 훈련시키고 검증 세트에서 가장 잘 수행되는 모델을 선택합니다.
유효성 검사 세트에서 최고 성능 모델을 선택하면 전체 트레이닝 세트 (유효성 검사 세트 포함)에서 최고 모델을 학습하면 최종 모델이 제공됩니다.
마지막으로, 일반화 오류의 추정치를 얻기 위해 테스트 세트에서이 최종 모델을 평가합니다.
답변
Training Dataset : 모델에 맞는 데이터 샘플입니다.
밸리데이션 데이터 셋 : 모델 하이퍼 파라미터를 튜닝하면서 훈련 데이터 셋에 대한 모델의 편견없는 평가를 제공하는 데 사용되는 데이터 샘플. 유효성 검증 데이터 세트에 대한 기술이 모델 구성에 통합됨에 따라 평가가 더 편향됩니다.
테스트 데이터 세트 : 교육 데이터 세트에 대한 최종 모델 적합에 대한 편견없는 평가를 제공하는 데 사용되는 데이터 샘플입니다.
답변
간단한 단어로 훈련 세트, 테스트 세트, 검증 세트를 정의하십시오.
훈련 세트 : 가장 가까운 이웃을 찾는 데 사용됩니다. 검증 세트 : 열차 세트에 적용되는 다른 k를 찾기위한 것입니다. 테스트 세트 : 향후 최대 정확도와 보이지 않는 데이터를 찾는 데 사용됩니다.