본문 바로가기
Deep Learning/논문정리

GloVe : Global Vectors for Word Representation

by 대소기 2022. 2. 12.

Introduction

* 기존의 word vector를 학습하는 모델은 두 가지이다.

 

 

1) LSA

2) skip-gram

 

 

* LSA는 통계학적 정보를 최대로 이용하지만, 단어 유추 task에서는 성능이 좋지 않음.

* skip-gram은 단어 유추에서는 성능이 좋지만, 통계학적 정보를 활용하지 못한다.

 

 

 

The GloVe Model

 

* word occurence 통계에서 어떻게 의미가 생성되는지, 결과 벡터가 어떻게 단어의 뜻을 표현하는지는 알 수 없었다. 이를 해결하기 위해 GloVe가 만들어졌다.

 

 

Notation

* word-word co-occurrence matrix를 X라고 하자.

* matrix $X \in \mathbb R^{V \times V}$ 이다. vocabulary의 크기만큼의 size를 갖는 정방행렬이기 때문에 매우 크다.

* matrix X의 $X_{i, j}$ 원소는 word j가 word i의 context에 등장한 횟수를 뜻한다.

* $P(j | i) = X_{i j} / X_i$ 는 word i의 context에 word j가 등장할 확률을 뜻한다.

 

 

Motivation

 

* solid의 경우 ice와 관련이 있지만, steam과 관련이 없기 때문에 $P(k | ice) / P(k | steam)$의 값이 크다.

* 반대로 gas의 경우 ice와 관련이 없고 steam과 관련이 있기 때문에 $P(k | ice) / P(k | steam)$ 값이 작다.

* water, fashion과 같이 ice, steam 둘다 관련이 없는 단어들은 $P(k | ice) / P(k | steam)$ 값이 1에 가깝게 나온다.

* raw probabilities($P_{ik}, P_{jk}$)를 비교하는 것 보다 probability들의 ratio($P_{ik} / P_{jk}$)를 비교하는 것이 더 비교하기 좋다.

* 이러한 ratio를 구하는 함수를 F라고 했을 때 우리가 이 F를 찾아낸다면 단어들간의 관계를 파악하는 함수를 정의할 수 있게 될 것이다.

* 먼저 F함수가 어떤 구조인지는 아직 모르지만, F라고 두고 식의 골자를 생성해보자. 두 단어 i, j가 주어졌을 때 k의 등장확률에 대한 ratio를 나타내기 위해서는 $w_i, w_j, \tilde w_k$가 필요하다. 여기서 $w_i, w_j$은 단어 i와 j에 대한 embedding vector이고, $\tilde w_k$ context에 등장한 단어 k에 대한 embedding vector이다. 그렇다면 함수 F의 매개변수는 $w_i, w_j, \tilde w_k$가 될 것이다. 아래와 같이 식을 구성해 확률 정보를 vector space에 매핑해보자. 

 

* vector space는 linear 하므로 $w_i - w_j$라는 단어간의 관계(vector difference)를 대신 사용하자.

* 우변은 확률을 확률로 나눈 scalar value이기 때문에 우리가 모델링하려는 식 F의 출력 또한 scalar 값이 되어야 할 것이다. 이를 위해 벡터의 내적을 활용하면 아래 식과 같이 쓸 수 있다.

 

 

 

* 여기서 잠깐 동시발생 행렬을 생각해보자. 동시발생 행렬에서 target 단어와 context로 등장하는 단어는 구분되지 않는다. 예를 들어 위와 같은 동시발생 행렬에서 target단어에 해당하는 행과 context의 단어에 해당하는 열은 동일한 단어들로 이뤄져있다. 즉, target과 context의 관계는 자유롭게 바뀔 수 있다는 것이다. 

* 이러한 관계를 수식으로 표현하면 $w \leftrightarrow \tilde w$, $X \leftrightarrow X^T$ 로 쓸 수 있다.

* 이러한 자유로운 전환 관계가 성립하기 위해서는 함수 F가 $(\mathbb R, +), (\mathbb R_{>0}, *)$에 대해 Homomorphism해야 한다.

 

 

Homomorphism

 

* homomorphism이란 동일한 종류의 대수적 구조 사이에 정의된 대수적 구조를 보존하는 함수이다. 여기서 우리가 사용중인 대수적 구조는 선형 공간이다. 만약 두 동일한 대수적 구조를 가지는 그룹 $X, Y$가 존재할 때 homomorphism 을 만족하는 $f : X \rightarrow Y$ 는 $X$의 임의의 원소 $x, y$와 연산 $*$ 및 그에 대응되는 Y의 연산 $\circ$에 대해 $f(x * y) = f(x) \circ f(y)$ 조건을 만족해야 한다. 여기서 $*, \circ$는 임의의 연산을 뜻한다.

* 여기서 우리가 찾아내야 할 함수 F가 homomorphism을 만족하기 위해서는 그룹들 사이에 ($\mathbb R, +$), ($\mathbb R_{>0}, \times$) 가 성립해야 한다. 즉 덧셈 연산이 곱셈 연산으로 mapping되어야 하는 것이다. 수식으로 표현하자면 아래와 같다. 실수 공간의 임의의 원소 a, b에 대해 아래가 성립한다.

 

$F(a+b) = F(a) \times F(b)$

 

* 그런데 homomorphism은 inverse를 허용하기  때문에 덧셈의 inverse인 뺄셈과 곱셈의 inverse인 나누기로 치환할 수 있고 아래 식을 만족하는 것으로도 homomorphism이 성립한다고 할 수 있다.

 

$F(a - b) = F(a) / F(b)$

 

* 우리가 만든 식에서 $w \leftrightarrow \tilde w$ 관계와 $X \leftrightarrow X^T$ 관계가 성립하기 위해서는 다음이 성립한다고 가정한다.  $F((w_i - w_j )^T \tilde w_k) = F(w_i^T \tilde w_k - w_j^T \tilde w_k)$에서 $\alpha = w_i^T \tilde w_k$, $\beta = w_j^T \tilde w_k$ 라고 했을 때 $F(a) / F(b) = F(w_i^T \tilde w_k) / F(w_j^T \tilde w_k)$ 이다. 즉, 아래 수식이 성립한다.

 

$F((w_i - w_j )^T \tilde w_k) = {F(w_i^T \tilde w_k) \over F(w_j^T \tilde w_k)}$

 

* 여기서 우리가 구하려던 함수 F의 정체가 밝혀진다. homomorphism이 성립하기 위해서는 $F(a+b) = F(a) / F(b)$ 가 성립해야 했다. 이를 만족하기 위해서는 F가 지수함수 형태여야 한다 (지수함수의 연산의 경우 위 조건이 성립한다). 우리는 지수함수의 밑으로 자연상수 e를 사용할 것이다. 드디어 $F = e^x$라는 것 까지 밝혀내었다. F에 $e^x$를 대입해보자.

 

$F((w_i - w_j)^T \tilde w_k) = {F(w_i^T \tilde w_k) \over F(w_j^T \tilde w_k)} = {P_{ik} \over P_{jk}}$

$exp((w_i - w_j)^T \tilde w_k) = {exp(w_i^T \tilde w_k) \over exp(w_j^T \tilde w_k)} = {P_{ik} \over P_{jk}}$

 

* 위 식에 따르면 $exp(w_i^T \tilde w_k) = P_{ik}$ 이고, 여기에 log를 씌우면

 

$w_i^T \tilde w_k = log P_{ik} = log X_{ik} - log X_i$

 

* 여기서 $log X_i $를 bias $b_i + \tilde b_k$ 로 치환하면 아래와 같아진다.

 

$w_i^T \tilde w_k = log X_{ik} - b_i - \tilde b_k$

$w_i^T \tilde w_k + b_i +\tilde b_k = log X_{ik}$

 

 

Loss Function

 

* loss를 구하기 위해 least squared regression mdoel을 사용할 것이다. 

* 이를 위해 예측 값 ($w_i^T \tilde w_k + b_i + \tilde b_k$) 과 실제 값 log(X_{ik})의 차이를 제곱한 값을 loss로 사용할 것이다. 

* 단, corpus의 통계적 특징을 잘 반영하기 위해 빈도가 높은 관계일 수록 가중치를 더 주는 방식을 사용할 것이다. 이를 위해 가중치 $f(X_{ij})$를 곱한다. 

* V는 vocabulary의 size를 뜻한다. 

* 여기서 $f(X_{ij})$는 아래 3가지 rule을 따라야 한다.

 

1) $f(0) = 0$이다. 

- $log(0)$이 $-\infty$가 되는 것을 막기 위해서이다.

 

2) $f(x)$는 non-decreasing 함수여야 한다.

- 낮은 빈도로 동시발생하는 것에 대해 overweighted 되지 않는다. 

 

3) $f(x)$ 는 x값이 매우 커져도 너무 큰 값을 가지면 안된다.

- 그래야 동시발생 빈도가 높은 단어에 가중치가 너무 커지지 않는다.

 

* 위 3가지 rule을 모두 만족시키는 함수로서 제시된 함수는 아래와 같다.

* 여기서 경험적으로 적절한 $\alpha$ 값은 3/4이고, $x_max = 100$ 이다. 

* $x_max$가 100으로 설정되었다는 것은 100번 이상 등장한 단어에 대해서는 가중치를 1로 통일하겠다는 의미이다.

 

 

 

 

 

 

 

 

 

https://www.youtube.com/watch?v=JZI74rrMb_M 

http://yonghee.io/glove/

 

Glove 논문 리뷰: 이론부터 수식까지 총정리

Word Embedding 2탄, Glove를 살펴봅니다.

yonghee.io