こんな夢を見た

修士学生による自然言語処理研究の記録。主にDeep LearningやEmbedding関連論文の軽い自分用まとめとして。内容に誤りが含まれている場合があります。お気軽にご指摘ください。

Sparse Overcomplete Word Vector Representations

Sparse Overcomplete Word Vector Representations
Manaal Faruqui, Yulia Tsvetkov, Dani Yogatama, Chris Dyer, Noah Smith, 2015, ACL

単語ベクトルのovercompleteなスパース化。
スパースな単語ベクトルは各次元の成分の強さで解釈がしやすいことから好まれているが、この論文では一般的なSparse codingで単語ベクトルを作り出す際に、次元(構成要素)を増やすような行列分解を行う。
つまりは、語彙数V × 次元数N の元の行列を、語彙数V × 次元数M(>N) に変換してしまうということ。このようにして出来た行列はovercompleteと呼ばれ、画像とか通信?とかの他の分野では使われることもあるらしい。言語処理ではまず見ないので面白い。
変換元のベクトルはSkip-gram、GloVe、Global Context (Huangら, 2012)、Multilingual (Faruquiら, 2014) 等の出来合いのベクトル。素のままのPMIベクトルに対して使われる手法ではない。圧縮でなく冗長化(?)。

とりあえずこうして次元を増やしたら、色んなタスクでの精度が上がりましたし、解釈もしやすくなりました、という話。 試したタスクは、類似単語判定、極性分類、(質問)文のタイプ分類、新聞記事のカテゴリ分類、形容詞+名詞+名詞の括弧位置判定(e.g., local (phone company), (blood pressure) medicine)の5つ。
全体として確かに精度は上がっている。他に比べると類似度判定は少しいまいち。また、Skip-gramやGloVeではGlobal contextやMultiに比べて上がり幅が少なめ。 ただし、今回はあくまでシンプルな分類器(ロジスティック回帰)の素性として用いただけなので、より高度な分類手法(NNとか)ではこうはいかないかもしれないことについては留意。

上で述べたような単なるスパース制約でのベクトルと、さらにバイナリ成分になるような制約を加えたベクトルの2つで実験を行っている。タスクや元ベクトルによって精度がまちまちで、その2つの優劣はつけがたい。なお、バイナリ化の方法は雑(正の成分を1。0以下を0)。

成分のスパース率を90%以上として最適な次元数を探したら、元の10倍にしたときが精度ピークだった(ただしGloVeでしか検証していない)。 (スパース率が90%「=非ゼロが1/10」に対して「元の10倍」というのが出てきたのはなんとなく綺麗。スッキリした理由付けがあるのかも)

今述べたように、試したベクトルは、スパースで正負ありのもの と スパースで1か0のもの。
そして、Non-Negative Sparse Embedding (NNSE) やCNNSE は、スパースで正値のみのもの。つまりは完成後の性質としては提案ベクトル両者の真ん中に位置するようなベクトル(overcompleteはしていないが)。このような性質のものを提案手法のパターンになぜ入れなかったのか、とか、NNSEそのものを比較手法になぜ入れなかったのかという疑問が残る。あくまで「行列分解系でない単語ベクトルにもある制約を加えて解釈容易化&精度向上する方法」を提案するという土俵で話したいからだろうか。単に紙面の都合上かもしれない。

解釈容易性の定性的な評価として、いつものtop-rank words per dimensionをやって、さらに幾つかの単語のベクトル成分の可視化を行っている。しかし後者についてはなんだか納得のいかない半端な感じだ。

一度ある次元で表現されたものを再びスパースなovercompleteに再現することで解釈容易性が上がるのは当然として、たぶんそれぞれの次元が素性としての独立性が自ずと高まっていて精度が上がるのだろう。

余談。同じくFaruqui氏がACL2015に通している「Non-distributional Word Vector Representations」という論文がとても気になる。早くこれも出てほしい。