신경망 훈련을위한 트레이드 오프 배치 크기와 반복 횟수


221

신경망을 훈련시킬 때, 어떤 차이점이 있습니까?

  • 배치 크기를 , 반복 횟수를bab
  • 배치 크기를 , 반복 횟수를dcd

여기서 ?ab=cd

달리 말하면, 동일한 양의 훈련 예제를 사용하여 신경망을 훈련한다고 가정하면 최적의 배치 크기와 반복 횟수를 설정하는 방법은 무엇입니까? (배치 크기 * 반복 횟수 = 신경망에 표시된 훈련 예의 수, 동일한 훈련 예가 여러 번 나타날 수 있음)

배치 크기가 높을수록 더 많은 메모리 공간이 필요하며 계산 속도가 빨라지는 것을 알고 있습니다. 그러나 훈련 된 네트워크의 성능면에서 어떤 차이가 있습니까?


1
Cifar-10 데이터 세트의 정확성에 대한 다양한 배치 크기의 효과를 비교하면서 올바른 배치 크기를 선택하는 방법을 설명하는 이 블로그 를 확인하십시오 .
Teja Sreenivas

답변:


207

Nitish Shirish Keskar, Dheevatsa Mudigere, Jorge Nocedal, Mikhail Smelyanskiy, Ping Tak Peter Tang에서. 딥 러닝을위한 대규모 배치 교육 : 일반화 간격 및 선명도 최소화. https://arxiv.org/abs/1609.04836 :

확률 적 그라디언트 디센트 방법과 그 변형은 많은 딥 러닝 작업에 적합한 알고리즘입니다. 이 방법들은 작은 배치 체제에서 작동하는데, 여기에서 기울기 근사값을 계산하기 위해 훈련 데이터의 일부 (일반적으로 32-512 개의 데이터 포인트)가 샘플링됩니다. 실제로 더 큰 배치를 사용할 때 일반화 능력에 의해 측정 된 바와 같이 모델의 품질이 현저히 저하되는 것으로 관찰되었다.대규모 배치 체제에서이 일반화 하락의 원인을 조사하려는 시도가 있었지만,이 현상에 대한 정확한 답은 지금까지 알려져 있지 않습니다. 이 논문에서 우리는 대규모 배치 방법이 훈련 및 테스트 기능의 예리한 최소화기로 수렴하는 경향이 있으며, 예리한 최소값이 일반화를 악화 시킨다는 견해를지지하는 충분한 수치 증거를 제시한다. 대조적으로, 소형 배치 방법은 일관 적으로 최소 크기로 수렴되며, 우리의 실험은 이것이 기울기 추정에 내재 된 잡음 때문이라는 일반적 견해를지지합니다. 또한 대규모 배치 방법이 일반화 격차를 없애고 미래의 연구 아이디어와 열린 질문으로 결론을 내리는 데 도움이되는 몇 가지 경험적 전략에 대해서도 논의합니다.

[…]

일반화 능력의 부족은 대규모 배치 방법이 훈련 기능의 급격한 최소화 기로 수렴하는 경향이 있기 때문 입니다. 이 최소화 에서 큰 양의 고유 값으로 특징 지어지며 덜 일반화되는 경향이 있습니다. 대조적으로, 작은 배치 방법은 작은 양의 고유 값 특징으로하는 평탄한 최소화 수렴합니다 . 우리는 깊은 신경망의 손실 함수 환경이 큰 배치 방법이 예리한 최소값을 갖는 영역에 거의 끌리지 않고 작은 배치 방법과 달리 이러한 최소화 기의 분지를 벗어날 수 없다는 것을 관찰했습니다.2 f ( x )2f(x)2f(x)

[…]

여기에 이미지 설명을 입력하십시오

또한, 일부 좋은 통찰력 이안 Goodfellow가 에 응답 그라데이션을 계산하기 위해 설정 한 전체 훈련을 사용하지 않는 이유는 무엇입니까? Quora에서 :

학습률의 크기는 비용 함수가 얼마나 구부러 지는가와 같은 요소에 의해 주로 제한됩니다. 그라디언트 디센트는 비용 함수에 선형 근사를 한 다음 대략적인 비용을 따라 내리막 길을 움직이는 것으로 생각할 수 있습니다. 비용 함수가 비선형 (고 곡선) 인 경우 근사값은 그다지 좋지 않기 때문에 작은 단계 크기 만 안전합니다. 이에 대한 자세한 내용은 수치 계산에 관한 딥 러닝 교과서 4 장을 참조하십시오 . http://www.deeplearningbook.org/contents/numerical.html

미니 배치에 m 개의 예제를 넣을 때 O (m) 계산을 수행하고 O (m) 메모리를 사용해야하지만 그래디언트의 불확실도는 O (sqrt (m))만큼 줄어 듭니다. 다시 말해, 미니 배치에 더 많은 사례를 제시함에 따라 한계 수익이 감소하고 있습니다. 자세한 내용은 딥 러닝을위한 최적화 알고리즘에 대한 딥 러닝 교재 8 장에서 확인할 수 있습니다. http://www.deeplearningbook.org/contents/optimization.html

또한 생각해 보면 전체 트레이닝 세트를 사용해도 실제 그래디언트가 제공되지는 않습니다. 실제 그래디언트는 데이터 생성 분포에 의해 가중 된 모든 가능한 예에 대한 기대치가있는 예상 그래디언트입니다. 전체 교육 세트를 사용하는 것은 매우 큰 미니 배치 크기를 사용하는 것입니다. 여기서 미니 배치의 크기는 계산에 소비하는 금액이 아니라 데이터 수집에 소비하는 금액에 의해 제한됩니다.

관련 : 배치 그라디언트 하강 대 확률 그라디언트 하강


batch_size는 훈련 데이터 세트 만 배치로 나누기 때문에 모든 배치에 균일 한 분산을 갖도록 데이터 세트 (시간이 아닌)를 재배 열하는 것이 합리적입니까? 그렇게하면 배치 크기 최적화의 필요성이 줄어들 수 있으며, 이는 더 빠른 수렴을 찾는 데 적합합니다. 그렇다면 어떻게해야합니까? 나는 그것이 더 작은 최소값을 제공하지 않을 것이라고 생각했다. 자세한 안내를 부탁드립니다.
user12348

@ user12348 데이터 세트를 어떻게 재정렬 하시겠습니까? 주어진 데이터 차원이 훈련 후 특정 특징 벡터를 생성 할 것으로 어떻게 추정 할 수 있습니까?
Cloud Cho

46

미니 배치 확률 적 경사 하강 알고리즘에서 배치 크기를 줄이고 반복 횟수가 적은 대형 배치 크기와 비교하는 것에 대해 이야기한다고 가정합니다.

앤드류 응 ML과 신경망에 대한 온라인 강의 수업에서이 내용과 일부 영상에 대한 좋은 토론을 제공합니다. 따라서이 포스트의 나머지 부분은 대부분 그 수업에서 얻은 그의 가르침에 대한 역류입니다.

한쪽에서 각 경사 하강 단계가 전체 데이터 세트를 사용하는 두 가지 극단을 살펴 보겠습니다. 모든 샘플의 그라디언트를 계산합니다. 이 경우 로컬 최소값을 향한 가장 좋은 것을 정확히 알고 있습니다. 잘못된 방향으로가는 데 시간을 낭비하지 마십시오. 따라서 숫자 경사 하강 단계의 관점에서 가장 적은 수로 도달합니다.

물론 전체 데이터 세트에 대한 기울기를 계산하는 것은 비용이 많이 듭니다. 이제 우리는 다른 극단으로갑니다. 단지 1 샘플의 배치 크기. 이 경우 해당 샘플의 기울기가 완전히 잘못된 방향을 취할 수 있습니다. 그러나 하나의 그라디언트를 계산하는 비용은 매우 사소했습니다. 단 하나의 샘플과 관련하여 단계를 수행하면 조금씩 "방황"하지만, 평균적으로 전체 배치 구배 하강에서와 같이 균등 한 지역 최소치를 향합니다.

이것은 아마도 1- 샘플 확률 적 경사 하강을 중심으로 튀어 오르는 것이 전체 배치 모드로는 피할 수없는 로컬 최소 점에서 튀어 오르는 데 도움이 될 수 있음을 시사하는 일부 문헌을 보았을 것입니다. 여기에있는 다른 좋은 대답은이 질문을 내가 가지고있는 것보다 더 직접적으로 다루고 있습니다.

계산 능력 측면에서 단일 샘플 확률 론적 GD 프로세스는 훨씬 더 많은 반복 작업을 수행하지만 전체 배치 모드보다 비용이 적게 드는 "일반적으로"결과를 얻습니다. 앤드류 응이 이렇게 설명합니다.

이제 당신이 요청한 중간 지점을 찾으십시오. 우리는 현대 BLAS 라이브러리가 벡터 수학 계산을 매우 효율적으로 만든다는 것을 깨달을 수 있습니다. 따라서 코드를 올바르게 벡터화했다고 가정하면 1 샘플을 계산하는 것보다 훨씬 더 많은 작업을 수행 할 것입니다 (메모리 호출 효율성뿐만 아니라 가장 효율적인 수학 라이브러리에 내장 된 계산 트릭). 그리고 10, 100, 1000 개 샘플의 배치를 평균화하면 실제 배치 모드 구배의보다 합리적인 근사치 인 구배가 생성됩니다. 따라서 단계가보다 정확 해져 수렴하는 데 필요한 단계가 줄어들고 단일 샘플 GD보다 약간 높은 비용이 소요됩니다.

사용해야하는 미니 배치의 정확한 크기를 최적화하는 것은 일반적으로 시행 착오를 거치게됩니다. 수십에서 수천까지의 숫자로 데이터 세트 샘플에 대해 몇 가지 테스트를 실행하고 가장 빠른 수렴을 확인한 다음 그와 함께하십시오. 이 범위의 배치 크기는 문헌에서 매우 일반적으로 보입니다. 또한 데이터가 실제로 IID 인 경우 랜덤 프로세스의 변동에 대한 중심 한계 정리는 이러한 범위가 전체 기울기의 합리적인 근사치라고 제안합니다.

반복 중지 시간을 정확하게 결정하려면 일반적으로 훈련되지 않은 유효성 검사 세트에 대해 일반화 오류를 모니터링하고 유효성 검사 오류가 가장 낮은 지점을 선택하면됩니다. 너무 많은 반복에 대한 훈련은 결국 과적 합으로 이어질 것이며,이 때 검증 세트에 대한 귀하의 오류가 증가하기 시작할 것입니다. 이 상황이 발생하면 최적의 지점에서 백업 및 중지하십시오.


22

TL; DR : 미니 배치 크기가 너무 크면 일반적으로 정확도 가 떨어 집니다!

관심있는 사람들을 위해 여기에 설명이 있습니다.

속도에는 두 가지 개념이 있습니다.

  • 계산 속도
  • 알고리즘의 수렴 속도

계산 속도는 단순히 하드웨어에서 수치 계산을 수행하는 속도입니다. 당신이 말했듯이, 일반적으로 더 큰 미니 배치 크기로 더 높습니다. 선형 대수 라이브러리는 더 많은 메모리를 사용하지 않고 벡터 및 행렬 연산에 벡터화를 사용하여 속도를 높이기 때문입니다. 이익은 어느 정도까지 중요 할 수 있습니다. 내 경험상, 속도가 조금만 향상되는 시점이 있습니다. 요점은 데이터 세트, 하드웨어 및 수치 계산에 사용되는 라이브러리 (후드 아래)에 따라 다릅니다.

그러나 알고리즘의 수렴 속도를 알려주는 다른 속도 개념도 있다는 것을 잊지 마십시오.

첫째, 알고리즘이 수렴한다는 것은 무엇을 의미합니까? 검증 세트에서 계산 된 정확성 또는 오류에 만족할 때를 정의하고 결정하는 것은 우리의 책임입니다. 미리 정의하고 알고리즘이 해당 시점에 도달 할 때까지 기다리거나 훈련 프로세스를 모니터링하고 유효성 검증 오류가 크게 증가하기 시작할 때 (모델이 데이터 세트를 과적 합하기 시작) 중지하도록 결정할 수 있습니다. 미니 배치로 작업하는 경우 SGD (Stochastic Gradient Descent)를 사용하기 때문에 오류를 발생시키기 시작한 첫 순간부터 바로 중단해서는 안됩니다. (전체 배치) 그라디언트 디센트 (Gradient Descent)의 경우, 각 에포크 (epoch) 후에 알고리즘은 최소한 로컬 또는 글로벌 알고리즘이됩니다. SGD는 실제로 최소한으로 정착하지 않습니다. 주변에서 계속 진동합니다. 무기한으로 진행될 수 있습니다.

이제 모든 이론에 주목해야 할 "캐치"가 있습니다. 더 작은 배치 크기를 사용할 때 더 큰 배치 크기를 사용할 때보 다 오차 계산에 노이즈가 더 많습니다. 글쎄, 그것은 나쁘지 않습니까? 문제는 잡음이 알고리즘이 잘못된 로컬 최소값에서 벗어나는 데 도움이되고 더 나은 로컬 최소값 또는 글로벌 최소값을 찾을 가능성이 높아진다는 것입니다.

따라서 "원치 않는"노이즈의 도움으로 더 큰 배치 크기 보다 작은 배치 크기를 사용하여 더 나은 솔루션을 더 빨리 찾을 수 있다면 알고리즘에서 만족스러운 결과를 얻는 데 걸리는 총 시간을 조정할 수 있습니다 솔루션과 더 높은 정확도.

내가 말하고 싶은 것은 주어진 정확도 (또는 오류)에 대해 배치 크기가 작을수록 많은 사람들이 생각하는 것처럼 총 교육 시간이 짧아 질 수 있습니다.

또는 이전과 동일한 교육 시간을 유지하기로 결정한 경우 배치 크기가 작을수록 정확도가 약간 높아질 수 있으며, 특히 학습 속도를 적절하게 선택한 경우 가장 적합 할 것입니다.

시간이 있으면이 백서를 참조하십시오 : ImageNet의 CNN 발전에 대한 체계적인 평가 특히, "3.7. 배치 크기 및 학습 속도"와 그림 8을 확인하십시오. 미니 배치 크기 가 클수록 정확도가 떨어집니다. 학습 속도를 휴리스틱으로 조정하더라도.

일반적으로 배치 크기 32는 좋은 시작점이며 64, 128 및 256으로 시도해야합니다. 일부 데이터 세트에는 다른 값 (낮거나 더 높음)이 적합 할 수 있지만 일반적으로 지정된 범위가 가장 적합합니다. 실험을 시작하십시오. 32 세 미만에서는 벡터화를 최대한 활용하지 않기 때문에 계산 속도가 현저히 낮아 너무 느려질 수 있습니다. "메모리 부족"오류가 발생하면 미니 배치 크기를 줄여보십시오.

따라서 메모리에 맞는 가능한 가장 큰 미니 배치 크기를 사용하는 것이 아닙니다.

결론적으로, 귀하의 질문에 대답하기 위해, 미니 배치 크기가 작을수록 (너무 작은 것은 아님) 일반적으로 큰 배치 크기보다 훈련 알고리즘의 반복 횟수가 적을뿐만 아니라 전반적인 정확도가 높아집니다. 동일한 양의 훈련 시간 또는 그 이하에서 더 나은 성능을 발휘하는 신경망.

소음이 높을수록 소음이 심하게 들리게하는 것보다 나쁜 지역 최저치에서 벗어나는 데 도움이된다는 것을 잊지 마십시오.


14

나는이 질문에 거의 직접적으로 대응하는 Google의 새로운 (2018) ICLR 회의 논문을 참조하기 위해이 질문에 다른 답변을 추가하고 있습니다.

제목 : 학습 속도를 결정하지 말고 배치 크기를 늘리십시오.

https://arxiv.org/abs/1711.00489

위 논문의 초록이 여기에 복사됩니다.

학습률을 낮추는 것이 일반적입니다. 여기서 우리는 훈련 중에 배치 크기를 대신하여 훈련과 테스트 세트 모두에서 동일한 학습 곡선을 얻을 수 있음을 보여줍니다. 이 절차는 SGD (stochastic gradient descent), 운동량을 가진 SGD, Nesterov 운동량 및 Adam에 대해 성공적입니다. 동일한 교육 시간 이후에도 동일한 테스트 정확도에 도달하지만 매개 변수 업데이트가 적어 병렬 처리가 향상되고 교육 시간이 단축됩니다. 학습 속도 ϵ를 늘리고 배치 크기 B∝ϵ를 조정하여 매개 변수 업데이트 수를 추가로 줄일 수 있습니다. 마지막으로, 운동량 계수 m과 스케일 B∝1 / (1-m)을 증가시킬 수 있지만, 이는 시험 정확도를 약간 감소시키는 경향이 있습니다. 십자가, 당사의 기술을 통해 하이퍼 파라미터 튜닝없이 대규모 배치 교육을 위해 기존 교육 일정을 재사용 할 수 있습니다. 30 분 이내에 ImageNet에서 ResNet-50을 76.1 % 검증 정확도로 교육합니다.


1
더 큰 메모리 요구 사항은 단순히 값을 낮추는 것을 피하기위한 나쁜 절충안 인 것 같습니다. 또한 훈련 중 메모리 풋 프린트가 커지면 IMHO는 확장 성이 떨어지는 알고리즘을 만들 수 있습니다.
P-Gn

3

나는 여기에 경험적 경험을 보여줍니다 . 배치 크기 4와 배치 크기 4096으로 실험을 수행했습니다. 크기 4096은 1024 배 더 적은 역 전파를 수행합니다. 따라서 직감은 배치가 많을수록 최적의 솔루션을 찾기위한 검색 단계가 적고 성가 시므로 구성에 따라 최적의 솔루션으로 수렴 할 가능성이 줄어 듭니다.

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