Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

860 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 1. DLHacks論⽂実装 DROP:AReadingComprehensionBenchmarkRequiring DiscreteReasoningOverParagraphs DROPデータセットによるMachineReadingComprehension研究の状況 2019/11/18 TakuyaMATSUDATE|@m3yrin 1
  2. 2. TL;DR 2019年3⽉頃に⽂章理解と算術能⼒の両⽅が必要となる新しいデータセットDROPが AllenInstituteofArtificialInteregence(AI2)よって作成・公開された QANet,BERT等に算術演算を⾏うモジュールを複数追加する形で、簡易な算術的 Reasoningを実現するのが中⼼的な流れだが、より複雑なReasoningをどのように実現す るかが今後の課題 DROP特化のBaselineモデルNAQANetの実装を概観する 2
  3. 3. Background 3
  4. 4. MachineReadingComprehension(MRC) 参照する⽂と質問⽂を⼊⼒して、質問⽂への回答をさせるタス ク モデルの⽂章の理解度を⾒る 4
  5. 5. 事前学習モデルの登場 ここ1,2年で⼀般的なMRCデータセット はほぼ解かれてしまった モデルの性能をさらに測るためには、複 雑さを付与した新たなデータセットが必 要 5
  6. 6. DROPデータセット ⽂章理解能⼒と代数的な計算能⼒がなければ回答できない96k個のデータセット Wikipediaの記事を参照⽂として、クラウドソーシングで質問⽂と回答を作成 (かつ簡単に回答できないようにワーカーに依頼) https://allennlp.org/drop 6
  7. 7. DROPデータセットの中⾝ Duaetal.,2019InNAACL-HLT 7
  8. 8. 従来モデルにとっての困難さ 1.算術的な演算が必要となる 加減算、要素のカウント・ソート 2.回答のタイプが複数 数値、⽇時、単語列 3.単⼀のスパン指定では回答できない質問 従来モデルは⼊⼒⽂章内の1フレーズを指定するものだった 8
  9. 9. 従来モデルでの結果 ⼈間にとっては簡単だが、従来のSOTAモデルでも難しい 9
  10. 10. Methods 10
  11. 11. DROPLeaderboard~4th https://leaderboard.allenai.org/drop/submissions/public 11
  12. 12. DROPLeaderboard5th~ https://leaderboard.allenai.org/drop/submissions/public 12
  13. 13. Numerically-AwareQANet(NAQANet,11th) DROP:AReadingComprehensionBenchmarkRequiringDiscreteReasoningOver Paragraphs(NAACL-HLT2019)https://arxiv.org/abs/1903.00161 AI2による始まりの論⽂ その後の論⽂でBaselineとして使⽤される 13
  14. 14. [参考]QANet(Yuetal.,2018) ⽂章と質問⽂の埋め込みを作るEncoder部と、質問 ⽂の中から回答のspanを抽出するHeadから構成さ れる 14
  15. 15. NAQANetHeads1/2 QANetの後に算術処理ができるようにモジュール(Head)を追加 1.Passage(Question)Span ⼊⼒⽂章からある区間(span)を抽出して回答する質問形式に対応 ⽂章の始まりの単語と終わりの単語の位置を指定する分布 と を埋め 込み表現から予測 2.Count ⽂章内の要素の個数を数えて回答する質問形式に対応 簡単のため0-9まで値の分布 を予測 pp_start pp_end pcount 15
  16. 16. NAQANetHeads2/2 3.ArithmeticExpression ⼊⼒⽂章内の数値の加減算によって答えが得られる質問形式に対応 ⽂章内の数値を抽出しておき、それぞれに {+, -, 0} をアサインする p =i sign  softmax FFN h( ( i N )) FFN(·) はReLUを使った2層のFC, は 番⽬の数値の埋め込み 最後にそれらを掛けた上で、算術的に⾜し合わせる hi N i 16
  17. 17. NAQANetTraining Answertypeprediction 最終的にどの形式の出⼒を回答として使⽤するか決める必要がある p =type  softmax FFN h , h( ([ P Q ])) は注意機構を使って集約した参照⽂Pと質問⽂Qの分散表現 Weakly-SupervisedTraining 学習時にはスパン分布の予測、カウント数の予測、(可能な限り)全ての組み合わせの 算術計算を実⾏し、尤度を計算 Pr( type ) Pr( answer ∣ type ) h , hP Q 17
  18. 18. NAQANetResults 算術的な理由づけまで全て⾏わせるのは 難しい。 Headに算術的な機能をある程度補助さ せることで、モデルの負荷を軽減でき る。 18
  19. 19. NAQANetErrorAnalysis 19
  20. 20. MTMSN(7th) AMulti-TypeMulti-SpanNetworkforReadingComprehensionthatRequiresDiscrete Reasoning(EMNLP-IJCNLP2019) https://arxiv.org/abs/1908.05514 NAQANetでは複数の別れたspan(Multi-span)を抽出することができなかった MTMSNでは新たにモジュールを追加しMulti-Spanに対応 20
  21. 21. MTMSN/AnswerPredictor EncoderとしてBERTを使⽤し、質問⽂ と参照⽂を連結して埋め込み 21
  22. 22. MTMSN/Multi-SpanExtraction 必要となるspanの数を予測し、その後で重複が起 こらないように⼊⼒⽂からSpanを選ぶNon- MaximunSuppression(NMS)Algorithmを使⽤ 22
  23. 23. MTMSN/ArithmeticExpressionReranking {+, -, 0} を、それぞれの数値の埋め込みだけ⾒てアサイ ンするとうまくコンテキストが⾒れないので、Beam Searchを使って補正 23
  24. 24. BERT-Calculator(6th) GivingBERTaCalculator:FindingOperationsandArgumentswithReading Comprehension https://arxiv.org/abs/1909.00109 GoogleResearchによる研究 BERTで作った埋め込みから、実⾏可能なプログラムを作成 24
  25. 25. BERT-Calculator それぞれの命令(Derivation)に対してScoring関数を定義 最もスコアの⾼いDerivationを使⽤ 25
  26. 26. Tag-basedMulti-SpanExtractionwithNABERT+(5th) Tag-basedMulti-SpanExtractioninReadingComprehension https://arxiv.org/abs/1909.13375 MTMSNと同様、Multi-Spanの問題に取り組んだ MTMSNと基本は同じだが、Spanの選び出しに、NMSアルゴリズムによる選び出しでは なく系列ラベリングのように各単語に BIO のタグをつけていく B :Beginningofaspan I :Insideofaspan O :notincludedinaspan 26
  27. 27. NumNet(3rdw/RoBERTa,1stw/RoBERTa+MultiSpanHead) NumNet:MachineReadingComprehensionwithNumericalReasoning(EMNLP2019) https://arxiv.org/abs/1910.06701 WeChat(TencentInc)による研究 有向グラフを使い数値の順序・構造の情報を埋め込む 27
  28. 28. NumNetArchitecture EncoderModule,PredictionModuleは他と同じ ReasoningModuleが新たに追加 28
  29. 29. NumNetReasoningModule1/3 質問⽂Qと参照⽂P内の各数値に対応する埋め込み表現をノードする集合 V = V ∪Q V P ⼆種類のエッジの集合 GreaterRelationEdge( ) のノードについて、関係が となっている、 のエッジからなる集合 LowerorEqualRelationEdge( ) のノードについて、関係が となっている、 のエッジからなる集合 , からなる有向グラフ を構築 V E E v , v ∈i j V n v >( i) n v( j ) =eij v , v( i j ) E v , v ∈i j V n v ≤( i) n v( j ) =e ij v , v( i j ) V E G = (V , E) 29
  30. 30. NumNetReasoningModule2/3 ♤1.NodeRelatednessMeasure ノードに対するAttensionを計算 α =i sigmoid W v[i] + b( v v) ♤2.MessagePropagation 隣接ノードの情報を集約(Message関数による伝搬) =vi ′ α W v[j] N∣ i∣ 1 ⎝ ⎜ ⎛ j∈Ni ∑ j rji ⎠ ⎟ ⎞ N =i j∣ v , v ∈ E , r ∈{ ( j i) } ij {>, ≤} × {q − q, p − p, q − p, p − q} 30
  31. 31. NumNetReasoningModule3/3 ♤3.NodeRepresentationUpdate 集約された表現を元に、各ノードの新しい分散表現を計算 v =i ′ ReLU W v + + b( f i vi ′ f ) ♤1-♤3を単位ステップ Reasoning-Step(·) として、これをK回繰り返し、得られた表現を 後段のPredictionModuleで使⽤する v =t  Reasoning-Step  v( t−1 ) K=3がベストスコアで、K>3では出⼒が不安定になるとのこと。 31
  32. 32. NumNetResults NAQANetにReasoningModuleを追加するだけ(NumNet)では67.97%F1 EncoderにRoBERTa,HeadにMulti-Spanモジュールを追加したNumNet+v2が現時点で SOTA 32
  33. 33. NumNetErrorAnalysis 1⾏⽬はMulti-Spanに対応する前(NumNet)の結果 2⾏⽬のような、途中計算で現れるよう値によるReasoningには対応できない 33
  34. 34. 雑感1/2 ⼤きな事前学習モデル+質問型を仮定したモジュールの追加によるスコアアップは⼀服したよ うに⾒える https://leaderboard.allenai.org/drop/submissions/public 34
  35. 35. 雑感2/2 単⼀の事前学習モデルに全部やらせるのが⾃然?v.s.サブモジュールをたくさん作ってい くのが⾃然? 何もわからない サブモジュールの構造も学習から獲得されてほしい 回答形式に合わせてサブモジュールを逐⼀作っていくはナンセンス 複雑なやつはそもそもどう作ったらいいか分からない 35
  36. 36. Implementation 36
  37. 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. 38. 著者実装2/2 MTMSN https://github.com/huminghao16/MTMSN Tag-basedMulti-SpanExtraction https://github.com/eladsegal/tag-based-multi-span-extraction NumNet+,NumNet+v2 https://github.com/llamazing/numnet_plus 38
  39. 39. データセットの⽤意 https://s3-us-west-2.amazonaws.com/allennlp/datasets/drop/drop_dataset.zip TrainsetとDevsetに分けられたデータ Testsetは公開されておらず、Leaderboardに提出された時に評価される。 39
  40. 40. データ構造 drop_dataset_train.json 40
  41. 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. 42. Dataloaders 使い⽅ 42
  43. 43. [参考]AllenNLPについて AI2で管理されたNLP研究向けのフレームワーク NLPで必要となるモジュールについて⾼品質な実装を提供 https://allennlp.org 43
  44. 44. [参考]AllenNLPについて 個⼈的嬉しいところ (⼀通りソースコードを読む必要があるけど)書くのは⼀部で済むので、変なミスで泣く 可能性が減る。 (⼀度覚えれば)AllenNLPのお作法で他の実装が再利⽤しやすい。 44
  45. 45. NAQANetを動かしてみる1/2 NAQANetは公式Demoも公開されている (可視化もされてて強い) https://demo.allennlp.org/reading-comprehension/NjI4NjM5 Notebookでまとめたもの https://github.com/m3yrin/naqanet_notebook 45
  46. 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 結果 論⽂(Devset):(EM/F1)46.20/49.24 今回(Devset):(EM/F1)41.90/45.73,GTX1060(6GB)⼀台だと57時間くらい 46
  47. 47. まとめ 2019年3⽉頃に⽂章理解と算術能⼒の両⽅が必要となる新しいデータセットDROPが AllenInstituteofArtificialInteregence(AI2)よって作成・公開された QANet,BERT等に算術演算を⾏うモジュールを複数追加する形で、簡易な算術的 Reasoningを実現するのが中⼼的な流れだが、より複雑なReasoningをどのように実現す るかが今後の課題 DROP特化のBaselineモデルNAQANetの実装をまとめた 47
  48. 48. その他 DROP-explorer https://github.com/eladsegal/DROP-explorer データセットの可視化ツール 48
  49. 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 allennlpexample,KaggleNotebook,Tamaki https://www.kaggle.com/decoflight/allennlp-example 49
  50. 50. 50

×