해결된 질문
작성
·
34
답변 1
1
안녕하세요 좋은 질문 감사합니다!
여러 이유가 있지만 Batch Norm 대신에 Layer Norm을 NLP나 Sequence 데이터셋 모델링에서 사용하는 가장 큰 이유는 Batch Norm은 Batch을 묶어서 평균을 내는데 NLP에서는 문장의 길이가 가변적이기 때문입니다.
따라서 평균 혹은 표준편차를 계산할때, 분모로 나눠줘야 하는 N을 mini-batch을 구성하는 문장들 중에서 어떤 문장의 길이를 기준으로 설정할 것인가가 명확하지 않습니다.
부연 설명 드리자면, Normalization을 하기 위해서 평균 = sum(x_i) / N, 표준편차 = sqrt ( sum(x_i - 평균)^2 / N )에 대한 계산이 필요한데, Batch-Norm을 Mini-Batch을 통틀어서 평균과 표준편차를 계산합니다.
따라서 길이가 가장 긴 문장의 길이를 N으로 둬서 평균과 표준편차를 계산한다고 가정하면, 동일한 데이터 샘플에 대해서도 해당 데이터 샘플이 속해있는 mini-batch에서 가장 긴 문장의 길이 N이 다르면 계산되는 평균과 표준편차 값도 달라지는 문제가 있습니다.
하지만 Layer Norm은 각 데이터 샘플에 대해서 개별적으로 평균과 표준편차가 계산되므로 해당 문제를 겪지 않게 되는 셈입니다.
글로 이해하는데 헷갈릴 수 있으므로, 첨부한 이미지도 참고부탁드립니다!