Q&A Knowledge Note · 2026-05-19
Embedding 기초 Q&A
MobileCLIP2 embedding 설명 중 나온 질문을 질문, 답변, 지식 포인트 형태로 정리한다. 최초 질문은 Sprint 1의 S4/13-class 기준이었지만, 현재 설명은 S3/S4와 23-class 앱 후보에도 적용한다. 이후 비슷한 질문이 생기면 같은 형식으로 추가한다.
Q1. L2 정규화는 왜 쓰는가?
질문: L2 정규화라는 것은 알겠는데, 왜 이걸 쓰는가?
답변: 벡터의 크기 영향을 제거하고 방향만 비교하기 위해 쓴다. Embedding을 화살표라고 보면, 화살표 길이가 큰 벡터가 의미와 상관없이 높은 점수를 받는 일을 막기 위해 모든 embedding의 길이를 1로 맞춘다.
정규화 전:
점수 = 방향 유사도 + 벡터 크기 영향
정규화 후:
점수 = 방향 유사도 중심
지식 포인트: CLIP류 embedding 비교에서는 보통 L2 정규화 후 cosine similarity를 사용한다.
Q2. 여기서 방향이란 무엇인가?
질문: 방향이라는 것이 정확히 무엇인가?
답변: 실제 사진 속 물리적 방향이 아니다. 여기서 방향은 embedding 공간에서의 의미적 위치를 말한다. 모델이 이미지를 보고 만든 512개의 숫자를 좌표라고 보면, 비슷한 의미의 이미지들은 비슷한 방향에 놓인다.
물리적 방향이 아님:
"건물이 오른쪽을 보고 있다" 같은 뜻이 아니다.
Embedding 방향:
모델이 내부적으로 만든 의미 좌표계에서 어느 쪽을 가리키는가.
2차원으로 단순화하면 아래처럼 생각할 수 있다. 실제 모델은 512차원이지만, 이해를 위해 축을 2개만 그린 것이다.
지식 포인트: 방향이 비슷하다는 것은 “모델이 보기에는 의미적 특징 조합이 비슷하다”는 뜻이다.
Q3. 길이는 세기인가?
질문: 벡터의 길이라는 것이 세기 같은 것인가?
답변: 대략 “전체 출력 크기” 또는 “세기”에 가깝게 이해해도 된다.
예를 들어 [3, 4, 0]과 [0.3, 0.4, 0]은 방향은 같지만 길이가 다르다.
A = [3, 4, 0]
B = [0.3, 0.4, 0]
A의 길이 = 5
B의 길이 = 0.5
하지만 비율은 같다.
3:4:0 = 0.3:0.4:0
따라서 방향은 같다.
L2 정규화를 하면 둘은 같은 방향으로 취급된다.
[3, 4, 0] -> [0.6, 0.8, 0]
[0.3, 0.4, 0] -> [0.6, 0.8, 0]
지식 포인트: 길이는 전체 숫자 크기이고, 방향은 숫자들의 비율 또는 의미 조합이다.
Q4. C 방향을 강하게 가리키면 C일 확률이 높은 것 아닌가?
질문: A가 3, B가 2, C가 6이라면 C 방향을 강하게 가리키는 것이고, 그러면 C일 확률이 높은 것 아닌가?
답변: 그 숫자가 classifier의 class 점수라면 맞다. 하지만 embedding에서는 각 숫자가 class에 직접 대응하지 않는다.
| 구분 | 숫자의 의미 | 해석 |
|---|---|---|
| Classifier logit | [고양이 점수, 강아지 점수, 토끼 점수] |
큰 class가 더 유력하다. |
| Embedding vector | [의미좌표1, 의미좌표2, 의미좌표3, ...] |
각 숫자를 class 확률로 해석하면 안 된다. |
우리 앱의 검색 점수는 classifier softmax가 아니라 embedding과 prototype 사이의 cosine similarity다.
Classifier 방식:
이미지 -> [class별 logit] -> softmax -> class 확률처럼 해석 가능
Embedding 검색 방식:
이미지 -> embedding
embedding vs prototype -> cosine similarity
지식 포인트: “숫자가 크다 = 해당 class일 확률이 높다”는 classifier 출력에서만 직접적으로 맞는 말이다.
Q5. 현재 이해 정리
질문: 아래 이해가 맞는가?
1. 우리 CLIP 모델은 classifier가 아니라 embedding 방식이다.
2. 방향이 비슷하면 의미가 비슷하다.
3. 정답 이미지 n장 또는 그 평균 prototype과 의미가 얼마나 비슷한지 비교한다.
4. 의미만 공평하게 비교하기 위해 L2 정규화를 한다.
답변: 거의 맞다. 다만 1번은 조금 보정해야 한다. 기본 MobileCLIP2는 embedding 모델이지만, 우리 프로젝트는 학습 과정에서 classifier head를 붙여 landmark class를 분류하도록 학습했다. 하지만 데모앱 검색 점수는 classifier 확률이 아니라 embedding 유사도 기반이다.
정확한 표현:
MobileCLIP2는 기본적으로 이미지와 텍스트를 embedding으로 바꾸는 모델이다.
우리는 그 위에 classifier head를 붙여 현재 지원 랜드마크 분류 학습을 했다.
하지만 데모앱의 이미지 검색 점수는 입력 이미지 embedding과 랜드마크 prototype embedding의 cosine similarity다.
지식 포인트: 학습은 classifier를 써서 했더라도, 서비스 검색은 embedding retrieval 방식일 수 있다.
다음에 이어 붙일 질문 형식
새 질문은 아래 구조로 추가하면 된다.
<section class="section">
<h2>Q6. 질문 제목</h2>
<p><strong>질문:</strong> 실제 질문</p>
<p><strong>답변:</strong> 쉬운 설명</p>
<p><strong>지식 포인트:</strong> 앞으로 기억할 핵심</p>
</section>
이 지식을 이해할 때 참고해볼만한 자료
L2 정규화와 cosine similarity는 구현 문서로 확인하는 것이 가장 정확하다. CLIP embedding의 의미는 원 논문과 OpenAI 소개 글을 함께 보면 좋다.
- PyTorch normalize 문서 — L2 정규화가 실제 함수로 어떻게 제공되는지 확인.
- PyTorch cosine_similarity 문서 — 두 vector의 방향 유사도 계산 방식 확인.
- CLIP 원 논문 — 이미지와 텍스트를 같은 embedding space에서 비교하는 배경 이해.
- OpenAI CLIP 소개 — CLIP 개념을 논문보다 가볍게 먼저 볼 때 유용.