1.概要
Glove (Global Vectors)[1] は,スタンフォード大のManning先生の研究室から提案された,単語分散表現である (第2著者は,ImageNet や Scene Graph 論文などにも共著で関わった Richard Socher 氏).
従来の単語埋め込みであるword2vec [Mikolov et al., 2013] の skip-gramモデルは,局所的な(local)窓内の単語間コンテキストから単語埋め込みを学習する,「Local窓内コンテキストの学習手法」であった.これに,GloVeは,旧来的な行列分解ベースの「単語間の大域的な(Gloval)な共起 = 共分散行列」も加味することで,大域と局所の両方を考慮できる単語ベクトル(Vector)埋め込み学習手法を提案した.
GloVeは,単語ペア2ベクトル間の対数共起度を予測する「全域的な対数バイリニア回帰モデル(3.1節)」を用いて単語間共起確率をモデル化した,線形ベクトル空間である.GloVeの学習時は,重み付き線形回帰として共起行列の行列分解を解くが,その重みに高頻度単語ペアの影響を抑える工夫もされている.モデルがシンプルであることに加えて,計算効率性も高い.
こうして,word2vec の弱点を改善したので,GloVeが自然言語処理やVision-Lauguageの単語分散表表現として,その後広く標準的に使用されるようになった.
第2著者のRichard Socher自身による講義動画 (2017)での説明が以下のようにアップロードされているので,そちらも参考にされたい.
この動画ではGloVeのメリットを以下のようにまとめている:
- 学習が高速.
- 巨大語彙へもスケール可能.
- 小規模なコーパスで低次元なベクトルでも,良好な性能が出る.
以降は,2節で従来手法の問題点に触れたのち,3章でGloVeの詳細を説明する.
2. 従来手法の問題点
概要で述べたとおり,Gloveは以下の2つの従来の「単語ベクトル表現の埋め込み手法」の合体版の提案である:
- 語彙全体の大域的な単語間共起行列の行列分解(LSAなどを用いる手法)
- 窓内での局所的な単語コンテキストの予測モデルを学習(RNN, skip-gram, CBOWなど)
これらの2手法は,片方の長所がもう片方の短所に相当しており,お互いの弱点を埋め合わせられる相互補完的な関係性があった:
1. 単語間共起頻度行列の行列分解(LSAなど) 【大域的な単語間の共起】 | 2. 窓内の予測モデル(RNNLM, word2vecなど) 【局所的なコンテキスト】 | |
長所 | 語彙全体の統計を,効率的に考慮(学習も速い) | 類似単語タスクに,非常に強い |
短所 | ■ 類似単語タスクに弱い.よって局所まで空間最適化できていない(実験的にもわかる). ■単語共起頻度行列から直接SVDを行うので,頻出単語(冠詞など)の影響が大きくなりすぎる. | ■局所窓の数単語内のコンテキストのみ学習.よって語彙全体の統計を学習できない. ■学習時にdataset文の全単語の周辺から局所窓を収集する必要があり,計算効率が悪い. |
そこで [Pennington et al., 2014] では,2つの手法をいいところどりして,なおかつ(word2vecよりも)単純であるGloVeモデルを提案した.
3. GloVeのモデル
まず GloVe [Pennington et al., 2014] での問題設定を定義したい.
語彙が単語$V$個から構成されるとする.また,学習用コーパス全体での「単語$i$と単語$j$が,同時発生する頻度」を$X_{ij}$に格納した共起行列を $\bm{X} \in \mathbb{R}^{V \times V}$とする.
この時Gloveでは,$\bm{X}$の行列分解を解くことで,低次元の単語埋め込みベクトル空間$\bm{U}$と$\bm{V}$を行列分解により推定して学習する.
具体的には,以下の2つの(潜在)埋め込みベクトル$\bm{u}_i$と$\bm{v}_i$を,全語彙の単語に対して学習したい:
- $\bm{u}_i \in \mathbb{R}^d$:単語$i$のコンテキストベクトル
- $\bm{v}_i \in \mathbb{R}^d$:単語$i$の単語ベクトル
ここまでが,GloVeの問題設定である.それでは,目的となる単語分散表現$\bm{u}_i$と$\bm{v}_i$のモデリングと学習方法(3.2)について,3.1, 3.2節で見ていこう.
3.1 「共起度」を,線形回帰で予測するモデル
GloVeのモデルには,「共起行列の各要素の対数値$ \log(X_{ij})$を,単語ベクトルと共起単語ベクトルから線形回帰する」という,非常に単純なモデルが採用されている.
その線形回帰予測モデルを,以下のように表す(※ 右辺の回帰関数にはバイアス項も設定するが,この記事では省略):
\begin{equation} \log(X_{ij}) \approx \bm{u}_i {}^T\bm{v}_j \tag{3.1}\end{equation}
式(3.1)のように,コンテキスト(共起)単語 $i$ のベクトルと,注目単語ベクトル $j$ のあいだでの「類似度」を計算するだけで,2単語間の共起頻度を推定するための2つの潜在空間(単語埋め込み)$\bm{U}$ と $\bm{V}$ が,GloVeの学習結果として得られる.
3.2 GloVe のコスト関数
学習データから得られた式(3.1)左辺の共起行列を,SVDで行列分解すると,低次元の$\bm{U}$と$\bm{V}$の積で近似できる.これにより,目的のコンテキストベクトル空間$\bm{U}$と単語ベクトル空間$\bm{V}$が得られる.
しかし,単純に共起行列をSVDするだけでは,外れ値として除外したい「頻出の共起」「レアな共起」などの影響も受けた,微妙な埋め込みを学習してしまいやすい.また,全単語間の共起度を計算すると,学習時の計算コストも高くなってしまうので,できれば疎な計算に代えることで計算コストも下げたい.
そこで,GloVeのモデルの目的関数 $J$ には,語彙Vにおける全単語ペアにおいて,3.1節の重み付き線形回帰を学習するために,以下のような最小二乗誤差関数を用いる (※ 式(3.1)と同様,バイアス項は省略):
\begin{equation}J = \sum^V_{i=1, j=1} f(X_{ij}) ( \bm{u}_i {}^T\bm{v}_j – \log (X_{ij}))^2 \tag{3.2}\end{equation}
※ この記事ではコスト$J$の導出手順は省略する
ここで $f(X_{ij})$ は各二乗誤差の重み付けを担当する「単語間共起度の割合」を示す関数である.
3.2.1 頻出共起ペアの重みを下げる「クリップ機能付き重み」の使用
重み関数$f$には,ある程度以上頻出の共起単語ペアの共起度を下げることで,「共起行列の極端な凸具合」を減らすような重み付け関数を活用したい.そうすれば,式(3.2)だけで,局所的な単語間共起も一緒に学習できるからである.
そこで [1]では,閾値 (たとえば$X_{max} = 100$回)以上に共起している単語ペアでは,共起度の値を徐々に下げていき,値を1にクリップして削除できるような,以下の累乗関数を $f$ に使用することを提案した:
\begin{align} f(X_{ij}) = \begin{cases} (\frac{X_{ij}}{X_{max}})^{\alpha} & if & X_{ij} < X_{max} \\ 1 & otherwise \end{cases} \tag{3.3} \end{align}
この $X_{ij} > X_{max}$ では値が全て1となる式(3.3)を用いて,コスト関数$J$ 式(2)によりGloVeを学習することにより,効率に共起行列分解を行うことができ,最終的に(単語類似度の内積が学習された)埋め込み行列$(\bm{U}, \bm{V})$のペアを学習することができる.
[Pennington et al., 2014]では,CoNLL2003(英語)からGloVeの教師なし学習を行い,その埋め込みベクトルを用いて3タスクのデータセット(固有表現抽出, 単語類似度,単語アナロジー)で実験した.これにより,SVD行列分解とword2vecから得られた埋め込みよりも,GloVeの方が良い事前学習が実施できることを実験的に示した.
4. GloVe のまとめ
GloVeは,大域手法-局所手法の両方を良いとこどりをしてかつ簡潔にモデル化した,単語埋め込みの学習手法である.単語間の共起を「重み付き線形回帰」で単純にモデル化しただけなので,小さい語彙でも効率的に学習できるだけでなく,性能も保たれる.
著者も研究しているVision and Languageの研究界隈でも,かつて GloVe を単語表現に用いる論文が多かった.後発の発展版単語埋込みFastText もあまり使われないまま,その後もVision and Languageでの単語分散表現は,GloVeがファーストチョイスであることが多かった.
※ 従来手法と比較する際に,公平性を保つためGloVeがずっと使われ続けている側面もある.
References
- [Mikolov et al., 2013] Tomas Mikolov, Ilya Sutskever, Kai Chen, Greg Corrado, and Jeffrey Dean. “Distributed representations of words and phrases and their compositionality.” Advances in neural information processing systems. 2013.
- [Pennington et al., 2014] Jeffrey Pennington, Richard Socher, and Christopher D. Manning. 2014. GloVe: Global Vectors for Word Representation
参考書籍
- Kamath, Uday, John Liu, and James Whitaker. Deep learning for NLP and speech recognition Vol. 84. Cham: Springer, 2019.
- 坪井祐太/海野裕也/鈴木潤. 深層学習による自然言語処理(機械学習プロフェッショナルシリーズ) 講談社, 2017.