ブログではないです

ブログでなくはないです

cloze-style QA まとめ

cloze-style QAタスク(センター試験のような、文章を読んだ上でその文章に関するクエリのプレースホルダに正解の単語を埋める形式のQA) について読んだやつまとめ。(ある程度読んだら追加)

CNN/Daily Mail QA Dataset

Teaching Machines to Read and Comprehend [NIPS'15] で公開されたデータセット。 このデータセットの面白いところは構築時点でcontext, query共にそれぞれのエンティティが@entity0, @entity1, ... といった形で置換されており、 この処理によってエンティティに関する事前知識を持っていた場合に記事を読まずに質問に答えることを不可能にしている。*1 データサイズとしてはCNNが380K記事、Daily Mailが879K記事前後。

Teaching Machines to Read and Comprehend [Hermann+, NIPS'15]

タスク・データセットの提案に加えて簡単な頻度ベースの選択モデルやFrame-semantic model, Word distance modelといったベースラインとNNベースのモデルを比較。

NNベースでやる場合は回答候補単語 (@entity0 とかのトークン) a, 文書d, クエリqに対して { \displaystyle p(a | d,q) \propto exp(W(a) g(d, q)) } の形で確率を計算。 文書とクエリから構築したベクトルと回答候補aのベクトルの内積になっている。

{ \displaystyle g(d, q)) } の作り方については
(Deep LSTM Reader) : 文書とクエリを区切り文字を使ってくっつけて一気に読む
(Attentive Reader) : クエリベクトルuと,uを用いて文書の各単語にアテンションを掛けたベクトルrの重み付け和を取る
(Impatient Reader) : クエリが1単語読まれる度にその時点でのクエリベクトル{ \displaystyle y_q (i)} と前回の文書ベクトルr(i-1),文書の各単語を用いてアテンションを掛けてr(t) を計算し直す
などをやっている。AttentiveとImpatientには結果(Accuracy) の差はあまりなくニューラルにして5%, アテンションを掛けてもう5%向上といった感じ。

Dynamic Entity Representation with Max-pooling Improves Machine Reading [Kobayashi+, NAACL'16]

以前言語処理学会で見て面白いなあと思っていた研究。[Hermann+, NIPS'15] では文書・クエリのベクトル表現の話が中心で回答候補のベクトルについては特に何もしていなかったが(というよりそれがこのタスクの重要なところじゃないの?という気がするけど)、それに対して文書から動的に対象となるエンティティのベクトル表現を構築することがメインテーマ。

提案手法の工夫は大きく分けて3つ。 

  1. (dynamic entity representation) まずあるエンティティeについて、eが{ \displaystyle \tau}番目の単語として登場するコンテクスト文cをbidirectional LSTMによって読んだときのベクトル表現を { \displaystyle {\textbf d}_{e,c} = tanh(W_{hd} [  {\textbf  h}_{c,T}^{\rightarrow}, {\textbf  h}_{c,1}^{\leftarrow}, {\textbf  h}_{c,\tau}^{\rightarrow}, {\textbf  h}_{c,\tau}^{\leftarrow} ] + {\textbf b}_d) } と表現する事で文脈を伴うエンティティの表現ができる。

  2. (max-pooling) 次に、複数回登場するエンティティについては以前の文脈を踏まえて理解したいため2回目以降に再登場するエンティティについてはこれまでの文脈c'におけるベクトル表現を集めてmax-poolingを取ったもの { \displaystyle {\textbf x}_{c, \tau} = W_{dx} {max-pooling}_{c' \in c} ({\textbf d}_{e, c'}) + {\textbf b}_x } を入力する。

  3. (byway) そのようにしてそれぞれの文脈におけるエンティティのベクトル表現を構築した後、同じくbidirectional LSTMによってエンコードした質問文によってアテンションを掛けることで最終的な文書全体でのエンティティのベクトル表現 { \displaystyle {\textbf v}(e; D,q) } を構築する。またその際に、出力文と入力文のそれぞれの単語(列)が概ね対応している翻訳と違って質問応答では候補エンティティがそもそも正解でない場合、アテンションの重みの総和は1になるようになっているけどどこに注目すれば良いのさ?という問題が起きる。そのため候補エンティティ1単語だけの文を擬似的に追加して、「どれにも注目したくない場合」 のアテンション候補を作っている。(理解が合っているかちょっと自信ない。)*2

結果としては dybanuc entity representation だけだと [Hermann+'15] とほぼ変わらず(62.3%)、 max-pooling と bywayどちらかだけ入れると 8% (!) 上昇、両方入れると 10%ほど上昇(72.0%)。w2vによる初期化もすると 72.9%で、 [Hill+, ICLR'16]のsingle-modelによる結果(68.4%) を超えてNAACL'16 の時点でSOTA。

A Thorough Examination of the CNN/Daily Mail Reading Comprehension Task [Chen+, ACL'16]

Hermannらのモデルのちょっとした改良によるSOTAと、データセットの詳細な分析。結論としてはこのデータセット微妙じゃないか?というもの。

Hermannらの論文に対するモデルの変更点はアテンションを取る時に質問とパラグラフの一文の重み付け和を取ったもののtanhを用いていたのに対して, ChenらのNNベースのモデルでは{ \displaystyle softmax(\textbf q^{\mathrm T} \textbf W_{s} \textbf p_{i}) } のようにbilinear termを用いてアテンションを取っている。2つの文の関係の強さをモデリングするのに重み付け和を取るのは不自然な感じがあったのでこの変更には納得感。

重要なのがデータセットの分析で、全体から100問サンプリングして人手で分類したところほぼ質問文と同じ文がパラグラフ中に出現するのが13%,質問文の言い換えが41%と半分以上はかなり簡単に解け(ニューラルモデルだとそれぞれ100.0%, 95.1%の正解率), 共参照解析のエラーが8%, 回答に曖昧性があるものが17%と,計25%が回答困難な問題で,現状のニューラルモデルはほぼ理想的な精度(72.4 ~ 75.8%)を達成しているとの結論。この研究を境にこのデータセット使った研究があまり見られなくなってる・・・。

Children's Book Test

The Goldilocks Principle: Reading Children's Books with Explicit Memoy Representations [Hill+, ICLR'16]

Memory Networkを用いた手法の提案と、Children's book test (CBT)というCNN/Daily Mail と似たデータセットの作成についての話が中心。
データセットの違いは回答候補の表層がマスクされていない(言語についての事前知識を使うことを許している)点と、データセット作成時にCoreNLPによる品詞解析やNERなどを行って回答候補を数種類(Named Entity, Noun, Verb, Preposition) に分けて、回答候補のタイプを揃えていること。

Memory Networkによるモデルではいくつかのウィンドウパターンを使ったメモリのとり方や,メモリへのアテンションの仕方などを数種類試行。訓練時にハードアテンションを用いるのが効くとか。 Memory NetworkとHierarchical RNN + attentionを比べた時,文についての状態ベクトルを作るにあたって,窓幅を取って単語embeddingの重み付け和を取る(Memory Network)より RNNなりでエンコードするようが自然に思えることから正直個人的には後者のほうが好きなのだけれどどうして前者が比較的持て囃されているのだろう。 今回のタスクで1文中に回答候補が複数出現した時のように,1文中の別々の事柄について別なメモリとして持てる事が嬉しい場合が多い、ということなのだろうか。

*1:しかしデータを眺めた所各文書間である単語に対するエンティティのIDは共通だったので、厳密にはある一つの文書だけを読んでエンティティを理解しているわけではない(訓練データの他の文書も参考にしている)気がするがそれは良いんだろうか?

*2:"we make an artificial occurrence for each entity with no contexts, which serves as a byway to attend when no other occurrences can be reasonably related to the query." と書いてあったのでそういうことだと思うんだけど・・・