ブログではないです

ブログでなくはないです

Learning Distributed Representations of Texts and Entities from Knowledge Base [Yamada+, TACL'17]

https://transacl.org/ojs/index.php/tacl/article/view/1065/257

概要

ざっくり言うとword embeddingと同時にentity embeddingを学習するモデル (NTEE) を提案して、実際に学習したembeddingを色々なタスクで用いて評価したよ、という論文。

どう学習するかというとWikipediaのテキスト中のリンクをエンティティとみなして、あるテキストtにエンティティeが登場するか否かのモデルを最適化することによって モデルは具体的には以下の式の{ \displaystyle P(e|t)}を最適化する。{ \displaystyle v_e}がエンティティemb, { \displaystyle v_s}が文のベクトルで,文のベクトルをどう作るかというと文中の単語ベクトルの平均を取って変換を掛けるだけ。*1


実験

(1) Semantic Textual Similarity Semantic(2つの文の意味的な類似度のスコア計算), (2) Entity Linking, (3) Question Answering の3つのタスクによって提案モデルによって学習されたWord/Entity embeddingの評価を行う。具体的にはそれぞれのタスクのモデルにおけるembeddingの初期化をする際に、提案手法で学習したものを用いる場合と通常のskip-gramなどによるものを比較。 *2

(1) のタスクについては2つの文のベクトルさえ得られれば良いのでembeddingの学習の際のモデルと同様の構造でOK。
(2), (3)のタスクについてはどちらもテキストに対して回答となるエンティティを指定するタスクであり、 下図のような事前にテキストの表層などの手がかりから絞り込んだ回答候補(今回は100候補)のentity embeddingと、前述した方法で計算する文のベクトルからスコア付けをするモデルで解いている。 よくある分類問題のように全エンティティ数次元の確率分布を出力するようなモデルにしていないのはエンティティ数が膨大なのでソフトマックス計算のコストが大きいからということだろうか?

結果は以下の表の通り。どのタスクについても提案手法(NTEE)による改善が見られる。EL,QAタスクでは回答候補は文中に出現する単語とは違いエンティティなので別個にベクトルを用意すると改善するよ、というのは分かり易いが、一方で驚きなのがSTSタスクでは使うのは2つの文のベクトルだけ、つまりEL, QAタスクのようにentity embeddingは使うことはなく,entityを推定するタスクの中で学習したword embeddingを使うだけでこれだけの改善が得られているという事になる。 他タスクで学習したword embeddingを初期化に使うというのはある種のシーケンシャルに行うマルチタスクであるような気もするので、その際のサブタスクとしてエンティティ推定タスクは良さそうという話なのだろうか。


*1:2番めの式, 文のベクトルの計算について、活性化関数を挟む記述が無かったがこれだと無駄に線形変換してるだけにならないだろうか・・・?省略しただけ?

*2:learned representationを使う、ともNTEEを使う、とも記述があり、単語ベクトルの平均取った後の変換部分も共有しているかどうかは不明。