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

저는 신경망에 Python Keras package를 사용하고 있습니다. 이것이 link . batch_size가 테스트 샘플 수와 같습니까? Wikipedia에서 를 얻었습니다. 정보 :

그러나 다른 경우에는 합계 기울기를 평가하는 데 모든 합계 함수의 기울기에 대한 값 비싼 평가가 필요할 수 있습니다. 훈련 세트가 방대한 경우 그리고 단순한 공식이 존재하지 않기 때문에, 기울기를 평가하려면 모든 합산 함수의 기울기를 평가해야하기 때문에 기울기의 합을 계산하는 데 비용이 많이 듭니다. 모든 반복에서 계산 비용을 절약하기 위해 확률 적 경사 하강 법은 모든 단계에서 합산 함수의 하위 집합을 샘플링합니다. 이것은 대규모 머신 러닝 문제의 경우 매우 효과적입니다.

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

댓글

답변

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

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

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

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

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

배치 크기 사용의 단점 < 모든 샘플 수 :

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

다양한 배치 설정에 대한 기울기 방향

Stochastic은 batch_size 1과 같습니다.이 경우 그라디언트는 미니 배치 그라디언트보다 더 자주 방향을 변경합니다.

댓글

  • 아니요. ' 아니요. 이것은 신경망에서 널리 사용되는 기술이며 다른 도서관, 책 및 기사에서 볼 수있는이 용어입니다. 매 시대마다 테스트 데이터 오류를 확인 하시겠습니까, 아니면 학습 후 모델 만 확인 하시겠습니까?
  • 또한 업데이트 수가 상당히 많을수록 네트워크가 더 빠르게 수렴됩니다. 미니 배치 크기를 설정하는 것은 일종의 예술이며 너무 작기 때문에 학습이 너무 확률적이고 빠르지 만 신뢰할 수없는 모델로 수렴되고 너무 크고 메모리에 맞지 않고 여전히 오래 걸립니다.
  • batch_size=<size of dataset>가 온라인 학습으로 간주됩니까, 아니면 batch_size=1로 간주됩니까? 그리고이 모든 것이 RNN에도 적용됩니까? RNN에서 batch_size를 사용할 때 해당 배치의 모든 인스턴스가 한 번에 발생한 것처럼 계산된다는 점에서 배치가 일종의 가상 타임 스텝 으로 간주됩니까? ?
  • 일반적으로 사람들이 온라인 학습을 말하는 것은 batch_size=1를 의미합니다. 온라인 학습의 기본 아이디어는 예제를 보는 즉시 모델을 업데이트하는 것입니다. 더 큰 배치 크기는 업데이트를 수행하기 전에 먼저 여러 샘플을 살펴보고 있음을 의미합니다. RNN에서 배치의 크기는 다른 의미를 가질 수 있습니다.일반적으로 훈련 시퀀스를 고정 크기 (예 : 10 단어)의 창으로 분할하는 것이 일반적입니다. ' 이 경우 교육 중에 이러한 창을 100 개 포함하면 batch_size=100가 있음을 의미합니다.
  • @Oleg Melnikov (마지막 배치의 크기가 훨씬 더 작은 경우) (let '는 50이 아니라 1이라고 말합니다) 그래디언트에 대한 추정치가 덜 정확하고 가중치를 약간 망칠 수 있습니다. 위 이미지에서 미니 배치 100 (녹색 선)으로 10 개의 업데이트를 수행하고 미니 배치 1 (빨간색 선)로 하나를 업데이트한다고 가정합니다. 즉, 다음 세대에서 몇 번의 첫 번째 반복으로 이전 세대의 마지막 미니 배치 1 업데이트로 문제를 해결할 수 있습니다.

답변

신경망 용어 :

  • 하나의 에포크 = 모든 교육 예제의 정방향 패스 한 번과 역방향 패스 한 번
  • 배치 크기 = 한 번의 정방향 / 역방향 패스의 학습 예제 수. 배치 크기가 클수록 더 많은 메모리 공간이 필요합니다.
  • 반복 횟수 = 패스 수, 각 패스는 [배치 크기] 수의 예제를 사용합니다. 명확하게 말하면, 1 회 패스 = 전진 패스 1 회 + 후진 패스 1 회 (전진 패스와 후진 패스를 두 개의 다른 패스로 계산하지 않음)

예 : 학습 예제가 1000 개이고 배치 크기가 500 인 경우 1 Epoch를 완료하는 데 2 번의 반복이 필요합니다.

참고 : 배치 크기와 신경망 훈련을위한 반복 횟수의 절충

댓글

  • 하지만 차이점은 예제의 [배치 크기] 번호를 사용하여 각 예제에 대해 네트워크를 훈련시키고 다음 [배치 크기] 번호 예제를 진행합니다. 네트워크를 통해 하나의 예제를 통과하고 SGD를 적용하고 다음 예제를 수행하는 식으로 배치 크기가 10, 1000 또는 100000 인 경우 차이가 있습니다. [batc h size] 예제의 수는 다음 배치의 다음 예제가 수행됩니다. 예제의 [배치 크기] 수가 네트워크의 [반복 수] 배를 통과 한 다음 다음 [배치 크기] 예제를 진행하는 경우에만 차이가 있습니다.
  • 중요한 차이점은 학습 단계입니다. (한 단계)는 모든 배치에 대해 한 번씩 적용되지만 모든 배치를 순환하여 한 세대를 만들어야합니다. 따라서 차이는 메모리뿐만 아니라 알고리즘 적이기도합니다. 배치가 클수록 더 많은 샘플에 대한 그라데이션의 평균을 계산합니다.
  • 에포크와 반복 간의 차이는 무엇입니까 ' ?
  • @Goldname 1 epoch에는 모든 훈련 예제가 포함되는 반면 1 회 반복에는 [batch size] 수의 훈련 예제 만 포함됩니다.
  • 그래서 : Epoch의 수가 일정하고 우리는 ' 각 에포크 이후의 결과를 나타내는 각 점으로 수렴 플롯을 플로팅하면 결과 플롯이 ' 연기 iv가 될 것으로 예상 할 수 있습니다. batch_size?

답변을 줄이면 id = “5fec42eef4″>

(그리고 훈련 속도가 느려집니다)

CPU 또는 GPU로 최적화 문제를 해결할 때 일부 입력 데이터에 대해 알고리즘을 반복적으로 적용합니다. 이러한 각 반복에서 일반적으로 데이터에 대한 일부 계산을 수행하는 문제의 메트릭을 업데이트합니다. 이제 데이터 크기가 큰 경우 모든 반복을 완료하는 데 상당한 시간이 필요할 수 있으며 많은 리소스를 소비 할 수 있습니다. 따라서 때로는 시간과 계산 리소스를 절약하기 위해 데이터의 일부에 이러한 반복 계산을 적용하기로 선택합니다. 이 부분은 batch_size이고 프로세스는 (Neural Network Lingo에서) 일괄 데이터 처리라고합니다. 모든 데이터에 계산을 적용하면 온라인 데이터 처리를 수행합니다. 용어는 60 년대와 그 이전에도 나온 것 같습니다. .bat DOS 파일을 기억하는 사람이 있습니까? 하지만 물론이 개념은 쓰레드 나 데이터의 일부를 의미하는 것으로 구체화되었습니다.

답변

배치 크기에 대한 Keras에 대한 설명서는 모델 (기능 API) 페이지의 fit 함수

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

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

Answer

배치 크기는 내부 모델 매개 변수를 업데이트하기 전에 작업 할 샘플 수를 정의하는 초 매개 변수입니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다