안녕하십니까 다제입니다.
오늘은 딥러닝에서 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당 저만큼 이루어진다는 사실을 잊으면 안됩니다.
이를 그래프로 한번 그려보겠습니다.
1번 예시의 경우, 왼쪽 이미지처럼 학습이 천천히 진행되며, 학습 방향이 잘못되었을 때 최적의 해로 방향을 트는 것이 어려울 수 있습니다.
2번 예시의 경우, 오른쪽 이미지처럼 학습이 큰 폭으로 진행이 되며, 학습이 빠르게 진행된다는 장점은 있지만, OOM(out-of-memory)오류가 발생될 수 있으며, 최적해 근처에서 수렴하지 못하는 문제점을 발생시킬 수 있습니다.
그렇기에 우리는 학습률이 큰 폭에서 작은 폭으로 변화하는 오토 학습률을 사용하게 되는 겁니다.
간단한 내용이고 누구나 알 수 있는 내용이지만 면접에서 물어보면 차분하게 설명할 수 있도록 내용을 정리해보았습니다.
여러분도 안보고 말할 수 있을 때까지 연습을 해보는 것을 추천 드립니다.
오늘도 빡공 열공 하시죠!
글을 읽어주셔서 감사합니다.
'Code > 딥러닝(NL)' 카테고리의 다른 글
GPT1 (0) | 2021.12.20 |
---|---|
배치 정규화(Batch Normalization) (0) | 2021.12.17 |
Categorical_crossentropy? Sparse_categorical_crossentropy? (0) | 2021.10.21 |
[numpy] np.newaxis는 무엇이고 언제 사용하는가? (0) | 2021.10.04 |
Sequence Model References(feat. Coursera Andrew Ng) (0) | 2021.10.02 |