$30 off During Our Annual Pro Sale. View Details »

AutoGluon-Tabular を用いたアンサンブルによる日本語質問応答システムの構築 / AIO solution by AutoGluon-Tabular

AutoGluon-Tabular を用いたアンサンブルによる日本語質問応答システムの構築 / AIO solution by AutoGluon-Tabular

言語処理学会第27回年次大会(NLP2021)ワークショップ2「AI王 〜クイズAI日本一決定戦〜」での発表資料
https://sites.google.com/view/nlp2021-aio/

Shotaro Ishihara

March 19, 2021
Tweet

More Decks by Shotaro Ishihara

Other Decks in Research

Transcript

  1. Atsunori Fujita & Shotaro Ishihara
    チーム: fujita&u++
    言語処理学会第27回年次大会(NLP2021)
    ワークショップ 2 「 AI 王 〜クイズ AI 日本一決定戦〜」
    2021 年 3 月 19 日
    AutoGluon-Tabular を用いたアンサンブル
    による日本語質問応答システムの構築

    View Slide

  2. ● 藤田 充矩(Amazon Web Services)
    ○ クイズは苦手です
    ● 石原 祥太郎(日本経済新聞社)
    ○ (一時期の)高難易度時代の高校生クイズで活躍していた愛知県・東海高校出身
    ○ YouTube カプリティオチャンネルが好き
    自己紹介
    2

    View Slide

  3. 最終モデルの概要
    3
    1. cl-tohoku/bert-base-japanese-whole-word-masking
    2. cl-tohoku/bert-base-japanese-whole-word-masking & noun filter
    3. cl-tohoku/bert-large-japanese-whole-word-masking
    4. cl-tohoku/bert-base-japanese-char-whole-word-masking
    5. nict_bert_32k
    7. nict_bert_32k & cosine similarity & head-tail
    6. nict_bert_32k & noun filter
    8. nict_bert_100k
    9. char n-gram
    Optimized for dev1 and dev2
    Averaging
    10. tf-idf
    11. bm25
    AutoGluon-Tabular × 3

    View Slide

  4. ● 文献 [鈴木ら 2020] に倣い、BERT [Devlin et al. 2019] の事前学習済みモデルを初
    期値とし、学習用データで fine-tuning して、クイズ解答用のモデルを学習
    ● 事前学習済み言語モデル
    ○ huggingface/transformers: https://github.com/huggingface/transformers
    ○ NICT BERT 日本語 Pre-trained モデル: https://alaginrc.nict.go.jp/nict-bert/index.html
    ● 運営によるベースラインコードからの差分
    ○ 学習時に利用する選択肢の数を 5 から 20 に変更
    ■ bert-large のみメモリの問題で選択肢 5 (正解 + ランダム 4、学習の中で抽出)
    ○ all_candidate.json をベクトル化(TFIDF->SVD)して得られた256次元を最終層に結合
    ○ 「dev1を含めて学習しdev2で検証」「dev2を含めて学習しdev1で検証」の2種類を用意
    BERT全体共通
    4

    View Slide

  5. ● 事前に MeCab に通して、特定の品詞のみを抽出
    ● question はそのまま、context にのみ処理を適用
    ● 名詞のみ、名詞・動詞のみなどを試し、最終的に名詞のみモデルを採用
    工夫① context から特定の品詞のみを抽出(noun filter)
    5

    View Slide

  6. ● question と context を TFIDF でベクトル化しコサイン類似度を算出し、
    BERT の入力として活用
    ○ 解答候補20をコーパスにして question をベクトル化→コサイン類似度を各 context とのペア
    で計算
    工夫② コサイン類似度の計算(cosine similarity)
    6

    View Slide

  7. ● context から max_length 分のテキストを取り出す際に、前からだけではなく後ろか
    らも取り出す [Sun et al. 2019]
    工夫③ context の最初と最後を利用(head-tail)
    7

    View Slide

  8. ● 機械学習モデルを探索する AutoML の OSS ライブラリ [Erickson et al. 2020]
    ● 各モデルの dev1, dev2, test に対する予測値を入力として利用
    ● LightGBM、CatBoost、Random Forests、Extremely Randomized Trees、k-
    Nearest Neighbors、AutoGluon-Tabular NN model などのラッパー
    https://pages.awscloud.com/rs/112-TZM-766/images/1.AWS_AutoML_AutoGluon.pdf
    工夫④ AutoGluon-Tabularによるアンサンブル
    8

    View Slide

  9. 各モデルの実験結果
    9
    Model Acc with dev1 Acc with dev2
    1. cl-tohoku/bert-base-japanese-whole-word-masking 0.8665 0.8713
    2. cl-tohoku/bert-base-japanese-whole-word-masking & noun filter 0.8365 0.8402
    3. cl-tohoku/bert-large-japanese-whole-word-masking ※1: 0.8544 ※1: 0.8544
    4. cl-tohoku/bert-base-japanese-char-whole-word-masking 0.8425 0.8310
    5. nict_bert_32k 0.8655 0.8723
    6. nict_bert_32k & noun filter 0.8655 0.8643
    7. nict_bert_32k & cosine similarity & head-tail 0.8736 0.8703
    8. nict_bert_100k 0.8886 0.8763
    9. char n-gram - -
    10. tf-idf - -
    11. bm25 - -
    Ensembling by AutoGluon-Tabular 0.9267 0.9266
    ※1: dev1とdev2の平均値を表示

    View Slide

  10. ● 複数の事前学習済み言語モデル・工夫・類似度を駆使し、日本語質問応答シス
    テムのための多様なモデルを構築した
    ● AutoGluon-Tabular を用いたアンサンブルによって、最終的な性能の向上を確
    認した
    結論
    10

    View Slide

  11. 参加者の方に聞きたいこと
    ● 土地名、国名などコンテキストに広いトピックが含まれる解答候補に苦戦しました。どう対応しました
    か?
    ● 論理的な問題は解けませんでした。どう対応されましたか?
    ● 解答候補の単語の意味だけが重要でコンテキストには質問に必要な情報が含まれていない問題に
    苦戦しました。どう対応されましたか?
    ● 問題文を加工する工夫をしましたか?「蘭学者の宇田川玄随や稲村三伯らを輩出した、大槻玄沢が
    江戸に開いた、当時の蘭学研究の中心であった私塾は何?」だと、問題文を読点で分割して最後の
    部分を使うなどの処理ができそうですが、上手くいきませんでした。
    11

    View Slide

  12. 参考文献
    ● [鈴木ら 2020] 鈴木正敏, 鈴木潤, 松田耕史, ⻄田京介, 井之上直也. “JAQKET:クイズを題材にした日本語QAデータセットの
    構築”. 言語処理学会第26回年次大会(NLP2020)発表論文集
    ● [Devlin et al. 2019] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and KristinaToutanova. BERT: Pre-training of Deep
    Bidirectional Trans-formers for Language Understanding. InNAACL, volume 1,pages 4171–4186, 2019.
    ● [Sun et al. 2019] Chi Sun, Xipeng Qiu, Yige Xu, Xuanjing Huang. How to Fine-Tune BERT for Text Classification?.
    arXiv [cs.CL]. arXiv. http://arxiv.org/abs/1905.05583, 2019.
    ● [Erickson et al. 2020] Nick Erickson, Jonas Mueller, Alexander Shirkov, Hang Zhang, Pedro Larroy, Mu Li, Alexander
    Smola. AutoGluon-Tabular: Robust and Accurate AutoML for Structured Data. arXiv [cs.LG]. arXiv.
    https://arxiv.org/abs/2003.06505, 2020.
    12

    View Slide

  13. Appendix

    View Slide

  14. What didn't work well
    ● Doc2Vec や BM25 で質問と関連性のある解答を直接抽出、解答候補を絞り込む
    (20 個取り出した時に正解が含まれないケースが大半)
    14

    View Slide

  15. ● context を sumy (https://github.com/miso-belica/sumy) を用いて自動要約
    ○ 最後のアンサンブルで貢献がなさそうであったため、除外
    工夫: context の要約を作成(summary)
    15

    View Slide

  16. from scipy.optimize import minimize
    def f(x):
    pred = 0
    for i, d in enumerate(dfs_dev1):
    if i < len(x):
    pred += d * x[i]
    else:
    pred += d * ( 1 - sum(x))
    score = log_loss(df_dev1[ 'ground_truth_idx' ], pred)
    return score
    init_state = [ round(1 / len(dfs_dev1), 3) for _ in range(len(dfs_dev1) - 1)]
    result = minimize(f, init_state, method= 'Nelder-Mead' )
    print('optimized CV: ' , result['fun'])
    print('w: ', result['x'])
    工夫: 検証用データでの性能を最適化する重みの計算
    16

    View Slide