본문 바로가기

연구/deep learning

[딥러닝 개념] input image를 normalize해서 넣는 이유

반응형

normalize한다는게 무슨 말일까?

논문을 보다보니 이런 내용이 있었다.

여기서 They는 dataset을 말한다.

batch normalization으로 feature map들을 정규화한다는 말은 들었는데 input image부터 정규화한다는 말은 처음 들었다.

 

그런데 간단하게 생각해서 둘다 비슷한 말이라고 생각하면 된다.

그렇다면 image를 정규화하는 이유는 뭘까? 당연히 성능이 더 좋게 나왔으니까...

일반적으로 image의 각 pixel값들은 0~255의 값을 가지는데 이를 가장 간단하게는 그냥 255로 나누어서 0~1의 값을 가지도록 하는 경우도 있고, 위의 논문일부처럼 mean, variance를 가지고 정규화하는 경우도 있다.

 

batch normalization에서나 input image normalization에서나 이유는 같다고 보면 된다.

데이터분포(혹은 feature map)분포를 고르게 해주어 gradient를 업데이트하는 과정이 원활하게 일어나도록 유도하는 것이라고 생각하면 된다.

 

이해를 돕기 위해 사진 2장을 첨부한다.

만약 데이터분포가 다음과 같이 두가지 유형으로 나뉜다고 할 때 어떤 경우에 gradient가 최적점을 잘 찾아갈까?

 

1번
2번

답은 당연히 2번처럼 깔끔하고 고른 분포가 되겠다.

따라서 1번같은 데이터분포를 깔끔하게 다듬어서 2번처럼 만들어 주고자 하는게 normalization기법이다.

 

여기서 의문이 들 수 있는점 : 

1. 저렇게 데이터분포가 바뀌었는데 거기에 맞춰서 gradient가 업데이트되는게 실제로 의미가 있는건가? test case에서도 잘 동작할까? 

 

답은 yes. 왜인지는 모르나 어쨋든 실험적으로 성능이 좋다는걸 보였기 때문에 우리는 그냥 그렇구나하고 사용하면 된다..(딥러닝 공부의 어려운점ㅜㅜ)

반응형