2023-11-01 ML勉強会

IBIS2023チュートリアル「大規模言語モデル活用技術の最前線」
 

概要

IBIS2023におけるチュートリアル
 
 
  • LLMの応用分野や活用法について、けっこう最近の研究成果まで触れながら紹介されている良質な資料だと思ったので改めて取り上げてみました。
 

サマリー

大規模言語モデル(LLM: Large Language Model)とは

  • 大規模な「学習パラメタ」「学習データ」「計算環境」で学習したNNに基づく言語モデル
  • ex. Meta社のLLaMA2は700億、2兆トークン、2000台のA100(80GB)GPU
  • そういえばgpt-3.5-turboのパラメタ数が20Bと公開されていましたね。
  • GPT-4
    • ユーモアを理解するってのでも話題になりました。VGAのやつ。
    • ご存知の通り、日本語における性能も高いですね。
      • MMLU(Multi-task Language Understanding):LLMの汎用的な言語能力のベンチマーク。様々なドメインにおけるZero or few shotの性能を測定する。
    • 日本の医師国家試験に合格したってのでも話題になりました。
      • 学習データにまんま含まれているからまあそうなるよね、って意見も飛び交いましたね。
      •  
         

LLMはどのようなことができるのか

  • テキストに対するアノテーションにおいて、訓練された人間よりも高い正解率を叩き出した実験
    • アノテーション界隈が少しざわついていた記憶。もちろんドメインによると思います。
    • LLMで実行したのを人間が確認・修正するって方式が良いのかなぁ。
  • 推薦対話システム
    • Zero-shot設定で対話しながらおすすめの映画を推薦する。
    • レコメンド領域にいた身としてけっこう衝撃的でした。
  • マインクラフトをプレイ
    • 状況をテキスト化し、達成すべきタスクを生成する。
    • これもファインチューンしたりしておらず、事前学習で獲得したマイクラの知識に基づいている。衝撃だった。
  • ロボット制御
    • 人間の命令をロボット(ハードウェア)が理解できるコードに直接変換は難しい。報酬を与えるようなコードをLLMで生成し、それに基づいてロボットの行動が決定される仕組み。
  • ルールの学習
    • 事前学習に含まれない推論ルールをin-context learningで学習させることで、より様々な問題にも回答可能に。
    • https://arxiv.org/abs/2310.07064
  • 論文査読
    • PDFからテキストを抽出し、所定のフォーマットに従って査読結果を出力
      • 「新規性」「採択理由」「不採択理由」「改善点」など
 

LLMを使う技術

プロンプト:LLMに入力する文字列
  • こいつをこねこねして最適な出力を得るための技術がプロンプトエンジニアリング

さまざまなプロンプトエンジニアリング

 
  • In-Context Learning
    • Brown+, Language Models are Few-Shot Learners, 2020, OpenAI LLM
    • 少数の例を与えると、追加学習無しでタスクを実行可能
    • 勾配降下法による学習とプロンプトによる学習は等価で あるという仮説も → なるほど?ちょっと読んでみたい。気持ちは分からんでもない。
      • Oswald+, Transformers learn in-context by gradient descent, 2023
    • 基本的にプロンプトに含める例が多ければ多いほど性能が高くなる。
      • 例が少ない場合はタスク説明を入れてあげると良い。
      • 例が多いと(例では10件くらい)タスク説明あっても変わらないっぽい。
  • Chain-of-Thought (CoT) Prompting
    • Wei+, Chain-of-Thought Prompting Elicits Reasoning in Large Language Models, 2022, Google Research
    • 回答だけではなく回答に至る思考の過程も生成させるように例を与えることで性能が向上
    • やらない理由は無い
  • Zero-shot CoT Prompting
    • Kojima+, Large Language Models are Zero-Shot Reasoners, NeurIPS2022
    • 例を与えずに「Let’s think step by step.」をつければCoT的な回答を生成可能
    • Few-shotの例を加えるとさらに性能が向上
    • 作成が大変なCoTプロンプトを作成するためにとりあえずこれでLLMに作らせるのも
  • CoTにおける自己一貫性の活用
    • Wang+, Self-Consistency Improves Chain of Thought Reasoning in Language Models, ICLR2023
      • 要するにアンサンブル。温度パラメタ使って出力を揺らす。
      • CoT関係あるのか?とも思ったけど、思考の過程も含めたほうがリーズナブルな揺らし方になりそう?
      • n=5くらいでも性能向上。コストはいっぱい!
  • Plan-and-Solve
    • Wang+, Plan-and-Solve Prompting: Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Models, ACL2023.
    • 最初にプランを立てさせ,その後プランを実行するよう指示
      • “プランを考えてね。次にそのプランに基づいて実行してね。”って直接プロンプトに入れ込む形。基本的にCoTと同じような感じで性能向上するんだろうなと想像。
  • Step-Back Prompting
    • Zheng+, Take a Step Back: Evoking Reasoning via Abstraction in Large Language Models, 2023, Google DeepMind
    • 問題を解くための前提や原理を問う質問(Stepback Question)を行う
      • 物理の問題に回答するためにPV=nRTみたいな公式、人物についての特定時期の質問に回答するためにその人物の歴史を丸っときく、みたいな。
    • その回答をもとにCoTで回答を生成
    • プランに加えて前提知識が必要なタスクに有効
  • Auto-CoT: Few-shot例の自動生成
    • Zhang+, Auto-CoT: Automatic Chain of Thought Prompting in Large Language Models, ICLR2023.
    • Zero-shot CoTを使ってFew-shotの例を作成する際に、似たような問題をクラスタリングした上で異なるクラスタからサンプリングした問題をもとにZero-shot CoTを実行して生成した例を利用するほうが性能が上がる。
    • Few-shot例に多様性を持たせることが重要。
  • LLMにメモを取らせる
    • Lanchantin+, Learning to Reason and Memorize with Self-Notes, 2023, Meta AI
    • LLMは長期記憶と多段階推論が苦手
    • 問題文中に「メモ」を生成させ,メモを用いた推論を行わせるようにプロンプトを設計
    • 質問(context)を全部読む前に途中途中で自問自答してメモを残していっているイメージ
 
  • Program of Thought(PoT)
    • Chen+, Program of Thoughts Prompting: Disentangling Computation from Reasoning for Numerical Reasoning Tasks, 2022
    • 思考過程のかわりにソースコードを生成し、ソースコードの実行結果を出力として得る
      • 確かに曖昧性は消えるのか?
  • Faithful Chain-of-Thought
    • Lyu+, Faithful Chain-of-Thought Reasoning, 2022
    • PoTの一般化
    • LLMにより問題を機械が得意な形式に「翻訳」
  • 思考のステップ数の増加
    • Fu+, Complexity-Based Prompting for Multi-Step Reasoning, ICLR2023.
    • CoTにおけるFew-shotサンプルは回答に至るステップ数が多いものを用いると性能が上がる
    • 自己一貫性(アンサンブルみたいなやつ)を用いる場合もステップ数でソートし、上位N件で多数決をとると性能向上
    • CoT注釈がない場合も、問題文の長いものをFew-shotにいれるだけ性能は向上
  • Tree-of-Thought: 探索と評価に基づくCoT
    • Yao+, Tree of Thoughts: Deliberate Problem Solving with Large Language Models, 2023, Google DeepMind.
    • 探索や先読みが必要なタスクのためのCoT戦略
    • 次に実行すべきプランを複数LLMに生成させた上でLLM自身にそのプランを評価させ、実行するプランを決めさせて実行。答えが出るまでそれを繰り返す。
  • ReAct (Reason + Action) Prompting
    • Yao, ReAct: Synergizing Reasoning and Acting in Language Models, ICLR2023
    • 次に必要な行動(Action)とその理由を生成
    • 行動の実行から得られた結果から次の行動と理由を生成を繰り返す
      • Tree-of-Thoughtと考え方は似ているのかな。
    • 外部知識を検索などで取り入れる考え方も。
      • けっこうこれありきで語られることが多い気がする。
  • Least-to-Most:サブ問題への分割
    • Zhou+, Least-to-Most Prompting Enables Complex Reasoning in Large Language Models, ICLR2023
    • 主問題の回答に必要なサブ問題を生成
    • サブ問題への回答を生成し、次に必要なサブ問題を生成を繰り返す
    • 多段階推論が必要な問題にもCoTに比べて強い
  • Self-Refine: LLM自身に出力を修正させる
    • Madaan+, Self-Refine: Iterative Refinement with Self-Feedback, 2023.
    • LLMの出力をLLM自身が評価・コメント (Feedback)
    • Feedbackをもとに出力を修正 (Refine) を繰り返す
    • Few-shot Exampleを頑張って作る必要がある
      • どういう方向にrefineさせるのの例を与える必要があると理解。
  • LLMによるプロンプトの最適化
    • Yang+, Large Language Models as Optimizers, 2023, Google DeepMind
    • 「Let’s think step by step」のような回答の前に与えるインストラクションをLLMにより最適化
    • インストラクションとそのスコアをFew-shotで与え、<INS>に入るインストラクションを生成
      • このスコアとかはお気持ち、、?
    • 「深呼吸をしてステップバイステップで取り組みましょう」という人へのアドバイスっぽいインストラクションが得られた
      • すごい
    • どういうプロンプトがいいか不明な場合はそれもLLMにやらせることが可能
      • すごい(わからん)
  • 遺伝的アルゴリズムによるプロンプト最適化
    • Fernando, Promptbreeder: Self-Referential Self-Improvement Via Prompt Evolution, 2023, Google Deepmind
    • プロンプトをLLMにより進化させ,最適なプロンプトを獲得
    • プロンプトを変異させるためのプロンプトも進化させる
    • こすとやべえ(それはそう)
 

Tips & 雑多な話題

  • LLMは長い入力をどの程度上手に利用できるか?
    • Liu+, Lost in the Middle: How Language Models Use Long Contexts, 2023
      • 質問と複数の文書が与えられ,回答を生成するタスクで実験
      • 正解を含む文書の位置によって正解率が変わるかを調査
      • 全てのモデルで最初と最後にある場合に正解率が向上 → 重要な情報はプロンプトの最初と最後に書くことが重要
  • Re-reading
    • Xu+, Re-Reading Improves Reasoning in Language Models, 2023
      • プロンプトに問題文を2回入れると性能が向上
      • CoTと組み合わせるとより良い
      • 多くの回数入れれば入れるほどいいわけではない
  • 複数のペルソナによる自己コラボレーション
    • Wang+, Unleashing Cognitive Synergy in Large Language Models: A Task-Solving Agent through Multi-Persona Self-Collaboration, 2023. Microsoft Research Asia
    • 単一のLLMに複数のペルソナを割り当て議論させる
    • 割り当てるべきペルソナもLLMに生成させる
    • ドメイン知識が必要なタスクではペルソナを割り当てることが有効
    • 複数のドメイン知識が必要な場合,異なる専門知識を持つ複数の ペルソナを割り当てることが有効
      • ええ感じに温度パラメタいじってアンサンブルしてるイメージを持った
  • LLMにペルソナを与えることの副作用
    • Deshpande+, Toxicity in ChatGPT: Analyzing Persona-assigned Language Models, 2023
    • 性的指向や人種,特定の人名をLLMのペルソナとして設定
    • 不適切な発言の頻度が大きく増加する場合があることを確認
  • 複数LLMによる円卓会議
    • Chen+, ReConcile: Round-Table Conference Improves Reasoning via Consensus among Diverse LLMs, 2023
    • 最初に各LLMに回答と説明と確信度を生成
    • 他のLLMの回答を参考に,各LLMは自身の回答を修正
    • すべてのLLMの回答が一致するまで回答生成と修正を繰り返す
    • 単一のLLMよりも高い性能を達成可能 (ただしコストは増加)
  • LLMを用いたアイテム説明文の拡張に基づく推薦
    • Liu+, LLM-Rec: Personalized Recommendation via Prompting Large Language Models, 2023, Meta AI
    • 映画の説明文と関連する映画の説明文をLLMに与え,どういう人におすすめであるかという拡張推薦文を生成
    • ユーザ埋め込み,説明文,拡張推薦文を用いて推薦スコアを計算
  • マイナーな言語ほど不適切な生成が増加
    • Deng+, Multilingual Jailbreak Challenges in Large Language Models, 2023
      • LLMの学習データに占める割合が少ない言語の性能は低い
      • マイナーな言語の文を生成する場合,不適切な生成を行う割合も増加
      • LLMで構築したサービスを多言語展開する場合は注意が必要
  • 量子化と性能の分析
    • Liu+, Do Emergent Abilities Exist in Quantized Large Language Models: An Empirical Study, 2023.
    • LLMをローカルマシンで動かす際,メモリ消費量を抑えるため パラメータをより少ないビットで保持する量子化を行う場合がある
    • 量子化する際のビット数と性能の関係を調査
    • 4-bit量子化までは性能は大きく変わらないため,使用してOK
  • LLMへの電子透かし
    • Kirchenbauer+, A Watermark for Large Language Models, 2023
    • すべてのトークンをブラックリストor ホワイトリストに振り分ける
    • 生成時にブラックリストのトークンを出しにくいように調整
    • 生成文に含まれるブラックリストトークンの統計分析により検出
    •