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

의미 산수 — king − man + woman ≈ queen

~10 min · semantics, intuition

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

word2vec(Mikolov et al., 2013)의 그 유명한 결과는 embedding이 임의의 코드가 아니라 구조화된 의미를 인코딩한다는 가장 깔끔한 존재 증명이야. 학습된 embedding 공간에서 "king" 벡터에서 "man" 빼고 "woman" 더하면, 가장 가까운 게 "queen" 벡터.

직관: embedding 공간 안에 어떤 방향들은 일관된 의미 관계와 대응돼. "king"에서 "man"을 빼면 royalty + 남성성을 인코딩하는 벡터가 분리. "woman"을 더하면 남성성 성분이 여성성으로 교체. 결과가 "queen" 근처에 도착.

다른 고전 예시: Paris − France + Italy ≈ Rome; walking − walk + swim ≈ swimming; good − bad + evil ≈ malevolent. 완벽하진 않아 — 일부 관계 부분집합에 대해 근사적으로 성립할 뿐이고, 모던 Transformer embedding(lookup 뿐 아니라 컨텍스트까지 포함)은 단순 단어 단위 analogy가 시사하는 것보다 훨씬 풍부한 구조를 잡아.

Code

Run the analogy yourself·python
import numpy as np

def analogy(a, b, c, embeddings, vocab, k=5):
    # a is to b as c is to ? -> find token closest to (b - a + c)
    va, vb, vc = embeddings[vocab[a]], embeddings[vocab[b]], embeddings[vocab[c]]
    target = vb - va + vc
    sims = embeddings @ target / (
        np.linalg.norm(embeddings, axis=1) * np.linalg.norm(target) + 1e-9
    )
    # Exclude the input tokens themselves so we don't 'cheat'
    for tok in (a, b, c):
        sims[vocab[tok]] = -1
    top = sims.argsort()[::-1][:k]
    inv = {v: k for k, v in vocab.items()}
    return [inv[i] for i in top]

# analogy("man", "king", "woman", emb, vocab) -> ['queen', ...]

External links

Exercise

GPT-2 embedding 행렬로 본인이 신경 쓰는 페어 10개에 대해 analogy(a, b, c) 실행. 절반은 '쉬운 것'(수도-나라, 성별, 시제), 절반은 어려운 것(직업→도구, 추상 개념, 다중 단어). top-5 결과 표로 정리. analogy가 어디서 실패하고 이유는?

Progress

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

댓글 0

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

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