Q. DNN을 학습시키기 전에 왜 데이터를 전처리해주어야 하나요?

 

 

안녕하세요~ 이번시간에는 DNN 모델이 학습을 효율적으로 하기위해 필요한 정규(Noramlization; 정규화) 대해서 알아보도록 할거에요~ 흔히 Data Preprocessing(데이터 전처리)를 위해 하는 방법론으로 쓰이고 있는데, 이번글에서 data preprocessing과 normalization 관계에 대해서 알아보도록 할게요. 

 

 

 

 

<1.Normalization(정규화)란?>

 

먼저 정규화의 사전적인 의미는 아래와 같아요. 

 

'어떤 대상을 일정한 규칙이나 기준에 따르는 '정규적인(정식으로 된 규정이나 규범)' 상태로 바꾸는 행위

 

이미지를 예로 들어볼께요. 이미지에서 하나의 pixel은 보통 0~255의 range(범위)를 갖고 있어요. 가끔 이러한 범위가 수치계산에 비효율적인 경우가 있어서 비율에 맞게 0.0~1.0 단위로 축소시키기도 합니다.

 

 

 

 

<2. Normalization이 필요한 이유>

 

앞서 Normalization이 필요한이유가 DNN의 효율적인 학습 때문이라고 말씀드렸는데요. 그렇다면 구체적으로 어떻게 효율적인지 예시를 통해 알아보도록 해보겠습니다.

 

먼저 우리가 x1, x2라는 데이터를 통해 학습을 시킨다고 해볼께요. x1변수의 데이터 범위는 (1~9)인 반면에 x2의 범위는 (-5000~9000)이네요. 이렇게 입력데이터들끼리의 범위차이가 심하면 어떤 현상이 발생할까요?

 

          

                    <사진1>                               <사진2>        

 

문제정의를 회귀(regression)문제라고 하고, MSE를 통해 문제를 풀어봅시다. (우리가 원하는 target 값이 45000이라고 가정)

 

 

x1과 x2에 대한 cost function을 그려보면 아래와 같습니다. 실제 값의 범위를 그려보면 아래 사진들의 빨간색 그래프처럼 한쪽은 굉장히 가파른 모양을 갖고, 다른 한쪽은 완만한 모양을 지니고 있어요. 

   

     

<사진3>                                                          <사진4>

 

위의 두 개의 독립변수에 대한 가중치 cost function을 결합하면 아래와같은 모양이 나오게 됩니다.

(Note: 아래에는 w1, w2 값이 0,0 일 때 최소값을 갖는것 처럼 나오는데, 정확하게는 w1=4500, w2= 5 일 때 최소값을 갖습니다. 3D 그림으로 설명하려다가 이 부분을 고려 못했네요 ㅜㅜ;; )

 

 

      

<사진5>

 

위의 그래프를 2D로 표현해보려고 합니다. 위의 그래프를 위에서 아래로 바라본다면 아래와 같은 그래프 모양을 형성하겠죠.

 

<사진6>

 

그런데 이때 문제는 cost value를 알아볼수가 없네요. 그래서 아래와 같이 색으로 cost value를 표현해주고 등고선형태의 모양으로 3D cost function을 2D cost function으로 표현해 줄 수 있게 됩니다. (Note: 아래에는 w1, w2 값이 0,0 일 때 최소값을 갖는것 처럼 나오는데, 정확하게는 w1=4500, w2= 5 일 때 최소값을 갖습니다. 3D 그림으로 설명하려다가 이 부분을 고려 못했네요 ㅜㅜ;; )

 

       -->       

(Note: 아래에는 w1, w2 값이 0,0 일 때 최소값을 갖는것 처럼 나오는데, 정확하게는 w1=4500, w2= 5 일 때 최소값을 갖습니다. 3D 그림으로 설명하려다가 이 부분을 고려 못했네요 ㅜㅜ;; )

 

<사진7>                                                     <사진8>

 

 

자 그럼 이제부터 문제가되는 부분을 살펴볼게요.

 

앞서 Weight update 방식을 보면 W1, W2에 적용되는 learning rate은 같아요 (항상 같은 상수값이죠).

 

 

그런데, 아래와 같은 cost function을 형성했을 때에는 learning rate이 W1 cost function 기준에서는 적절할지 몰라도 W2 기준에서는 굉장히 큰 값이 될 수 있기 때문에 overshooting이 일어날 확률이 커지게 됩니다. 그래서 아래와 같이 비효율적으로 지그재그로 학습하게 됩니다. 

 

<사진8>

 

 

 

<사진9>

 

 

 

"모든 가중치에 동일한 Learning rate(상수 값)이 적용"된다는 조건 때문에 입력데이터들의 범위를 모두 동일화해줄 필요성이 있다는 주장이 제기되었죠. 그래서 입력되는 독립변수들을 가능하면 같은 범위로 Normalization하는 아이디어가 적용되었고, 이것이 Data Preprocessing (데이터 전처리) 개념으로 쓰이게 된 것이랍니다!

 

이렇게 Normalization을 적용하게 되면, 아래와 같이 더 효율적으로 DNN이 학습을 할 수 있게 되는것이죠! (위의 예시와 아래그림이 일치하는건 아니에요. 그냥 Normalization하면 cost function이 어떻게 바뀌고, 어떻게 효율적으로 학습할 수 있을지에 대한 개념만 이해하시면 됩니다~)

 

<사진10>

 

 

 

 

<3. Normalization 실습>

 

마지막으로 Normalization이 적용되는 방식에 대해서 알아보도록 할게요.

 

이전에 제가 PPT로 정리해 두어서 캡쳐만 하고 사진으로 올리드록 하겠습니다 ;; ㅎㅎ

 

 

 

 

 

 

 

 

 

이번장에서는 데이터 전처리를 해야하는 이유에 대해서 알아보았어요!

 

다음장에서는 Batch Normalization을 배우기 위한 사전지식인 Mini-Batch 학습 방법에 대해서 알아보도록 할께요!!

 

 

 

 

 

 

 

[사진래퍼런스]

사진1

https://stackoverflow.com/questions/37734655/neural-network-solving-xor?noredirect=1&lq=1

사진2, 8

https://www.youtube.com/watch?v=1jPjVoDV_uo&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=18

<사진10>

https://medium.com/@pnkshir/concept-of-normalization-427108d1ccfa

<실습사진>

http://aikorea.org/cs231n/neural-networks-2-kr/

 

+ Recent posts