일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- PM4Py
- Sequence data
- Grad-CAM
- Inatance segmentation
- Data Imbalance
- 프로세스 마이닝
- Tomek links
- OCSVM
- Process Mining
- 거리 기반 이상탐지
- Gausian Density Estimation
- SQL 데이터 분석 첫걸음
- Clustering 기반 이상탐지
- 밀도 기반 이상탐지
- Digital Pathology
- Random Undersampling
- 국비지원교육
- 딥러닝
- One-Sided Selection
- multi modal
- auto encoder
- Text generation
- Petri net
- Generative modeling
- Condensed neares neighbor rule
- 병리 AI
- GAN
- Fixed Learning
- XAI
- Meta heuristic
- Today
- Total
Create Opportunities
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 논문 리뷰 본문
Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift 논문 리뷰
kimjaeyoon 2022. 12. 20. 17:19딥러닝 주요 개념들의 시작이 되었던 논문을 읽어볼 수 있는 좋은 기회라고 생각하였다. 딥러닝의 주요 개념을 잘 모르고 사용하는 경우가 많았다. 모르는 개념에 대해서 전부 찾아보고 확실히 이해하는 것이 쉬운 일은 아니었다. 본 논문은 Batch Normalization의 시작과 그 내용을 다룬다. Overfitting 방지를 위해서 해당 기법을 사용하는 정도만을 알고 있었고 이유는 모르는 상태였기에, 원리를 깊게 이해하고 싶은 마음이 컸다.
Highlights
딥러닝의 학습에 있어서 파라미터가 업데이트됨에 따라 데이터의 입력 분포가 변경되는 Internal covariate shift 현상은 불가피하다. 이를 해결하고자 하는 Batch Normalization은 Hidden layer의 입력 분포 또한 조정할 수 있도록 네트워크를 설계할 수 있도록 한다. 결과적으로 Batch Normalization을 사용하여 하이퍼 파라미터 설정으로부터 더 자유로워졌으며, 학습 속도 및 성능 향상에도 큰 기여를 할 수 있었다.
Introduction
딥러닝의 학습은 일반적으로 자원의 한계로 인해 Batch size를 설정하여 전체 데이터를 분할하여 효율적인 학습을 진행한다. 이러한 아이디어는 기본적으로 Stochastic gradient descent(SGD)에서 시작하며, 더 나아가서 Momentum과 AdaGrad 등의 optimization 기법들 또한 효과적으로 입증되었다. 하지만, 이들은 파라미터 설정과 모델의 초기화 측면에서 주의를 기울여야 한다는 단점이 존재한다. 또한 본 논문에서는 딥러닝의 성능 한계로 “Internal covariant shift” 현상을 언급한다. 논문에서는 선행되는 레이어의 파라미터가 업데이트 됨에 따라 후행 레이어에 입력되는 데이터의 분포가 변형될 수 있음을 l=F2(F1(u,θ1),θ2) 수식을 통해 보여주며, Hidden layer에서의 입력 데이터 분포 또한 변할 수 있음을 말하고 있다. 이를 해결하기 위한 방법으로 논문에서는 Batch Normalization을 제안하며, 이는 Hidden Layer의 입력 데이터 분포를 고정시킬 수 있으며, 원활한 학습을 도와줄 수 있다고 주장한다. 또한 sigmoid 함수를 예제로 보여주며, 실제 Hidden layer의 입력 값이 고차원인 경우에 기울기가 소실되고 학습 속도도 느려질 수 있기 때문에, 입력 분포를 적절히 고정시켜 안정적인 학습을 가능케 하는 것이 필요하다고 주장한다.
Method

Discussion
Batch Normalization은 앞서 언급한 학습 속도에 대한 개선뿐 아니라, 깊은 신경망에서의 Internal covariate shift 문제를 해결하였고, 학습 과정의 초깃값 설정에 대한 부담을 줄여줄 수 있었다. 또한 자체적인 Regularization 효과를 지니게 되어 Dropout의 기능도 충분히 수행할 수 있음을 보여주었다. 이러한 기법의 제안은 전체적인 딥러닝 분야에 무척 혁신적이었고 큰 기여를 하였다고 볼 수 있다. 하지만 이러한 Batch Normalization의 어쩔 수 없는 한계점을 굳이 이야기해 보자면, 첫 번째로는 Batch size에 의존적이라는 점이다. 어느 정도의 크기가 있는 미니 배치에 대해 적용할 때, 평균과 분산의 의미가 생기므로 이때 Batch Normalization을 적용하여야 효력이 있다. 두 번째로는 RNN에는 해당 기법을 적용하기 힘들다는 점이다. RNN은 시점에 따른 통계치를 가지게 되므로 보통의 방법으로 Batch Normalization을 적용하기에는 어려움이 따른다.
My thoughts
입력 데이터들 간 독립성을 가정하고, 평균과 분산을 0과 1로 조정하는 것이 언제나 원 데이터의 설명력을 보존하기는 힘들 것 같다. 그럼에도 불구하고, Batch Normalization 사용 시 어김없이 성능이 좋아지는 이유가 과연 Internal covriate shift 현상을 해결해서일까? 라는 생각이 잠시 들었다. 논문을 읽은 이후 관련된 자료들을 보던 중 정말 놀라웠던 점은 Batch Normalization을 통한 성능 향상이 결코 Internal covariate shift의 해결을 통해서가 아니라는 것이었다. Layer의 입력 분포를 안정화 시켜 전반적인 학습 과정과 성능에 좋은 영향을 줄 수 있을 것이라는 생각은 쉽게 할 수 있으나, 그 안의 정확한 이유를 찾고자 한 연구들은 참 대단하다. 그동안 대단한 연구자들의 수많은 생각과 시도로부터 세상에 알려질 수 있었던 혁신적인 기법을 대수롭지 않게 사용했던 것 같다. 딥러닝의 작은 수단이라고 할 수 있는 Batch Normalization도 그중 하나이다. 기존의 어떠한 것들에 대해서 끊임없이 개선점을 찾는 모든 연구자들에 대한 존경이 생겼다. 깊게 궁금해하지 않고도 적당히 이해하여 사용할 수 있겠지만, 그 안에 어떠한 노력의 시도들이 있었는지를 아는 것은 필요한 자세인 것 같다. 계속해서 발전하는 AI를 공부하는 학생이자 연구자로써 선행된 연구들에 지속된 관심을 가지고, 당연한 많은 것들에 비판적인 시각을 기르고자 노력해야겠다.