정규화를 했는데 왜 성능이 떨어지죠? (Embedding Normalization)

정규화를 했는데 왜 성능이 떨어지죠? (Embedding Normalization)

정규화는 원래 다 좋은 거 아니었나요?

딥러닝을 공부하면 제일 먼저 배우는 상식 중 하나가 “정규화(normalization)는 학습을 안정시키고 성능도 올려준다”는 것입니다. Batch Normalization(Ioffe & Szegedy, 2015)과 Layer Normalization(Ba et al., 2016)은 이제 거의 모든 딥러닝 모델에 기본값처럼 들어갑니다. 클릭률(CTR) 예측 모델도 예외는 아니어서, Wide & Deep이나 DeepFM 계열 모델들 대부분이 이 두 정규화 기법 중 하나를 습관처럼 가져다 씁니다.

그런데 CTR 예측 모델을 만들다 보면 다른 도메인에서는 잘 보지 못한 독특한 구성 요소가 하나 있습니다. 바로 피처 임베딩(feature embedding)입니다. 사용자 ID, 광고 ID, 카테고리처럼 범주형 피처를 저차원 벡터로 바꾼 이 임베딩들에 기존 정규화 기법을 그대로 적용해봤습니다. 다른 곳에서는 늘 도움이 됐던 방식이니 여기서도 당연히 좋아질 거라 예상했죠.

여기서 말하는 “정규화”가 구체적으로 뭘 하는지부터 짚고 넘어가겠습니다. Batch Normalization은 배치 내에서 계산한 평균 $\mu_B$와 분산 $\sigma_B^2$을 이용해 각 차원의 값을 아래처럼 표준화합니다.

\[\hat{x}_i = \frac{x_i - \mu_B}{\sqrt{\sigma_B^2 + \epsilon}}, \qquad y_i = \gamma \hat{x}_i + \beta\]

Layer Normalization도 통계량을 배치가 아니라 레이어(샘플) 단위로 계산한다는 점만 다를 뿐, “평균을 빼고 표준편차로 나눈다”는 핵심 연산은 동일합니다. 이 연산은 입력의 절대적인 크기(scale)를 지우고 상대적인 분포 모양만 남기는 역할을 합니다. 이미지 픽셀이나 히든 레이어의 활성화값처럼 “모든 차원이 원칙적으로 대등한” 입력에서는 이게 큰 장점입니다. 문제는 피처 임베딩이 그런 입력이 아니라는 데 있었습니다.

성능이 떨어지는 낯선 현상

결과는 예상과 정반대였습니다. 피처 임베딩에 Batch Normalization이나 Layer Normalization을 적용했더니, 모델 성능이 오히려 떨어지는 현상이 한 번이 아니라 반복적으로 관찰됐습니다. 하이퍼파라미터를 바꿔봐도, 정규화를 적용하는 위치를 바꿔봐도 마찬가지였습니다. “정규화를 했는데 왜 더 나빠지지?” — 이 질문이 저희 연구(Yi et al., ICDMW 2021)의 출발점이었습니다.

원인: ‘중요도’가 사라진다

원인을 파고들어 보니, 문제는 정규화 과정에서 각 피처 임베딩이 원래 가지고 있던 ‘중요도(significance)’가 뭉개진다는 데 있었습니다.

CTR 예측에서는 피처마다 예측에 기여하는 정도가 천차만별입니다. 어떤 피처는 클릭 여부를 결정짓는 핵심 신호이고, 어떤 피처는 있으나 마나 한 잡음에 가깝습니다. 이런 차이는 학습 과정에서 임베딩 벡터의 크기(norm)와 분포에 자연스럽게 녹아듭니다. 모델이 어떤 피처를 중요하게 여길수록 그 피처의 임베딩은 더 크고 뚜렷한 값으로, 덜 중요한 피처의 임베딩은 상대적으로 작고 흐릿한 값으로 학습되는 경향이 있는 것이죠.

이건 저희만의 관찰이 아니라 임베딩을 다루는 여러 분야에서 이미 반복적으로 보고돼 온 현상이기도 합니다. 자연어 처리에서도 자주 등장하는 빈도 낮은(rare) 단어의 임베딩이 자주 등장하는 단어보다 오히려 노름이 크게 학습되는 경향이 보고된 바 있고(“Frequency-Agnostic Word Representation” 계열 연구들이 다룬 문제), 그래프 임베딩에서도 노드의 차수(degree)나 중요도가 임베딩 노름에 반영되는 경향이 여러 차례 관찰됐습니다. CTR 예측의 피처 임베딩에서도 마찬가지로, 역전파 과정에서 예측에 더 크게 기여하는 피처일수록 그래디언트 신호를 더 많이 받아 임베딩의 크기와 분포가 그 피처의 “중요도”를 반영하는 방향으로 학습된다고 보는 것이 저희 가설이었습니다.

그런데 Batch Normalization이나 Layer Normalization은 모든 피처의 분포를 강제로 비슷한 스케일(대개 평균 0, 분산 1 근방)로 맞춰버립니다. 위 식에서 보듯 $\hat{x}_i$는 원래 $x_i$가 어떤 스케일에 있었는지와 무관하게 항상 평균 0, 분산 1 근방의 값으로 재조정됩니다. 그 결과 “중요한 피처는 크게, 덜 중요한 피처는 작게” 표현되던 신호가 지워지고, 모든 피처가 비슷비슷한 크기로 취급되면서 모델이 정작 중요한 신호를 구분하지 못하게 됩니다. 정규화가 “분포를 가지런하게 정리해주는 것”까지는 좋았지만, 그 과정에서 원래 있던 정보(=중요도)를 함께 지워버리는 부작용이 있었던 셈입니다.

이 직관은 감이 아니라 수식으로도 증명됩니다. $\epsilon = 0$일 때, 배치 정규화 아래에서는 같은 배치 안의 임의의 두 피처 $(x_1, x_2)$에 대해 정규화된 임베딩의 L2-노름 제곱의 기댓값 차이가 항상 0입니다.

\[\mathbb{E}\left[\lVert \hat{e}_{x_1} \rVert_2^2 - \lVert \hat{e}_{x_2} \rVert_2^2\right] = 0\]

다시 말해 배치 정규화는 서로 다른 두 피처의 임베딩 노름을 평균적으로 완전히 같게 만들어버립니다 — 원래 크게 학습됐던 피처든 작게 학습됐던 피처든, 정규화를 거치고 나면 기댓값 차원에서는 구분이 사라지는 것입니다. 단순화된 레이어 정규화(S-LN)에서는 이 현상이 한 발 더 나아갑니다. 임의의 피처 $x$와 그 $d$차원 임베딩 $e_x$에 대해, S-LN으로 정규화된 임베딩의 L2-노름은 배치 통계와 무관하게 언제나 정확히 $\sqrt{d}$로 고정됩니다.

\[\lVert \hat{e}_x \rVert_2 = \sqrt{d}\]

Theorem 1, 2

Theorem 1, 2 (출처: Yi et al., “Embedding Normalization: Significance Preserving Feature Normalization for Click-Through Rate Prediction”, ICDMW 2021, 실제 출판본 원문). 배치 정규화는 임의의 두 피처 쌍의 노름 기댓값을 같게 만들고, 단순화된 레이어 정규화(S-LN)는 모든 피처의 노름을 아예 $\sqrt{d}$라는 상수로 고정합니다. 두 경우 모두 피처가 원래 갖고 있던 크기 차이(=중요도)가 정규화 이후 사라진다는 것을 수학적으로 보여줍니다.

왜 아무도 눈치채지 못했을까

돌이켜보면 이건 자연스러운 사각지대였습니다. Batch Normalization과 Layer Normalization은 원래 이미지나 자연어처럼, 피처 하나하나가 서로 대등한 역할을 하는 조밀한(dense) 입력을 다루던 도메인에서 태어난 기법입니다. 그런 도메인에서는 “모든 채널/차원을 비슷한 스케일로 맞추는 것”이 학습 안정성에 유리하다는 전제가 대체로 잘 맞아떨어집니다.

하지만 CTR 예측의 피처 임베딩은 성격이 다릅니다. 사용자 ID 하나가 수백만 개의 범주 중 하나를 가리키는 극단적으로 희소(sparse)한 범주형 변수이고, 피처마다 예측에 기여하는 정도의 편차도 훨씬 큽니다. 조밀한 입력을 전제로 설계된 정규화 기법을 별다른 검증 없이 그대로 가져다 쓴 것이, 뜻밖에도 정보 손실로 이어진 것입니다.

핵심 아이디어: 중요도를 보존하는 정규화

저희는 이 문제를 이론적으로 분석한 뒤, Embedding Normalization이라는 새로운 정규화 기법을 제안했습니다. 목표는 명확합니다 — 정규화가 주는 학습 안정성의 이점은 그대로 가져가면서, 각 피처 임베딩이 원래 지니고 있던 중요도의 차이는 보존하는 것입니다.

기존 정규화가 “모든 피처를 같은 잣대로 눌러 담는” 방식이었다면, Embedding Normalization은 피처 간의 상대적인 중요도 차이는 유지한 채로 스케일만 안정적인 범위 안으로 끌어오는 방식입니다. 말 그대로 “중요도를 보존하는 정규화(significance-preserving normalization)”인 셈입니다.

관건은 정규화의 아핀 변환에 쓰이는 파라미터 $\gamma, \beta$였습니다. 기존 Batch/Layer Normalization은 이 파라미터를 레이어(또는 채널) 전체가 공유하는 값으로 두는 반면, Embedding Normalization은 피처마다 독립적으로 학습되는 $\gamma_x^f, \beta_x^f$로 바꿨습니다.

\[EN(e_x) = \gamma_x^f \left( \frac{e_x - \mu_x}{\sqrt{\sigma_x^2 + \epsilon}} \right) + \beta_x^f, \qquad \mu_x = \frac{1}{d}\sum_{k} (e_x)_k, \quad \sigma_x^2 = \frac{1}{d}\sum_{k} \left((e_x)_k - \mu_x\right)^2\]

EN 수식 (Equation 6, 7)

Embedding Normalization의 정의 (Equation 6, 7) (출처: 실제 출판본 원문). $\gamma_x, \beta_x$를 모든 피처가 공유하는 벡터 대신, 피처마다 독립적으로 학습되는 스칼라 $\gamma_x^f, \beta_x^f$로 정의한 것이 핵심입니다.

평균 $\mu_x$와 분산 $\sigma_x^2$은 여전히 각 피처 임베딩 내부(레이어 정규화와 동일한 단위)에서 계산해 학습 안정성을 그대로 유지합니다. 다만 정규화 이후 다시 스케일을 되돌리는 $\gamma_x^f, \beta_x^f$를 피처마다 따로 두었기 때문에, 모델은 학습 과정에서 중요한 피처에는 큰 $\gamma_x^f$를, 덜 중요한 피처에는 작은 $\gamma_x^f$를 부여해서 원래 있던 중요도 차이를 정규화 이후에도 복원할 수 있습니다. 실제로 정규화된 임베딩의 노름을 계산해보면 이 점이 정리로 확인됩니다.

\[\lVert \hat{e}_x \rVert_2 = \sqrt{d(\gamma_x^f)^2 + d(\beta_x^f)^2}\]

Theorem 3

Theorem 3 (출처: 실제 출판본 원문). Theorem 1, 2에서 봤듯 배치/레이어 정규화는 노름이 상수(또는 기댓값이 동일)로 고정되지만, Embedding Normalization은 노름이 피처마다 학습된 $\gamma_x^f, \beta_x^f$에 따라 크게 달라질 수 있습니다 — 중요도를 표현할 자유도가 남아 있는 것입니다.

세 정규화 기법의 차이를 숫자로 직접 비교해보면 더 명확합니다.

BN·LN·EN 비교

BN·LN·EN이 네 피처 $x_1$–$x_4$의 임베딩을 각각 어떻게 정규화하는지 비교한 예시 (Figure 1, 출처: 실제 출판본 원문). (a) Batch Normalization과 (b) Layer Normalization은 $\gamma, \beta$를 모든 피처가 공유하기 때문에, 정규화 이후 네 피처의 L2-노름이 서로 비슷한 높이로 수렴합니다(오른쪽 막대그래프가 거의 평평함). 반면 (c) Embedding Normalization은 피처마다 다른 $\gamma_x^f, \beta_x^f$(예시에서 $x_1$은 $\gamma=2.5$, $x_4$는 $\gamma=0.1$)를 학습하기 때문에, 정규화 이후에도 $x_1$은 크고 $x_4$는 작은 원래의 중요도 차이가 막대그래프에 그대로 남아 있습니다.

결과: 안정성과 성능을 함께 잡다

실험은 KDD12, Criteo, Avazu, Talking Data, Movielens, Book-Crossing까지 6개의 공개 데이터셋에 걸쳐, FM·FFM을 포함한 11개의 CTR 예측 모델에 각 정규화 기법을 적용하는 방식으로 진행했습니다. 정규화를 전혀 적용하지 않은 베이스라인 대비 얼마나 자주 성능을 개선했는지, 6개 데이터셋 × 11개 모델 × 2개 평가지표로 132개 실험 설정을 집계한 결과는 아래와 같습니다.

Table III: 정규화 기법별 성능 개선 통계

Table III — 132개 실험 설정 각각에서 베이스라인 대비 성능이 뚜렷이 개선(O)됐는지, 소폭 개선(△)됐는지, 오히려 악화(X)됐는지 집계한 통계 (출처: 실제 출판본 원문). Embedding Normalization은 132개 중 92개(69.70%)에서 뚜렷한 개선을 보였고, 소폭 개선까지 합치면 95.45%(126개)에 달합니다. 반면 Batch Normalization은 64.39%, Layer Normalization은 36.36%, S-LN과 VO-LN은 각각 40.91%·39.39%에 그쳤습니다. 여러 정규화 기법을 통째로 비교했을 때도 Embedding Normalization은 132개 중 65개(49.24%)에서 단독으로 가장 좋은 성능을 냈고, 그 뒤를 VO-LN(14.39%)과 Batch Normalization(12.12%)이 이었습니다.

성능뿐 아니라 학습이 얼마나 빨리 수렴하는지에서도 차이가 뚜렷했습니다.

Figure 2: 정규화 기법별 수렴 속도 비교

Figure 2 — KDD12·Criteo 데이터셋에서 FFM·AFN 모델에 각 정규화 기법을 적용했을 때 학습 반복(iteration)에 따른 로그 손실(logloss) 변화 (출처: 실제 출판본 원문). Embedding Normalization은 대부분의 경우에서 더 적은 반복만으로 더 낮은 손실에 도달했습니다. 유일한 예외는 KDD12 데이터셋에서 FFM 모델을 쓴 경우로, 수렴 속도 자체는 살짝 느렸지만 최종 성능은 여전히 다른 기법보다 우수했습니다. 참고로 FFM 실험에서는 VO-LN과 S-LN의 수렴이 다른 기법 대비 극단적으로 느려 그래프에서 생략했습니다.

Embedding Normalization이 정말로 피처별 중요도 차이를 정규화 이후에도 보존하는지는, 정규화된 임베딩 노름의 분포를 직접 눈으로 확인해볼 수 있습니다.

Figure 3: 정규화 기법별 임베딩 노름 분포 비교

Figure 3 — Criteo·Book-Crossing 데이터셋에서 FFM 모델의 피처 임베딩을 각 정규화 기법으로 처리한 뒤, 정규화된 노름(각 임베딩의 노름을 해당 설정의 평균 노름으로 나눈 값)의 분포를 비교한 히스토그램 (출처: 실제 출판본 원문). 정규화를 아예 적용하지 않은 “None”의 경우 노름이 넓게 퍼져 있어 피처 간 중요도 차이가 잘 드러납니다. Layer Normalization과 S-LN은 노름이 1 근방의 뾰족한 스파이크로 붕괴해버려 피처 구분이 거의 불가능해지고, Batch Normalization도 어느 정도 퍼져 있지만 노름이 0에 가까워지는 피처는 드뭅니다. Embedding Normalization만이 “None”과 비슷하게 넓게 퍼진 분포를 유지해, 정규화를 거치고도 피처별 중요도 차이가 살아있음을 보여줍니다.

같은 질문을 다른 각도에서도 확인해봤습니다. 피처를 “중요한 피처”와 “중요하지 않은 피처” 두 그룹으로 인위적으로 나눠놓고, 학습이 진행될수록 두 그룹의 정규화된 임베딩 노름 비율이 어떻게 변하는지를 추적한 것입니다. 그룹을 나누는 방법은 세 가지를 썼습니다 — 원래 없던 의미 없는 더미 피처를 섞어 넣는 Dummy Features, 레이블을 일부러 무작위로 뒤섞어 신호를 없앤 Label Shuffling, 등장 빈도가 극단적으로 높거나 낮은 피처만 골라낸 Head and Tail입니다.

Figure 4: 중요/비중요 피처 그룹 간 노름 비율 변화

Figure 4 — Movielens·Book-Crossing 데이터셋에서 FFM 모델을 기준으로, Dummy Features·Label Shuffling·Head and Tail 세 가지 방식으로 나눈 “중요하지 않은 피처” 그룹과 “중요한 피처” 그룹의 평균 정규화 노름 비율이 학습 반복에 따라 어떻게 변하는지 나타낸 그래프 (출처: 실제 출판본 원문). Embedding Normalization을 적용했을 때만 이 비율이 학습이 진행돼도 1보다 뚜렷이 낮은 수준을 유지해, 중요하지 않은 피처의 노름이 중요한 피처보다 계속 작게 유지된다는 것을 보여줍니다. 다른 정규화 기법에서는 이 비율이 1 근방으로 수렴해, 두 그룹의 임베딩이 사실상 구분되지 않게 됩니다.

종합하면 Embedding Normalization을 적용한 모델은 (1) 학습 과정이 안정적으로 수렴했고 (2) 기존 정규화 기법을 그대로 썼을 때보다, 그리고 아예 정규화를 쓰지 않았을 때보다 CTR 예측 성능도 함께 향상됐습니다. “정규화 vs 성능”이라는 트레이드오프처럼 보였던 문제가, 사실은 “중요도를 지키는 정규화냐 아니냐”의 문제였다는 것을 보여준 결과였습니다.

이 연구는 Beomsu Kim, Buru Chang 님과 함께 진행했고 2021 ICDM 워크숍(ICDMW)에 출판되었으며, 감사하게도 해당 워크숍(NeuRec 2021)에서 Best Paper Award를 받았습니다.

이 자리에서 이 글의 출처를 솔직하게 밝혀둡니다. 이 논문은 아쉽게도 arXiv에는 올라가 있지 않고 IEEE Xplore에서만 볼 수 있습니다 (DOI: 10.1109/ICDMW53433.2021.00016). 이 글을 처음 쓸 당시에는 논문 원문에 실린 실험 표를 직접 가져와 싣고 싶어 arXiv, Semantic Scholar, ResearchGate, 저자 개인 페이지, NeuRec 워크숍 페이지, 제 컴퓨터에 남아있는 파일까지 두루 찾아봤지만 접근 가능한 원문 PDF를 확보하지 못해, 구체적인 수치 없이 글을 올렸습니다. 이후 개인 드라이브를 뒤지다가 논문이 정식 출판되기도 전인 2020년 11월 4일, HYPERCONNECT AI Lab 내부 세미나에서 같은 연구를 발표했던 슬라이드 원본을 발견해 한 차례 글을 보강했는데, 이 자료는 발표 시점(2020년 11월) 기준이라 4개 데이터셋·44개 실험 설정처럼 2021년 12월 최종 출판본과는 다른 중간 단계의 수치였습니다. 그런데 이번에 개인 드라이브에서 최종 출판본 PDF 원문을 직접 발견해 확인해보니, 실험 규모가 이후 6개 데이터셋·132개 실험 설정으로 늘어났고, 정리(Theorem) 번호도 3.1/3.2/3.3에서 1/2/3으로 정리됐으며, 슬라이드에 있던 “수렴 속도” 표는 최종 논문에서 반복 횟수 대비 로그 손실을 보여주는 그래프(Figure 2)로 형태가 바뀌었고, 임베딩 노름 분포 비교(Figure 3)도 대상 데이터셋과 모델이 달라졌습니다. 또한 슬라이드에는 없었던 Dummy Features·Label Shuffling·Head and Tail 실험(Figure 4)도 최종 논문에만 실려 있었습니다. 이번 글은 이 모든 내용을 최종 출판본 원문 기준으로 다시 바로잡았습니다 — 수식과 정리 자체(Theorem 1, 2, 3 및 EN 수식)는 슬라이드와 최종본이 동일했지만, 실험 데이터셋 목록·설정 개수·통계 수치·일부 그림은 이번에 모두 최종본 기준으로 교체했습니다. 참고로 앞서 참고했던 내부 세미나 슬라이드에는 이 논문과 무관한 사내 업무 내용과, 동료의 이름·사진이 담긴 부분도 함께 있었는데, 그런 부분은 이 글에 전혀 옮기지 않았습니다.

마치며

정리하면, Batch Normalization과 Layer Normalization은 조밀한 입력을 전제로 설계된 만능처럼 보이는 도구지만, CTR 예측의 피처 임베딩처럼 피처마다 중요도 편차가 큰 희소한 입력에는 그대로 옮겨 쓸 수 없었습니다. 정규화가 지켜야 할 것과 지우면 안 되는 것을 구분해서, “안정성은 얻고 중요도는 잃지 않는” 정규화를 설계한 것이 이 연구의 핵심입니다. 화려한 트릭 없이, 익숙한 도구를 별생각 없이 옮겨 쓸 때 생기는 사각지대를 짚어낸 결과였습니다.


Reference
  • (Yi et al., 2021) Yi, J., Kim, B., & Chang, B. (2021, December). Embedding normalization: Significance preserving feature normalization for click-through rate prediction. In 2021 International Conference on Data Mining Workshops (ICDMW) (pp. 91-94). IEEE.

  • (Ioffe & Szegedy, 2015) Ioffe, S., & Szegedy, C. (2015, June). Batch normalization: Accelerating deep network training by reducing internal covariate shift. In International Conference on Machine Learning (pp. 448-456). PMLR.

  • (Ba et al., 2016) Ba, J. L., Kiros, J. R., & Hinton, G. E. (2016). Layer normalization. arXiv preprint arXiv:1607.06450.