Semi-Supervised QA with Generative Domain-Adaptive Nets 東工大 奥村・高村研 長谷川 駿
対象タスク:抽出によるQA Paragraph, QuestionからAnswerを予測 Paragraph中の連続するchunkをAnswerとして抽出 Q P A
問題点と着眼点(1) 学習用の大規模データを用意するのが困難 ラベルなしデータ(Pのみ)を使えないか? 既存のコーパスは、小さい or ドメインが限られる コーパスを作成するのは、高コスト ラベルなしデータ(Pのみ)を使えないか? Aを生成しないので言語モデルを鍛えても効果小 P(A|Q, P)の学習に直接使いたい QとAを作り、疑似データとして学習に使おう!
問題点と着眼点(2) QとAを作り、疑似データとして学習に この方法の問題点 Pから統語情報に基づくルールでA’を抽出(割愛) PとA’から、Q’を生成 ラベルあり{P, Q, A}とラベルなし{P, Q’, A’}を学習に 用いる この方法の問題点 ラベルあり と ラベルなし で性質が異なり、変なバ イアスがかかる可能性が高い
問題点と着眼点(3) 問題点 対策 – 別ドメインとして扱う ラベルあり と ラベルなし で性質が異なり、変なバ イアスがかかる可能性が高い 1. ドメインを区別するタグを導入 共通する性質は共有し、異なる性質はタグに紐づける 2. 強化学習を用いて質問生成モデルをfine-tune 正しいAが予想されやすいようなQを生成する
貢献点 問題を生成するという新しい形のsemi-supervised QAを提案 シンプルで有効な質問生成のベースラインの提案 今から説明する もちろん結果も良い
目次 質問生成のシンプルなベースライン 提案法:Generative Domain-Adaptive Nets データ詳細 結果 解答抽出器 Domain tagの導入 質問生成器 RLを用いた学習方法 データ詳細 結果
シンプルで有効なベースライン P = (p1, p2, p3, ……, p20) A’ = (p10, p11) ラベルなし{P, A’}からQ’を作成する手法 P = (p1, p2, p3, ……, p20) A’ = (p10, p11) Q’ = (p10 - W, …., p11 + W) W: window幅 ラベルありデータが少ない場合、かなり有効
目次 質問生成のシンプルなベースライン 提案法:Generative Domain-Adaptive Nets データ詳細 結果 解答抽出器 Domain tagの導入 質問生成器 RLを用いた学習方法 データ詳細 結果
提案法:GDANs 準備するもの ラベルあり{P, Q, A} ラベルなし{P, A’} 解答抽出器 質問生成器 入力:P, Q 出力:A (P中での最初と最後のindex) 質問生成器 入力:P, A 出力:Q (単語列)
解答抽出器(既存モデル) Q P Gated-Attention module (Dhingra et al., 2016) p1 p2 pn Softmaxを2つ 最初のindex用 最後のindex用 Gated-Attention module (Dhingra et al., 2016)
解答抽出器 – domain tagの導入 PとQの最後にdomain tagを追加する 目的 訓練時 テスト時 ラベルありならd_trueを追加 ラベルなしならd_genを追加 テスト時 d_trueを追加 目的 共通する性質は共有し、異なる性質はタグに紐 づける
質問生成器 GRUを用いたCopy機構付きEncoder-Decoder 例:P = (x1, x2, x3) A’ = (x2) eos [0; x1] [1; x2] [0, x3] eos Y1 Y2 Y3 Aに含まれる場合は1を追加
学習方法 ラベルあり(L)、ラベルなし(Ug) を用意
学習方法 ラベルあり(L)、ラベルなし(Ug) を用意 Lを用いたMLEにより質問生成器(G)を初期化
学習方法 ラベルあり(L)、ラベルなし(Ug) を用意 Lを用いたMLEにより質問生成器(G)を初期化 While True; Gを用いてUgのQ’を生成
学習方法 ラベルあり(L)、ラベルなし(Ug) を用意 Lを用いたMLEにより質問生成器(G)を初期化 While True; Gを用いてUgのQ’を生成 LとUgを用いたMLEにより解答抽出器(D)を学習
学習方法 ラベルあり(L)、ラベルなし(Ug) を用意 Lを用いたMLEにより質問生成器(G)を初期化 While True; Gを用いてUgのQ’を生成 LとUgを用いたMLEにより解答抽出器(D)を学習 タグをつけて普通に最尤推定
学習方法 ラベルあり(L)、ラベルなし(Ug) を用意 Lを用いたMLEにより質問生成器(G)を初期化 While True; Gを用いてUgのQ’を生成 LとUgを用いたMLEにより解答抽出器(D)を学習 UgとDを用いたRLにより質問生成器(G)を学習
学習方法 LとUgを用いたMLEにより解答抽出器(D)を学習 UgとDを用いたRLにより質問生成器(G)を学習
学習方法 LとUgを用いたMLEにより解答抽出器(D)を学習 UgとDを用いたRLにより質問生成器(G)を学習 生成したQを、人手で作ったQとして解答抽出器に入力した場合に 正しいAが抽出されるようGを学習している ≒解答抽出器において人手で作ったQと近い挙動をするような Qを生成するようGを学習
学習方法 ラベルあり(L)、ラベルなし(Ug) を用意 Lを用いたMLEにより質問生成器(G)を初期化 While True; Gを用いてUgのQ’を生成 LとUgを用いたMLEにより解答抽出器(D)を学習 UgとDを用いたRLにより質問生成器(G)を学習 解答抽出器(D)が完成
MLE(最尤推定) vs RL(強化学習) MLE RL ラベルが必要 P(Q|P, A)を最適化 ラベルが必要ない =P(A|P ,Q)とP(Q|P)を最適化していることになり、P(Q|P)が余分 RL ラベルが必要ない P(A|P, Q)を最適化
目次 質問生成のシンプルなベースライン 提案法:Generative Domain-Adaptive Nets データ詳細 結果 解答抽出器 Domain tagの導入 質問生成器 RLを用いた学習方法 データ詳細 結果
データセット ラベルありデータ(SQuAD) ラベルなしデータ(Wikiの記事) Wikiの記事におけるQAデータ 訓練データ:約8万 テストデータ:約8千 ラベルなしデータ(Wikiの記事) 約100万Paragraph 約500万Answer
実験結果 8K 80K Context:Aの周辺をQとして使う, Gen:生成したQを使う ラベルあり の量 ラベルなし の量 Exact Matching 8K 80K Context:Aの周辺をQとして使う, Gen:生成したQを使う domain: domain tagを使う, adv:Qの学習にRLを使う
結果:Supervised Learning vs Semi-SL ラベルあり の量 ラベルなし の量 Exact Matching 8K 80K ラベルありデータが少ないほどsemi-SLが良い結果 Context:Aの周辺をQとして使う, Gen:生成したQを使う domain: domain tagを使う, adv:Qの学習にRLを使う
結果:domain tagの効果 基本的に有効っぽい 8K 80K Context:Aの周辺をQとして使う, Gen:生成したQを使う ラベルあり の量 ラベルなし の量 Exact Matching 8K 80K 基本的に有効っぽい Context:Aの周辺をQとして使う, Gen:生成したQを使う domain: domain tagを使う, adv:Qの学習にRLを使う
結果:advの効果 8K 80K ラベルありが少ないとadvが有効(最尤推定による質問生成器の質が低いため?) の量 ラベルなし の量 Exact Matching 8K 80K ラベルありが少ないとadvが有効(最尤推定による質問生成器の質が低いため?) ラベルありがたくさんあれば、avdがなくても良さそう Context:Aの周辺をQとして使う, Gen:生成したQを使う domain: domain tagを使う, adv:Qの学習にRLを使う
まとめ 問題を生成するという新しい形のsemi-supervised QAを提案 GDANsを提案 シンプルで有効なベースラインの提案 Domain tag RLによる質問生成器の学習 シンプルで有効なベースラインの提案 実験結果は多数載っているので興味あれば