본문 바로가기
딥러닝 with Python

Normalization / Batch Normalization / Layer Normalization

by CodeCrafter 2024. 1. 27.
반응형

 

이번에 알아볼 내용은 Normalization / Batch Normalization / Layer Normalization이다.

 

1. Normalization

- Normalization 이란, 우리말로 정규화 이다.

- 이는 데이터의 범위를 특정 범위 또는 규칙에 따라 조정하는 과정을 말하는 것이다.

- 대표적으로는 데이터의 최소값을, 최대값을 1로 변환하여 데이터의 분포를 조정하는 방법이 있다. 

 

- Normalization을 하는 이유는

 1) 데이터의 스케일을 조정하여 분석 또는 처리가 용이하게 만들고

 2) 다양한 단위나 범위를 가진 데이터를 일관된 형태로 변환하며

 3) 학습 알고리즘이 더 빠르고 효과적으로 수렴하도록 도와주고

 4) 데이터 내 특징(feature) 간의 상대적 중요도를 균등화하기 위함이다.

 

- Normalization의 종류로는 

 1) Min-Max Normalization : 위에서 설명한 방법으로, 데이터를 0과 1 사이의 값으로 변환하는 것으로 각 데이터에서 최소값을 빼고, 최대값과 최소값의 차이로 나누는 방식으로 수행된다.

 2) Z-scroe Normalization : Standardization라고도 불리며, 표준화라고 불린다. 이 "표준화"라는 용어는 "표준 정규화"를 의미하며, Z-score 라는 표준화된 방식을 활용해 데이터의 범위를 조정하는 것이다.

 * x는 데이터, μ는 평균,  σ는 표준편차를 의미한다.

 

 3) Robust Scailing : 중앙값과 IQR(Interquantile Range)을 사용하여 이상치의 영향을 줄이는 방식으로 스케일링 하는 방법으로 공식을 아래와 같다. 

 

여기서 Q1는 1사분위수(데이터의 하위 25%), Q3는 3사분위수(데이터의 상위 75%)를 의미한다.

 

4) Unit Vector Normalization) : 이 방법은 데이터르 단위 벡터로 스케일링하는 것으로, 텍스트 분석 또는 이미지 처리와 같은 분야에서 주로 활용된다. 이는, 길이나 크기가 서로 다른 벡터를 사용하는 텍스트 또는 이미지 분석에서 일관성을 주기 위함이며, 코사인 유사도등을 활용하여 벡터들 간의 유사도를 측정하기 위함이다. (또한, 데이터의 안정성과 일반화 능력을 향상시키고, 학습과정에서 효율성이 향상되는 등 여러가지 장점을 가지고 있다.)

여기서 llxll 은 벡터 x의 유클리드 길이(또는 Norm)을 의미한다.

 

 

2. Batch Normalization

- 이는 데이터를 학습 간 전체 데이터를 한번에 학습하기에 제한되는 경우(컴퓨팅 능력등의 제한 등으로)에 미니 배치(mini-batch) 단위로 학습을 진행하는데, 이때 학습과정을 가속화하고 안정화시키기 위해 각 미니배치의 출력에 대해 평균과 분산을 계산하고 이를 사용해 미니배치의 출력을 정규화하는 방법을 말한다.

 

- 수학적 공식은 아래와 같다. 

 

- 더 자세한 설명은 아래 포스팅에서 확인할 수 있다.

[딥러닝 with 파이썬] 배치(Batch)란? / 배치정규화(Batch Normalization)

 

[딥러닝 with 파이썬] 배치(Batch)란? / 배치정규화(Batch Normalization)

이번에 알아볼 것은 딥러닝 학습 간 많이 활용되는 배치(Batch), 그리고 이 배치를 정규화하는 배치정규화(Batch Normalization)에 대해서 알아보겠습니다. 1. 배치(Batch)란? - 배치(Batch)는 "일괄적으로 처

jaylala.tistory.com

 

 

3. Layer Normalization 

- Layer Normalization은 딥러닝에 사용되는 기술로, 학습과정을 안정화하고 가속화하는데 도움이 되며, 특히 순환 신경망(RNN)과 트랜스포머 모델에서 널리 사용되고 있다.

 

 * Batch Normalization 같은 경우, 각 시점(time step)마다 다른 데이터가 연속적으로 나오는 sequential 한 형태의 데이터의 경우 배치 정규화를 적용시키기 어렵다. 

  (미니배치 내 데이터의 평균과 분산을 기반으로 정규화하는 Batch Normalization은 시계열 데이터에서 각 시점의 데이터의 분포를 상이하게 만들 수 있고 이는 일관되지 않은 학습 결과를 만들어 낼 수 있기 때문 / 또한, 시간적 의존성을 무시하고 각 시점의 데이터를 독립적으로 처리하기에 sequential 데이터의 특성을 제대로 반영하지 못할 수 있음)

 

- Layer Normalization은 각 training case별로 한 레이어의 모든 뉴런에 대한 summed input의 평균과 분산을 구해 정규화를 시키는 방법이다.

 

- Batch Normalization은 데이터의 특성(feature) 단위로 평균과 표준편차를 구한다면, Layer Normalization은 data sample 단위로 평균과 표준 편차를 구하는 것을 의미한다.

* features : 데이터의 특성 (variables) / data sample : 데이터의 관측치

 

 

- 위 그림을 바탕으로 Batch Normalization과 Layer Normalization의 차이를 확인해보면

(N : 미니배치의 차원 / C : 채널 차원) 

 * 위 그림에서 보면, Batch Normalization은 서로 다른 관측치(C)에 대해서 특성(N)별 Normalization을 수행하는것이고

 * Layer Normalization은 서로 다른 특성(N)에 대해 같은 관측치(C)에 대해 Normalization을 수행하는 것이다.

 

 

 

* 위 표에서는 가로축이 같은 특성(feature)를 의미하며, 세로 축이 같은 data sample을 의미한다.

 

 

- 이를 표로 정리하면 아래와 같다. 

 

 

- Layer Normalization은 작동방식은, 각 레이어의 출력을 정규화하는 과정을 포함한다. 즉, 각 레이어에서 활성화의 평균과 분산을 계산하고, 이를 사용하여 데이터를 정규화 하는 것이다.

 

- Layer Normalization에서 학습 가능한 파라미터는 총 2개 이다. 이는 1) 스케일(Scale)과 2) 이동(Shift) 파라미터이며, 이를 조정하여 네트워크가 필요한 경우 정규화의 효과를 늘리거나 줄일 수 있게 한다.

반응형

댓글