ブログではないです

ブログでなくはないです

An End-to-End Model for Question Answering over Knowledge Base with Cross-Attention Combining Global Knowledge [Hao+, ACL'17]

Question answering over knowledge base (KB-QA) に関する研究。タスクとしては [Unger+, ‘14] が先駆け?タスクの定義の細かい所が分かっていないのだが単なるQAタスクでも手がかりとしてKBを使っていたらKB-QA? 他タスクの手がかりとしてKBを使う、という発想自体がこの研究の新規性というわけではないが実際にNNベースでそれをやっている研究を読んだのは初なので読んでみた。

ここではQAのデータセットとして WikiQuestion , KBとしてFreeBaseを使ってKBのエンティティから解答候補を選ぶモデルになっているが、そもそも解答がKBに無いような場合はどうするんだろう。どのKBを使うかも含めての無差別級的な評価が普通なんだろうか?

提案モデルの概要図は以下。 前提として、KBはFreebaseを使っているため (subject, relation, object) のtripleの集合の形で与えられる。 計算時間を削減するために質問文中の topic entityを見つけて(それもFreebase APIから出来るらしい)、そこから2-hop以内で辿れるentityのみを解答候補とする。 そうして絞り込んだそれぞれの回答候補について、answer entity, answer relation, answer type, answer context*1 の4つのaspect (図のFrance-Parisの例が分かりやすい) それぞれについてembedding ({ \displaystyle { e_e, e_r, e_t, e_c } })を用意しており、concatするわけではなくattentionもそれぞれのaspectについて計算したものを最後に足す方式。

f:id:jack_and_rozz:20170803015433p:plain:w400

論文としてのメインは下図のCross-Attention。 名前の通り (1) A-Q attention と (2) Q-A attention の2段階からなる。 [Hermann+ ‘15] のre-reading mechanismを参考にしたとか。

f:id:jack_and_rozz:20170803015859p:plain:w400

(1) A-Q attention: 通常NNベースのQAタスクだと質問文ベクタは一度RNNなりでエンコードしたもので固定するのに対して、解答候補 { \displaystyle e_i} ごとに質問文ベクタ{ \displaystyle q_i} を構築するのが A-Q attention. そうして計算した質問文ベクタ { \displaystyle q_i} と entityのあるaspectのembedding { \displaystyle e_i \in { e_e, e_r, e_t, e_c } } について内積を取って和を取ったそれぞれのスコア { \displaystyle S (q, e_i) } を計算する。

(2) Q-A attention: (1)で計算した各aspectごとのスコアをattentionによって重み付けしたもの { \displaystyle S (q, a) = \sum_{e_i \in {e_e,e_r,e_t,e_c}} \beta_{e_i} S (q, e_i) } が最終的な質問文{ \displaystyle q}と解答候補{ \displaystyle a}のペアに対するスコアとなる。 今度は質問文を固定して解答候補のそれぞれのaspectに重み付けすることで{ \displaystyle \beta_{e_i}}を得るわけだが、その際の質問文を表すベクトルは単純に各タイムステップの隠れ層の平均を取る。

A-Q attentionは解答候補の性質によって質問文のどこを見るかを変える、Q-Aは逆に質問文の性質によって解答候補のどこを見るかを変えるモデルなわけだけど、両方やる必要ある?(本質的には時系列データの畳み込みが難しいところにattentionの採用理由があるわけなんだからA-Q attentionだけで良くない?)という気もする。

訓練時は正例1つと、解答候補中からk個負例を選んでヒンジロスを取る。質問文のトピックによってはそもそも解答候補がk個もない場合もあるので、その場合はランダムに他のトピックまで解答候補を拡張。テストの際、解答が1つとは限らないのでスコアがマージンを超えたentityのセットを解答とする。

また、グラフ構造を利用するためにKBについてTransEをKB-QAと交互にマルチタスク形式で学習 (Global)。TransEについても同様にヒンジロスを目的関数とする。

結果は以下の通り。[Bordes+, ‘15] からちょっとだけ改善。 cross-attentionの寄与は微妙な所・・・。 むしろKBの構築をマルチタスクでやることの方が筋も良さそうだし効果も出ているからそっちを推せばいいのに、という気もする。

f:id:jack_and_rozz:20170805012728p:plain:w200 f:id:jack_and_rozz:20170805012732p:plain:w210

紹介しておいてなんだがこういうattentionの範囲をどんどん広げていくタイプのモデルは計算量が増える上に、系列データの単一ベクトルへの圧縮を諦めているようであまり好みではない。あちこちのタスクでattentionによって大きく改善が得られているというのはその通りなので現実的に即効性のある考えではあるのだけど・・・。

*1:注釈に “Answer context is the 1-hop entities and predicates which connect to the answer entity along the answer path"と書いていたのだがイマイチ分からなかった。英語得意な人おしえて・・・