Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2019: CommonsenseQA: A Question Answering Challenge Targeting Commonsense Knowledge #229

Open
jojonki opened this issue Apr 16, 2019 · 0 comments

Comments

@jojonki
Copy link
Owner

jojonki commented Apr 16, 2019

CommonsenseQA: A Question Answering Challenge Targeting Commonsense Knowledge
Alon Talmor, Jonathan Herzig, Nicholas Lourie, Jonathan Berant
Best Resource Paper NAACL 2019
https://arxiv.org/abs/1811.00937

概要

CommonsenseQAというコモンセンスに基づくQAデータセットを公開.ConceptNet(エンティティ間のリレーションを記述したグラフ)から,ソースコンセプト(例:river)とそれに対応する同一セマンティックリレーション(例:AtLocation)の複数ターゲットコンセプト群(例:waterfall, bridge, valley)のペアを利用.これをクラウドワーカーに提示し,答えがユニークなターゲットコンセプトになるような質問を作ってもらった.これによりワーカーに事前知識がしばしば必要となるような複雑なセマンティクスを扱う質問を作ってもらうことに成功.CommonsenseQAでは12,247の質問を作った.様々なベースラインを試し,一番良かったBERT-largeでも56%の正解率,これに対し人のパフォーマンスは89%なので,現状のNLPのSOTAでもまだまだ攻略できていない難しいデータセットである.

イントロ

人は質問に答えるとき,空間関係,因果関係,科学的根拠,社会慣習などに基づく知識を利用したりする.例えば「芝刈り機の音をサイモンが聞いたとき,彼はどこにいた?」という質問に対しては,サイモンはおそらく外にいて道にいたんだろう,と推測できたりする.こういうことは人には簡単だが,NLPシステムにはまだまだ難しい.

現状のQAシステムではほぼこのようなコモンセンスを必要としないデータを解いていたり,非常に小規模のデータセットで試みていたりする.最近だとSWAG (Zellers, 2018b)のデータが大規模で,これは後に続くイベントを推測するようなものであるが,すでに人レベルまで攻略されている.VCR (Zellers, 2018a)ではビジュアル観点に基づくコモンセンスを利用する.

本論のコントリビューション:

  1. 12,247のQAデータセット,CommonsenseQAの公開
  2. ConceptNetからのコモンセンス質問の生成方法の提案
  3. CommonsenseQAの様々なSLU SOTAモデルの実験.(人含む)

関連研究

イントロでも少し述べたので省略.まだあまり攻略されておらず,大規模のコモンセンス系のデータセットはない模様.

コモンセンス質問データの作り方

提案する手法ではコンテキストなし&コモンセンスが必要で,人が簡単に答えられる質問を生成する.提案するデータは,選択式のQAデータとなる.下記のように作る.

  1. ConceptNetから1つのソースコンセプトと3つのターゲットコンセプトを抽出
  2. ソースコンセプトと各ターゲットがペアになるような質問(ターゲットペアが答えとなるように)を生成する.つまり3つの質問を生成する.またその答えはそのユニークにターゲットコンセプトとなるように設定する必要がある(答えは3つから選択).そして更に2つの紛らわしのための回答候補を追加する(結果5つの選択肢からの選択問題になる).最後にQAのverificationを行う.
  3. 各質問を検索エンジンで検索し,ウェブのスニペットをテキストコンテキストとして追加する.

Screen Shot 2019-05-10 at 10 50 57 PM

Screen Shot 2019-05-10 at 11 03 57 PM

ConceptNetからのコンセプト抽出

ConceptNetは(コンセプト1,関係,コンセプト2)の3つ組で表される知識グラフ.// 例(gambler,CapableOf,losemoney)
ConceptNetでは32ミリオンのトリプルがあるが,下記のルールを適用してフィルタリングする.

  1. RelatedToのような一般的な関係性や,IsAのようなすでによくNLPで攻略されてる関係性は除外し,22の関係性を利用
  2. コンセプトが4語以上 or 非英語は除外
  3. コンセプト1と2の編集距離が小さすぎるものを除外

結果として236,208のトリプルが出来た.コンセプト1を質問コンセプト,コンセプト2を答えコンセプトと呼ぶことにする.選択問題形式の質問をするために,ランダムサンプリングでは簡単すぎるので,質問コンセプト及び関係性を共通とするトリプルを3つ取ってくる(Fig 1).これにより意味的に,関係的に類似したものができあがり,質問を作るにあたって背景知識を必要とするような難しい質問を生成できる.これにより,130Kのトリプル(43Kの質問セット)が作れるようになった.

クラウドソースでの質問生成

AMTでワーカーを雇って,先程の質問セットのデータを提示.各,答えコンセプトがユニークな答えとなるような質問を生成してもらった.表面的な情報から簡単に答えが類推できるような質問は作らないようイントラクションした(例えば答え'door'に対して'open'といった単語を利用する).我々は作られた質問のうち,後述のverificationフローを通して75%しかアクセプトしなかった.

紛らわせのための選択肢の追加

答えるのを更に難しくするため,更にワーカーに選択肢を2つ追加してもらった.1つは質問コンセプト及び関係性を共通する他のコンセプトから選択,もう1つはワーカーが自分で考えて追加.よって合計5つの選択肢ができあがり,1つだけが正解となるようになった.

質問品質のverification

質問生成をしたワーカーグループとは別のグループを利用しverificationを行う.各質問には2ワーカーを割り当て,回答不能あるいは答えを選んでもらった.少なくとも1人以上正解した質問を採用したところ,15%の質問が取り除かれた

テキストコンテキストの追加

更に検索エンジンを使って追加のテキストコンテキストを作った.質問と答えをスペースで結合して検索クエリを作り,Googleで検索.各質問に対して500のスニペットをコンテキストとして生成.これを利用して機械読解モデルなどの性能調査に利用する.

最終的に12,247のデータができた(16,242件出来ていたが25%は不適切とされ除外された).1つの質問の作成は$0.33.コーパスの統計情報は下記参照.
Screen Shot 2019-05-10 at 11 29 52 PM

データ分析

ConceptNetのコンセプトと関係性

コンセプトはdog, house, row boatといったたぐいのもの,関係性はCauses, CapableOf, Antonymといったもの.Table 2に関係性とその割合のサンプルを示す.
Screen Shot 2019-05-10 at 11 59 09 PM

質問生成

質問生成には122の作成者が関わりましたが,10人のワーカーが85%以上の質問生成に携わった.44%の質問がWH-から始まるもの,5%がファーストネームを使ったもの,7%がif文で仮説の質問をした.
Screen Shot 2019-05-11 at 12 01 08 AM

コモンセンス・スキル

必要とされるコモンセンスのスキルの分析のためdevセットから100個の事例を持っててきて,各事例に人が利用するコモンセンスのアノテーション(複数可)した.平均して1つの質問に1.75のスキルがアノテートされた.Fig 3はその例で,答えコンセプトに対するコンセプトとエッジ(アノテーション)の関係で表されている.コモンセンススキルはLoBue and Yates (2011)の方法に則っており,Table 3にスキルカテゴリの統計を示す.
Screen Shot 2019-05-11 at 12 10 47 AM
Screen Shot 2019-05-11 at 12 13 06 AM

ベースライン

人には簡単な質問がNLPには難しいことを示すため,Table 4に様々なQAモデルを容易.CommonsenseQAを学習データに利用したか(利用してないものは学習済み単語埋め込みなど利用)?Webスニペットのコンテキストを利用したか?が書いてある.BiDAF++/GPT/BERTといった強いモデルもある.// 細かい設定については論文参照.
Screen Shot 2019-05-11 at 12 15 56 AM

実験

実験セットアップ

データをtrain/dev/testに分けるわけだが,2種類の分け方を試した.

  1. ランダムスプリット:一般的なランダムにサンプリングして分ける方法
  2. question concept split: 1つのソースに3つのターゲットを選んだので,3つの質問がセットで作られるわけだが,これを分離するようにした.事前実験ではランダムスプリットではモデルの学習が難しいことを発見したためである.というのも同じ質問コンセプトがで異なる答えコンセプトであるものがtrain/dev/testで現れる.

またSANITYモードも追加.このモードでは,選択肢をConceptNetの別のランダムのコンセプトに置き換えた.このモードは通常よりも簡単になると予想できるため,今回のタスクの難しさを浮き彫りにできる.

人評価

100の質問をサンプリングし,質問生成に携わらなかったワーカーたちに尋ねた.各質問で多数決による投票で正解率を測ったところ,88.9%だった

結果

結果はTable 5に.

  • BERT-large,GPTはrandom splitで55.9 , GPTは45.5,question splitで63.6, 55.5,でいずれも人よりもかなり低い.ランダムに選ぶと1/5 (20%)なのでそれよりは大分健闘はしている
  • Table 5の上位はCommonsenseQAを使っていないモデルだが,randomよりは多少良いレベルに留まる
  • またELMoも使ったモデルはGloVeの単語埋め込みベースのモデルと比べて対して改善されない
  • BiDAF++ではWebコンテキストを使ったがこれも,大した改善に至っていない
  • random splitはquestion concept splitよりも平均で5%低い.質問コンセプトをtrain/dev/testで共有し,異なる答えコンセプトを予測するモデルは,難しいことがわかった
  • SANITYではBERTで人よりも高いモデルを示した.つまり今回の選択肢の難しさを示す.

Screen Shot 2019-05-11 at 10 36 13 AM

ベースラインの分析

一番良かったBERT-largeを分析.100事例を持ってきて質問タイプをラベル付けしてみた結果をTable 6に示す.

  • surface cluesでは77.7%と高い正解率
  • negation/understanding antonymsでは42.8%
  • factoid knowledge では38.4%
    ..という感じでどんどん下がっていって最初のぐらいしかちゃんと解けてない

Screen Shot 2019-05-11 at 10 45 55 AM

学習曲線

データ量を増やすと性能が上がるか見るために,devデータをBERT-largeに加えた.結果的に100Kデータを与えたところ約75%まで上がったが,依然として人のパフォーマンスよりも低い.// 🤔でも20%近く上がってる..
Screen Shot 2019-05-11 at 10 51 44 AM

結論

12,247のコモンセンスを必要とするデータセット,CommonsenseQAを公開.ConceptNetを利用することろにより,コンテキスト不要でコモンセンスを必要とする質問を生成する手段を提案.作られたデータセットではNLPでSOTAのBERT-largeですら55.9% (人では88.9%)の正解率しか達成できず,コーパスの難しさを物語る.

コメント

  • 10人のワーカーが85%以上の質問生成に関わったということで偏りが気になる.
  • データをもっと増やす脳筋スタイルで行けばある程度攻略できそう
  • BERTなどは所詮近距離の言語モデルなので,バックグラウンド知識を活用するような言語モデルを作っていかないとこのようなデータセットは攻略できない,ということがわかった.
@jojonki jojonki added the NAACL label Apr 16, 2019
@jojonki jojonki changed the title 🚧 v2): CommonsenseQA: A Question Answering Challenge Targeting Commonsense Knowledge CommonsenseQA: A Question Answering Challenge Targeting Commonsense Knowledge May 11, 2019
@jojonki jojonki changed the title CommonsenseQA: A Question Answering Challenge Targeting Commonsense Knowledge 2019: CommonsenseQA: A Question Answering Challenge Targeting Commonsense Knowledge May 11, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant