새소식

딥러닝

Batch Normalization / Layer Normalization

  • -

Batch Normalization

Batch-size가 32이고 활성화 함수로 ReLU를 사용했다고 가정한다.
그러면 한 노드에 대해서 32개의 데이터가 각각 통과할 것이다.

ReLU 함수에 모두 양수값의 형태로 들어간다면 자기 자신 그대로의 값이 나올 것이다.
그러면 활성화 함수로 ReLU를 사용한 건지 linear 함수를 사용한건지 구별할 수 없다.
그러면 이 노드는 비선형성이 없는 노드가 된다는 것이다.

즉, ReLU 함수는 이런 선형적인 특성 때문에 Sigmoid의 문제점인 Vanishing Gradient를 해결해주지만 위와 같은 입력 현상이 발생했을 때 비선형적인 관계를 잘 표현하기 어렵다.

(ReLU 함수에 모두 음수값의 형태로 들어간다면 0이 출력될 것이다. 그러면 Vanishing Gradient 문제도 해결 못하고 비선형적인 관계를 표현도 못하게 된다.)

그럼 어떻게 해야 하는 걸까?

 

⇒ 들어가는 입력값을 재조정하면 되지 않을까?
그런데 어떤 기준으로 재조정을 해야하는 것인가? (평균, 분산)
⇒ Non-linearity과 Vanishing Gradient의 trade-off 를 잘 조절하면서 재조정하는 것을 신경망이 학습하도록 하자

 

Layer Normalization

Batch-Normalization이 노드 들에 대해서 조정작업을 했다면 Layer Normalization Layer에 대해 조정 작업을 하는 것이다.

Batch-Size가 32일 때, 각 노드들에 들어오는 값이 32개
Layer에 들어오는 값은 Batch-size와는 관계없이 노드의 개수이다.

위와 같은 차이점을 제외하면 Normalization을 사용하는 이유는 같다.

 

 

Batch-Normalization과 Layer-Normlaization

Layer Normalization은 Transformer에 주로 사용되고 Batch Normalization은 이미지 데이터에 주로 사용된다.

왜냐하면 Batch-Normalization은 한 Batch 마다의 편차를 잘 봐야하는 것인데, 문장 데이터라면 <pad> 토큰들이 들어가 있을 때가 많은데 <pad>에 의해 편향이 생길 수 있기 때문이다.

 

 

728x90

'딥러닝' 카테고리의 다른 글

[모델 경량화] 경량화란  (0) 2023.04.20
Inductive Bias  (0) 2023.04.07
딥러닝에서 왜 목적함수로 MSE가 아닌 Cross Entropy를 사용할까?  (0) 2023.03.31
Automatic Mixed Precision  (0) 2022.08.01
Gradient Accumulation  (0) 2022.08.01
Contents