[DL Hacks]DROPデータセットによるMachine Reading Comprehension研究の状況

>100 Views

November 19, 19

スライド概要

2019/11/18
Deep Learning JP:
http://deeplearning.jp/hacks/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

DLHacks 論⽂実装 DROP: A Reading Comprehension Benchmark Requiring Discrete Reasoning Over Paragraphs DROPデータセットによるMachine Reading Comprehension研究の状況 2019/11/18 Takuya MATSUDATE | @m3yrin 1

2.

TL;DR 2019年3⽉頃に⽂章理解と算術能⼒の両⽅が必要となる新しいデータセットDROPが Allen Institute of Artificial Interegence (AI2)よって作成・公開された QANet, BERT等に算術演算を⾏うモジュールを複数追加する形で、簡易な算術的 Reasoningを実現するのが中⼼的な流れだが、より複雑なReasoningをどのように実現す るかが今後の課題 DROP特化のBaselineモデルNAQANetの実装を概観する 2

3.

Background 3

4.

Machine Reading Comprehension (MRC) 参照する⽂と質問⽂を⼊⼒して、質問⽂への回答をさせるタス ク モデルの⽂章の理解度を⾒る 4

5.

事前学習モデルの登場 ここ1,2年で⼀般的なMRCデータセット はほぼ解かれてしまった モデルの性能をさらに測るためには、複 雑さを付与した新たなデータセットが必 要 5

6.

DROPデータセット ⽂章理解能⼒と代数的な計算能⼒がなければ回答できない96k個のデータセット Wikipediaの記事を参照⽂として、クラウドソーシングで質問⽂と回答を作成 (かつ簡単に回答できないようにワーカーに依頼) https://allennlp.org/drop 6

7.

DROPデータセットの中⾝ Dua et al., 2019 In NAACL-HLT 7

8.

従来モデルにとっての困難さ 1. 算術的な演算が必要となる 加減算、要素のカウント・ソート 2. 回答のタイプが複数 数値、⽇時、単語列 3. 単⼀のスパン指定では回答できない質問 従来モデルは⼊⼒⽂章内の1フレーズを指定するものだった 8

9.

従来モデルでの結果 ⼈間にとっては簡単だが、従来のSOTAモデルでも難しい 9

10.

Methods 10

11.

DROP Leaderboard ~ 4th https://leaderboard.allenai.org/drop/submissions/public 11

12.

DROP Leaderboard 5th ~ https://leaderboard.allenai.org/drop/submissions/public 12

13.

Numerically-Aware QANet (NAQANet, 11th) DROP: A Reading Comprehension Benchmark Requiring Discrete Reasoning Over Paragraphs(NAACL-HLT 2019) https://arxiv.org/abs/1903.00161 AI2による始まりの論⽂ その後の論⽂でBaselineとして使⽤される 13

14.

[参考] QANet (Yu et al., 2018) ⽂章と質問⽂の埋め込みを作るEncoder部と、質問 ⽂の中から回答のspanを抽出するHeadから構成さ れる 14

15.

NAQANet Heads 1/2 QANetの後に算術処理ができるようにモジュール(Head)を追加 1. Passage(Question) Span ⼊⼒⽂章からある区間(span)を抽出して回答する質問形式に対応 ⽂章の始まりの単語と終わりの単語の位置を指定する分布pp_start とpp_end を埋め 込み表現から予測 2. Count ⽂章内の要素の個数を数えて回答する質問形式に対応 簡単のため0-9まで値の分布pcount を予測 15

16.

NAQANet Heads 2/2 3. Arithmetic Expression ⼊⼒⽂章内の数値の加減算によって答えが得られる質問形式に対応 ⽂章内の数値を抽出しておき、それぞれに {+, -, 0} をアサインする N psign = softmax ( FFN ( h i )) i はReLUを使った2層のFC, hNi はi番⽬の数値の埋め込み 最後にそれらを掛けた上で、算術的に⾜し合わせる FFN(·) 16

17.

NAQANet Training Answer type prediction 最終的にどの形式の出⼒を回答として使⽤するか決める必要がある ptype = softmax (FFN ([hP , hQ ])) hP , hQ は注意機構を使って集約した参照⽂ Weakly-Supervised Training Pと質問⽂Qの分散表現 学習時にはスパン分布の予測、カウント数の予測、(可能な限り)全ての組み合わせの 算術計算を実⾏し、尤度を計算 Pr( type ) Pr( answer ∣ type ) 17

18.

NAQANet Results 算術的な理由づけまで全て⾏わせるのは 難しい。 Headに算術的な機能をある程度補助さ せることで、モデルの負荷を軽減でき る。 18

19.

NAQANet Error Analysis 19

20.

MTMSN (7th) A Multi-Type Multi-Span Network for Reading Comprehension that Requires Discrete Reasoning (EMNLP-IJCNLP 2019) https://arxiv.org/abs/1908.05514 NAQANetでは複数の別れたspan(Multi-span)を抽出することができなかった MTMSNでは新たにモジュールを追加しMulti-Spanに対応 20

21.

MTMSN / Answer Predictor EncoderとしてBERTを使⽤し、質問⽂ と参照⽂を連結して埋め込み 21

22.

MTMSN / Multi-Span Extraction 必要となるspanの数を予測し、その後で重複が起 こらないように⼊⼒⽂からSpanを選ぶ NonMaximun Suppression (NMS) Algorithm を使⽤ 22

23.

MTMSN / Arithmetic Expression Reranking を、それぞれの数値の埋め込みだけ⾒てアサイ ンするとうまくコンテキストが⾒れないので、Beam Searchを使って補正 {+, -, 0} 23

24.

BERT-Calculator (6th) Giving BERT a Calculator: Finding Operations and Arguments with Reading Comprehension https://arxiv.org/abs/1909.00109 Google Researchによる研究 BERTで作った埋め込みから、実⾏可能なプログラムを作成 24

25.

BERT-Calculator それぞれの命令(Derivation)に対してScoring関数を定義 最もスコアの⾼いDerivationを使⽤ 25

26.

Tag-based Multi-Span Extraction with NABERT+ (5th) Tag-based Multi-Span Extraction in Reading Comprehension https://arxiv.org/abs/1909.13375 MTMSNと同様、Multi-Spanの問題に取り組んだ MTMSNと基本は同じだが、Spanの選び出しに、NMSアルゴリズムによる選び出しでは なく系列ラベリングのように各単語に BIO のタグをつけていく B : Beginning of a span I : Inside of a span O : not included in a span 26

27.

NumNet (3rd w/ RoBERTa, 1st w/ RoBERTa + MultiSpan Head) NumNet: Machine Reading Comprehension with Numerical Reasoning (EMNLP 2019) https://arxiv.org/abs/1910.06701 WeChat (Tencent Inc) による研究 有向グラフを使い数値の順序・構造の情報を埋め込む 27

28.

NumNet Architecture Encoder Module, Prediction Moduleは他と同じ Reasoning Moduleが新たに追加 28

29.

NumNet Reasoning Module 1/3 質問⽂Qと参照⽂P内の各数値に対応する埋め込み表現をノードする集合V V =VQ ∪VP ⼆種類のエッジの集合E Greater Relation Edge (E ) vi , vj ∈ V のノードについて、関係がn (vi ) > n (vj )となっている、eij = (vi , vj )のエッジからなる集合 Lower or Equal Relation Edge (E ) , vi , vj ∈ V のノードについて、関係がn (vi ) ≤ n (vj )となっている、 e ij = (vi , vj )のエッジからなる集合 V E からなる有向グラフG = (V , E)を構築 29

30.

NumNet Reasoning Module 2/3 ♤1. Node Relatedness Measure ノードに対するAttensionを計算 αi = sigmoid (W v v[i] + bv ) ♤2. Message Propagation 隣接ノードの情報を集約 (Message関数による伝搬) v ′i ⎞ 1 ⎛ rji = ∑ αj W v[j]⎟ ⎜ ∣N i ∣ ⎝ ⎠ j∈N i N i = {j∣ (vj , vi ) ∈ E } , rij ∈ {>, ≤} × {q − q, p − p, q − p, p − q} 30

31.

NumNet Reasoning Module 3/3 ♤3. Node Representation Update 集約された表現を元に、各ノードの新しい分散表現を計算 v ′i = ReLU (W f v i + v ′i + bf ) ♤1 - ♤3を単位ステップ Reasoning-Step(·) として、これをK回繰り返し、得られた表現を 後段のPrediction Moduleで使⽤する v t = Reasoning-Step (v t−1 ) K = 3がベストスコアで、K > 3では出⼒が不安定になるとのこと。 31

32.

NumNet Results NAQANetにReasoning Moduleを追加するだけ(NumNet)では67.97%F1 EncoderにRoBERTa, HeadにMulti-Span モジュールを追加したNumNet+ v2が現時点で SOTA 32

33.

NumNet Error Analysis 1⾏⽬はMulti-Spanに対応する前(NumNet)の結果 2⾏⽬のような、途中計算で現れるよう値によるReasoningには対応できない 33

34.

雑感 1/2 ⼤きな事前学習モデル + 質問型を仮定したモジュールの追加によるスコアアップは⼀服したよ うに⾒える https://leaderboard.allenai.org/drop/submissions/public 34

35.

雑感 2/2 単⼀の事前学習モデルに全部やらせるのが⾃然? v.s. サブモジュールをたくさん作ってい くのが⾃然? 何もわからない サブモジュールの構造も学習から獲得されてほしい 回答形式に合わせてサブモジュールを逐⼀作っていくはナンセンス 複雑なやつはそもそもどう作ったらいいか分からない 35

36.

Implementation 36

37.

著者実装 1/2 NAQANet AllenNLPに含まれている https://github.com/allenai/allennlp/blob/master/allennlp/models/reading_comprehens ion/naqanet.py NABERT, NABERT+ https://github.com/raylin1000/drop-bert 37

38.

著者実装 2/2 MTMSN https://github.com/huminghao16/MTMSN Tag-based Multi-Span Extraction https://github.com/eladsegal/tag-based-multi-span-extraction NumNet+, NumNet+ v2 https://github.com/llamazing/numnet_plus 38

39.

データセットの⽤意 https://s3-us-west-2.amazonaws.com/allennlp/datasets/drop/drop_dataset.zip Train setとDev setに分けられたデータ Test setは公開されておらず、Leaderboardに提出された時に評価される。 39

40.

データ構造 drop_dataset_train.json 40

41.

Dataloaders AllenNLPで実装されたDROP⽤の公式(?)Dataloaderが公開されている https://github.com/allenai/allennlp/blob/master/allennlp/data/dataset_readers/reading_co mprehension/drop.py @overrides def _read(self, file_path: str): # if `file_path` is a URL, redirect to the cache file_path = cached_path(file_path) logger.info("Reading file at %s", file_path) with open(file_path) as dataset_file: dataset = json.load(dataset_file) logger.info("Reading the dataset") kept_count, skip_count = 0, 0 for passage_id, passage_info in dataset.items(): passage_text = passage_info["passage"] passage_tokens = self._tokenizer.tokenize(passage_text) passage_tokens = split_tokens_by_hyphen(passage_tokens) for question_answer in passage_info["qa_pairs"]: [ ] 略 41

42.

Dataloaders 使い⽅ 42

43.

[参考] AllenNLPについて AI2で管理されたNLP研究向けのフレームワーク NLPで必要となるモジュールについて⾼品質な実装を提供 https://allennlp.org 43

44.

[参考] AllenNLPについて 個⼈的嬉しいところ (⼀通りソースコードを読む必要があるけど) 書くのは⼀部で済むので、変なミスで泣く 可能性が減る。 (⼀度覚えれば) AllenNLPのお作法で他の実装が再利⽤しやすい。 44

45.

NAQANetを動かしてみる 1/2 NAQANetは公式Demoも公開されている (可視化もされてて強い) https://demo.allennlp.org/reading-comprehension/NjI4NjM5 Notebookでまとめたもの https://github.com/m3yrin/naqanet_notebook 45

46.

NAQANetを動かしてみる 2/2 NAQANet論⽂には各種パラメータの記載がないが、多分githubに公開されているconfig の値で良いかと思われる https://github.com/allenai/allennlp/blob/master/training_config/naqanet.jsonnet QANetの構成に基本的に準拠 https://arxiv.org/pdf/1804.09541.pdf 結果 論⽂ (Dev set) : (EM / F1) 46.20 / 49.24 今回 (Dev set) : (EM / F1) 41.90 / 45.73, GTX 1060(6GB) ⼀台だと57時間くらい 46

47.

まとめ 2019年3⽉頃に⽂章理解と算術能⼒の両⽅が必要となる新しいデータセットDROPが Allen Institute of Artificial Interegence (AI2)よって作成・公開された QANet, BERT等に算術演算を⾏うモジュールを複数追加する形で、簡易な算術的 Reasoningを実現するのが中⼼的な流れだが、より複雑なReasoningをどのように実現す るかが今後の課題 DROP特化のBaselineモデルNAQANetの実装をまとめた 47

48.

その他 DROP-explorer https://github.com/eladsegal/DROP-explorer データセットの可視化ツール 48

49.

AllenNLPを使うにあたり参考になったもの 公式Tutorial https://allennlp.org/tutorials 公式お墨付きのブログ https://github.com/allenai/allennlp/tree/master/tutorials#external-tutorials AllenNLPで簡単にDeepな⾃然⾔語処理 - Qiita, @itok_msi https://qiita.com/itok_msi/items/d788155848be46e5407e allennlp example, Kaggle Notebook, Tamaki https://www.kaggle.com/decoflight/allennlp-example 49