Upgrade to Pro — share decks privately, control downloads, hide ads and more …

snlp2021-teranishi

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →
Avatar for Hiroki Teranishi Hiroki Teranishi
September 10, 2021
250

 snlp2021-teranishi

Avatar for Hiroki Teranishi

Hiroki Teranishi

September 10, 2021

Transcript

  1. 09/17/21 1 / 12 Making Pre-trained Language Models Better Few-shot

    Learners 発表者:寺西 裕紀(理研) 第 13 回最先端 NLP 勉強会 2021 年 9 月 17 日 論文紹介 Tianyu Gao, Adam Fisch, Danqi Chen ACL-IJCNLP 2021 https://aclanthology.org/2021.acl-long.295/
  2. 09/17/21 2 / 12 背景: Prompt を用いた推論 (1/2) • GPT-3

    における few-shot 推論 – タスクの記述と事例をコンテキストとして入力 • 学習なし(モデルのパラメータは固定) – 推論を言語モデルの形式で行う コンテキスト 言語モデリング形式の推論
  3. 09/17/21 3 / 12 背景: Prompt を用いた推論 (2/2) • GPT-3

    + Prompt 推論の問題点 – モデルが巨大過ぎる(最大のもので 175B parameters ) • 現実的に使えそうな大きさのモデルで推論したい – 教師あり学習( fine-tuning )には劣る • PET: Pattern-Exploiting Training – 文分類を穴埋め問題として解く(モデルは RoBERTa ) – 学習事例の多寡に依らず (?) 、通常の教師あり学習より良い性能 x) This was the best pizza I’ve ever had. y) 5 x) It was <MASK>. This was the best pizza I’ve ever had. y) great prompt に相当 正解ラベル (=5) を表す語 良いとこどりをしたい ・ Prompt の恩恵 ・手頃な大きさのモデル ・少量の学習事例による FT W∈R|Y|×d を導入して [CLS] 分類学習 (事例 10,50,100,1K で検証)
  4. 09/17/21 4 / 12 Prompt を使うとどの程度良くなるか? • SST-2 の label

    words は (+) great, (-) terrible が一番良い – 反対にアサインしても FT より良い – cat/dog は cat を positive にするほう が逆よりもはるかに良い(なぜ…) • SNLI の template は以下がベスト – ? を . にすると性能が下がる – , がなくても下がる Template: <S1 >? [MASK] , <S2 > Label Words: [MASK]={Yes/Maybe/No} Template ・ Label Words 職人になりたいですか? ※ モデルは RoBERTa-large
  5. 09/17/21 5 / 12 概要: Prompt 探索 + demonstration •

    PET, GPT-3 の問題点: Prompt 等の人手設計 • 本研究でやったこと・貢献 – Prompt の自動生成:最適な prompt を探索 → 探索により人手の prompt と同等以上の精度を達成 – demonstration の活用: GPT-3 のように事例をコンテキス トとして使う → さらなる精度向上 (今日の話のメイン) ただし、学習データ・開発データは各クラス 16 サンプルずつ の事例から成るという few-shot 学習の状況を想定
  6. 09/17/21 6 / 12 Label Words 選定の自動化 (step 1) •

    学習データと MLM を使ってクラス c の代わりの語を絞り込む – 各事例の [MASK] に入る確率の総和上位 k 個の語を選定 → top-k(sum(log_softmax(logits_batch), dim=batch) template Template: <S> It was [MASK] label:negative awful bad terrible … label:positive good great perfect … k 個 k 個 (一部の実験を除いて k=100 に設定)
  7. 09/17/21 7 / 12 • label words の全ての組み合わせについて、学習データで zero-shot accuracy

    を計測し、上位 n 個の組み合わせを残す • n 個の組み合わせについて、それぞれを学習データで fine-tuning し、開発データで最も accuracy が高いものを採用 Label Words 選定の自動化 (step 2, 3) label:positive good great perfect … Template: <S> It was [MASK] label:negative awful bad terrible … × → good/awful good/bad … perfect/bad perfect/terrible … good/bad great/bad great/terrible perfect/terrible → Pruned k^|Y| 通り n 個 ( n=100 に設定)
  8. 09/17/21 8 / 12 • 学習データを使って、入力文と label word と T5

    の mask トークンから成る系列を作り、 T5 に入力して mask を埋める – 変換: – 例 : T5 による Template の生成 (1/2) <S>,y → <S> <X> M(y) <Y> クラスから label word へのマッピング T5 の mask x) A fun ride. y) positive A fun ride. <X> great <Y> <X> This is <Y> . <Z> <S> This is [MASK] . 変換 T5 による decode 挿入して template 化 T5 の事前学習スキーム
  9. 09/17/21 9 / 12 T5 による Template の生成 (2/2) •

    ★ ここでのゴールは、一つの事例に fit した template ではな く、学習データの全ての事例に fit した template を得ること T that maximizes • beam search を使って 複数の template を生成 → label words と同様に、 学習データで fine-tuning して、 開発データで最良の template を採用 = 単に全学習事例について、毎ステップで logits の平均をとって decode すれば良い
  10. 09/17/21 10 / 12 実験: Prompt + 提案手法の有効性 • 提案手法で得た

    prompt にて人手と同等以上 • demonstration を用いることで精度が向上 ※template のみ生成
  11. 09/17/21 11 / 12 Template, Label Words の分析 • 生成箇所による精度の違いは

    T >= T + L > L という傾向 • 生成結果はそれなりに reasonable だが、奇妙な例もある – “no” が template に含まれる (SNLI Auto T #1) – “Hi” が entailment に相当 (SNLI Auto L #2) ※template のみ生成
  12. 09/17/21 12 / 12 感想 • 学習済み言語モデルの事前学習タスクに合わせて down-stream タスクを定式化できると良い •

    Prompt の生成自体は目新しい研究ではないが、 生成方法が面白いと思った – template と label words の生成のための text-infilling は、 単一文ではなく複数文に fit するよう decode される – → 他の生成にも使えそう • 自動で生成した Prompt による学習で、人手で作った Prompt と同程度以上の精度が出るのは良い – 手法の特性上、生成された Prompt が無難すぎるので、 同程度の精度を達成する Prompt は人手で作れるのでは?