自然言語処理の研究に悩む その2

前置き

あらすじ

 自分の研究的なトピックは「機械による読解 machine reading comprehension 」です。雑に言うと、言語理解のモデル化のひとつの手段として「国語の文章題が解けるようなシステムを作る」のがこのトピックの目標です。ここ2,3年でそれなりな流行を見せており、大規模(問いが数万個、の単位)なデータセットが数多く出てきて、それを解くようなニューラルなシステムがたくさん提案されています。中には人間の精度に匹敵する性能を出せたものもあります。

 しかしこのような進展を見ても、システムに人間と同等の文章読解力があるとは到底思えない感じがします。システムを評価する側のデータセットが簡単そうに見える、というのが大きな理由としてあります(そして難しそうに見えるものは案の定解けません)。大規模なデータセットを作ろうとするとどうしてもクラウドワーカー等に依頼することになり、いわゆるちゃんとした国語の試験問題のような難易度になってくれないことが往々にしてあります。ではどうやったら難しそうな問題が作れるのでしょう。そもそも難しい問題とは何が難しくて、簡単な(という印象を受ける)問題は何が簡単なのでしょう。わかりません。ということで悩んでいました。

この1年くらい何をしていたか

 前の記事が2017年11月でした。2017年の末から2月末くらいまでは、 ACL2018 に何か論文を書こうと思って作業していました。ひとつの方針として、「読解の問いの難易度」を「ベースラインのシステムの正答率」だとみなして、それを予測するというタスクを考えてみました。「この特徴を使ったらシステムが正当するかどうか当てられるよ」と言えるような特徴をうまく見つけられれば、それが(少なくともシステムにとっての)難易度を決定づけるような要素だと言えそうかなと思いました。しかし色々試してみてもさほど綺麗に予測できる感じでもなく、効くような特徴がさほど面白くもなく、という感じで、弱気に short paper を書いたものの上手くまとめきれず、綺麗に不採択でした。

 上記の論文の査読が返ってきた時点でこれはダメだと思ったので、切り口を変えて EMNLP2018 に向けて何か考え直そうという気持ちになりました。その頃ちょうど NAACL2018 の論文が出始めていて、 [1803.02324] Annotation Artifacts in Natural Language Inference Data という論文が印象に残っていました。内容としては、 SNLI / MultiNLI という最近あれこれ取り組まれている含意関係認識(のことだと認識しています。詳細は省きますが、 X と Y という2つの命題が与えられて、 X が真のときに Y が真になるか(entail)・何とも言えないか(neutral)・偽になるか(contradiction)を当てる、というタスクです。例は論文の図を参照してください)のデータセットで「 X を見ずに Y の情報だけ使っても正答できる」ような問いが結構たくさんあって全然ダメよね、と指摘するような話です。同様の指摘をする論文は同時期に複数出ています。

 じゃあ同じようなことを読解のデータセットでもやれば良さそう、ということで新たな方針がおおよそ固まり、あとはその「こんな簡単に解ける」的トリックの部分を(これで大丈夫なのかと心配になりながら)考えて、調査対象のデータセットは多ければ多いほど良いだろうとなるべく増やして、結果をまとめてアノテーションで裏付けも取って(ここは査読でツッコミ対象だったのですが、急いでいてそこまで丁寧な作業ではなかったので、継続する予定です)、書いて投稿して、インターンに行きました。5月末までの話です。

 インターンについては別途記事にするかどうか迷っていますが、ひとまずここに経緯だけまとめます。2018年6-9月でカナダのモントリオールMicrosoft Research に行きました。ここは2017年の頭に Maluuba というスタートアップが買収されてできた研究所で、主要なメンバーはその時代からの人たちです。当時からの会社的なテーマは(たぶん) literate machine を作るぞという感じで、そのための主要な話題のひとつとして機械による読解云々を据えています。でそこの偉い人が昨年の ACL2017 の自分の論文を会議直前に見てくれたらしく、連絡をもらって現地で挨拶して、まあ来なよと言っていただけたので行きました(人事の方の連絡がルーズで最終的に行けたのが翌年夏になったわけですが、時期的な感覚はよくわかりませんでした)。モントリオールでの生活は特に家を探す部分が大変でした。日本食もそこまで充実していないのでちょっと食事に困ることもありました。あと思ったよりも暑かった。ただオフィスの環境がかなり良かったのでなんとか生きていけました。取り組んだテーマは自分で決めて、まだ着地しておらず、たぶんあと数ヶ月はかかりますが、きちんと形にしたいと思っています。

 話を戻します。 EMNLP2018 に出した論文の査読結果は意外とそれなりに良く、気持ち的にはあっさりと通ってしまいました。ただこれ自体が進展かと言われるとそうではない気がしています。この論文を含め、今まで自分が取り組んだ論文では既存のデータセットを批評する話しかできておらず、つまるところ何も積み上げられていない気持ちが強いです。何かをちゃんと作る側にまったく回れてないよドラえも〜んみたいな感じです。(インターンでやった内容はそのための次の一手ではあるものの、独立な取り組みかつ未完成なのでちょっと脇に置くとして、)次はどうすればいいのだろう、ということを考えたい気持ちです。

最近の業界の動向

 現状を把握するところから始めましょう。まず、読解のトピックに限らず、言語理解に関わるデータセットのうち、最近提案されたものを見てみることにします。列挙しようと試みたら数が多かったので、2018年が初出のものに限定し、新しいものが上になるようにして、特に気になることがない場合は一言だけ説明をつけるに留めました。コメントがたくさん書いてある論文はこの記事を書く際に改めて読み直した(比較的新しい)ものです。およそ箇条書きの1点目がデータセットの説明です(2点目以降は細かい話で、おそらく論文を見ながらでないとわからないです。記事の流れからは逸れるので読み飛ばしてください。長くてすみません)。図表などはコピーしていないので、興味がある場合は論文を直接参照していただけると助かります。一覧を github のレポジトリ に作りました。

  • CoQA (A Conversational Question Answering Challenge) https://stanfordnlp.github.io/coqa/ (TACL??)
    • 文章と対話形式の質問応答のデータセットクラウドワーカーのペアに何らかの記事を見せてそれについての質問応答を会話形式で連続でやってもらって集めた感じ。特徴としては、会話形式なので問いに出てくる表現がそれ以前の会話内容に依存する(照応や pragmatic な表現が入る)こと、回答の際に答えの根拠をまず抜き出させてから答えをその rewrite として自由記述させていること(正当の信頼度・一致度を上げるため)、記事の題材がいろいろあること(ドメイン7つ)。
    • 説明的な記事の内容ベースでワーカーに問いを作らせるとき、回答の候補が複数保証されるような問いがちゃんと作れない可能性がある。それをケアしようとは試みていて、 we select passages with multiple entities, events and pronominal references と書いている。どれくらい効くのかはわからないけどこういうのに気をつけているのは好印象。
    • 自由記述とは書いているけど、そのままの表現が文中に出てくるような答え(extractive と呼んでいる)は依然として 66.8% あるらしい。対して abstractive な答えである 33.2% の内訳は何かなと思って表を見てみると yes/no が全体の 20% ほどらしいのだけど、どれくらい重複があるんだろう(つまり、文中に yes/no が出てきてそれが答えになる問いの割合)。ある程度の重複があるなら abstractive のうち半分くらいは yes/no なのかも、という気もする。
    • Linguistic phenomena の分類はもうちょっと掘れた気がする。 explicit coref が記事中への coref も可能ならあまり context dependent とは言えなさそう。そうなると注目すべきは implicit coref で、割合的には 20% なので、どうやってこれを増やすかが future direction のひとつになるのだと思う。あと気になるのは、 Table 7 で question type ごとの正答率を出しているけど、 no coref (対話履歴を見ずにその問い単体で回答可能なもの)よりも implicit coref の問いの方がベースラインの精度が高い点。これだと「implitic coref がいまのモデルに解かれていなくて、これから解くべき課題だ」という主張がしづらそうな……。
    • Lexical match / paraphrasing / pragmatics という分類をすると pragmatics の問いが(人間にとってもベースラインのモデルにとっても)難しいということがわかる。これが conversation history にどれくらい関わっているのかわからないけど、問いのタイプとしては(lexical match & paraphrasing の補集合なので)知識推論みたいなところに落ちるはず。対話形式にしても implicit coref がそこまで面白くなさそう(つまるところ履歴の直前を見れば解けるような話になってしまっている?)っぽいので、こういう推論させる問いをどうやって増やすかという方針に進むのもいいのかなと思う。
    • 次に挙げている QuAC というデータセットとモチベーションはほとんど同じだけど、全体的に CoQA のほうがまとまりがよい気がする。
  • QuAC (Question Answering in Context) https://quac.ai (EMNLP2018)
    • 文章と対話形式の質問応答のデータセットクラウドワーカーのペア(甲と乙)がいて、 Wikipedia の記事の中の一項目が甲に与えられて、乙が相手に質問を投げまくる(乙は記事の内容を見られず、その項目のタイトルのみ与えられる)。甲は乙の質問に(記事の抜き出しで)答える他に、これ以上会話が続けられそうな内容かどうか、回答不可能な問いかどうか、抜き出しではなく Yes/No 、などの情報を乙に伝えることができる。甲乙の会話は連続したやりとり(最大で質問12回)で、会話の履歴に文脈的に依存することになるのでたとえば照応解析が必要になる問いが発生する。
    • 論文自体はちゃんと書いてあるけど、どうにも面白くない気がする。まず乙の応答が記事の抜き出しに制限されている(評価が難しいからというのが理由。同意するが超えなければならない点ではある)。データセット収集に使われたのが wikipedia で、かつ「人物」についての記事に限定されている。 Dialogue acts が含まれると主張しているものの本来的な意味で act なのは質問しかない気がする。評価に出てくる human equivalence score というのがどれくらい意味があるのかよくわからない。Yes/No の選択肢は正確には yes,no,neither だったらしく、 neither が majority になっていて human performance と 10% しか差がない(残念)。 gold sentence + no answer の upper bound で human performance と 8% しかない(大丈夫かな)。「もっとも近そうな sentence を予測してから範囲選択 + 回答不能判定」の組み合わせで工夫したら簡単に human performance に到達しそうな気がする。 context の参照が必要と書いているけど、必要な距離についての分析がない気がする(見落としてたらすみません)。この分析がないと、 BiDAF++ (w/ 2-ctx) が最も良い成績だったという結果を見たときに、問いの直前の 2 QA pairs だけ使うので十分な問いがほとんどなのか、本当はもっと遠くを見る必要があるけど BiDAF がそれに失敗しているのか、の区別がつかない(たぶん前者だと思うけど論文中では後者のように書いてある)。あと些細だけど論文中の図の参照の仕方がところどころ悪くて論文が読みづらい。
    • など、気になる点がちょっと多い。CoQA と共に発展の方向性としてはかなり自然で、対話にも興味がある人も見ることになると思う。重要な特徴として挙げられるのは問いが少し文脈依存になっている点と解無しの問いがある点の2つだと思うけど、それぞれ CoQA と SQuAD2.0 の方が良い気がするのでこのデータセット独自の強みが見えづらくて残念。
  • HotpotQA https://hotpotqa.github.io/ (EMNLP2018)
    • Multi-hop reasoning をテーマにした質問応答のデータセット。 multi-hop というのは例えば "When was the singer and songwriter of Radiohead born?" という問いに答えるには "the singer and songwriter of Radiohead" が "Thom Yorke" であることを見つけてから "When was Thom Yorke born?" の答えを探す、というような二段階の推論が必要とされることを指す。 Wikipedia 上でリンクがある2つの記事の1段落目同士をうまくくっつけてからクラウドワーカーに問いを作らせている。さらに comparison question というのも作らせていて、 Wikipedia 上で「〜〜のリスト」として整理されている記事を2つ持ってきてそれらを比較させるような問いも作らせている。さらに、記事中の「問いに答えるために必要な情報」を文単位でクラウドワーカーに選択させる、という作業も経て説明可能性を保証している。
    • test set は distractor と full wiki という設定に分けている。前者は正解となる two gold paragraphs に加えて問いとの bigram tf-idf が高い top eight paragraphs を含めて10個の paragraphs から答えを見つける。後者はすべての Wikipedia の記事の1段落目が与えられる(とても多くて答えがどの段落に入っているかわからない)ので information retrieval のタスクを含むことになる。
    • 単に回答を抜き出す以外に「問いに答えるために必要な情報」の選択もタスクに含めている。ただしこれは回答の選択よりは主観的なので人間の一致度がそこまで高くないと言及されている。こっちがタスクとして面白いかどうかはちょっとわからない。
    • distractor の QA のベースラインは全体で F1=0.58 くらい。対して人間の精度は(たぶん distractor なしの gold paragraphs だけで)サンプルされた1000題に対して F1=0.91 くらい(同じ1000題に対してのベースラインの精度は F1=0.69 くらい)。上限の数字も出しているけど信頼できるかどうかは微妙だと思う。人間とシステムで今のところ F1 が 0.2 くらい開いているので一応はおっけーなデータセットだと言えそう。一方の「必要な情報の選択」のタスクは gold paragraphs のみの精度が人間とほとんど同じなのでよくわからない(いずれにせよ distractor の精度を比較するなら人間の設定も揃えるべきだと思う)。
    • multi-hop のタイプを分類しているけどタイプ別の精度が見たかった。 Table 3 で出されている例はほとんど回答の候補を multi-hop なしで絞れると思うので、タイプ別で精度の差が出るかどうか怪しい気がする(そもそもアノテーションが少なくて有意な差が出ないかも)(comparison との比較は Table 6 で出ており良いと思う)。
    • なぜ hotpot なのか気になったけど脚注に "The name comes from the first three authors' arriving atthe main idea during a discussion at a hot pot restaurant." と書いてあって良さがある。 retrieval のタスクっぽく置いた方針はあまり自分の好みではないけど、問いの集め方などは面白いと思うし問いのフィルタリングや回答の候補の保証などをもうちょっと工夫できたら更に良かったかなと感じた。
  • SWAG (Situations With Adversarial Generations) https://rowanzellers.com/swag/ (EMNLP2018)
    • 動画のキャプションから取った連続した2文の、2文目の動詞句を選択肢で当てるタスク(textual な event prediction みたいな感じ。著者は situational commonsense reasoning と言っている)。選択肢の候補は、言語モデルでたくさん作ってから、(annotation artifact を避ける目的で) stylistic features を利用するモデルが間違えやすいものを選ぶようなフィルタリングをして、最後にクラウドワーカーに verification してもらっている。
    • 全体的に完成度が高い。今後はデータセットを作るときに簡単なモデルでフィルタリングするというのが増えると思う(この研究は選択肢を作るときにそれをやってる点でわりかし新しい気がする)。
    • 考えさせられたのは、「続く2文目を選ぶ」というタスク設定について。著者はイントロで here we focus on whether a (multiple-choice) ending describes a possible (future) world that can be anticipated from the situation described in the premise, even when it is not strictly entailed. と書いていて、わかっていらっしゃるという感じで文句が言えないのだけど、どうやったら今回の手法を他の種類の常識推論のためのデータセット構築に使えるかなという今後の発展がなかなか気になる。今回のデータセットを解くのに必要な知識は具体的にどのような種類の知識なんだろう、ぱっと見ではわからない。
    • 選択肢を作るのに使った book corpus や caption のコーパスで pretrain したベースラインがあってもいいのかなと思った。実はそうだったらすみません(ちゃんと読んでない)。
  • DNC (Diverse Natural Language Inference Collection) https://arxiv.org/abs/1804.08207 (EMNLP2018)
    • 自然言語処理のいろんなタスクを natural language inference のタスクに recast して統合したデータセットWhite et al. (2017) Inference is Everything の拡大版という感じ。
    • 他のデータセットで pre-training しない場合の hypothesis-only (前述した Y のみで推論する解き方)のベースラインと普通(X と Y の両方使う解き方)のベースラインでほとんど精度に差がないのが気になる(NLI のデータセットにする意義がよくわからない)。対して pre-training すると元々 hypothesis-only と普通のベースラインに差がないデータセットでも精度に差が出るということは text (上述の X )の方にバイアスが入っているということになる?
    • よくわからないけど、単一の NLI のデータセットとして見るには疑問が多い。たとえば半分近くが NER の問いなのに既に 92.5% の精度が出ているわけだし(Y のみで 91.5% だし)。どう使えばよいのかわからない。タスク同士の transferability みたいなものを見たいなら DNC というひとつのパッケージとしてまとめて pre-training する意味もないと思う。 GLUE みたいに使いたいのかと思ったけど "probe" するためにと書いてあるので違うニュアンスを与えたいみたい。そうだとしても個別のタスクそれ自体の質の保証が弱い気がする。うまく読めない。
  • OpenBookQA https://arxiv.org/abs/1809.02789 (EMNLP2018)
    • 理科の知識をもとにクラウドソーシングで選択式の問題を作ったデータセット。問いと選択肢に加えて作問に使われた知識(scientific fact)が与えられる(あるいはその知識を回答者から隠してしまえば、それ自体を外部知識として要求するデータセットと見ることができる)。論文は全体的に丁寧に書かれていて好印象(印象はあまり重要ではないですね)。
    • データセット構築の段階で「元となる理科知識に加えて何を知っていなければならないか」という常識知識をクラウドワーカーに記述させたが、あまり質の良いものではなかったと報告されている。やはり「問いを解くのに必要な常識を記述してもらうのは難しい」という感じ。
    • 分析として100問取り出したらそのうち21問は「作問に使われた知識を直接要求するような問い」ではなかったと報告されている。作問の打率が8割と考えれば聞こえはいいけど、この知識を使って訓練したベースラインの精度(4.4節)が6割前後(直前に書いた「常識知識」を使うと8割前後)あるので、「提示された知識をどう使うか」という能力を評価するデータセットとしては信頼度が少し損なわれている気がする(まあ人間の精度と3割違えば十分かもしれないけど)。
    • となると作問知識を隠して「外部知識を要求する」データセットとしての利用を考えることになる(結局 AI2 の既存のデータセットと何が違うのかという感じにはなってしまう気がするけど。知識が align されている点は大きな貢献だと思う)。著者は実際に、既存の読解のデータセットのほとんどが self-contained であるのに対して、我々のデータセットは not self-contained だと主張している。そう見るとおそらく良いデータセットになっている気がして(4.3節のベースライン)、このあたりの「自分たちのやっていることの位置づけ」に関わる議論が丁寧な論文なので好印象という感じです。
    • ただ「外部知識を要求する」としても「知識が得られてしまえばかなりの割合の問いが解ける」ようなデータセットであるから、「その知識をどうやって得るか」を中心的に要求する形に落ち着いていることになる。これはどちらかというと information retrieval のタスクなのではと思うのだけど、じゃあ(著者がそれを目指しているわけではないものの)読解タスクは information retrieval とどう違うのか、何をもって読解タスクの identity とするのかは議論の発展先としておそらく重要。自分としては narrative comprehension のような形で situation model を評価するものとしてのタスクが大事だと思うのだけど、ちょっと話が長くなりそうなのでここで切ります。
  • RecipeQA https://arxiv.org/abs/1809.00812 (EMNLP2018)
    • 読解と画像を混ぜて multi modal に問うという趣旨のデータセット。立ち位置は TextbookQAFigureQA あたりに近い。手順を説明するテキストと、その各ステップごとに対応する画像があるので、そこからタスクを作っている。問いは自動で作っている選択式(4択)みたいなのでちゃんと解けるものになっているかどうかがちょっと心配。特に cloze task の方、ベースラインが 27-29% なので。ちゃんと正当の選択肢に必然性があるのかとかが気になる。人間の精度を付けてほしかった(自動生成した問いでこれをやらないのは致命的だと思う。自動生成した問いの回答可能性を高めるのは結構大変っぽく、大変そうだなぁと過去に思ったのはたとえば Who did What とか QAngaroo とか)。
    • レシピの勉強になる論文だぁおいしそうだぁ(bacon sushi というよくわからないレシピが例示されている)と読み流そうとしていたら1段落目で自分の論文が引用されていたので真面目に読みました。
  • CLOTH https://arxiv.org/abs/1711.03225 (EMNLP2018)
    • 英語の試験問題の穴埋め(英語では fill-in-blank ないし cloze と呼ばれていると思います)のデータセット。選択式にして回答可能性を保証している。問いのタイプとして short-term か long-term の reasoning か grammar か matching かで4種類に分けている(matching を long-term に含めた主張をしているのはよくわからない)。長距離の推論と著者が呼んでいるのは multi-sentence reasoning のことで、それは全体の 18% ということらしい。そこまで多くない。ベースラインで最も良かったのは言語モデルの手法。
    • ICLR2018 の review で言われている問題はそのまま残ってると思う(けど、7-4-4 で 4 を最後に付けてる人の査読はあまりに雑でちょっとひどい。一方の 4 の人はまあそうだなぁという感じ)。ただし、 言語モデルを使ったベースラインが妥当でないという査読の主張については懐疑的。現に後続の研究で言語モデルで pre-training して finetunung したら色んなタスクで良くなったというのがあるし(Improving Language Understanding with Unsupervised Learning)、言語モデルだけで winograd schema challenge で SOTA を出した研究もある([1806.02847] A Simple Method for Commonsense Reasoning)。
    • RACE と元のコーパスが一緒っぽい。 CMU の同じチームからの論文。
  • DuoRC http://aclweb.org/anthology/P18-1156 (ACL2018)
    • NarrativeQA にアイディアが近い(初出はほとんど同時期だったはず)。ある映画を説明する二種類のプロット同士で問いを跨がせることで良い感じになってくれることを期待している。 Commonsense や multiple sentence reasnoing が多く問えるとも書いているけれどそれを裏付ける分析がない。どうでもいいですが abstract が長い。
  • SQuAD 2.0 http://aclweb.org/anthology/P18-2124 (ACL2018)
    • SQuAD に "no answer" な問いを追加したそうです。
  • CliCR (A Dataset of Clinical Case Reports) http://www.aclweb.org/anthology/N18-1140 NAACL2018
    • 医療文書の読解。穴埋め。必要な能力のアノテーションまで丁寧にやっているので個人的な好感度が高い。
  • FEVER (Fact Extraction and Verification) http://aclweb.org/anthology/N18-1074 NAACL2018
    • Fact verification というのは形式としては textual entailment の premise (前件)を長くしたもの。そのためのデータセットを大規模に作りましたという話。 EMNLP2018 でワークショップをやっていたらしい。
  • MultiRC (Multiple Sentence Reading Comprehension) https://cogcomp.org/multirc/ (NAACL2018)
    • 複数文に跨った読解。「あるひとつの文だけでその問いが解けるかどうか」の検証をデータセット構築の過程に含めている。 6K questions くらいなので少し小さい。文を跨ぐのは coreference と paraphrase で6割弱という感じ。
  • ProPara http://aclweb.org/anthology/N18-1144 (NAACL2018)
  • ARC http://data.allenai.org/arc/
    • AI2 のお家芸。小学生の理科の問題を読解形式にしたもの。ただし外部知識を要求する割合が高くて、「与えられた文章を読まないと解けない」ような問いは少ないと感じる(という分析を自分の EMNLP の論文でしました)。データセットは Challenge の方で 2-3K くらいの規模なので小さめ。
(追記)見落としていたもの:

最近のデータセットのまとめ

 長くなってしまいましたが、発展の方向性でまとめると以下のような感じでしょうか。

  • 問いの文脈的な依存(CoQA, QuAC)
  • 文間の照応や推論(HotpotQA, SWAG, MultiRC)
  • 外部知識(OpenbookQA, ARC)
  • ドメイン特化や画像入り(CliCR, RecipeQA)
  • 手続き的な文章(ProPara, RecipeQA)
  • 解答可能性の配慮(SQuAD2.0, QuAC)

 一方で、多くのデータセットに共通する課題もあります。「ある言語現象や知識に特化し、そのような能力を問うようなデータセットを目指した」と書いているものの、それについての分析が深くないように見える点です。データセットを提案する論文が査読に通る最低限の要件は「ベースラインのシステムの精度と人間の精度に乖離があり、取り組む価値がある」と主張できることなので、そこはたいていクリアされています。しかし、提案するデータセットに新規な特徴が含まれているとしても、それがそのデータセットの難易度に本当に寄与していると説明できなければ、「これを解けるシステムはその特徴を捉えることができる」という主張をすることができません。つまり「このデータセットが解けるようなシステムが作れたとき何が明らかになるのか・何が嬉しいのか」がわからないままになってしまう、ということです。

 という感じでデータセットの意義まで細かい分析を付けてくれるとありがたいなぁと思うのですが、なかなか狙い通りにならないでしょうし難しいですね。文句を言うことはできますが、実際に取り組むことで明らかになる課題もありますし、やらないより全然マシです。そもそも有名な研究室から出たデータセットなら、挑戦する人がたくさん期待できるし、他の人が勝手に分析してくれるかもしれないですしね(言い方が悪くてすみません)。ただしコストの問題があり、大きな研究室から出ているデータセットを見るとクラウドソーシングに数百万円のオーダーでお金がかかっていることがわかります。場末の学生が同じように頑張ろうとしてもちょっと難しいですね(しかし批評家は止めたいので困っている)。

データセットを作る?

 自分は次に何をするのが良さそうでしょうか。わからない。取り組み方として大きく分けると、「データセットを作る」「システムを作る」の2通りあるっぽい、ということを以前述べました(ここで「データセット」は「タスクのインスタンス」の意味で書いています)。自分としてはそろそろデータセットを作ることをやりたいなとも思っていますが、これまで見たようにあまり簡単ではない雰囲気が漂っています。

 いろいろとデータセットを見てきた中で、(難しい問いを作るのはさておき)読解のタスクで易しい問いを作らないためには次の要件が満たされているべきだと観察されます。

  1. それらしい回答の候補を複数持っている(multiple candidate answers)
  2. 回答の候補自体にバイアスが存在しない(avoiding annotation artifacts)
  3. 「問い+正答」に似た内容が文脈の文章内に直接出現しない(context-question simlarity)

 例えば上で見た SWAG というデータセットは1,2点目をわりかし綺麗にクリアしています。ただ確認したようにこれは「2連続の event の前者が与えられて後者を当てる」という event prediction 的なタスクなので、問いも文脈となる文章も持ちません。しかし文章から問いを書いてもらうと3点目が配慮されづらく、「深く考えなくても解ける」ようなものばかりになってしまう例がほとんどです。

 回答の形式についても考慮が必要です。現状で主に利用されているのは、文脈の文章からの抜き出し・多岐選択式(およそ4択)・自由記述、の三者です。まず抜き出しは上記の1点目をクリアするのが大変です。個人的には選択式のほうが多様な回答が作れるのではないかと思っていますが、同様に偽の「それらしい」回答候補を作るのが大変です。自由記述は評価が難しいので、 NG とは言わないまでも今のところは見送るべきでしょう(生成や翻訳の評価と同質の問題があります)。

 ここまで見てきて、実のところは「それらしい回答の候補を複数持たせる」ことを目指すのがもっとも重要かつ大変なのではないか、という気がしてきました(上記の1点目のクオリティを上げると2,3点目も同時に解決されそう)。個人的な経験では、国語の文章題だと「選択肢のどちらか正しいか迷う」のが難しい問いだったかなぁという思い出がないこともないです(センター試験の選択式の問題が苦手だった)。つまり「与えられた文章の内容に照らしてどちらの回答の候補がもっともらしいか」を考えさせるのがより洗練された(?)言語理解を問うことに繋がるのではないでしょうか(わからないけど)。 可能世界の多さが〜とかこの世界との近さが〜とかいう話をしてもよいのかもしれなかったのですが、いまいちピンとくる話をまとめられなかったので止めます。

 次いでもうひとつ重要になるのは、「それが解けるようになると何ができるようになったと言えるのか」を説明できるようなデータセットであるようにすべき、という点です。この手の説明可能性や解釈可能性みたいなものは機械学習が入るとより強めの問題になりますが(依然として「訓練データって何を訓練するの??」という気持ちは絶えません)、それはともかく最近のデータセットはここが弱すぎます。問いを解くという行為がどのように分解されていくかについてもうちょっと知見を深められたらいいのになあと思っています。

 という感じでもし自分がデータセットを作るなら上記の2点が大事な気がするなぁということを思いました。ではシステムを作るならどういう方向性になるのかもちょっと触れてみます。

システムを作る?

 読解のタスクでは、Bi-directional Attention Flow が出てから本質的にはその variant しか登場していない、という話を結構聞きますが、およそそれ以外は self-attention (self-attention って何?)があったり convolution があったり別のデータセットや別のタスクや augumentation で pre-training したり transfer learning したりの組み合わせだったりする場合がほとんどな気がします。なんかこう、いろんな既存手法を持ってきて組み合わせてパラメータを合わせるのが上手い・手が速い人が勝つという感じがしています(自分はそういうの下手だし手が遅いのでつらいです。修行したい)。それだけだとあまり面白くないので、解いたらこういう知見が得られるよ〜というアプローチで解きたい気持ちがあり、上記のインターンではそういうのを上手く思いつけたかなぁと一瞬期待したのですが、実際はなかなか話が立ちませんでした。そもそも SOTA の数値を出すのすら難しい場合が増えてきており(実装が公開されていないとか、GPU がたくさん必要とか)、「1GPUでそこそこ速く訓練できる」「実装が公開されている」の2点が満たされているような話はもうあまり見ません(メジャーなデータセットで SOTA を出しているのはだいたい強い企業の研究所が多かったりします)。かくいう私もインターンでは実験のために GPU をたくさん使わせてもらって、それが終わったいま自分の大学の研究室では同等の環境を用意できないので、(少なくとも自分の力だけでは)実験を続けられなくなってしまいました。頭が悪い。

 というわけで、最近の読解のタスクでは(含意関係認識のタスクでも)古き良き時代の symbolic な semantic representation の上で knowledge reasoining や logical reasoning をして解きました、みたいな話はほとんど聞かないです(ゼロではないです。たとえば AAAI2018 の Question Answering as Global Reasoning over Semantic Abstractions あたりの人たちは結構好きです。ルールが多すぎてもうちょっと何とかならないかなとは思うのですが)。自分はこっちがいいと言いたいわけではないのですが、 もうちょっと地に足の着いた感じがいいなとは思っています。じゃあどうするねん、そもそも attention ってなんやねん……。

わからない

 わかりません。データセットを作るのもシステムを作るのも大変そうです。土俵を変えたほうが良い気がする。しかし土俵を作ることにおいては知名度的に強い人たちが有利なんですよね。参った。何も解決していません。この調子だとまた分析をする論文を書いてしまいそうです。

 うーん本当は situation model をやりたかったんです。心理学における言語理解の計算論的なモデルのひとつです。著名な論文は Zwaan (1998) Situation Models in Language Comprehension and Memorypubmed のリンクを貼りましたがググれば論文は見つかります)で、最近のまとめは Zwaan (2016) Situation models, mental simulations, and abstract concepts in discourse comprehension などです。不勉強なのでここでは詳しく説明できませんが、自分としてはそれなりに面白いと思っています。しかしこれが現状の自然言語処理で必要になる話かといえばおそらくそうではないでしょう(必要になることがある、ということすら断言できません)。

 ここからは集中力が切れた文章末尾の放言です。前回の記事の最後で、「自然言語処理が何を積み上げてきたのかよくわからない」ということを書きました。かなり乱暴な言い方になってしまい反省しているのですが、気持ち的には今でもあまり変わっていません。自分としては何らかの仮説や理論の積み上げがあってほしいのですが、何もわからないままです。これには自然言語処理分野に特有の理由がいくつかあると考えています(あくまで素人の意見であることをご承知おきください。この段落を読んだら忘れてください)。まず、どんなタスクでもコーパスを評価の基軸としている以上、ぶれ・ノイズが大きくて汎用的な知見として確立するところまでいかない、というのがあると思います(伝統的なタスクほどデータセットの数が少ないと思います)。次いで、言語という様々な性質・特徴を含んだものが対象であるにもかかわらず、評価指標を精度などの一元的なものに落としているために「この手法はこのタスクに有用である」以上の知見が出てこない、というのがあります。タスクが複雑であればあるほど得られる知見がぼやける、ということになります。例えば構文解析ならまだわかりやすいですが、翻訳・対話・QA などの多段階・多種類の処理が必要になりそうなタスクで一元的な指標に落とすのは大変な気がします。いくつかあると書いたけどこの2点かなぁ。ただ、「何を積み上げているのかよくわからない」とは言っても、技術もタスク(コーパス)も積み上がっていて、それは非常に重要なことだという気がしています。言語というなんかよくわからんものに取り組む以上、持っている道具の総体として解釈していくしかないのです、たぶん……(他に手段がない)。

 あと1年と少しで博論が書き上がっていなければならないのですが、どうなるんだろう……。そろそろ就活もせねばなりません。人生。