2016-06-16 6 views
1

중간 크기의 conv net을 배치 정상화로 깔끔하게 정리했습니다. 배치 정규화의 효과는 엄청나게 긍정적입니다 [10 배 이상의 교육 속도와 훨씬 향상된 정확도].일괄 정규화 [tensorflow]로 보충?

그러나 교육 및 유효성 검사/테스트 세트 사이의 정확도 격차는 10 %에 가까워지면서 크게 증가합니다. 이것은 불안해하고 있습니다. 격차는 훈련 중 천천히 쌓입니다.

BN 구현은 표준 TF 지수 이동 평균을 사용합니다. 검증과 훈련 세트가 동일한 통계를 공유하고 테스트 세트 통계에 대한 이동 평균을 "콜드 웜 - 업 (cold warm-up)"하려했기 때문에 이는 문제가되지 않습니다. 이 절차는 효과가 없었습니다. 또한 BN이 제대로 작동하려면 12 2 정규화와 중퇴를 해제해야했습니다.

누구와도 비슷한 일이 발생 했습니까? 어떤 아이디어? BN 네트워크에 "보다 표준적인"정규화를 추가하는 방법에 대한 제안이 있습니까?

+0

배치 기준에는 매개 변수가 거의 없으므로 초과 조정이 발생하지 않아야합니다. 모델이 충분한 시간을 훈련하지 않았기 때문에 아마도 지나치게 눈치 채지 못했을 것입니다. –

+0

감사합니다. 음, 거의 모든 무게에 대해 그림자 매개 변수가 있기 때문에 BN이 매개 변수에 2-3X를 추가한다고 말하고 싶습니다. 단순하게. [나는 또한 컨버전스가 아닌, 완전히 연결된 레이어를 가지고 있습니다.] 이전에 지나치게 눈치 채지 못했을 가능성이 있습니다. BN이 없으면 네트워크 속도가 훨씬 느려집니다. 그렇다면 BN 네트워크를 제대로 정비하는 방법은 여전히 ​​남아 있습니다. – amitmi

+0

나는 BN을 오해한다고 생각합니다. 2-3 배 더 많은 매개 변수가 없습니다. 컨볼 루션의 경우 BN은 배치 평균이 모든 피쳐 맵에서 계산되므로 '2 * feature_size' 매개 변수 (평균 및 분산)를가집니다. [doc] (https://www.tensorflow.org/versions/r0.9/api_docs/python/nn.html#batch_normalization)에 잘 설명되어 있습니다. –

답변

0

일괄 정규화는 실행 평균 및 분산의 부적절한 계산으로 인해 오버 피팅 인 것으로 보입니다. 데이터 집합을 통해 실행 한 마지막 배치가 나머지 일괄 처리보다 훨씬 작아서 여러 에포크에 걸쳐 누적 된 오류가 발생하면 이는 기쁜 일입니다.

마지막 배치가 나머지 배치와 동일한 크기인지 확인하십시오. 아마도 마지막 배치를 무시하기 만하면됩니다.