신경망에서 배치 크기는 무엇입니까?


174

Python Keras package신경망에 사용 하고 있습니다. 이것은 링크 입니다. IS는 batch_size테스트 샘플의 수와 같다? Wikipedia에서 우리는 다음 정보를 가지고 있습니다 :

그러나, 다른 경우에, 합-그라디언트를 평가하기 위해서는 모든 서 맨드 함수로부터의 구배에 대한 고가의 평가가 필요할 수있다. 트레이닝 세트가 거대하고 간단한 공식이 존재하지 않으면, 그라디언트를 평가하는 것은 모든 summand 함수의 그라디언트를 평가해야하기 때문에 그라디언트의 합계를 평가하는 것은 매우 비싸게됩니다. 모든 반복에서 계산 비용을 절약하기 위해 확률 적 경사 하강은 모든 단계에서 요약 함수의 하위 집합을 샘플링합니다. 이는 대규모 기계 학습 문제의 경우 매우 효과적입니다.

위의 정보는 테스트 데이터를 설명하고 있습니까? 이것은 batch_sizekeras (그라디언트 업데이트 당 샘플 수) 와 동일 합니까?


3
특히 4-6 주차에 대한 class.coursera.org/ml-005/lecture/preview 과정 을 보는 것이 좋습니다 . Wikipedia는 신경망 학습에 유용한 리소스가 아닐 수도 있습니다.
404pio

답변:


228

배치 크기는 네트워크를 통해 전파됩니다 샘플의 수를 정의합니다.

예를 들어, 1050 개의 학습 샘플이 있고 batch_size100과 동일하게 설정하려고한다고 가정 해 봅시다 . 알고리즘은 교육 데이터 세트에서 처음 100 개의 샘플 (1에서 100까지)을 가져 와서 네트워크를 학습시킵니다. 다음으로, 두 번째 100 개의 샘플 (101 ~ 200)을 가져 와서 네트워크를 다시 훈련시킵니다. 네트워크를 통해 모든 샘플을 전파 할 때까지이 절차를 계속 수행 할 수 있습니다. 마지막 샘플 세트에서 문제가 발생할 수 있습니다. 이 예에서는 나머지없이 100으로 나눌 수없는 1050을 사용했습니다. 가장 간단한 해결책은 최종 50 개의 샘플을 얻고 네트워크를 훈련시키는 것입니다.

배치 크기 <모든 샘플 수의 장점 :

  • 적은 메모리가 필요합니다. 적은 수의 샘플을 사용하여 네트워크를 훈련 시키므로 전체적인 훈련 절차에는 적은 메모리가 필요합니다. 머신의 메모리에 전체 데이터 셋을 맞출 수없는 경우 특히 중요합니다.

  • 일반적으로 네트워크는 미니 배치로 더 빠르게 훈련됩니다. 각 전파 후 가중치를 업데이트하기 때문입니다. 이 예에서는 11 개 배치 (10 개 샘플에 100 개, 1 개에 50 개 샘플)를 전파했으며 각 배치 후에 네트워크 매개 변수를 업데이트했습니다. 전파하는 동안 모든 샘플을 사용한 경우 네트워크 매개 변수를 한 번만 업데이트합니다.

배치 크기를 사용하는 단점 <모든 샘플 수 :

  • 배치가 작을수록 그래디언트 추정의 정확도가 떨어집니다. 아래 그림에서 미니 배치 그라디언트 방향 (녹색)이 전체 배치 그라디언트 방향 (파란색)과 비교할 때 훨씬 더 많이 변동되는 것을 볼 수 있습니다.

다양한 배치 설정을위한 그라데이션 방향

스토캐스틱은 batch_size1 과 동일한 미니 배치입니다 .이 경우 그라디언트는 미니 배치 그라디언트보다 방향이 훨씬 자주 변경됩니다.


답변 주셔서 감사합니다. 당신은 함께 일 Keras합니까? 어쨌든이 패키지에 테스트 데이터를 설정 하시겠습니까?
user2991243

3
아뇨. 이것은 신경 네트워크에서 널리 사용되는 기술이며이 용어는 다른 라이브러리, 서적 및 기사에서 볼 수 있습니다. 모든 시대에서 테스트 데이터 오류를 확인하거나 훈련 후 모델을 확인 하시겠습니까?
itdxer

예. 사실입니다. 우리가 가진 비슷한 구조 MATLAB이지만 여기서 훈련 및 유효성 검사 데이터 세트 만 발견했습니다. 이 패키지의 유효성 검사 데이터 세트는 테스트 데이터와 동일하지만 조기 중지가 없으므로 실제 유효성 검사 데이터가 없다고 생각합니다.
user2991243

1
업데이트 수가 많을수록 네트워크가 더 빨리 수렴됩니다. 미니 배치 크기를 설정하는 것은 일종의 예술이며 너무 작기 때문에 학습을 너무 확률적이고 빠르게 만들 수 있지만 신뢰할 수없는 모델로 너무 많이 수렴되어 메모리에 들어 가지 않고 여전히 나이가 걸립니다.
Ramalho

1
사람들이 온라인 학습을 할 때 일반적으로 의미 batch_size=1합니다. 온라인 학습의 기본 개념은 예제를 보자 마자 모델을 업데이트하는 것입니다. 배치 크기가 크면 먼저 업데이트를 수행하기 전에 여러 샘플을 살펴 보는 것입니다. RNN에서 배치의 크기는 다른 의미를 가질 수 있습니다. 일반적으로 훈련 순서를 고정 된 크기의 창 (예 : 10 단어)으로 나누는 것이 일반적입니다. 이 경우 훈련 기간 동안이 창 100 개를 포함하면 다음을 의미합니다 batch_size=100.
itdxer

151

신경망 용어에서 :

  • 하나의 에포크 (epoch) = 모든 트레이닝 예제 의 하나의 정방향 패스와 하나의 역방향 패스
  • 배치 크기 = 하나의 정방향 / 역방향 패스에서 훈련 예의 수. 배치 크기가 높을수록 더 많은 메모리 공간이 필요합니다.
  • 다수의 반복을 뚫고 번호 = 예 [배치 크기] 번호를 사용하여 각 패스. 명확하게하기 위해, 1 패스 = 1 패스 + 1 패스 (포워드 패스와 역방향 패스는 2 개의 다른 패스로 계산하지 않습니다).

예 : 훈련 예제가 1000 개이고 배치 크기가 500 인 경우 1 에포크를 완료하는 데 2 ​​회 반복해야합니다.

참고로 : 신경망을 훈련시키기위한 트레이드 오프 배치 크기와 반복 횟수


그러나 [일괄 크기] 수의 예제를 사용하고 각 예에서 네트워크를 학습하고 다음 [일괄 크기] 수 예제로 진행하는 것의 차이점은 무엇입니까? 하나의 예제를 네트워크를 통해 전달하고 SGD를 적용하고 다음 예제를 사용하는 경우 배치 크기가 10 또는 1000 또는 100000이면 차이가 없습니다. [일괄 크기] 후에 예제 수는 다음 예제에서 수행됩니다. 다음 배치가 이어집니다. 예제의 [일괄 처리 크기] 수가 네트워크의 [반복 횟수]를지나 다음 [일괄 처리 크기] 예제로 진행하는 경우에만 차이가 있습니다.
Erhard Dinhobl

중요한 차이점은 학습 단계 (한 단계)가 모든 배치에 대해 한 번 적용되는 반면 모든 배치를 순환하여 하나의 에포크를 만들어야한다는 것입니다. 따라서 차이는 메모리뿐 아니라 알고리즘 적이기도합니다. 배치가 클수록 더 많은 샘플에 대해 기울기를 평균화한다는 의미입니다.
meduz

에포크와 반복의 차이점은 무엇입니까?
Goldname

1
@Goldname 1 epoch에는 모든 교육 예제가 포함되어 있고 1 회 반복에는 [일괄 크기] 수의 교육 예제 만 포함되어 있습니다.
Franck Dernoncourt

3

CPU로 최적화 문제를 해결할 때 일부 입력 데이터에 대해 알고리즘을 반복적으로 적용합니다. 이러한 각 반복에서 일반적으로 데이터에 대한 일부 계산을 수행하여 문제의 지표를 업데이트합니다. 이제 데이터 크기가 크면 모든 반복을 완료하는 데 상당한 시간이 필요할 수 있으며 많은 리소스가 소비 될 수 있습니다. 따라서 때때로 시간과 계산 리소스를 절약하기 위해 데이터의 일부에 이러한 반복 계산을 적용하도록 선택할 수 있습니다. 이 부분은 batch_size이며 프로세스는 (Neural Network Lingo에서) 배치 데이터 처리라고합니다. 모든 데이터에 계산을 적용하면 온라인 데이터 처리가 수행됩니다. 나는 그 용어가 60 년대, 그리고 심지어 이전부터 왔다고 생각한다. 누구나 기억합니다. 박쥐 DOS 파일? 그러나 물론 개념은 사용되는 데이터의 스레드 또는 부분을 의미하기 위해 구체화되었습니다.


2

Keras배치 크기 에 대한 문서 fit모델 (기능 API) 페이지 의 함수에서 찾을 수 있습니다 .

batch_size: 정수 또는 없음. 그라디언트 업데이트 당 샘플 수입니다. 지정하지 않으면 batch_size는 기본적으로 32입니다.

작은 데이터 집합이있는 경우 배치 크기를 훈련 데이터 크기와 동일하게 만드는 것이 가장 좋습니다. 먼저 작은 배치로 시도한 다음 시간을 절약하기 위해 늘리십시오. 으로 itdxer가 언급 정확성과 속도 사이에 상충 관계가있다.

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