코딩일기

Deeping Weight Update와 Batch, Batch_size의 관계 본문

Code/딥러닝(NL)

Deeping Weight Update와 Batch, Batch_size의 관계

daje 2021. 10. 22. 17:38
728x90
반응형

 

 

 

안녕하십니까 다제입니다. 

 

오늘은 딥러닝에서 weight Update와 Batch, Batch_size의 관계에 대해서 이야기를 해보고자 합니다. 

 

평소 많이 듣던 이야기이고 너무나 당연하게 사용하던 개념이기에 기본이 확실히 잡히 않을 수 있다고 생각을 했습니다. 

 

최근 읽은 Batch normalization: Accelerating deep network training by reducing internal covariate shift (PMLR 2015)에서도 이야기하겠지만, 먼저 간단히 짚고 넘어가보겠습니다. 

 

일단, batch_size와 batch가 무엇일까요?

사진 10,000장이 있다고 해보겠습니다. 

 

이 사진을 한번에 딥러닝이 학습 할 수 있을까요? 메모리의 한계로 한번에 학습할 수 없습니다. 

즉, 사진을 나누어서 딥러닝에게 넣어주어야 합니다. 몇개씩 나눌까요? 

 

음.. 한 100장씩 나누어 볼까요? 그러면 100장씩 100개의 묶음이 나오겠네요 

여기서 100장은 batch_size이고, 100묶음이 batch가 됩니다. 

 

오호! 머야머야! 간단하구나! 

그런데 딥러닝은 모델을 학습할 때 가중치를 업데이트 하지 않습니까?

batch 단위로 딥러닝에게 학습을 하게 한다면 언제 가중치가 업데이트 될까요?

 

두구두구두구두구!!! batch 단위로 가중치가 업데이트 됩니다! 

이를 표로 다시 한번 정리해 보겠습니다. 

구분 Bathc_Size Batch 가중치 업데이트 횟수
1번 예시 100장 100개 100번/1epoch
2번 예시 1,000장 10개 10번/1epoch

 

여기서 중요한 것은 1epoch당 저만큼 이루어진다는 사실을 잊으면 안됩니다.

이를 그래프로 한번 그려보겠습니다. 

 

출처 : https://m.blog.naver.com/jevida/221855713144

 

1번 예시의 경우, 왼쪽 이미지처럼 학습이 천천히 진행되며, 학습 방향이 잘못되었을 때 최적의 해로 방향을 트는 것이 어려울 수 있습니다. 

2번 예시의 경우, 오른쪽 이미지처럼 학습이 큰 폭으로 진행이 되며, 학습이 빠르게 진행된다는 장점은 있지만, OOM(out-of-memory)오류가 발생될 수 있으며, 최적해 근처에서 수렴하지 못하는 문제점을 발생시킬 수 있습니다. 

 

그렇기에 우리는 학습률이 큰 폭에서 작은 폭으로 변화하는 오토 학습률을 사용하게 되는 겁니다. 

 

간단한 내용이고 누구나 알 수 있는 내용이지만 면접에서 물어보면 차분하게 설명할 수 있도록 내용을 정리해보았습니다. 

 

여러분도 안보고 말할 수 있을 때까지 연습을 해보는 것을 추천 드립니다. 

 

오늘도 빡공 열공 하시죠! 

 

글을 읽어주셔서 감사합니다. 

 

728x90
반응형
Comments