딥러닝에서 norm은 자주 등장합니다. 이유와 목적, 그리고 위 코드에서의 역할까지 차근차근 설명드리겠습니다.



1. norm이란?

norm은 벡터의 크기(길이) 를 재는 함수입니다.
수학적으로는 벡터를 원점에서 얼마나 떨어진 위치에 있는지를 나타내는 값입니다.

예를 들어, 3차원 벡터 3, 4, 0의 norm은 피타고라스 정리처럼 계산됩니다.

√(3² + 4² + 0²) = √(9 + 16) = √25 = 5

이런 식으로 norm은 벡터가 얼마나 “큰지”를 알려주는 지표입니다.
주로 L2 norm을 쓰는데, 이는 유클리드 거리와 동일합니다.



2. 딥러닝에서 norm이 왜 자주 등장하는가?

벡터를 비교하거나 조작할 때, 크기를 통일하거나 무시해야 할 때가 많기 때문입니다.
특히 아래 상황에서 norm이 중요합니다.
정규화(normalization): 크기를 1로 만들어서 방향만 비교하기
유사도 계산: 두 벡터가 비슷한지 비교할 때 norm으로 나눠야 공정함
수치 안정성: 벡터가 너무 커지면 학습이 불안정해질 수 있으므로, 크기를 조절



3. 위 코드에서 norm이 왜 쓰였는가?

image_embeds_norm = image_embeds / image_embeds.norm(dim=-1, keepdim=True)
이 줄에서 하고 있는 일은 정규화입니다. 즉, 벡터의 크기를 1로 맞추는 작업입니다.

그 이유는 두 벡터의 유사도를 비교할 때 코사인 유사도(cosine similarity) 를 쓰기 위해서입니다.

코사인 유사도 공식은 다음과 같습니다.

cosine_similarity(a, b) = (a · b) / (‖a‖ * ‖b‖)

하지만 a와 b를 먼저 크기 1로 만들면, 위 식은 그냥 내적(a · b)으로 바뀝니다.
이렇게 하면 훨씬 간단하고 계산도 빠릅니다. 그래서 norm으로 나눠 정규화하는 겁니다.



4. 정리
norm은 벡터의 크기를 의미한다.
딥러닝에서는 벡터 간 비교, 정규화, 수치 안정성을 위해 자주 쓰인다.
• 위 코드에서는 코사인 유사도를 계산하기 위해 벡터 크기를 1로 맞추는 용도로 사용됐다.

추가로, 모델 훈련 중에도 gradient norm clipping, weight normalization 등에서 norm이 많이 등장합니다.
모든 상황에서 norm의 핵심 역할은 “벡터의 크기 조절과 비교”입니다.

반응형

+ Recent posts