Representation learning에서 loss나 similarity metric을 고를 때 가장 자주 등장하는 선택지가 cosine similarity와 L2 distance다. 오늘 이 글에서는 두 metric이 만드는 representation의 자유도 차이, collapse 방지, noise sensitivity라는 관점에서 cosine과 L2의 차이를 정리해본다.
Cosine similarity
Cosine similarity는 두 벡터의 방향(angle)만을 비교한다. 이 말은 다르게 표현하면, 사실상 모든 representation을 unit hypersphere 위로 투영해서 비교하는 것과 같다.

👉 모델은 “얼마나 멀리 갔는가”가 아니라
👉 “어느 방향을 가리키는가”만 신경 쓰게 된다.
👉 이 말은 feature들 사이에 크기의 비율만 보겠다는 말과 같다
- 즉, [1,2,3]과 [100,200,300]은 같은 vector이다.
L2 distance
L2 distance는 우리가 가장 익숙한 유클리드 거리다.

여기서는
- 방향 차이
- norm 차이
가 모두 의미를 가진다.
같은 방향을 가리키더라도, 크기가 다르면 멀다고 판단한다.
---------------------------------------------------------------------------------------------------------------------------------------------------------------
자유도 관점
- cosine: D−1 자유도 (반지름 제거)
- L2: D 자유도 (전체 공간 사용)
즉, L2는 cosine보다 더 많은 자유도를 가진 공간을 다룬다고 볼 수 있다.
Collapse 관점
L2를 사용하면, 모든 representation이 0으로 붕괴해버리는 collapse가 발생할 수 있는 반면, cos을 사용하면 적어도 모든 representation이 0 벡터로 collapse되는 상황은 구조적으로 불가능하다.
왜냐하면:
- cosine은 norm으로 나누기 때문에
- 0 벡터는 정의 자체가 되지 않는다
그래서 실제로 cosine 기반 objective는
- trivial zero-solution을 자연스럽게 배제하고
- “적어도 방향은 달라야 한다”는 최소한의 구조를 강제한다
이 점은 self-supervised learning에서 cosine이 자주 쓰이는 중요한 이유 중 하나다.
반면 L2 distance를 사용할 경우,
- 모든 representation이 동일한 상수 벡터 (심지어 0 벡터)로 collapse되는 해가
- 수학적으로 유효한 최소값이 되는 경우가 많다
물론 실제 시스템에서는
- normalization
- variance regularization
- negative samples
- architectural constraints
등으로 이를 막지만, L2 자체는 0-collapse를 구조적으로 방지하지는 않는다.
Noise sensitivity 관점
Cosine은 norm 정보를 제거하기 때문에:
- feature 전체 스케일이 흔들리는 noise
- activation magnitude의 불안정성
에 덜 민감하다.
작은 잡음이 representation의 길이만 흔들고 방향은 유지한다면,
cosine similarity는 거의 변하지 않는다.
👉 그래서 cosine 기반 표현은
- 스케일 노이즈
- activation drift
에 대해 상대적으로 안정적이다.
반면 L2는 norm 차이까지 그대로 거리로 반영한다.
즉,
- 작은 magnitude noise
- channel-wise scale 변화
도 곧바로 distance 증가로 이어진다.
이 때문에 L2 기반 학습은:
- 더 많은 표현력을 허용하는 대신
- 더 정교한 regularization과 안정화가 필요하다
한 문장 요약
- Cosine은 representation을 ‘방향의 공간’으로 제한해 안정성을 얻고, L2는 ‘전체 공간’을 사용해 표현력을 얻는다.
- 둘 중 무엇이 더 좋다기보다는, 어떤 자유도를 모델에게 허용할 것인가의 선택에 가깝다.
'AI 기본 지식' 카테고리의 다른 글
| video를 보고 학습한 image encoder가 가져야 할 자질 (0) | 2026.02.01 |
|---|---|
| Categorization of Self-Supervised Learning Methods for Computer Vision (0) | 2026.01.29 |
| PyTorch에서 모델을 Save / Load하는 방식 (0) | 2026.01.21 |
| Pytorch로 딥러닝 훈련할 때 weight가 업데이트 되는 process (0) | 2026.01.21 |
| invariant vs equivariant (0) | 2026.01.20 |