Batch 배치
Gradient decent 과정에서 컴퓨터가 대용량의 데이터를 한번에 처리하기 힘들기 때문에 데이터를 batch 단위로 나눠서 학습을 한다. 즉 배치 사이즈만큼의 데이터만을 이용해 기울기를 업데이트 하는 것이다. 모든 배치를 사용해 학습 데이터 전체를 한번 학습한 것을 Epoch라고 부른다.
이렇게 배치 단위로 학습을 하게 되면 학습과정에서 계층 별로 입력의 데이터 분포가 달라지는 현상이 발생 하게 된다. 데이터를 배치로 나눴기 때문에 배치 마다 데이터의 분포의 차이가 생기는 것이다. 이렇게 되면 훈련을 할때마다 분포가 달라지고, 신경망이 깊어 질수록 변화가 누적되어 feature의 분포변화가 점점 더 심해지게 된다. 이를 Internal Covarient Shift 라고 부르며 이 문제를 개선하기 위해 Batch Normalization 이 제시되었다. 히든레이어에서 변화량이 너무 크지 않게 해서 학습을 안정시키는데 목적이 있다.
Batch Normalization 배치 정규화
각 배치마다 다른 입력값의 분포를 평균 0, 표준편차 1인 가우시안 분포형태로 정규화 해준다. weigth와 input의 연산 결과를 배치 단위로 정규화해서 스케일을 줄여 활성화 함수의 인풋으로 들어간다. 활성화 함수에서 0을 기준으로 대칭이 되는 값이 들어오게 하는데에 정규분포를 사용한 의미가 있다. 너무 양수나 음수만 나오지 않도록 하는 것으로 의도가 평균이 0이 되도록 하는 것과 일치하기 때문이다.
효과
Internal Covarient Shift를 개선하고자 고려했던 가중치 초기화나 작은 학습률에서 조금 자유로워질 수 있다. 학습률을 높이면 가중치의 스케일이 커져서 역전파시 오차가 발산하게 되는데 스케일을 정규화하여 이 발산을 방지한다. 즉, 높은 학습률을 사용할 수 있게 되어 결과적으로 학습속도가 빨라지는 효과가 있다.
만약 평균과 분산이 고정이라면 학습하는 동안 고정된 값이 연산되기 때문에 특정 weigth에 큰 값, 즉 가중치가 큰 weight가 발생 할 수 있다. 하지만 배치 정규화를 통해 평균과 분산이 지속적으로 변하고 가중치 업데이트에도 영향을 계속 주어 한 weight에 가중치가 큰 방향으로만 학습되지 않기 때문에 Regularization의 효과를 얻을 수 있다.
한계
배치의 크기가 너무 작으면 잘 동작하지 않는다. 데이터 수가 적을 경우 큰수의 법칙과 중심극한이론을 만족하지 못하기 때문에 정규분포를 적용해도 데이터 전체 분포를 잘 표현하지 못함을 알 수 있다.
반대로 배치가 너무 커져도 잘 동작하지 않는다. 샘플이 너무 많을 경우 multi modal gaussian 형태(봉우리 여러개)가 나타날 수 있기 때문이다. 이런 경우 단순히 평균과 표준편차를 사용하는 것을 정확한 모델링이라고 말할 수 없다. 또한 병렬 연산을 하는데에도 비효율적일 수 있으며, 기울기 계산을 너무 한번에 하게 되어 학습에도 악영향이 있을 수 있다.
Time step별로 통계량이 다른 RNN에 적용 할 수 없다.
학습시엔 정규화를 통해 값이 계속 변경되는데 테스트 시에는 고정된 값을 사용하므로 둘의 연산이 달라진다.
Layer Normalization 레이어 정규화
동일한 레이어의 뉴런간 정규화로 배치사이즈에 의존하지 않는다. 학습과 테스트 계산방법이 동일하며 RNN 적용 가능하여 위와 같은 배치 정규화의 단점을 해결했다.
'머신러닝 > 딥러닝' 카테고리의 다른 글
FastText, Glove (0) | 2022.07.04 |
---|---|
가중치 초기화 (0) | 2022.07.03 |
역전파 Backpropagation (0) | 2022.06.19 |
경사하강법 Gradient Descent (2) (0) | 2022.06.18 |
경사하강법 Gradient Descent (1) (0) | 2022.06.17 |