batch size 설정 기법

3484 단어 Python딥 러 닝
깊이 있 는 학습 에서 epoch,iteration 과 batchsize 를 자주 볼 수 있 습 니 다.다음은 자신의 이해 에 따라 이 세 가지 차 이 를 말씀 드 리 겠 습 니 다.
(1)batchsize:일괄 크기.깊이 있 는 학습 에서 보통 SGD 훈련,즉 매번 훈련 에서 batchsize 개 견본 훈련 을 집중 적 으로 취한 다.(2)iteration:1 개의 iteration 은 batchsize 개 견본 을 사용 하여 한 번 훈련 하 는 것 과 같다.(3)epoch:1 개의 epoch 는 훈련 집중 의 모든 견본 을 사용 하여 한 번 훈련 하 는 것 과 같다.
예 를 들 어 훈련 집 에는 1000 개의 견본 이 있 고 batchsize=10 이 있 습 니 다.그러면 전체 견본 집 을 훈련 하려 면 100 회 iteration,1 회 epoch 가 필요 합 니 다.
1.데이터 양 이 충분 할 때 batch 를 적 절 히 줄 일 수 있 습 니 다.size,데이터 양 이 너무 많아 서 메모리 가 부족 합 니 다.하지만 맹목적 으로 줄 어 들 면 수렴 이 안 돼,batchsize=1 시 는 온라인 학습 이자 표준 SGD 인 데 이렇게 학습 하면 데이터 양 이 많 지 않 고 노 이 즈 데이터 가 존재 할 때 모델 이 노 이 즈 에 치 우 치기 쉬 우 며 데이터 양 이 충분 하면 노 이 즈 의 영향 이'희석'되 어 모델 에 거의 영향 을 주지 않 는 다.2.batch 의 선택 은 먼저 하강 방향 을 결정 하고 데이터 세트 가 작 으 면 전체 데이터 세트 형식 을 사용 할 수 있 습 니 다.이렇게 하면 좋 은 점 은 두 가지 가 있다.
 1)                  ,       。

2)서로 다른 가중치 의 경사도 값 차이 가 크기 때문에 전체적인 학습 율 을 선택 하 는 것 이 어렵다.
3.batchsize 를 확대 하 는 장점 은 세 가지 가 있다.
     1)         ,             。

     2)    epoch(    )        ,                  。

     3)     ,batchsize  ,           ,        。

4.맹목적 으로 커지 는 나 쁜 점 은 세 가지 가 있다.
1)데이터 세트 가 너무 클 때 메모리 가 버 티 지 못 한다.
     2)    epocffe-master/tools/extra/parse_log.sh  caffe-master/tools/extra/extract_seconds.py h(    )         ,                ,      ,         。

     3)batchsize        ,                。

요약:
     1)batch   ,          ,       loss        ,               。

     2)  batchsize  ,             。

     3)  batchsize  ,          epoch      。

     4)           , Batch_Size        ,        。

     5)                  ,   Batch_Size        ,            。

     6)   batchsize                      。     batch       ,        ,        。

     7)   batch size              。

또 하나의 코드 상의 세부 사항 은 코드 구현 에 있어 서 하나의 batch 를 선택 할 때 데이터 뱅 크 의 그림 순서에 따라 입력 한 그림 을 선택 하 는 것 같 으 므 로 데이터 베 이 스 를 생 성 할 때 shuffle 그림 순 서 를 기억 하 세 요.caffe 에서 Image DataLayer 는 shuffle 인자 가 있 고 lmdb 를 생 성 할 때 도 shuffle 인 자 는 수 동 으로 사용 할 필요 가 없습니다.
메모리 점용 은 batch size 와 간단하게 정비례 하 는 것 이 아 닙 니 다.
batch size 를 확대 하면 경사도 의 진동 을 늦 출 수 있 고 더 적은 교체 최적화 횟수 가 필요 하 며 수렴 이 빠 르 지만 매번 교체 할 때마다 시간 이 더 오래 걸린다.https://zhuanlan.zhihu.com/p/31558973
같은 장점 을 수렴 하려 면 전체 견본 집 을 사용 할 때 교체 횟수 가 적 지만 매번 교체 하 는 시간 이 길 고 소모 하 는 총 시간 은 소량의 견본 을 여러 번 교체 하 는 상황 보다 크다.실제로 공사 에서 GPU 를 사용 하여 훈련 할 때 샘플 하 나 를 달 리 는 데 걸 리 는 시간 은 몇 십 개의 샘플,심지어 몇 백 개의 샘플 을 달 리 는 시간 과 같다!물론 GPU 에 엄 청 난 핵,엄 청 난 병행 컴 퓨 팅 능력 덕분 입 니 다.따라서 공사 의 실제 상황 에서 수렴 속도 의 측면 에서 볼 때 소량의 견본 집 이 가장 좋다.즉,우리 가 말 하 는 mini-batch 이다.이때 의 batch size 는 흔히 몇 십 에서 몇 백 까지 다 르 지만 보통 수천 을 넘 지 않 는 다.
샘플 의 양 이 적 을 때 큰 방 차 를 가 져 올 수 있 는데 이 큰 방 차 는 마침 우리 가 경사 가 매우 나 쁜 부분 에서 가장 좋 은 장점(약간 돌출 된 가장 장점)과 안장 점 으로 떨 어 질 때 불안정 하고 조심 하지 않 으 면 큰 소음 이 와 서 국부 적 인 가장 좋 은 장점 을 폭발 시 킬 수 있다.반면 샘플 의 양 이 많 을 때 는 편차 가 적 고 경사도 에 대한 평가 가 정확 하고 안정 적 이 어야 하기 때문에 오히려 형 편 없 는 국 지적 장점 과 안장 에 있 을 때 는 오히려 자신 있 게 가만히 있 기 쉬 워 신경 망 이 나 쁜 점 으로 수렴 되 어 bug 와 같은 차 이 를 보 였 다.
batch 의 size 설정 은 너무 크 거나 작 으 면 안 되 기 때문에 실제 프로젝트 에서 가장 많이 사용 되 는 것 은 mini-batch 입 니 다.보통 size 는 몇 십 또는 몇 백 으로 설정 합 니 다.2 단계 최적화 알고리즘 에 대해 batch 로 바 뀌 는 수렴 속 도 를 줄 이 는 것 은 대량의 소음 으로 인 한 성능 이 떨 어 지 는 것 보다 훨씬 못 하기 때문에 2 단계 최적화 알고리즘 을 사용 할 때 큰 batch 를 사용 해 야 합 니 다.이때 batch 는 수천,심지어 12 만 원 으로 설정 해 야 최고의 성능 을 발휘 할 수 있다.GPU 는 2 의 幂 次 에 대한 batch 가 더욱 좋 은 성능 을 발휘 할 수 있 기 때문에 16,32,64,128 로 설정 할 때 종종 전체 10,전체 100 의 배수 로 설정 할 때 보다 더 우수 하 다

좋은 웹페이지 즐겨찾기