テクノロジー

文書ベクトルを用いて記事のクラスタリングをしてみた(数式導出編)

はじめに

こんにちは、ビジネスエンジニアリング部データソリューション担当所属の棚谷です。今回はニュース記事の文書ベクトル(埋め込み表現)を計算する手法をご紹介いたします。また計算した文書ベクトルを用いて記事のクラスタリングを行ってみました。

紹介する手法(論文)

A SIMPLE BUT TOUGH-TO-BEAT BASELINE FOR SENTENCE
EMBEDDINGS
Sanjeev Arora, Yingyu Liang, Tengyu Ma
Princeton University

上記論文は機械学習の国際会議ICLR 2017に採択されています。

背景

分散表現(埋め込み表現)

音声信号など自然界の物理現象を反映したデータとは異なって、自然言語処理における文字・単語・文は人間が恣意的に定義した記号であり、そのままの状態で記号間の類似度や関連性を直接計算することは困難です。そこで計算処理を行いやすくするために、単語の分散表現を獲得する必要があります。
分散表現は単語が次元数を固定した実ベクトル空間上の1座標として表現されたもので、記号を用いて表現された離散的なオブジェクトを実ベクトル空間の1座標として埋め込むことから埋め込み表現(word embeddings)とも呼ばれています。分散表現の獲得手法は以下のものが提案されています。

  • word2vec
  • fastText
    など

やりたいこと

既存の単語の分散表現(日本語wikipedia,word2vec)を用いて、文章の分散表現(sentence embeddings)を得る計算手法を実装し、ニュース記事のクラスタリングを行いたいと思います。

sentence embeddings の計算式の導出

sentence embeddingsの計算手法について、概略を紹介いたします。

Aroraらによる言語モデル

提案手法の紹介の前に、元になった言語モデルを紹介いたします。

元になった log-linearモデル(Hinton et. al.)の場合

何らかの方法で単語の分散表現(単語ベクトル)$\vec{w}$ が獲得できていると仮定し、
単語ベクトルの次元数に一致する実ベクトル空間の超球面上に文脈ベクトル(文書ベクトル) $\vec{c}$ がゆっくりランダムウォークしているとします。
この時、1つの文が生成されている間では $\vec{c}$ が変化しないとします。
このような仮定のもと1文の中の単語の生成確率 $p(\vec{w}|\vec{c})$ は以下の式で与えられます。

$$
p(\vec{w}|\vec{c}) = \frac{ \exp{ (\vec{c} \cdot \vec{w})} }{Z}
$$

上式 $Z=\sum_{\vec{w}} \exp (\vec{c} \cdot \vec{w})$ は分配関数を表します。このモデルの $\vec{c}$ を求めれば文の埋め込みベクトルが得られます。このモデルに基づくと、ある1文の単語集合が与えられた場合に、その文の文脈ベクトルを計算する為には上式に関する最尤推定を行えば良いわけです。

最尤推定

文 $s$ を構成する単語の集合 ${ \vec{w’} } \in s$が与えられた時、文の生成確率に対する対数尤度は次式で表現されます。

\begin{array}{rl}\log{p(s|c)} &= \sum_{w' \in s} \log p(\vec{w'}|\vec{c}) \cr\cr&= \sum_{w' \in s} \vec{c} \cdot \vec{w'} + const \cr\cr&= (\sum_{w' \in s} w') \cdot \vec{c} + const.\end{array}

したがって $\vec{c}$ の最尤推定値は $\vec{w’}$ を足し合わせたベクトルになります。
しかしながら、このモデルの場合”a”, “the”など頻度が多い文法や慣例に基づいた単語に結果が引きずられてしまうという問題があり、単語の重み付けが必要になります。

Aroraらによって改良されたモデル

上記問題を軽減するため、単語の生成確率を文脈ベクトル起因の項とユニグラム分布 $p(\vec{w}_t)$ の線型結合で表されるとし、次式のように改良がなされました。

$$
p(\vec{w}|\vec{c’}) = \alpha p(\vec{w}) + (1 – \alpha) \frac{ \exp{ (\vec{c’} \cdot \vec{w})} }{Z}.
$$

さらに、$\vec{c’}$ は以下で表されます。

$$
\vec{c’} = \beta \vec{c}_{0} + (1 – \beta)\vec{c}.
$$

$\alpha , \beta$ はハイパーパラメータを表します。$\vec{c}_{0}$ は文法的な単語の出やすさ、$\vec{c}$ は文脈的な単語の出やすさにそれぞれ起因します。先程と同様にこのモデルに対して最尤推定を考えてみます。

最尤推定

文の生成確率に対する対数尤度は以下で与えられます。

\begin{array}{rl} \log p(s|\vec{c'}) &= \sum_{\vec{w} \in s}\log [ \alpha p(\vec{w}) + (1 - \alpha) \frac{ \exp{ (\vec{c'} \cdot \vec{w})} }{Z} ] , \cr\cr&\equiv \sum_{\vec{w} \in s} f_{\vec{w}}(\vec{c'}).\end{array}

$f_{\vec{w}}(\vec{c’})$ を $\vec{c’}$ に関してTaylor展開し1次まで残すと、

\begin{array}{rl}f_{\vec{w}}(\vec{c'}) &\sim f_{\vec{w}}(0) + \nabla_{\vec{c'}} f_{\vec{w}}(0) \cdot \vec{c'} , \cr\cr&= const\ + \frac{1}{\alpha p(\vec{w}) + (1 - \alpha)/Z}\frac{1 - \alpha}{Z}\vec{w} \cdot \vec{c'} ,\cr\cr&= const + \frac{a}{p(\vec{w}) + a}\vec{w} \cdot \vec{c'},\end{array}

が得られます。ここで $a \equiv (1 – \alpha)/(\alpha Z)$ とおき、さらに $\nabla_{\vec{c’}} f_{\vec{w}}(0)$ に関し、

\begin{array}{rl}\nabla_{\vec{c'}} f_{\vec{w}}(\vec{c'}) &= \frac{1}{\alpha p(\vec{w}) + (1 - \alpha)\exp{ (\vec{c'} \cdot \vec{w})} /Z}\frac{(1 - \alpha) \exp{ (\vec{c'} \cdot \vec{w})}}{Z}\vec{w}, \cr\cr&\Rightarrow \nabla_{\vec{c'}} f_{\vec{w}}(0) = \frac{1}{\alpha p(\vec{w}) + (1 - \alpha)/Z}\frac{(1 - \alpha)}{Z}\vec{w},\end{array}

を用いました。したがってこの表式を用いて最尤推定値は近似的に

$$
\vec{c’} = \sum_{\vec{w} \in s} \frac{a}{p(\vec{w}) + a}\vec{w},
$$

で得られます。これは Smoothed Inverse Frequency (SIF) weightingと呼ばれ、単語ベクトルの重み付き線形和で表されます。この式では、ユニグラムで出現頻度が高い単語ほど小さい係数が掛け合わされ文脈ベクトルへの影響が小さくなります。

主成分分析

上式で文 $s$ の埋め込みベクトル $\vec{c’} \equiv \vec{v_s}$ が得られました。
さらに $\vec{c_0}$ を求め、文法に依存する成分を差し引くことを考えます。そのために文章 $S$ に属する文 $s$ の文ベクトルの集合 ${ v_s:s \in S }$ を列とする行列 $X$ を構成します。

$$
X = (v_1, v_2, \cdots , v_S).
$$

Xに対して主成分分析を実行し、第一主成分ベクトル $\vec{u}$ を求めます。 $\vec{u}$ を用いて以下の式より $\vec{c_0}$ 影響を差し引いた文 $s$ の埋め込みベクトル $\vec{v’}_s$ が得られます。

$$
\vec{v’} = \vec{v} – \vec{u} \vec{u}^T \vec{v}.
$$

まとめ

以上より、文書ベクトルの埋め込み表現の式が得られました。
次回では公開されているのニュース記事のデータにたいして文章の埋め込みベクトルを計算しクラスタリングを行います。

参考文献

  • 深層学習による自然言語処理, 講談社
  • 言語処理のための機械学習入門, コロナ社
  • ゼロから作るDeep Learning 2 ~自然言語処理編~, オライリー
  • http://chasen.org/~daiti-m/paper/SNLP10sentence.pdf


関連タグ