C.W.K.
Stream
Lesson 12 of 12 · published

Embedding 시각화 — 기하를 실제로 보기

~10 min · visualization, interpretability

Level 0Token
0 XP0/94 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

Embedding은 768-12,288 차원에 살아. 사람은 3차원에 살고. 그 격차를 메우려고 투영해 — t-SNEUMAP이 고차원 점을 local neighborhood 구조 보존하면서 2D/3D 플롯으로 압축하는 표준 도구 둘.

잘 학습된 embedding 시각화에서 보일 것: 동의어 단어들의 빽빽한 클러스터, 다른 품사들의 별개 섬, 일관된 방향(성별, 시제, 격식 수준) 따라 부드러운 gradient. 잘못 학습됐거나 편향된 embedding에서 보일 것: 학습 데이터 편향이 드러나는 클러스터, 의미적으로 다른 개념을 뭉뚱그리는 영역, 학습에 안 나온 희소 outlier.

이게 뭐에 쓰이나

Embedding 시각화는 그냥 예쁜 그림이 아니야 — 디버깅 도구야. fine-tune된 classifier가 두 카테고리를 헷갈리면 그 embedding centroid 플롯해. 겹치거나 너무 붙어 있으면 분류 head 도달 전에 입력 표현이 이미 병목. RAG retrieval에도 같은 논리 — 관련 문서랑 무관 문서가 같은 동네 끝나면 retriever가 구별 못 하고, downstream LLM의 어떤 영리함도 그걸 못 고쳐.

Code

Quick t-SNE plot·python
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt

words = ["cat", "dog", "kitten", "puppy",
         "car", "truck", "vehicle", "engine",
         "happy", "joyful", "sad", "depressed"]
vectors = np.stack([get_embedding(w) for w in words])

xy = TSNE(n_components=2, perplexity=5).fit_transform(vectors)
plt.scatter(xy[:, 0], xy[:, 1])
for (x, y), w in zip(xy, words):
    plt.annotate(w, (x, y))
plt.savefig('embeddings.png')
# Animals cluster, vehicles cluster, emotions cluster — clearly.

External links

Exercise

본인이 신경 쓰는 5개 카테고리에 걸친 100단어로 embedding 구성(동물, 음식, 감정, 프로그래밍 개념, 뭐든). t-SNE랑 UMAP 둘 다로 2D 투영. 나란히 플롯. 카테고리 클러스터가 깔끔한 곳이랑 서로 새는 곳 표시. 새는 게 '진짜'(의미 있는 겹침)인지 투영 아티팩트인지?

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.