컨볼 루션 신경망에 얼마나 많은 데이터가 필요합니까?


15

약 1,000,000 개의 매개 변수가있는 CNN (Convolutional Neural Network)을 사용하는 경우 얼마나 많은 훈련 데이터가 필요한지 (확률 적 경사 하강을 가정하고 있음)? 경험 법칙이 있습니까?

추가 사항 : 확률 적 그라디언트 디센트 (예 : 1 회 반복 64 패치)를 수행 할 때 ~ 10000 회 반복 후 분류기의 정확도는 대략 일정한 값에 도달 할 수 있습니다. 이것은 많은 데이터가 필요하지 않다는 것을 의미합니까? 100k-1000k 데이터처럼.

답변:


12

더 많은 데이터가 도움이 될지 여부를 파악하려면 훈련 데이터에 대한 알고리즘의 성능 (예 : 신경망 학습에 사용 된 데이터)을 테스트 데이터에 대한 성능 (신경망이 수행 한 데이터)과 비교해야합니다. 훈련에서 "참조"하지 않습니다).

확인해야 할 것은 반복 횟수의 함수로서 각 세트의 오류 (또는 정확성)입니다. 이 결과에는 두 가지 가능성이 있습니다.

1) 훈련 오차는 시험 오차보다 현저히 낮은 값으로 수렴합니다. 이 경우 더 많은 데이터로 알고리즘의 성능이 거의 확실히 향상됩니다.

2) 훈련 오차와 시험 오차는 거의 같은 값으로 수렴합니다 (훈련 오차는 여전히 시험 오차보다 약간 낮습니다). 이 경우 추가 데이터 자체는 알고리즘에 도움이되지 않습니다. 이 시점에서 얻는 것보다 더 나은 성능이 필요한 경우 숨겨진 레이어에 더 많은 뉴런을 추가하거나 숨겨진 레이어를 추가해야합니다. 숨겨진 단위가 충분히 추가되면 테스트 오류가 교육 오류보다 눈에 띄게 높아지고 그 시점에서 더 많은 데이터가 도움이 될 것입니다.

이러한 결정을 내리는 방법에 대한보다 철저하고 유용한 소개를 위해 Andrew Ng의 Coursera 코스 , 특히 "학습 알고리즘 평가"및 "바이어스 대 편차"레슨을 적극 권장 합니다.


3

순진한 대답은 항상 더 많은 데이터가 필요하다는 것입니다. 더 많은 에포크 (epoch)를 나타내는 동일한 데이터 세트를 반복하면 결과를 "정의"하는 데 도움이되지만 더 많은 데이터를 보유하는 것만 큼 결과를 개선하지는 않습니다.

예를 들어 문장 모델링을 수행하고 더 많은 데이터가 필요한지 테스트하기 위해 convnet을 훈련하고 있습니다. 훈련 데이터 세트를 더 작은 하위 집합으로 나누고 테스트하려고했습니다.

10 회 반복에 대한 전체 데이터 세트 및 교육을 사용하여 벤치 마크에서 93 %의 정확도를 달성했으며 계속 개선하고 있습니다. 대신 100 반복에 대한 데이터 세트의 10 %를 반복 할 때 85 %를 얻었습니다.

따라서 항상 더 많은 데이터를 얻으려고 노력하지만 가능하지 않은 경우 더 많은 에포크를 수행하는 것은 좋은 거래일 수 있지만 결국에는 항상 새로운 데이터를 네트워크에 공급하면 모델이 더 잘 수렴됩니다.


1
답변 주셔서 감사합니다! 예, 더 많은 데이터를 보유할수록 더 나은 결과를 얻을 수 있지만 필요한 데이터의 수는 확실하지 않습니다. 항상 더 많은 데이터를 가질 수있는 것은 아닙니다. 예를 들어, 주석과 라벨링을 할 사람을 고용해야합니다. 언제 중지
해야하는지 알고 싶습니다

작은 데이터 세트가 있으면 모델이 수렴하지 않습니까?
samsamara

3

가장 중요한 것은 데이터의 양이 많더라도 더 많은 데이터가 항상 더 좋기 때문에 데이터의 샘플이 잘 분산되어 있다는 것입니다. 결국, 고양이와 개 그림을 구별하는 법을 배우려고하면 고양이 이미지 만 먹이면 모델이 잘 작동 할 것으로 기대할 수 없습니다.

Kevin L답변 에서 제안했듯이 훈련 오류와 테스트 오류의 차이를 고려하는 것이 좋습니다. 테스트 데이터가 교육 데이터와 독립적 인 경우 모델이 사용할 수없는 데이터를 얼마나 일반화하는지 나타냅니다. 제가 추가하고 싶은 것은 훈련과 테스트 오류의 큰 차이는 모델이 잘 일반화되지 않았다는 것, 즉 훈련 데이터에 과적 합하고 있다는 사실 만 알려줍니다. 이제 네트워크가 추가 데이터 포인트를 모델링해야하므로 더 많은 데이터가 도움이 될 수 있습니다. 그러나 일반화되도록 모델을 변경하는 것이 더 가치가있을 수 있습니다. 이 책은 훌륭한 책에서 어떤 유형의 정규화가 존재하는지와 더 나은 일반화를 위해 네트워크에 적용 할 수있는 방법을 설명합니다.

좀 더 정량적 인 방법을 찾고 있다면 최근 에 quora에서이 질문을 발견 했습니다.. 그것은 자동 인코더에 관한 것이지만 귀하의 예제에도 적용되어야한다고 생각합니다. 이것이 올바른지 알 수 없지만 (예를 들어 알려주십시오) 예를 들어 MNIST의 경우 최대 28 * 28 * 8 * 10,000 = 62 720 000으로 이미지를 줄이려고한다고 주장 할 수 있습니다. 10 * 10 * 10,000 = 1000000 비트의 엔트로피를 갖는 원-핫 인코딩에서 10 개의 클래스로의 비트 엔트로피. 우리는 출력에서 ​​1000000 비트의 엔트로피에만 관심이 있기 때문에, 000 000 개의 파라미터로 각 파라미터는 샘플 당 1e-4 비트 인 단일 비트를 나타냅니다. 이것은 더 많은 데이터가 필요하다는 것을 의미합니다. 또는 매개 변수가 너무 많습니다. 예를 들어 100 개의 매개 변수를 사용하는 경우 매개 변수 당 10,000 비트가 있으므로 샘플 당 1 비트가 있습니다. 하나,


제안 해 주셔서 감사합니다. 요즘 사람들은 특정 작업의 데이터 수를 줄이기 위해 다른 전략을 생각해 냈습니다.
RockTheStar

0

네트워크에서 충분한 기능을 학습했는지 파악하는 데 일반적으로 사용되는 또 다른 방법은 초기 필터를 시각화하는 것입니다. 네트워크가 제대로 훈련되면 부드러운 필터가 표시됩니다. 노이즈 필터는 일반적으로 네트워크가 충분히 훈련되지 않았거나 과도하게 적합했음을 나타냅니다. 자세한 내용은 이 페이지를 참조하십시오 .

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