Post

Paper Review - [EMNLP 2014]"GloVe, Global Vectors for Word Representation" by Pennington et al., 2014

Conference : EMNLP(Empirical Methods in Natural Language Processing), 2014

논문 Link

1. Contributions

본 논문은 Word Analogy Task에서 SOTA를 달성한 Model을 소개했을 뿐만 아니라, 지금까지 불투명했던 성능들에 있어서 수학적인 근거를 제시했습니다. 또한, 논문에서 새로운 Model로 Global log-bilinear regression model을 제안했습니다. 당시에 Word를 Vector로 표현하면서, Semantic and Syntactic Regularities 포착하는 것에 성공했지만, Regularity의 구체적인 기원은 불투명한 상태라고 했습니다. Global log-bilinear regression model은 Global Matrix Factorization(Such as LSA)과 Local Context Window(Such as Skip-gram)의 이점들을 결합하여 Word Analogy Task에서 75%의 Accuracy로 SOTA를 달성했다고 합니다.


2. Backgrounds

  • 2-1. Latent Semantic Analysis(LSA) and Skip-gram

LSA의 기본 아이디어는 대량의 텍스트 데이터에서 단어와 문서 사이의 관계를 분석하여, 그 과정에서 발생하는 의미적 구조를 파악하는 것입니다. 이를 통해 단어와 문서를 저차원의 의미적 공간에 매핑하게 됩니다. 구체적으로 LSA는 다음과 같은 과정을 통해 수행됩니다

  • LSA의 첫 단계는 term-document 행렬을 생성하는 것입니다. 이 행렬에서 행은 개별 단어(또는 텀)를 나타내고, 열은 문서를 나타냅니다.
  • 행렬의 각 요소는 해당 단어가 문서에 나타나는 빈도(Term Frequency)를 나타냅니다. 때때로 TF-IDF(Term Frequency-Inverse Document Frequency) 가중치를 적용하여 단어의 중요도를 조정하기도 합니다.

LSA는 통계적 정보를 활용하는 데에 있어서 잘 작동하나, word analogy task에서는 부진합니다. 이와 반대로 Skip-gram과 같은 방법론은 analogy task에서 성능이 좋으나, corpus의 통계적 특성을 활용하는 데에 있어서는 부진합니다.

⇒ Global Log-bilinear Regression model이 위 두 모델들의 단점을 보완하며 결합한 Model입니다.

  • 2-2. Matrix Factorization Methods

    • 행렬 분해 방법은 LSA(Latent Semantic Analysis)와 같은 초기 기법에서부터 발전해 왔으며, corpus의 통계적 정보를 포착하기 위해 큰 행렬을 낮은 순위의 근사치로 분해합니다.
    • term-document 행렬: LSA에서 사용되는 term-document 행렬은 행이 단어를, 열이 문서를 나타냅니다.
    • term-term 행렬: HAL(Hyperspace Analogue to Language)과 같은 기법에서는 term-term 행렬을 사용하여, 행과 열 모두 단어를 나타내고, 각 항목 값은 특정 단어가 다른 단어의 문맥 내에서 나타나는 횟수를 나타냅니다.
    • 문제점: HAL과 유사한 방법의 주요 문제는 가장 빈번한 단어가 유사도 측정에 과도하게 영향을 미치는 것입니다.
    • 개선책: COALS 방법에서는 co-occurence 행렬을 entropy 또는 correlation 기반으로 정규화하여 co-occurence 횟수를 더 작은 구간에 고르게 분포시키는 변환을 사용합니다.
  • 2-3. Shallow Window-Based Methods

    • 위 방법은 Local Context Window내에서 예측을 통해 단어 표현을 학습합니다. 이는 단어와 그 문맥 사이의 관계를 Modeling하는 방식입니다.
    • 예시: Skip-gram과 CBOW 모델은 두 단어 벡터 간의 내적을 기반으로 한 단일 계층 아키텍처를 사용합니다.
      • Skip-gram은 주어진 단어를 바탕으로 문맥을 예측합니다.
      • CBOW는 주어진 문맥을 바탕으로 단어를 예측합니다.
    • 성능: 이러한 모델들은 단어 유추 task에서 단어 벡터 간의 언어적 패턴을 선형 관계로 학습하는 능력을 입증했습니다.
    • 단점: Shallow Window-based Method는 corpus의 co-occurence 통계에 직접 작용하지 않으며, 전체 corpus를 살펴보는 방식으로 작동하기 때문에 데이터 내의 반복되는 패턴을 충분히 활용하지 못합니다.

3. Methodology

  • 3-1. The GloVe Model

GloVe Model은 Corpus(전체 집합)에서 단어 출현(빈도)의 통계적 특성(분포)이 Word Vector에서 어떻게 단어의 의미를 표현하는지 설명을 하고자 했습니다. 그 과정에서 GloVe Model의 Modeling에 대한 과정을 살펴봐야 합니다. 수학적인 수식들이 조금 있지만 차근차근 설명해보겠습니다.

$Let$

\(X = [X]_{ij}\) , ($X_{ij}$ 는 단어 i의 문맥에서 단어 j가 등장한 횟수를 Count한 것입니다.)

$X_{i} = \sum_{k} X_{ik}$ , ($X_{i}$는 단어 i의 전체 출현 횟수라고 볼 수 있습니다.)

$P_{ij} = P(j|i) = X_{ij} / X_{i} = X_{ij}/\sum_{j}X_{ij}$, ($P_{ij}$는 단어 i의 전체 빈도 중에서 단어 j와의 Co-occurence가 차지하는 비율(확률)이라고 볼 수 있습니다.)

이제 예시로 단어 출현의 통계적 특성이 Word Embedding에 어떻게 쓰일 수 있는지 예시로 살펴보겠습니다. 논문에서는 다음과 같은 표를 제시했습니다.

.

열역학적인 예시이지만, 어렵지 않습니다. $ice$와 $steam$은 온도를 의미하는 것이고 온도에 따라 $solid, gas, water$ 와 $fashion$ 중에서 적절한 상태가 있을 것입니다. 예컨대$, ice$는 $solid$와 연관이 깊을 것이고, $steam$은 $gas$와 연관이 있을 것입니다.

$k = solid$라 했을 때, $ice$와 연관이 깊고, $steam$과 연관이 낮은 것은 $P(k|ice)$ 와 $P(k|steam)$을 통해 살펴볼 수 있습니다.

\[\frac{P_{ik}}{P_{jk}} = \frac{P(k|i)}{P(k|j)} = \frac{\frac{X_{ik}}{X_{i}}}{\frac{X_{jk}}{X_j}} = \frac{\text{단어 i의 전체 빈도 중 k의 비율}}{\text{단어 j의 전체 빈도 중 k의 비율}}\]

이 수식을 잘 생각해보면, $\frac{P_{ik}}{P_{jk}}$의 값이 클 수록 $i$와 $k$의 연관이 비교적 깊어지고, 값이 작을 수록 $j$와 $k$의 연관이 비교적 깊다는 것을 알 수 있습니다. 따라서 $k = solid$일 때, $P(k|ice) / P(k|steam)$의 값이 크게 나오는 것은 꽤나 직관적입니다. 나머지 예시들도 마찬가지입니다.

이제 위의 수식을 Model에서 활용하기 위해 변환해가는 과정을 확인하겠습니다. 먼저, 위의 수식을 General한 함수 $F$로 표현해줍니다. 식에 조작을 가해가면서 다음의 식을 만족하는 함수 $F$를 찾는 것이 목표입니다.

\[F(w_i, w_j, \tilde{w}_k) = \frac{P_{ik}}{P_{jk}}, \quad w, \tilde{w} \in \mathbb{R}^d\]

여기서 $w$는 word vector이며, $\tilde{w}$는 context word vector입니다. Context word vector는 그 단어가 등장할 때 주변에 어떤 단어들이 함께 나타나는지의 패턴을 Modeling하는 데 사용됩니다. 여기서 vector space는 Linear property가 있어서 수식을 다음과 같이 표현할 수 있습니다.

\[F(w_i- w_j, \tilde{w}_k) = \frac{P_{ik}}{P_{jk}}, \quad w, \tilde{w} \in \mathbb{R}^d\]

그러나 아직 좌변은 벡터인 반면에 우변은 스칼라라는 문제점이 있습니다. 이를 맞춰주기 위해, 좌변을 내적의 형태로 표현해줍니다.

\[F((w_i- w_j)^T \tilde{w}_k) = \frac{P_{ik}}{P_{jk}}, \quad w, \tilde{w} \in \mathbb{R}^d\]

마지막으로 중요한 부분이 남았습니다. 사실 word와 context word는 서로 역할이 바뀔 수 있습니다. A문장에서는 word였던 것이 B문장에서는 context word로 쓰일 수 있고 반대도 마찬가지입니다. 이것이 수학에서는 Symmetric하다는 property로 반영이 되어야합니다. 그러나, 위의 수식은 Symmetric을 만족하지 못합니다. 따라서 Symmetric을 만족하게 만들기 위해서 $F$는 $(R,+)$와 $(R_{>0}, X)$사이에서 Homomorphism을 만족한다고 가정합니다.

  • Homomorphism
\[F((ice - steam)^T solid) = \frac{P(solid|ice)}{P(solid|steam)} = \frac{1}{F((steam - ice)^T solid)}\]

와 같이 되는 함수 $F$를 Homomorphic하다고 하는데요. 쉽게 말하면, 입력으로 덧셈의 역원을 넣어 주었을 때 함수의 출력값으로는 곱셈의 역원이 나오는 성질을 말합니다. (e.g $F(a-b) = \frac{F(a)}{F(b)}$). 함수 $F$가 Homomorphic하다고 설정을 해주면, $F$는 $(R,+)$를 $(R_{>0}, X)$ mapping할 수 있는 함수가 되며, 다음과 같이 식에 조작을 가할 수 있습니다.

\[w_{i}^T \tilde{w}_k = (w_{i} - w_{j})^T \tilde{w}_k + w_{j}^T \tilde{w}_k\] \[=> F(w_{i}^T \tilde{w}_k) = F((w_{i} - w_{j})^T \tilde{w}_k + w_{j}^T \tilde{w}_k)\] \[=> F(w_{i}^T \tilde{w}_k) = F((w_{i} - w_{j})^T \tilde{w}_k )* F(w_{j}^T \tilde{w}_k) (by Homomorphism)\] \[=> F((w_i- w_j)^T \tilde{w}_k) = \frac{F(w_{i}^T \tilde{w}_{k})}{F(w_{j}^T \tilde{w}_{k})} = \frac{P_{ik}}{P_{jk}} , \quad w, \tilde{w}\in \mathbb{R}^d\]

로 표현할 수 있으며, 위 과정에서 \(1) F(w_{i}^T \tilde{w}_{k}) = P_{ik}\) 임을 알았고,

\[F(w_i^T \tilde{w}_k - w_j^T \tilde{w}_k) = \frac{F(w_{i}^T \tilde{w}_{k})}{F(w_{j}^T \tilde{w}_{k})}, \quad w, \tilde{w} \in \mathbb{R}^d\]

을 통해서 $2)F$는 exponential이라는 것을 알 수 있습니다. \(F(w_{i}^T\tilde{w}_k) = \exp(w_{i}^T\tilde{w}_k) = P_{ik} = \frac{X_{ik}}{X_{i}}\) 를 상기하며, $1)$ 과 $2)$를 연립하면, \(w_i^T \tilde{w}_k = \log(P_{ik}) = \log(X_{ik}) - \log(X_{i})\)라는 것을 알 수 있습니다. 마지막으로 $\log(X_{i})$는 여전히 Symmetric하지 않습니다. 논문에서는 이것을 bias term인 $b_{i}$으로 바꿔주고 $\tilde{b}_k$를 넣어줌으로, 해결하고자 했습니다.

\[w_i^T \tilde{w}_k + b_{i} + \tilde{b}_k= \log(X_{ik})\]

로 표현하며 수식 유도를 마무리하게 됩니다.

그러나 우리가 처음에 설정한 행렬 $X$에서 Co-occurence가 0인 원소가 분명 있을 것입니다. 이를 해결하기 위해서 $\log(X_{ik})$를 $\log(1+X_{ik})$로 변환해주는데, 이 경우에는 빈도가 0인 원소가 1이 됨으로 무의미한 원소가 1이라는 데이터를 가지게 되어, Noise로 작용하게 됩니다. 따라서 논문에서는 최종적으로 Weighted Least Squares Regression Model을 제안합니다.

\[J = \sum_{i,j =1}^V f(X_{ij})(w_i^T \tilde{w}_k + b_{i} + \tilde{b}_k- \log(X_{ik}))^2\]

where $V$ is the size of vocabulary.

Properties

  1. $f (0) = 0$. 만약 $f$를 연속함수로 간주한다면, $x → 0$ 일 때, 충분히 빠르게 0으로 수렴해야하며, $lim_{x→0} f (x) log2 x$ 가 유한하게 됩니다.
  2. $f (x)$ 는 비감소함수이고, 이 때 드물게 나타나는 co-occurrence가 과대평가되지 않게 됩니다.
  3. $f (x)$ 는 $x$의 큰 값에 대해 상대적으로 작게 되어, 자주 발생하는 co-occurence가 과대평가되지 않습니다.

위의 Property들을 만족하는 함수 $f$를 찾으면, $\log(X_{ik})$를 $\log(1+X_{ik})$로 변환하면서 생긴 Noise를 해소할 수 있게 됩니다. 논문에서는 함수 $f$를 다음과 같이 정의했습니다.

\[f(x) = \begin{cases} \left(\frac{x}{x_{\text{max}}}\right)^\alpha & \text{if } x < x_{\text{max}} \\1 & \text{otherwise}\end{cases}\]

논문에서는 $\alpha$ = 3/4일 때, 성능이 좋다고 주장했습니다.

  • 3-2. Relationship to Other Models

논문에서 제안한 모델이 Skip-gram과 같은 Window-based method과도 연관이 있다고 합니다. 이 또한 수식으로 살펴보아야 합니다. Skip-gram에서 출발해보겠습니다.

\[Q_{ij} = \frac{exp(w_{i}^T\tilde{w}_j)}{\sum_{k=1}^V exp(w_{i}^T\tilde{w}_k)}\]

여기서, $Q_{ij}$는 단어 i의 문맥에서 단어 j가 등장할 확률을 Softmax형태로 표현한 것입니다. 우리가 집중해야하는 부분은 Window-based method에서는 $\log Q_{ij}$를 Maximize하는 것이 목적이라는 것입니다. 이에 근거한 목적식은 다음과 같이 표현될 수 있습니다.

\[J = -\sum_{i\in corpus, j\in context(i)} \log{Q_{ij}} = -\sum_{i=1}^V \sum_{j=1}^V X_{ij}\log Q_{ij}\]

3-1에서 정의했듯이, $X_{i} = \sum_{k} X_{ik}$이고, $P_{ij} = X_{ij}/X_{i}$입니다. 이에 착안하여 식에 조작을 가하면

\[J = -\sum_{i=1}^VX_{i} \sum_{j=1}^V P_{ij}\log Q_{ij} = \sum_{i=1}^VX_{i} H(P_i, Q_i)\]

와 같이 표현될 수 있습니다. $H(P_i, Q_i)$는 Cross Entropy라는 것을 생각하면 어렵지 않게 도출할 수 있습니다. 이미 위의 $J$는 앞서 제안했던 Weighted Least Squares와 유사한 형태이지만, 아쉽게도 위의 $J$는 최적화가 어려운 식입니다. 또한, 여러 바람직하지 않은 특성들도 있습니다. 예를 들어서, Cross entorpy error는 두 확률 분포 사이의 여러 measure중 하나일 뿐입니다. 또한, 상황에 따라서 성능이 나쁘게 나올 수 있습니다. 기타 등등의 이유로 다음과 같은 $J$를 제안했습니다.

\[\hat{J} = \sum_{i,j}X_i(\hat{P_{ij}} -\hat{Q_{ij}})^2\]

여기서 \(\hat{P_{ij}} = X_{ij}\)이고 \(\hat{Q_{ij}} = exp(w_{i}^T\tilde{w}_j)\)는 정규화가 되지 않은 분포라고 합니다. 끝으로 $X_{ij}$가 매우 큰 값이 될 수 있으므로, 각 값에 $\log$를 취해주는 방식을 제안했습니다.

\[\hat{J} = \sum_{i,j}X_i(\log \hat{P_{ij}} - \log \hat{Q_{ij}})^2 = \sum_{i,j}X_i(w_{i}^T\tilde{w}_j - \log X_{ij})^2\]

이제 이 식을 정리해주면

\[\hat J = \sum_{i,j =1}^V f(X_{ij})(w_i^T \tilde{w}_j - \log(X_{ij}))^2\]

로 3-1에서와 매우 유사한 형태의 Cost function을 구할 수 있습니다.


4. Empirical Results

  • 4-1. GloVe 모델의 성능 평가

    • Word Analogy Task: GloVe 모델은 단어 유추(word analogy) 태스크에서 높은 정확도를 달성하였습니다. 이는 단어 간의 의미적(semantic)과 문법적(syntactic) 관계를 벡터 공간에서 성공적으로 모델링할 수 있음을 시사합니다.
    • 비교 분석: GloVe는 기존의 다른 단어 표현 방법론들, 예를 들어 Word2Vec의 Skip-gram 모델과 비교하여 상당한 성능 향상을 보였습니다. 특히, 대규모 데이터셋에서 GloVe의 우수성이 두드러졌습니다.
Image 2
  • 4-2. 주요 발견

    • Vector 차원의 영향: 다양한 vector 차원(예: 100, 300, 1000차원)에서 GloVe 모델을 평가한 결과, 모델의 성능은 vector의 차원 수가 증가함에 따라 일반적으로 향상되었습니다. 그러나 특정 차원 이상에서는 성능 향상의 폭이 줄어들었습니다.
    • Corpus 크기의 영향: GloVe 모델의 성능은 훈련 데이터의 크기에도 크게 의존했습니다. 더 큰 corpus에서 훈련된 모델이 더 정확한 단어 표현을 생성하는 경향을 보였습니다.
    • 단어 유사성과 관계성: GloVe 모델은 단어 간의 유사성(similarity)과 관계성(analogy)을 모두 포착하는 데 효과적이었습니다. 이는 모델이 단어의 Semantic 관계뿐만 아니라, 그들 사이의 더 복잡한 패턴을 이해할 수 있음을 의미합니다.
Image 3 Image 4
  • 4-3. Conclusion

GloVe의 결과는 이 모델이 대규모 언어 데이터에서 의미론적과 문법적 패턴을 효과적으로 포착할 수 있는 강력한 단어 표현 방법임을 보여줍니다. GloVe는 기존의 단어 Embedding 기법들과 비교하여 상당한 성능 향상을 제공했습니다.

.

이상으로 포스팅을 마치겠습니다.

감사합니다.

This post is licensed under CC BY 4.0 by the author.

© 2024 Jeonghwan Choi. Some rights reserved.