AutoExtend: Extending Word Embeddings to Embeddings for Synsets and Lexemes [Rothe+, ACL'15]
http://www.aclweb.org/anthology/P15-1173
概要
一回ちゃんと書いたやつが保存し忘れで消えてしまったので簡単にモデルの構成だけメモ。訓練済みのword embeddingsとWordnetのデータを使ってsynsetとlexemeについてもembeddingsを獲得するという研究。モデルの概要図は以下。
全体としてはlexemeを介して word <-> synset 間の変換を行うautoencoder的なモデルになっている。
以下、論文中の数式のうち重要なところを追っていく。(式番号は論文準拠)
単語についてsynset に属するlexemeを (存在しない場合は = 0) とした時,wordとsynsetはそれぞれlexemeの集合なので
(1)
(2)
とする。その上でword -> lexemeに変換する行列を とおく。 (ここでは計算量削減のためEを対角行列としている)
(3)
すると (2), (3) 式より
(5)
となり,この式を単語とsynset全体に拡張するとシンプルなテンソル積の形で書ける。
(7)
S, W はsynset / word embedding を並べた行列,は を並べた4階のテンソル。
これがAutoextendのEncoderにあたり、Decoder側については逆にsynset -> word の変換を同様に考えると
(14)
と、synset -> wordの変換もまたテンソル積の形で書ける。全体としては
(17)
の形でautoencoderのようなencode -> decode でWを復元するモデルとなっている。
このようにモデルを設計した上で最終的な目的関数として
- wordをencode + decodeして元に戻した時の誤差を小さくする項
- word -> lexeme と synset -> lexemeの誤差を小さくする項
- 上位語・同義語などの関係があるsynsetどうしを近づける項
をハイパーパラメータで重み付け和を取って最小化する形での訓練を行う。
1. の は の次元目を集めたもの。( については番目の対角成分) は対角行列なので各成分を独立に計算できるためこのような形になっている。
3. は1つのlexemeしか所属しないようなsynsetについてもちゃんとembeddingを獲得する事を目的とした項で、 は関係のある2つのsynsetのペアを1行として縦に並べたもの。例えばAがBの上位語である、という情報はAに相当する列を1, Bに相当する列を-1, それ以外は0である1行で表現される。つまりこの例だと は を計算していることになる。
しかし論文を読む限りこのやり方だとペアの間にある関係ごとの違いは一切考慮されておらず、何かの関係があれば問答無用で近いsynsetとなるような制約になってしまっていると思うのだけど・・・?