Coda

論文メモ context2vec: Learning Generic Context Embedding with Bidirectional LSTM

February 2, 2020

概要

文書の文脈の分散表現を獲得するニューラルネットワークのアーキテクチャ*context2vec*を提案、評価した論文である。 アーキテクチャの基本構造はCBOWと同様で、周辺の単語から中心の単語を当てられるようにコーパスをもとにモデルを訓練する。 CBOWとの違いは、文脈の算出方法にある。 CBOWは、ウィンドウ内のベクトルの平均値で文脈の分散表現を求める。 一方、*context2vec*では、双方向LSTMの出力をもとに算出する。

アーキテクチャ

*context2vec*は、CBOWのようなウィンドウ幅をきめず、文書全体から文脈の分散表現を算出する。 context2vecのアーキテクチャを次に示す。 fig2

\(n\)単語からなる文を\(w_{1:n}\)とおき、単語列を順方向に受理するLSTMをlLS, 逆方向のをrLSとすると、両LSTMの出力の連結ベクトルで単語\(w_i\)の「浅い」文脈の分散表現をつくる。 $$ \text{biLS}(w_{1:n}, i) = \text{lLS}(l_{1:i-1})\oplus\text{rLS}(r{n:i+1}) $$

この「浅い」文脈の分散表現は、多層パーセプロトロン(MLP)にわたり、求める「深い」分散表現\(\vec{c}\)に変換される。 $$ L_i(x)=W_ix+b_i $$ $$ \text{MLP}(x)=L_2(\text{ReLU}(L_1(x))) $$ $$ \vec{c}=\text{MLP}(\text{biLS}(w_{1:n},i)) $$

CBOWと同様に、目的関数には負例サンプリングを目的関数に用いる。 \(\vec{t}\)を\(w_i\)に対応する単語の埋め込みベクトル、\(t_1,\dots t_k\)をランダムに選んだ負例とおくとき、目的関数\(S\)は $$ S=\sum_{t,c}\left(\log\sigma(\vec{t}\cdot\vec{c})+\sum^{k}_{i=1}\log\sigma (-\vec{t}_{i}\cdot \vec{c})\right) $$ である。