ブログではないです

ブログでなくはないです

Evaluation Metrics for Machine Reading Comprehension: Prerequisite Skills and Readability [Sugawara+, ACL'17]

http://www.aclweb.org/anthology/P/P17/P17-1075.pdf

概要

Reading Comprehension(RC) タスクの目的の1つはモデルがどの程度文章を理解できるのかを測ることであり,コンテキストとなる文章を読んで関連する質問に答えられるかを問うことでそれを行う。
しかしあるデータセットに設定された問題が解けるということが本当にその文章を理解していることになるのか?(十分条件なのか?)と言われると実はそれはそうでもなく,例えば質問文とほとんど同じ文がコンテキストの中に表れる場合など,コンテキストを理解していなくても質問文とのマッチングを取るだけで解けるような問題が作れてしまう。逆に,文章が幼児向けのものであっても質問への回答には多くの推論や常識の把握が必要となるようなものも存在する。

そうした理由から,RCタスクにおいて必要となる能力を Prerequisite skills(共参照や常識、因果関係の把握など,質問に答えるために必要とされる能力)と Readability(文章の長さや単語の種類の多さなど,文章を読むために必要とされる能力)の2つに分けて考え,最近の主なデータセットについてアノテーションを行いその難しさと,またその2つの能力がどの程度相関するのかを分析している。基本的にRCタスクをやる人のモチベーションとしてはどちらかと言うとPrerequisite skillsの方を問いたいはずなので、Prerequisite skillsが高くReadabilityが低いデータセットほど使い勝手が良いということになるのかな。

対象のデータセットはQA4MRE, MCTest, SQuAD, Who-did-What (WDW), MS MARCO, NewsQAの6つ。 以前いろいろ読んだ CNN/DailyMail DatasetやCBTestについては,前者は回答の曖昧性が高い問題や共参照解析のミスが多いという理由,後者はRCタスクというより言語モデルタスクであるとの理由から*1 対象データセットに入っていない。

結果

個々のデータセットについての分析結果としてはQA4MRE, WDWあたりがPrerequisite skills, Readability共に高くかなり難しめのデータセット、 それ以外の4つについてはPrerequisite skillsは低め。ただその中でもMC Testは元が子供向けの文章であることからReadabilityがかなり低い。QA4MRE,WDW, MARCOについてはデータの作り方が原因となってか回答不能な問題が多い (10~27%) のが気になる所・・・。また目的の一つであったPrerequisite skills, Readabilityの相関関係については正直あんまり無さそう。まあ直感的にはReadabilityが高かろうが低かろうがPrerequisite skillsは質問文をどう作るかで大半が決まるわけでそりゃそうだよねという感じ。 また,質問に応えるために読む必要のある文の数も似たり寄ったり (1.04 ~ 1.18 sentence) で,今のRCタスクは大体必要な箇所の1文を読むだけで解けてしまうような問題ばかりだということらしい。(ただしコンテキスト文全体から必要箇所を探すための労力については別問題)

感想

面白かった。とりあえず新し目のデータセットで精度競争を繰り返すだけになりがちなRCタスクで、そのタスクが解けると何の能力があると言えるのか?をちゃんと分析しているあまりないタイプの研究。最近流行りのSQuAD, MS MARCOなんかはやはりAverage prerequisite skillsが低く,そうなると多分単純にコンテキストの狭い範囲と質問文とのマッチを適切に取れるかがかなり重要になるのだろう。ニューラルモデルでどうアテンションを取るかみたいな研究が大量発生するわけだ・・・ 逆にモデルに◯◯を理解させたいと思って新しい提案手法を考えても,使うデータセットによってはその能力を必要としない場合があるわけでちゃんとモデルの提案or評価時に実際のデータを意識しなきゃいけないなあという感想。

参考リンク

筆者のRC task overview のスライド
最近の主なQAのデータセット一覧

*1:ここの理由が良く分からなかった。関連研究で議論されているんだろうか

Dynamic Entity Representations in Neural Language Models [Ji+, EMNLP'17]

https://aclanthology.coli.uni-saarland.de/papers/D17-1195/d17-1195

概要

言語モデルとjointlyに共参照解析をして文章中のエンティティへの言及を元にその分散表現の更新を動的に行い,現在の隠れ状態に加えて最近登場したエンティティの分散表現を考慮することで性能を良くしましたという話。 slideshare解説スライド があった。

提案手法

ベースラインは普通のRNN言語モデル。提案手法ではこれに加えて,下図の

{ \displaystyle r_{t}} (エンティティであるかの 0/1)
{ \displaystyle e_{t}} (文章中に出てきたどのエンティティであるかのインデックス。{ \displaystyle r_{t}} = 0 なら{ \displaystyle \phi}が入る)
{ \displaystyle l_{t}} (複数語から構成されるエンティティについて、その単語を含めて残り何単語か)

を各タイムステップの隠れ状態から推定しながら単語を読み進めていく。

f:id:jack_and_rozz:20170929005541p:plain:w400

具体的なアルゴリズムとしては各時刻以下の処理を繰り返している。

  1.  { \displaystyle l_{t-1}} == 1 なら(次に読む所が複単語表現の途中でなければ) 前時刻の隠れ状態とrのembedddingを元に{ \displaystyle r_{t}}を推定 (eq. 3)

    1.1.  { \displaystyle r_{t}} == 0 なら(今読んでいる単語がエンティティの一部ではないなら) { \displaystyle L_{t}} = 0, { \displaystyle e_{t}} = { \displaystyle \phi} として3. へ

    1.2. { \displaystyle r_{t}} == 1 なら (eq.4) によってどのエンティティであるかを推定、新しく登場するエンティティならembeddingを追加 (eq.7) して現在注目しているエンティティを表す{ \displaystyle e_{current}} を選択。 *1

    1.3. (eq.5) によって{ \displaystyle l_{t}} (このエンティティを示す単語が後いくつ続くか) を推定。

2. { \displaystyle l_{t-1}} > 1 なら{ \displaystyle l_{t} = l_{t-1} - 1,    r_{t} = r_{t-1},   e_{t} = e_{t-1} } (残り単語数を減らすだけ)
3. 隠れ状態と{ \displaystyle e_{current}}を元に次時刻の単語を予測。 CFSMという段階的な推定を行うことで計算量を削減するソフトマックスを使用している。 (eq.6)
4. 次時刻の単語をRNNにフィード
5. { \displaystyle e_{current}}の分散表現を更新 (eq.8),1.2で使う全エンティティの分散表現リストにも更新を適用。

f:id:jack_and_rozz:20170929010556p:plain:w250
f:id:jack_and_rozz:20170929010558p:plain:w250
f:id:jack_and_rozz:20170929010601p:plain:w250
f:id:jack_and_rozz:20170929010603p:plain:w250
f:id:jack_and_rozz:20170929010606p:plain:w250
f:id:jack_and_rozz:20170929014740p:plain:w250

また,学習では各推定結果についての同時確率を最大化している。 (eq.9)
f:id:jack_and_rozz:20170929015525p:plain:w250

実験

実験では言語モデルのperplexity, 共参照解析に加えて Entity Prediction (下図におけるXXXXが何かを推定。XXXXの右側についての手がかりは使えない)で評価。

f:id:jack_and_rozz:20170929021330p:plain:w300

データセットは共参照解析にCoNLL 2012 shared task on coreference resolution(訓練データサイズは2802 documents, 1M tokens程度)を使用、
また Entity Predictionには InScript corpus(訓練データサイズは619 texts, 12.4 sentences / 24.9 entities / 217.2 tokens per a text on average)を使用。

結果、どのタスクについても改善。ただ言語モデルについてはベースラインが弱すぎる&あまり差分がない感。 Entity Predictionのaccuracyについてはhuman resultが77%強に対してタスク提案者の[Modi+, '17]の結果が63%弱,提案手法が74%強とかなり強そう。 ただHuman resultが77%ってちょっとタスクとしてアレなのでは?プレースホルダの右側が見えてないためそもそも曖昧性が高いような問題(XXXXが主語になっているような場合とか)があるんじゃないか?という気も。

感想

話としては結構好み。モデルも比較的意図がわかりやすい。実装が見たい(公開するといっていたがgithubに何もなかった)

{ \displaystyle l_{t}}の推定は左から順に読んでいく形式では難しいんじゃないか(ここからここまでがあるエンティティを表すフレーズだというのは文全体を見て初めて判断できることなんじゃないか) という気もすると思った。どちらかというと今読んでいる単語が前の単語と複合語をなしているかどうかの 0/1 判定の方が良かったんじゃないだろうか?

結局良くわからなかった点として、提案手法ではエンティティの数は動的に変化するので実際のエンティティのリストとの間でインデックスによる対応が取れないが、 訓練・テスト時にモデルが推定したエンティティと実際のエンティティとの対応をどう取っているのだろう?

*1:eq.4 の f(e) の項にあたる部分の意義がいまいち理解できていない。関連研究追う必要あり?

Gated Self-Matching Networks for Reading Comprehension and Question Answering [Wang+, ACL'17]

https://www.aclweb.org/anthology/P/P17/P17-1018.pdf

概要

SQuAD QAでSOTAを出しましたという論文。会場で発表を聞いていたけどネットワークが複雑で一回だと良く分からなかった。 改めてもう一度読んでも良く分からなかった。一応読んだのでメモ。

SQuADは文書と複数の質問が与えられ,回答となるそれぞれのスパンを文書から見つけるタスク(のデータセット)。train, devデータのみ配布されて、 testデータについては事前に配られず、公式サイト からテストを受けて結果だけを受け取る形式を取るそうな(どうやってるんだろう?) 公式サイトのトップにランキング形式で結果が乗るのがゲームっぽくて人気が出てるのも頷ける。

このタスクを解く際に元文書からどうやってスパンを取っているのかが分からなかった(SQuAD系列をちゃんと読んだことが無かった)ため試しに読んでみた。

モデル

f:id:jack_and_rozz:20170906233826p:plain:w400

モデルは上図。既存研究の積み重ねをフルに使っており,見ての通りとても複雑。図の下から順に,

  • (1. Question and Passage GRU Layer) Bi-RNNで質問文・元文書をwordとcharacter両方使ってエンコードしてベクトル列 { \displaystyle u_{t}^{Q} }, { \displaystyle u_{t}^{P} } を獲得

  • (2. Question and Passage Matching Layer) { \displaystyle u^{Q} } (質問文をエンコードしたベクトル列全体) をattention-poolingして { \displaystyle c_{t} }を獲得し,文書側のt番目のベクトル{ \displaystyle u_{t}^{P} }とconcatしてRNNに入力。それを文書の単語数と同じ回数だけ繰り返すことで{ \displaystyle v_{t}^{P} }を獲得。{ \displaystyle v_{t}^{P} }は文書のt番目の単語が質問文のどの単語とマッチしているかの情報を持ったベクトル。{ \displaystyle c_{t} }獲得の際のattentionには{ \displaystyle u_{t}^{P} }, { \displaystyle v_{t-1}^{P} } が使われる。(対象となる単語と前のマッチ結果を参考にしている)

この際に,RNNの更新時{ \displaystyle  [u_{t}^{P}, c_{t}]  } ではなく下式で表される { \displaystyle  [u_{t}^{P}, c_{t}]^{*} } を使うというのが提案手法その1。 意図としては文書中のある単語と質問文とのマッチ結果のうち、重要じゃないマッチについてはgateで弱めて入力している感じだろうか。

{ \displaystyle  [u_{t}^{P}, c_{t}]^{*} =   g_{t} \odot [u_{t}^{P}, c_{t}]}
{ \displaystyle g_{t} = sigmoid(W_{g} ) [u_{t}^{P}, c_{t}] }

  • (3. Passage Self-Matching Layer) 提案手法その2。 2. で得たマッチングのベクトルに対してもう一度attention-poolingしてBi-RNNに入力。やっている操作は 2. と同じで、アテンション先・アテンション元のベクトルが変わっているだけ。 正直この操作はよく意図が分からなかった。説明では2. でマッチ結果をgateすることによって重要な部分の情報しか残らなくなってしまうから,文書全体の文脈をもう一度獲得するためにself-matchingするんだ・・・と述べていたが、この操作で本当にそれをしたことになるのか?(そもそもattention-poolingする対象が2.のマッチング結果のベクトルなのだから、その時点で文書の細かい情報なんて無くなってしまっているんじゃないのか?)

  • (4. Output Layer) 回答スパンの初めと終わりを推定するレイヤ。気になっていた部分だが、 Pointer Networks [Vinyal+, NIPS'15] (attentionする時に隠れ層のweighted averageをとるのではなく推定した重みのargmaxを取るだけ。どこに強い重みがあるかのインデックスだけを得る) を使うのがトレンドらしい。 その際に使うのが3.でself-matchingを行って獲得したベクトル。

実験結果

f:id:jack_and_rozz:20170907001437p:plain:w350f:id:jack_and_rozz:20170907001441p:plain:w200

既存研究との比較とablation testの結果が上図。ablation testの結果を見るに提案手法(gating, self-matching)はそれなりの効果がありそう。 ただぶっちゃけこれNNにありがちな手当たり次第あちこち繋げてモデルの複雑度を上げたことで良くなっただけなんじゃないの感がある(失礼)

感想

精度競争が激しいタスクにはありがちだけどいまいち研究の大目標が掴めない感じの論文だった。モデルとかなんでこんなことになってしまったんだ・・・

また、重要なマッチングもそうじゃないマッチングも平等に残るのが嫌でゲート構造を導入したとのことだが、それは結局attentionの際に重みの総和を1にしていることに起因するわけで、Dynamic Entity Representation with Max-pooling Improves Machine Reading[Kobayashi+, NAACL'16]のbyway attention(attentionの際に"どれにもアテンションしない"に相当するベクトルを1つ用意する)とかを使えばいいんじゃないか、とも思った。 特に2つのテキストの単語に対応関係のあることが概ね保証されている翻訳と違って、QAなどのタスクではそもそもattentionする必要のない単語がしょっちゅう出てくるんだから。

Learning to Compute Word Embeddings on the Fly [Bahdanau+, arXiv'17]

https://arxiv.org/abs/1706.00286

概要

Bahdanauの新作。従来の統計的テキスト処理では未知語はUNKトークンに変換された上で共通のものとして扱われるが、そこをWordNetの単語の定義文をエンコード(各単語ベクトルの平均 or LSTMの最終ステート)した補助ベクトルを加えて補うことで未知語についても意味が獲得できるよね、という話。QA (SQuAD), Entailment (SNLI), 言語モデルの3タスクで評価。

基本的な未知語処理のモデルは下図の通りで、それぞれのタスクのベースラインとなるモデルにおいて文をエンコードする際通常のLSTMなどの代わりにこのエンコーダを使うだけ。 また、本研究ではmulti-word expressionについては取り扱っていない。

補助ベクトルとして(1)定義文からなるベクトル表現を用いた場合 (2)定義文の代わりに単語の文字列情報を入れる (“word” という単語に “w o r d” という定義文を与える) 場合 (3)大規模な外部データで事前訓練したGLoVeを用いた場合 の3種類で比較。

f:id:jack_and_rozz:20170905164942p:plain:w400

QAについては[Xiong+ ICLR'17] のモデルがベース。コンテキスト文と質問文をそれぞれエンコードした後それらのベクトル表現をこねこねしてquestion-document representationと呼ばれるものを作り,そこから2つの出力層を使って回答スパンの開始と終了位置を求めるのだとか。 こねこねする部分が微妙に複雑でなんでこんな計算にしてるのか元論文読まないといまいち意図が把握できない。最近のQAこんなんばっかりだ。

f:id:jack_and_rozz:20170905201445p:plain:w300

結果は上の表の通り。devセットの評価では未知語について文字ベースでスペル情報を入れると大きく改善、肝心の辞書情報の方の寄与はやや低め。(ただtestセットでは逆転しているので1~3%程度ならこの精度帯だと誤差?) また、結局一番良いのはGLoVeを用いたときで、それすらも現時点でのSQuADの公式サイトのランキングを見るとまだまだ上位陣 (EM: ~78%)には及ばない。そもそもベースラインがしょぼい。QAでSOTAを取ることが目標というわけではないのだろうけど。
これらを全部同時にやった時の場合は実験しなかったのだろうか?まあまだarXiv版だからこれから色々追加実験するのかもしれない。 他のタスクについても性能向上への寄与は同じような感じ。

また、Future workとして (1) 定義文中の未知語はどうするのか? (2) cyclicな定義はどうするのか(右の反対が左、左の反対が右とか) を上げている。 前者については同様の処理を繰り返す(つまり定義文中の未知語についてもその定義文を用いる)ことが自然だと考えられるが、計算量やメモリの観点からそれを素直にやるのは辛そうだとのこと。この2つは上手いこと解決できたら面白いと思う。

感想

GLoVeによる初期化を"data-rich scenerios" と言っているが、低頻度語・未知語について定義文を得るのと大量のunlabeled dataを得るの、どちらが簡単かなあ? wordnetに定義として登録されてるレベルのちゃんとした表現はむしろ問題になる低頻度語・未知語ほど手に入りにくくなるんじゃないかとも思うので、新しめのエンティティについても 定義文らしいものが早期に記述されるであろうWikipediaのデータを用いた疑似定義文でも有効だよ、ということを実験したほうが良かったのでは。 *1

また、単語の定義文を使うといってもある単語に紐づく lexicon / synsetは複数あるためそこのWSDが必須になると思うのだがそこの処理についての詳しい記述が見当たらなかった気がする・・・?どうしているんだろう。

*1:と思ったらそれもfuture workにあった。データの作成が面倒だったとかそういう・・・?

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." と書いてあったのでそういうことだと思うんだけど・・・

Towards an Automatic Turing Test: Learning to Evaluate Dialogue Responses [Lowe+, ACL'17]

http://aclanthology.coli.uni-saarland.de/pdf/P/P17/P17-1103.pdf

概要

学会中に発表聞きながら書いていたので短め。追記するかも。
How NOT to evaluate your dialogue system[Liu+, EMNLP'16] の著者の一人。 上記の論文中でBLEUなどの翻訳用のmetricやどちらの応答が良いか選ぶなどといった、現在の対話の自動評価手法が人間の人手評価との相関が無いことを検証していた。 結論としては人手評価のデータ (応答への1-5のスコアなど) を集め、それを用いて評価用のモデルを学習することが信頼性を担保しつつ、対話モデルの評価を低コストに行う手法であるとの事。そして今回は汎用ドメインTwitter)のデータを用いて実際にそれをやってみたよ、という話。面白かった。

f:id:jack_and_rozz:20170805074228p:plain:w400

Learning to generate one-sentence biographies from Wikidata [Chisholm+, EACL'17]

https://aclweb.org/anthology/E17-1060

概要

Wikipediaは多くの場合その記事に対応するWikidata item (他エンティティとの関係ラベルやある属性の値などの知識グラフ) を持つことを利用して、 ある人物についてWikidataから値を抽出したテンプレート (“TITLE mathias tuomi SEX OR GENDER male DATE OF BIRTH 1985-09-03 …”) からWikipediaの該当記事の第一文目を生成するタスク(Biography generation)。自分の研究でWikipedia/Wikidataを使ってみようかと思っているので参考に。

提案手法はアテンションを用いたseq2seqに,出力文を用いてもう一度入力文を復元するループ構造を加える事で入力文を復元できるだけの情報を出力文が持つように制約をかけたautoencoder的なseq2seq。 どこかで見たことあるような・・・。ちゃんと読んでないけどNIPSのdual learningとかもこんなのじゃなかったっけ。

学習の際decodeした時点で誤差の伝播が途切れるので同時に繋げて学習はしていないそうだけど、最終的な損失はどうなっているんだろう?入力→出力と出力→入力のを単に足しているだけ?その辺ちゃんと書いてなかった気がする。 

しかし結果としてはプレーンなattention seq2seqと比べてBLEUが8近く上昇。 翻訳ならとんでもない改善だけどBLEUがどの程度上がるとどうなのかということがタスクによって違うからなんとも。

感想

Wikipediaの各エンティティについて、Wikidataと組み合わせることで扱いやすい属性値と関連するテキストが同時に手に入るというのはなるほどと思った。 恐らくこの研究の新規性というのはWikipediaとWikidataのデータの性質を上手く使って構造化されたデータとテキストデータのマップを行った所にあると思うのだけど、 そのような性質を持つデータはWikipedia以外にあまりイメージできないのでどういう状況でこの研究の、というよりこのタスクについての知見は意味を持つんだろうという気もする。(エンティティの属性値だけあってそれについてのテキストを生成したい状況って何?)

こういうループバック的なモデルはこのタスクや翻訳のように入出力間の1対1対応が比較的強いような場合については良い制約として働くだろうけど、 例えば対話応答のように入出力間の1対1対応が全然取れないような場合ではむしろどうなんだろう、という気もする。

この研究とは関係ない話になってしまうがそもそも対話のように一対多関係にある入出力であっても無理やり一対一写像として学習しようとしているのが今のNNモデルだ、という意見は以前からあってその辺りのどの程度データそのものの入出力関係が多様なのかという定量的な評価指標って無いのだろうか。