본문 바로가기
Machine Learning/Papers Review

[Batch Normalization] Internal Covariate Shift 개념

by 지나가던 복실이 2021. 7. 22.

 

필자는 컴퓨터비전 연구실에서 인턴 중인 학생입니다.

최근에 논문 공부하는 것을 시작하여, 내용이 미흡하고 부족할 수 있다고 생각하므로 댓글로 자유로운 피드백 바랍니다.

 

 

논문 링크

 

2015년 ICML에 등재되었던 Batch Normalization에 대해 논문 내용을 정리해보려 합니다.

저자는 Sergey Ioffe와 Christian Szegedy입니다.

 

논문의 원 제목은 "Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift"입니다. 제목을 보면 알 수 있다시피 Batch Normalization은 Internal Covariate Shift를 줄여 Deep Network에서 트레이닝 속도를 가속화시키기 위해 제안되었습니다.

 

논문을 처음 들여다봤을 때. Internal Covariate Shift부터 막혀서 찾아보았습니다.

Covariate은 글자 그대로 공유하는 변수라는 의미로 공변랑이라는 개념입니다.

 

통계 관련 사이트에 통계적 개념으로서의 covariate이 설명되어 있습니다.

공변량은 독립변수는 아닌 잡음 인자가 원인으로 작용하여 종속변수에 영향을 끼치는 것이라 할 수 있습니다.

 

Covarite을 직관적으로 보여주는 그림

 

그렇다면 위 논문에서는 어떤 의미에서 Internal Covariate Shift라는 단어가 쓰였을까요?

우선 Shift 즉, 이동이라는 개념은 Data shift에서 파생된 개념입니다.

 

towards data science에서 Understanding Dataset Shift,

Diving to Deep learning 책에서 Covariate Shift에 대한 설명을 접할 수 있었습니다.

 

Covariate Shift는 간단하게 말하자면

training과 test로 구하고자 하는 결과는 동일하지만

training 입력 데이터 분포와 test 입력 데이터 분포가 차이가 있는 상황을 의미합니다.

수식으로 표현하자면 다음과 같습니다.

 

그림으로 설명하자면

 

trining set: 실제 고양이와 강아지 사진들로 이루어져 있음.
test set: 고양이와 강아지 캐릭터를 분류해 내고 싶음.

 

위 실제 강아지 고양이 training set으로 캐릭터 고양이 강아지를 분류해내는 상황을 생각해봅시다.

이 상황에서 분류해내고자 하는 대상은 같으나 학습은 잘 수행되지 않을 것입니다.

 

이렇게 training과 test에서의 입력 데이터 분포가 달라 학습에 영향을 끼치는 것을 covariate shift라 합니다.

 

 

Deep Neural Network에서 Internal Covariate Shift

 

 

Deep neural network에서는 output에 도달하기 전에 이전 레이어의 parameter가 변경됨에 따라서 training 중, 각 레이어의 입력 분포가 변경됩니다. 논문의 저자들은 이런 식으로, Deep Neural Network 내부에서 일어나는 covariate shift를 Internal Covariate Shift라 칭합니다. 

 

 

Internal Covariate Shift, ICS는 다음과 같은 문제점들을 가집니다.

1) 낮은 learning rates를 요구함으로써 트레이닝 속도를 느리게 합니다.
2) 세심한 파라미터 초기화가 필요합니다.
3) 모델을 훈련할 때 비선형으로 saturating 하기가 힘듭니다.

 

 

이 논문의 목표는 Internal Covariate Shift의 위와 같은 문제점을 다루기 위해 layer inputs를 normalize 하는 방식을 채택합니다. Normalize에 대한 내용은 다음 장에서 다루도록 하겠습니다.

 

-Reference

SSAC STAT(통계 사이트): https://ssacstat.com/default/cs/cs_05.php?com_board_basic=read_form&com_board_idx=166&topmenu=5&left=5&&com_board_search_code=&com_board_search_value1=&com_board_search_value2=&com_board_page=1& 

Towards data science - Understanding Dataset Shift: https://towardsdatascience.com/understanding-dataset-shift-f2a5a262a766

[Book] Dive into Deep Learning https://ko.d2l.ai/chapter_deep-learning-basics/environment.html