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>에 의해 편향이 생길 수 있기 때문이다.