Coda

論文メモ GloVe: Global Vectors for Word Representation

December 21, 2019

概要

GloVeは,コーパスに出現する単語の共起回数を学習するニューラル言語モデルである。 既存手法を単語の出現頻度の統計値つかう手法と対数双線形モデルに分類し、両者の長所を備え短所を補う手法として、GloVeを提案する。

既存研究の代表的な例をあげると、潜在意味解析における特異値分解が前者にあたり、word2vecは後者に該当する。 統計値をつかう手法は、統計値を反映したベクトルを生成できる。 しかし、word2vecのように加算減算によって単語の意味を類推することはできない。 逆に、対数双線形モデルは、類推可能だが統計値を反映しないベクトルを生成する。 GloVeは、コーパスにある共起した単語の組の共起回数を学習し、類推可能な分散表現を獲得する。

目的関数

\(X_{ij}\)のi行j列の要素を、単語iの文脈における単語jの出現回数とすると、目的関数を\(J\)で表せる。 \(w\)はパラメタ、\(b\)はバイアスである。 $$ J = \sum^{V}_{i,j=1}f\left(X_{ij}\right)\left(w^{T}_{i}\tilde{w}_j+b_i + \tilde{b}_j-\log X_{ij}\right)^2 $$

$$ f(x) = \begin{cases} (x/x_{max})^{\alpha} & \text{if}\ x < x_{max} \\
1 & \text{otherwise} \end{cases} $$ \(x_{max}\)と\(\alpha\)は、ハイパーパラメタで、実験では\(100\)と\(34\)に設定されている。 \(w\)と\(\tilde{w}\)の和が単語埋め込みベクトルとなる。

学習の計算量

コーパスにある単語の集合が\(V\)であれば、学習の最悪計算量は\(\mathcal{O}(V^2)\)になるが、実際の計算量ははるかに少ない。 \(r_{ij}\)を出現頻度の順位として\(X_{ij}\)を以下の式で仮定する。 $$ X_{ij}=\frac{k}{{(r_{ij})}^{\alpha}} $$ このとき、0以外の値である要素の数\(\mid X\mid\)は $$ \mid X\mid = \begin{cases} \mathcal{O}(\mid C\mid) & \text{if}\ \alpha < 1 \\
\mathcal{O}(\mid C\mid^{1/\alpha}) &\text{if}\ \alpha > 1 \end{cases} $$ となる。実験データの場合、\(\mid X\mid\)を\(\alpha=1.25\)で近似でき、このとき\(\mid X\mid = \mathcal{O}(\mid C \mid^{0.8})\)となる。 以上より、GloVeは\(\mathcal{O}(\mid C\mid)\)でスケールするウィンドウベースの手法よりも高速とみなすことができる。