이전 포스팅에 이어서 이번 게시물에서는 Normalization에 대해 설명하겠습니다.
▶ 정규화(Normalization)
이 기법은 학습시에 사용할 데이터 값의 범위를 0~1사이로 일정하게 만들어주기 위해 사용합니다. 데이터를 0-1사이의 범위로 바꿔주는 방법은,
위와 같습니다.
그렇다면, Normalization이 필요한 이유는 무엇일까요?
1. 사용하는 데이터의 범위가 너무 크면 노이즈가 발생하기 쉽고, 오버피팅이 일어나기 쉽습니다.
2. 학습을 더 빠르게 진행할 수 있도록 도와주며, local minimum에 빠질 가능성이 줄어듭니다.
3. 범위가 너무 커서 값의 분포 범위가 넓어지면 값을 정하기가 힘들어집니다.
4. 머신러닝에서 범위가 큰 feature의 영향이 비대해지는 것을 방지합니다.
이중 2번에 대해서 좀 더 자세하게 설명해보겠습니다.
위 그림의 가운데는 정규화 되지 않은 입력이 주어진 경우를, 가장 아래쪽은 정규화된 입력이 주어진 경우를 그려놓은 것입니다. 정규화되지 않은 상태에서는 손실함수 공간 그래프가 굉장히 가늘고 길게 그려지는 것을 확인할 수 있습니다.
사람의 키와 시력을 가지고 성별을 판별하는 모델을 예로 들어보겠습니다. 키 데이터의 경우에는 대략 100-200 사이의 범위를 가질 것이고, 시력 데이터의 경우는 대략 0-2 사이의 범위를 가질 것입니다. 두 데이터의 범위 차이가 매우 심한데 이때, 이 데이터들을 모델에 그대로 입력하게 되면 각각의 가중치 값의 차이도 심해지게 됩니다. 따라서 가늘고 긴 그래프 형태를 가지게 됩니다. 반면에 0-1사이로 정규화하게되면 입력 값들이 모두 동일한 범위를 가지게 되고, 때문에 가중치 값이 크게 차이나지 않습니다. 따라서 가장 아래 그림처럼 대칭적인 그래프를 가지게 됩니다.
가중치 값 조정을 위해서 위 그래프에 경사하강법을 적용하면 정규화되지 않은 데이터들은 균형적이지 않기 때문에 시작점에 영향을 많이 받게 됩니다. 그렇기 때문에 많은 step이 필요하게 되고, 매우 작은 학습율(learning rate)을 사용할 수 밖에 없습니다. 정규화된 데이터는 어디서 시작하든 경사하강법으로 쉽게 최적화점을 찾아갈 수 있습니다. 따라서 많은 step이 필요하지 않고 큰 학습률을 사용함으로써 빠른 학습이 가능하게 합니다.
또한,
위 그림처럼 정규화를 하면 왼쪽 그래프를 오른쪽 그래프로 변형시킬 수 있습니다. 변동폭이 크지 않은 완만한 그래프가 그려지기 때문에 local optimum(local minimum)에서 더 빨리 빠져나올 수 있는 것입니다.
▶ Batch Normalization(배치 정규화)
딥러닝에서 가장 많이 쓰는 정규화 방법으로는 Batch Normalization이 있습니다. 배치 정규화는 간단하게 설명하면, 학습 시 미니 배치를 한 단위로 정규호를 하는 것으로 데이터 분포의 평균이 0, 분산이 1이 되도록 정규화 하는 것을 말합니다. 좀 더 자세한 설명은 후에 별도의 포스팅을 통해 설명하도록 하겠습니다!
'AI Research > Artificial Intelligence' 카테고리의 다른 글
[인공지능 기초] 선형 회귀(Linear Regression)와 로지스틱 회귀(Logistic Regression) - 2 (0) | 2023.02.28 |
---|---|
[인공지능 기초] 선형 회귀(Linear Regression)와 로지스틱 회귀(Logistic Regression) - 1 (0) | 2023.02.28 |
[인공지능 기초] Regularization (0) | 2023.02.26 |
[인공지능 기초] 랜덤 포레스트(Random Forest) (0) | 2023.02.26 |
[인공지능 기초] 결정 트리(Decision Tree) (0) | 2023.02.26 |