충분히 깊은 신경망이 거대한 데이터 세트에서 임의의 레이블을 기억할 수 있다는 경험적 증거가 많이 있습니다 (Chiyuan Zhang, Samy Bengio, Moritz Hardt, Benjamin Recht, Oriol Vinyals, "딥 러닝을 이해하려면 일반화를 다시 생각해야합니다"). 따라서 원칙적으로 충분히 큰 NN을 얻음으로써 우리는 항상 훈련 오류 를 매우 작은 값으로 줄일 수 있습니다 . 실제로 작업이 아무리 무의미하더라도 상관없이 수치 정확도로 제한됩니다.
일반화 오류 와는 상황이 상당히 다릅니다 . 각 학습 문제에 대해 원하는만큼 일반화 오류를 생성 할 수있는 학습 가능한 NN 모델이 있는지 확신 할 수 없습니다. 이러한 이유로 첫 번째 단계는
1. 기대치를 정확하게 설정하십시오
찾고있는 일반화 오류, 데이터 세트 또는 참조를 찾을 수있는 가장 유사한 오류에 도달 할 수있는 아키텍처가 있음을 알려주는 평판이 좋은 참조를 찾으십시오. 예를 들어 여기를보십시오
현재의 최신 컨볼 루션 신경망은 무엇입니까?
다양한 작업에 대한 CNN의 현재 (답변 당시) SOTA (State Of The Art) 성능을 찾기 위해. 모든 인프라가 제대로 설치되었는지 테스트하기 위해 자체 데이터 세트를 학습하기 전에 이러한 참조 데이터 세트에서 이러한 결과를 재현하는 것이 좋습니다.
2. 훈련 절차에 결함이 없는지 확인하십시오
질문에 대한 답변에 설명 된 모든 확인
신경망이 학습하지 않으면 어떻게해야합니까?
훈련 절차가 정상인지 확인하기 위해 일반화 오류를 성공적으로 줄이기위한 전제 조건입니다 (NN이 학습하지 않는 경우 일반화를 배울 수 없음). 이러한 검사에는 다음과 같은 것들이 포함됩니다.
- 단위 테스트
- 데이터 세트 확인 (트레이닝 세트와 테스트 세트 모두에 대한 임의의 입력 / 레이블 샘플 몇 개를 살펴보고 레이블이 올바른지 확인하고, 입력 이미지의 너비와 크기를 확인하고, 트레이닝 / 테스트 세트에서 샘플을 섞어서 영향을 미치는지 확인하십시오. 결과; 등)
- 무작위 배정 테스트
- 전처리 및 패키지 버전 표준화
- 수치 실험의 로그 북을 유지
3. 수렴을 시도하십시오
Leslie N. Smith와 Nicholay Topin의 “슈퍼 컨버전스 : 큰 학습 속도를 사용하는 신경망의 매우 빠른 훈련” 일부 사례에서는 Leslie N. Smith의 주기적 학습 속도 방법과 큰 학습 속도의 조합이 정규화 역할을하는 것으로 나타났습니다 수렴을 가속화하고 광범위한 정규화의 필요성을 줄입니다. 따라서 이것은 전에 시도해 보는 것이 좋습니다
4. 정규화를 MAXXX로 설정
정규화는 종종 훈련 시간 (나쁜)을 증가시키고, 훈련 오류를 증가 시키며 일반화 오류 (좋은)를 감소 시키지만 , 너무 많은 정규화는 실제로 두 가지 오류 (부족)를 증가시킬 수 있습니다. 이러한 이유로 훈련 시간이 증가하기 때문에 훈련 세트를 과적 합한 후에 는 한 번에 하나씩 다양한 정규화 기술을 도입하는 것이 좋습니다 . 정규화 자체가 반드시 일반화 오류가 작아진다는 것을 의미하지는 않습니다. 모델의 일반화 특성을 달성하려면 충분한 용량이 있어야합니다. 이것은 종종 정규화의 이점을보기 전에 충분히 깊은 네트워크가 필요하다는 것을 의미합니다.
가장 오래된 정규화 방법은 아마도 조기 정지 및 체중 감량입니다. 다른 것 중 일부 :
- 배치 크기를 줄입니다. 배치 크기가 작을수록 일반적으로 작은 일반화 오류와 관련이 있으므로 시도해보십시오. 그러나 미니 배치의 유용성에 대해서는 논쟁의 여지가 있습니다. 제 경험상 그들은 ( 과 같은 미친 작은 크기를 사용할 필요가없는 한 ) 도움이되지만 Elad Hoffer, Itay Hubara, Daniel Soudry Train은 더 길지만, 더 일반화 : 신경 네트워크의 큰 배치 훈련 일반화 격차를 동의하지 않는다. 참고 일괄 규범 (아래 참조)를 사용하는 경우, 너무 작은 minibatches 매우 해로울 것.m=16
- 적응 형 옵티 마이저보다는 SGD를 사용하십시오. 이것은 이미 @shimao에 의해 다루어 졌으므로 완전성을 위해 언급했습니다.
- 드롭 아웃 사용 : LSTM을 사용하는 경우 LSTM 레이어의 입력 및 출력 장치에만 표준 드롭 아웃을 사용하십시오. 반복 단위 (게이트)의 경우 Yarin Gal 의 박사 과정에서 처음으로 표시된 것처럼 반복 드롭 아웃을 사용하십시오 . 논문 . 그러나 CNN을 사용하면 이제 드롭 아웃이 덜 자주 사용됩니다. 대신, 당신은 경향이 ...
- ... 배치 정규화 사용 : 가장 최근의 CNN 아키텍처는 배치 정규화를 선호하여 드롭 아웃을 피합니다. 이것은 단지 유행 일 수도 있고, 명백하게 탈락과 배치 정규화가 잘 어울리지 않기 때문일 수 있습니다 (Xiang Li, Shuo Chen, Xiaolin Hu, Jian Yang, 차이에 의한 탈락과 배치 정규화의 불일치 이해 )를 누릅니다 . 대량 데이터 세트가있는 경우 배치 규범이 드롭 아웃보다 효과적이므로 CNN 아키텍처에서 드롭 아웃이 선호되지 않는 이유가 될 수 있습니다. 배치 정규화를 사용하는 경우 각 레이어의 가중치 및 바이어스 분포가 대략 표준 법선으로 보이는지 확인하십시오. RNN의 경우 배치 규범 구현이 복잡합니다. 무게 정규화 (Tim Salimans, Diederik P. Kingma,가중치 정규화 : 심층 신경망 훈련을 가속화하기위한 간단한 매개 변수화 는 실행 가능한 대안입니다.
- 데이터 확대 사용 : 정규화 효과도 있습니다.
5. 하이퍼 파라미터 / 아키텍처 검색
도움이되지 않는 경우 여러 하이퍼 파라미터 설정 (Bayesian Optimization이 여기에 도움이 될 수 있음) 또는 여러 다른 아키텍처 변경 사항 (예 : GAN 아키텍처 및 작업중인 데이터 세트)을 테스트해야합니다. 발전기, 그러나 판별기에 추가되면 상황이 악화됩니다). 길고 지루한 실험의 결과를 잘 정리 된 로그 북에 기록하십시오.
GAN 용 PS 일반화 오류에 대해 이야기하는 것은별로 의미가 없습니다. 위의 예는 여전히 딥 러닝에 많은 연금술이 있으며, 잘 작동 할 것으로 예상되는 것들, 때로는 돈 이 없음을 나타냅니다 '아니오 또는 여러 번 정상적으로 작동하는 것'은 갑자기 새로운 데이터 세트를 찾기 위해 갑자기 엉망이됩니다.