반응형
250x250
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

Leo's Garage

GloVe vs CBOW: 내적(dot product)와 PMI로 이해하는 word embedding 본문

Study/AI ML

GloVe vs CBOW: 내적(dot product)와 PMI로 이해하는 word embedding

LeoBehindK 2026. 2. 18. 14:53
728x90
반응형

word embedding은 단어를 벡터로 바꿔서 의미를 수학적으로 다루는 방법이다.

우리가 진짜로 얻고 싶은건 단어 백터 $w$인데, 말뭉치에서 직접 관측되는 건 단어가 어디서, 어떤 단어와 함께 등장했는지(분포) 뿐이다.

그래서 거의 모든 임베딩은 아래 가정에서 출발한다.

비슷한 의미의 단어는 비슷한 문맥에서 등장한다. (Distributional Hypothesis)

이번 글은 아래 3가지를 "하나의 관점(내적, PMI)"으로 정리하고자 한다.

  1. 내적이 임베딩에서 뭘 의미하는지
  2. PMI/PPMI가 왜 자꾸 나오는지
  3. GloVe, CBOW가 각각 어떻게 학습되는지 

출처

 

  • GloVe: Pennington, Socher, Manning (2014), GloVe: Global Vectors for Word Representation (EMNLP 2014)
  • CBOW (word2vec): Mikolov et al. (2013), Efficient Estimation of Word Representations in Vector Space (arXiv 2013)
    (CBOW/Skip-gram 프레임워크 제시)

 

추가로 "PMI와 예측 기반 임베딩(word2vec)의 연결"을 이론적으로 설명할 때는 "Levy & Goldberg (2014)"가 자주 인용된다.

 

임베딩에서 내적은 무슨 의미일까?

단어 벡터 $w_i$와 $w_j$가 있을 때, 내적 $w_i^Tw_j$는 보통 이렇게 해석한다. 

  • 내적이 크다: 두 단어가 비슷한 문맥에서 자주 등장, 의미/관련성이 크다
  • 내적이 작다: 문맥이 다르다, 의미적으로 멀다

즉, 임베딩 학습은 결국

말뭉치에서 관측한 단어 관계를, 벡터 공간의 내적 값으로 옮겨 심는 과정

이라고 보면 된다. 

 

PMI: "같이 등장"을 정보량으로 바꾸는 점수

공동출현을 그냥 횟수로만 보면 문제가 있다. 

  • 단어 자체가 흔하면(예: the, of) 누구랑도 많이 같이 나옴
  • 그러면 "진짜로 특별한 관계"인지 판단이 어렵다.

그래서 등장 빈도(독립 가정) 대비 "얼마나 더 같이 나왔는지"를 재는 스코어가 필요하고, 그게  PMI이다.

$$ PMI(i,j)=log \frac{P(i,j)}{P(i)P(j)}$$

  • PMI가 높다: 독립이라면 이 정도로 같이 나올 이유가 없는데, 실제로는 훨씬 더 같이 나온다.
  • PMI = 0: 거의 독립
  • PMI < 0: 오히려 같이 안 나오는 편

실무에서는 PMI의 음수를 잘라서 쓰는 PPMI도 흔하다.

$$PPMI(i,j)=max(PMI(i,j),0)$$

 

GloVe: 전역 공동출현 행렬  $X$을 "벡터 내적"으로 재현하는 방식

단어 $i$와 $j$가 자주 같이 등장했다면, 그 두 백터의 내적도 커야 한다. 

학습 방법

  1. 말뭉치에서 window를 정하고 공동출현 횟수를 센다.
  2. $X_{ij}$: 단어 $i$ 주변에서 $j$가 나온 횟수
  3. 그리고 벡터를 찾아서 아래가 맞도록 만든다.

$$w_i^T\tilde{w_j}+b_i+\tilde{b_j} \approx logX_{ij}$$

왜 log를 쓰냐면, 공동출현 횟수는 스케일이 너무 극단적(긴 꼬리, 예를 들어 10회, 100회, 1000회가 나오면 상대적으로 적은 수는 안보임)이라 로그로 눌러야 학습이 안정되기 때문이다.

보통은 희귀/빈번 쌍이 학습을 망치지 않도록 가중치 $f(X_{ij})$를 둔다.

$$min \sum_{i,j}f(X_{i,j})( w_i^T\tilde{w_j}+b_i+\tilde{b_j} - logX_{ij})^2$$

PMI와 관련성

PMI는 본질적으로 "공동출현 로그값"에서 "개별 빈도 로그값"을 빼는 구조이다.

GloVe는 $logX_{i,j}$를 직접 맞추고, bias 항들이 단어 빈도(행/열 합) 성분을 흡수하면서 결과적으로 PMI류의 연관 구조를 저차원 내적으로 담기 쉬운 형태가 된다. 

정리하면:

GloVe = (전역) 공동출현 통계의 구조를 벡터 내적으로 근사하는 행렬 근사 계열

 

CBOW(word2vec): 주변 단어로 중심 단어를 예측하면서 벡터를 학습

주변 단어들을 보고, 가운데 단어를 맞히게 훈련하면 의미가 벡터에 들어간다.

학습 방법

CBOW는 $X$ 같은 전역 행렬을 만들지 않고, 문장에서 계속 샘플을 뽑는다.

  • 입력(context): 주변 단어들
  • 출력(target): 중심 단어

주변 단어들의 입력 임베딩 $v_c$를 평균 내어 문맥 벡터를 만들고:

$$h=\frac{1}{\left| C \right|}\sum_{c \in C}v_c$$

그 문맥에서 단어 $w$가 정답일 점수(logit)는 내적으로 계산한다. 

$$s(w)=u_w^Th$$

softmax로 확률을 만들고 정답 확률을 키우도록 학습한다.

$$  P(w|C)= \frac{exp(u_w^Th)}{\sum_{w'}exp(u_{w'}^Th)}, \,\,\, L =-logP(t|C) $$ 

전체 softmax가 비써서 보통은 정답 1개 + 가짜 몇 개만 비교하는 Negative Sampling을 쓴다.

$$max\,log\,\sigma(u_t^Th)+\sum_{k=1}^Klog\,\sigma(-u_{n_k}^Th)$$

  • 정답 $t$는 내적을 크게
  • 가짜 $n_k$는 내적을 작게

즉, 내적이 곧 정답 점수이다. 

 

CBOW도 PMI를 학습하는 건가?

표면적으로는 달라보이지만, 큰 방향은 같다

  • PMI는 "우연 대비 같이 등장"을 강조
  • CBOW/NS는 "맞히기 쉬운(자주 등장하는) 관계는 내적을 키우고, 아닌 건 줄이는" 방식

그래서 충분히 학습되면

PMI가 큰 단어쌍일 수록 내적이 커지는 방향

으로 정렬되는 경향이 생기고, 이것이 "카운트 기반(PMI/PPMI) - 예측기반(word2sec)이 연결된다고 말하는 이유이다. 

728x90
반응형

'Study > AI ML' 카테고리의 다른 글

Softmax 함수에 대하여  (1) 2026.02.18