A Survey of Large Language Models

なぜこの論文を紹介するか

下記理由から本論文をピックアップした

  • 案件でLLMを利用したいとの要望を受け、最近のLLMの流れをおさらいしておきたいと思ったため

論文の内容

導入:Introduction

Pre-trained Model (PLM)のサーベイは十分な量があるが、LLMのサーベイは多くないため、本論文を執筆した

LLMは以下の3点でPLMと異なる

  • LLMはそれまでの小規模PLMでは解けなかったタスクを解けるようになっている
  • LLMはAI開発/利用の方向性を変える
    • LLMではプロンプト経由での開発/利用する
    • 人はLLMの挙動を理解し、LLMが理解できる形式にタスクを変換する必要がある
  • LLMの開発は研究とエンジニアリングの境界を曖昧にする
    • LLMの開発には大規模なデータ処理や分散処理のスキルが必要になるため、研究者はエンジニアと一緒に仕事をするか、エンジニアリングスキルを身につける必要がある

ChatGPTとGPT-4の登場により、汎用人工知能Artificial General Inteligence(AGI)の実現の可能性が出てきた。(GPT-4等のLLMを初期のAGIと位置付ける論文もある。)下記はGPT-4を開発したOpenAIのAGI開発のロードマップである。

openai.com

LLMの急激な発展により、下記のような変化が起きている

  • 自然言語処理(NLP)の分野の研究はLLMが汎用的なタスクソルバーとして考え、LLMをどう利用するかという方向にシフトしてきている
  • 情報検索(IR)の分野では、既存のサーチエンジンをAIチャットボットベースの検索で置き換える試みが進んでいる(New Bingなど)
  • Computer Vision(CV)の分野ではChatGPTのような視覚-言語情報のマルチモーダルモデルの研究が進んでいる。(GPT-4はすでにマルチモーダル)

これらのLLMによりもたらされる現実世界のアプリケーション開発環境にもたらされる変化はMicrosoftOfficeのCopilot機能のような形で、よりよい形で影響を与え始めている

これらの進展と影響とは裏腹にLLM自体は下記のような点で問題がある

  • PLMが解けない周辺タスクをLLMがなぜ、どのようにして解けるようになったかは明らかになっていない
  • アカデミアで十分な性能を発揮するLLMを学習することは、LLMに要求される膨大な計算資源の観点から難しい(そのため上記の原因究明も難しい)
  • 人に害を与えるような偽情報等を出力しないように、人の価値観等をモデルに反映するのが難しい

まだまだ課題はあるものの、LLMの研究/開発のためにはもっと人々からの興味関心を惹く必要がある。そこで、本論文ではLLMへの基礎的な理解を促すために下記の観点から論文のレビューを実施した。

  • Pre-training:優秀なLLMを作るためにどう事前学習するか
  • Adaptation tuning:事前学習済みLLMをどう有効にチューニングするか
  • Utilization:どうLLMを利用してタスクを解くか
  • Capacity evaluation:どのようにLLMの能力を評価するか

概要:Overview

LLMの背景

Large Language Models(LLM)は、GPT-3、PaLM、Galactica等の大量データで大量のパラメータを学習したモデルを指す。現状のLLMはTransformerのmulti-head attentionレイヤーを多く積み重ね、事前学習では通常の言語モデルと同じ目的関数を利用するという点は共通している。異なる点はモデルのサイズ、事前学習データ、利用計算リソースといった点ぐらい。

LLM独自の能力

LLMではそれまでの比較的サイズの小さいモデルではみられない能力が確認されている。ここでは下記の3つの能力について紹介する。

  • In-context learning
    • モデルに指示やタスク実行例を提示された場合に、テストデータに対して期待される結果を追加の学習や勾配更新なしに実現することができる
  • Instruction following
    • 自然言語で表現されている様々なタスクが混じったマルチタスクデータセットを用いてファインチューニングすることにより、LLMは指示の形式で記述された未見のタスクに関しても良いパフォーマンスをすることが確認されている。この能力により、指示をチューニング(Instruction Tuning)することで明確な例をモデルに提示しなくとも、新しいタスクに対する指示に関しても従うことができる。
  • Step-by-step reasoning
    • 比較的小規模なモデルでは、解決に複数ステップのロジックが含まれるような算数の文章題を解くといったタスクを苦手としていた。しかし、LLMではプロンプトを用いることでステップ単位でのタスク解決を実行することにより、タスクを解けるようになった

LLMの発展に寄与した主要技術

現在のLLMが実現するにあたり、重要となった•なりそうな技術を紹介する。

  • Scaling
    • LLMが独自の能力を発揮するにあたり、必要になるモデル/データ/計算リソースサイズをバジェット制約の元で最適化する研究が近年進んでいる
    • 事前学習データの質が重要になるため、データ収集/クレンジングが重要になる
  • Training
    • LLMではモデルサイズが大きいので分散学習が必須。分散学習最適化のFrameworkとしてDeepSpeedやMegatron-LMや、lossのスパイクを避けるためのmixed precision training等の技術が利用されている
  • Ability eliciting
    • LLMの能力を引き出すためには、適切なInstructionの設計やin-context learning戦略の設計が必要になる。例としては下記のようなものがある
      • chain of thoughtのような思考過程をプロンプトに含める戦略
      • Instructionにタスクの詳細を含める戦略
  • Alignment tuning
    • LLMはモデルの性質上、人にとって有害な情報を生成してしまう可能性がある。これを防ぐために、人の価値観(無害、誠実、便利)にモデルを合わせる必要がある。この実現に向けた取り組みとして、下記のようなものがある
      • InstructGPTによる、Reiforcement Learning with Human in the Loop(RLHL)を活用した人の価値観に合せるためのチューニング
  • Tool manipulation
    • LLMはテキスト情報をベースとして作成されたため、テキストで表現されていないタスクや学習以後に新しく追加された知識に関するタスクは苦手。これらを回避するために、ChatGPTが外部のツールを利用するといったことが検討されている

GPT系モデルの進化の系譜

GPTを会話タスク方面に最適化したChatGPTの成功により、ChatGPTやGPT系モデルへの関心が高まっている。そこで、本節ではGPT系モデルの進化の系譜を紹介する。

OpenAIのLLM (GPT)に関する研究は下記のステージに分けることができるため、各項目ごとに説明していく。

  1. 初期探索期(Early Exploration)
  2. 性能向上期(Capacity Leap)
  3. 性能強化期(Capacity Enhancement)
  4. 目標達成期(The Milestone of Language Models)

1.初期探索期(Early Exploration)

言語モデルを活用した知的システムの構築のアイデアは、OpenAIにおいてかなり早い段階から模索されていた。Transformer登場後は、Transformerを利用したGPT-1とGPT-2を開発したが、それ以前にもRNNを用いた試みがなされていた。

  • GPT-1
    • 2017年のGoogleからのTransformer発表を受け、OpenAIのチームは自前の言語モデルにこの新しいアーキテクチャを適用し、2018年にGPT-1(Generative Pre-trained Transformer)を発表した
    • GPT-1はDecoderのみのTransfomer系生成モデルをベースとしており、非タスク依存学習を実現するために、下記を組み合わせたアプローチをとっていた
      • 教師なし事前学習
      • 教師ありのファインチューニング
    • このアプローチが以降のGPT系モデルに共通する中心的なアプローチとなっていった
  • GPT-2
    • GPT-1のアプローチを踏襲した上で、モデルのパラメータ数を1.5Bまで大幅に増やし、WebTextデータで学習したモデル
    • GPT-2では明示的な教師データを用いたファインチューニングをせずに、教師なしの言語モデリングのみでタスクを解く方法を探索し、マルチタスク学習で用いられていた確率モデルの考え方を導入した

      • p(output | input, task)の事後確率を予測するためのinput、output、taskを統一的に表現する情報として自然言語文が利用できると考えたとのこと
      • これにより、全てのタスクは自然言語処理の領域で解けるようになると考えた

        “Since the (task-specific) supervised objective is the same as the unsupervised (language modeling) objective but only evaluated on a subset of the sequence, the global minimum of the unsupervised objective is also the global minimum of the supervised objective (for various tasks)”

    • (汎用モデルの思想はこの辺りから実装に反映され初めている感じな気がする)

2.性能向上期(Capacity Leap)

GPT-2は「教師なしのマルチタスク学習モデル」を意図して開発されたが、教師ありのファインチューニングがされたSoTAモデルと比較するとパフォーマンスはよくなかった。GPT-2をベースとして、モデルを学習済みモデルと同程度までスケールさせたGPT-3を開発した。

  • GPT-3
    • 2020年に発表されたGPT-3は、GPT-2をベースとしてパラメータ数を175Bまで大幅に増やしたモデル
    • このモデルでLLMをfew-shot もしくはzero-shotで用いることにより、in-context learningの性質(適切な指示を与えることで、タスクに関する情報を学習時に与えなくとも、タスクを解けるようになる性質)が確認された
      • in-context learningにより事前学習とLLMの利用が同じ言語モデリングパラダイムにまとめられることが示唆された(GPT-2で想定していたこと)
    • GPT-3はNLPのタスクで優秀な成績を残したのみならず、本来なら特別なドメイン適用が必要なタスクに対しても優秀な成績を収めた
    • この成功によりGPT-3はPLM→LLMへの遷移における重要なランドマークとして考えられるようになった

3.性能強化期(Capacity Enhancement)

OpenAIではGPT-3の性能をさらに強化するために、コードデータでの学習と感覚との突合に取り組むようになった

  • コードデータでの学習
    • GPT-3では複雑なロジックが必要になるプログラムの補完や、算数の文章題を解くといったタスクを苦手としていた
    • これを解決するために、Githubのコードデータを用いた学習を実施したCodexをリリースしたところ、複雑なプロブラムの補完や算数の文章題を解くといったタスクでパフォーマンスが大幅に改善した
    • また2022に紹介された文章とコードの埋め込みにcontrastive lossを用いるアプローチにより関連するタスクについても性能改善が確認された
    • アップデートされたGPT-3.5は、このコードデータで学習されたモデルをベースとして確証されたことで、大幅な性能改善が確認された
      • このことから、複雑なロジックに関する性能改善にはコードデータでの学習が重要になることが明らかになった
  • 感覚との突合(Human Alignment)
    • モデル出力の人の感覚との突合は2017年からOpenAI内で課題として認識されており、解決に取り組んでいた

      openai.com

    • これを実現するための技術開発として下記のような研究が次々と発表されていった

      • 2017年:人によるannotationを活用した嗜好比較(preference comparisons)

        arxiv.org

      • 2017年:強化学習の方策最適化方法Proximal Policy Optimization(PPO)の提案

        arxiv.org

    • 2020年にはこれら手法を利用したGPT-2のチューニングが実施され、2022年にはInstructGPTが提案されGPT-3モデルで感覚との突合が実施された

      arxiv.org

    • これらの結果、GPT-3の指示に従う性能が改善するとともに、人にとって有害な情報出力(偽情報など)が軽減するといった改善が確認された

      • OpenAIでの感覚との突合に関するアプローチについては下記にまとめられている

      openai.com

4.目標達成期(The Milestone of Language Models)

これまでの探索の結果、OpenAIはChatGPTとGPT-4というマイルストーンになる製品がリリースされた

  • ChatGPT
    • 2022年11月にOpenAIはGPT-3.5とGPT-4をベースとする会話モデルChatGPTをリリースした

      openai.com

    • ChatGPTは基本的にはInstructGPTの手法を利用したものだが、会話により最適化されたものになっているとのこと

      • 具体的な違いとしては、人の生成した会話データがInstructGPTで利用したデータに追加されているとのこと
    • ChatGPTは人とのコミュニケーションで優れた性能を発揮している。
      • 広大な知識ベースの整理
      • 数学の文章題を解くといった複雑なロジックを含むタスクの解決
      • 複数ターンの対話でのコンテキストの把握
      • 人にとっての有害な出力抑制
    • また、ChatGPTのプラグイン機能が提供されたことにより既存アプリケーション等への統合が進んでいる
    • ChatGPTは現在、AIの歴史上で最も進んだChatbotであるため、多くの影響をAIの研究に与えるだろう
  • GPT-4
    • 2023年3月にOpenAIは文章入力の他に、画像等のマルチモーダルデータが入力としてサポートされたGPT-4した。
    • 多くのタスクで、GPT-3.5と比較して大幅な性能改善が確認されている

      arxiv.org

    • 特に6ヶ月に及ぶRLHFにより、安全性は大きく改善しているとのこと

      https://cdn.openai.com/papers/gpt-4.pdfcdn.openai.com

    • モデルを改善するための新しい技術としては下記を導入している

      • read teaming
        • 有害な出力生成を抑えるための手法
      • predictable scaling
        • モデル学習時の計算インフラ最適化

LLMは急激に進展したものの、まだまだ偽情報を生成してしまうといった課題が解決したわけではないので、利用には注意が必要。

リソース:Resources of LLMs

LLMsで利用されている/利用可能なリソースを紹介する

モデル

モデルの変遷は下記の通り

モデルの変遷

各モデルの概要は下記の通り

モデルの概要

API

Open AIはAPIとしてChatGPTやGPT-4を利用できる環境を提供している

openai.com

データソース

LLMを作成する上で頻繁に利用されているデータソースは下記のとおり

データソース

ライブラリ

  • Transformers
    • Huggingfaceが開発したTransformer系モデル構築に利用可能なPythonライブラリ
  • DeepSpeed
    • Microsoftが開発したPytorchモデルの最適化ライブラリ
  • Megatron-LM
  • JAX
  • Colossal-AI
    • HPC-AI Techが開発した大規模モデルの学習効率化ライブラル
  • BMTrain
    • OpenBMBが開発した大規模モデルの学習効率化ライブラリ
  • FastMoE
    • Mixture of Expert(MoE)モデルのための学習効率化ライブラリ

事前学習:Pre-training

大規模なコーパスを用いた事前学習により、LLMは基本的な言語理解/生成能力を獲得する。この時、下記が重要になる

データの質と量

LLMの能力はデータに依存しているため、事前学習で能力の高いモデルを生成するたには、高い質のデータを大量に集める必要がある。このためにこの節では下記内容について紹介する

  • 事前学習用データの収集と前処理
  • 事前学習データがLLMの性能に与える影響

事前学習用データの収集と前処理

能力の高いLLMを開発するためには、さまざまなソースの自然言語データを用いるのが肝要。実際、多くのLLMではさまざまなデータソースを混ぜて利用している。

データソース割合

利用されるデータには下記のようなものがある

  • 一般テキストデータ
    • Webpageデータ
      • ウェブページをcrawringしたデータCommonCrawlなど。情報の質にばらつきがあるため、不要データのフィルターや前処理が重要
    • 会話文データ:
      • QAタスクのPublicなPushShift.io、Reddit corpusやSNS上の複数人による会話データ。話者を特定するために、会話のツリー化が重要。これにより、会話をさらにサブツリーに分解していくことができる。
      • 会話文データをLLMの学習データに含めすぎると、ユーザからの指示を会話の起点と捉えられ、適切な回答を得られなくなるという副作用がある
    • 本データ
      • 本のオープンソースデータとしてはBook3やBookcorpus2データセットが利用される。長文のフォーマルなデータとして利用できるため、言語の文法を学習に役立っていると考えられている。
  • 専門テキストデータ
    • 多言語データ
      • BLOOMやPaLMには122言語が学習データに含まれている。結果、翻訳や多言語要約、多言語QAといったタスクにこれらのモデルは秀でており、対象言語でファインチューニングされたSoTAモデルよりも良い成績を残している
    • 科学文書データ
      • arXivや教科書、数学/科学関連サイト等の情報が用いられている。数学記号や原子配列といった特殊な情報が含まれるため、特殊なトークン化等の前処理が必要になる
    • コードデータ
      • プログラムのQAサイトやGithub等のリポジトリ情報が利用される。自然言語と異なり、厳格なロジックがあるためコードデータを用いることにより、モデルは複雑なロジックのタスクにも対応できるようになった

学習データを揃えたら、続いて適切な前処理で不要な情報や有害な情報を取り除く等の作業が必要になる。

フィルタリングプロセス

  • Quality Filtering
    • 分類機やヒューリスティックなアプローチで質の低いデータを学習データセットから除外する。分類機は良文学習的なアプローチでモデルを作成するが、質の高いデータを除外してしまう可能性が指摘されている。そのため、BLOOMやGopherでは下記のようなヒューリスティックなルールをもとにデータを除外している
      • 言語ベースフィルタ
        • 利用を想定していない言語データは除外する
      • 指標ベースフィルタ
        • 複雑度等の指標をもとに基準を満たさないデータは除外する
      • 統計ベースフィルタ
        • 平均的な文章の長さやシンボル-語比率等の文章に関する統計情報から外れているデータは除外する
      • キーワードベースフィルタ
        • HTMLのタグといったデータを除外する
  • De-duplication
    • 学習データ内部での重複は言語モデルの多様性を減少させ、学習の不安定化につながることが知られている。そのため、データから重複を除外する必要がある。
    • データの重複除外は下記のような粒度で実施される
      • 文レベルの重複 : 単語の繰り返しが多い文の除外
      • 文書レベルの重複 : 単語やn-gramの重複が多い類似内容文書の除外
      • データセットレベルの重複:学習データセットと評価データセット間の重複データ除外
  • Privacy Redaction
    • ウェブのソースから得られたデータには個人情報が多分に含まれるため、これをルールベースで除外する必要がある
  • Tokenization
    • LLMの入力とするためにテキストデータを単語等のトークン単位に分割する処理
    • 既存のTokenizer (GPT-3はGPT-2のtokenizerを流用)を流用することも可能だが、事前学習データのコーパスに合わせたTokenizerは非常に有益であることが知られている
    • 近年のLLMの多くはSentencePieceを利用して、事前学習データのコーパスに合わせたtokenizeをしている。SentencePieceではバイトレベルのByte Pair Encodingにより、トークン化時の情報損失を軽減している

      arxiv.org

事前学習データがLLLMの性能に与える影響

LLMはその規模の大きさから学習を繰り返し実施するのは難しい。そのため、事前学習データのコーパスを十分に精査し、準備しておくことが重要になる。本節では事前学習データの分布や質がLLMの性能に与える影響について下記の観点で議論する

  • Mixture of Sources
    • LLMでは異なる特徴を持つデータソースを混ぜて利用することにより、より汎用的な知識を獲得している。ただ、複数のデータソースを混ぜる場合、データの分布に注意しないと下流タスクの性能に影響が出る可能性がある。
    • Gopherを用いたablation studyでは下記のような結果が報告されている
      • Book関連のデータ比率を増加させることで、長期間の依存関係を補足する能力が向上
      • C4のデータ比率を増加させることでC4の評価セットでの評価が向上
    • 一方で特定ドメインのデータ比率を増加させすぎると汎用性が落ちることが報告されているため、データソースを混ぜる際にはその比率に注意が必要
  • Amount of Pre-training Data
    • LLMのパラメータを増加させるに従い、学習に利用するデータのサイズを増やす必要があることが報告されている
    • また、いくつかのLLMでは事前学習データセットが足りていないために最適な性能が得られていないとの報告もある
    • そのため、研究者は事前学習で利用する質の高いデータセットが十分な量あるかについても注意を払う必要がある
  • Quality of Pre-training Data
    • 事前学習データに重複/有害/ノイズが含まれる場合、性能が劣化することが報告されている
    • LLMを用いた検証(T5, GLaM, Gopher)で行われた検証では、質の高いデータを用いた場合の方が下流タスクを解く際のモデル性能が高いことが確認されている。そのため、質の高いデータを準備することは非常に重要
      • 特にデータの重複はモデルの性能への影響が大きいとのこと

モデルのアーキテクチャ

現在のLLMでは下記のようなアーキテクチャが利用されている

モデルのアーキテクチャ

  • Encoder-Decoder Architecture
    • Transformerを用いて、EncoderとDecoderを作成するアーキテクチャ
      • Encoderではmulti-head self-attention レイヤを積み上げることで潜在空間での表現を獲得する
      • Decoderでは潜在空間での表現に対してcross-attentionを適用し、自己回帰的に出力を生成する
  • Causal Decoder Architecture
    • Caudal Decoderではunidirectional attention maskを利用することで自身以前の情報しか利用できないようにしたアーキテクチャ
      • 入力と出力では同じ構造のDecoderを利用
    • GPT系モデルはCausal Decoderアーキテクチャで設計されているが、GPT-1/2ではGPT-3のようなLLM独自の能力が発揮されることはなかったため、スケールが大きくなることでより有効に働くようになったと考えられる
  • Prefix Decoder Architecture
    • Causal Decoderのマスキング方法を見直し、双方向のattentionをprefix tokenに対して実施し、単方向のattentionを生成部のみ利用するようにしたアーキテクチャ
    • (より汎用的な潜在空間の表現獲得が可能になると思われる)
    • まずはCausal Decoderで学習し、モデルをPrefix Decoderに変換して学習すると効率的とのこと

      www.ogis-ri.co.jp

学習の高速化と最適化

各LLM学習時の設定は下記の通り

学習の最適化

LLMの チューニング: Adaption Tuning of LLMS

事前学習でLLMはさまざまなタスクを解く汎用的な能力を獲得する一方で、特定タスク解決に向けて適応させることができることが報告されている。

適応させる方法としては大きく分類して下記がある。

  • Instruction Tuning
  • Alignment Tuning

Instruction Tuning

Instruction Tuningは事前学習済LLMを、自然言語の形式にフォーマットされたドメイン固有のデータセットを利用してファインチューニングする方法を指す。

Instruction Tuningを実施することにより、LLMは学習データに含まれない未知のデータに対しても高い能力を発揮するようになることが確認されている。

Instruction Tuningを実施するためのデータを集める方法には下記のようなアプローチがある。

インストラクションチューニング

  • Formatting Existing Datasets
    • 既存のデータセット自然言語の形式にフォーマットして入力として利用する方法
    • これらのデータセットを利用してLLMをファインチューニングを実施することで、学習時に未知だった下流タスクに関しても性能が向上することが報告されている
    • これらの情報を効率的に収集するためのクラウドソーシングプラットフォームとしてPromptSouceというサービスなどがあるとのこと
  • Formatting Human Needs
    • PublicなNLPデータセットを用いる方法では、指示の多様性が十分ではない/現実の人の要望と異なる可能性がある
    • OpenAIではこの問題を回避するために、InstructGPTでOpenAI APIで収集した指示を用いる方法を提案した。また、さらに多様性を増加させるために、人手での指示作成を実施した。回答としては、別グループの人で作成した回答情報を利用した。
    • この手法の有用性は周知の通り。

データを作成する際には下記項目に注意すると汎用的な性能を獲得しやすいいとのこと

  • Scaling the instruction
    • 指示タスクタイプ(QA、分類など)を増やすこと
    • 指示タスクのディスクリプションを充実させること
    • 指示タスクのインスタンス数は少量にすること
  • Formatting design
    • どのように指示を自然言語で変換するかが重要
      • タスクのディスクリプションを記載すること
      • タスクの例をDemonstrationとして追加すること
    • Chain of thought のような例をデータセットに混ぜると性能が改善するという報告もある

Instruction Tuningの結果として下記のような結果が報告されている。

  • Performance Improvement
    • 事前学習データと比較して少ない指示データで学習したにも関わらず、Instruction Tuningにより性能改善することが確認されている
  • Task Generalization
    • Instruction tuningはモデルに自然言語の指示全般を理解させることに一役かっているため、実施することにより人からの指示に従いやすくなる

Alignment Tuning

さまざまなタスクでLLMは素晴らしい性能を発揮している一方で、偽情報の生成、不適切な表現などしてしまうという課題もある。これは事前学習でLLMが次の単語を予測するというタスクで学習しているため、人の価値観や嗜好を明示的に考慮できていないことが原因の一つと考えられている。

そこで、LLMの出力と人の価値観と突合するための方法が提案された。ただ、事前学習やInstruction tuningとは異なる基準を導入することになるため、Alignment tuningの結果、汎用性能が一部悪化することが報告されている(alignment tax)

  • Alignment Criteria
    • チューニングの基準はさまざまあるが、大きく分類すると下記のようになる
      • Helpfulness : 人をどれだけ支援できるか
      • Honesty : 偽情報を生成しないか
      • Harmlessness : 出力結果が攻撃的でないか

これらは人の主観的な認識のため、数値化し最適化の対象とすることは非常に難しい。将来性のある方法としては red teamingがある。(これは、マニュアル等を利用してLLMを検査する方法?)

具体的な方法は下記内容を参照のこと

arxiv.org

活用 : Utilization

事前学習とチューニングが終わったモデルはプロンプト経由で利用することができる。典型的なプロンプト方法には下記がある。

  • In-Context Learning
    • プロンプトにタスクの説明やタスクの実行例を自然言語で含める方法
  • Chain of thought prompting
    • In-Context Learningを補強する方法として、ロジックの中間ステップをプロンプトに含める方法

プロンプトテクニック

In-Context Learning (ICL)

適切なタスクの実行例をモデルに提示することで、LLMは追加の学習なしに適切な回答を得ることができる。ただ、タスクの実行性能はモデルに提示する実行例に依存するため、性能をあげるためには適切な実行例を提示する必要がある。

適切な実行例を提示する方法として本節では下記内容を紹介する

  • 実行例の選択
  • 実行例の自然言語フォーマット方法
  • 実行例の提示順序

In-Context learningのより詳しい内容については下記を参照のこと

arxiv.org

実行例の選択

ICLの精度はモデルに提示する実行例に大きく依存する。実行例の選択方法には、下記がある

  • Heuristic approach
    • そのシンプルさと簡易さから、探索的なアプローチがよく利用される
    • k-NN等を利用してタスクに類似した実行例を探す方法(実行例間の比較はなし)や、実行例の多様性を考慮するためにサンプル集合からもっとも代表的な実行例を探す(実行例間の比較あり)方法が提案されている
  • LLM-based approach
    • LLMに実行例の重要度を出力させ、その重要度をもとに実行例を選択する方法や、LLM自体に実行例を生成させる方法が提案されている

実行例の自然言語フォーマット方法

実行例の選択が終わったら、その実行例を自然言語で表現する必要がある。

  • 事前定義済みのテンプレート利用
    • 実行例の質問と回答で変化する部分のみを穴埋めする方法(例.数学文章題の数値部分のみ変えるなど)
  • 回答タスクの説明追加
    • 回答タスクの説明を追加することで、回答性能が改善することが報告されている
    • 回答タスクの説明自体をLLMに事前に生成させることで、説明データを集める労力を軽減する方法も提案されている

実行例の提示順序

LLMは最後の実行例の結果に影響されやすいという性質を持つことが確認されている。そのため、実行例の提示順序が重要になる。

  • 実行例の類似度順
    • タスクとの類似度が近い実行例ほど、実行例を最後に持ってくる
  • その他指標順
    • 情報量など

Chain of thought prompting (CoT)

CoTは複雑な論理構造を持つタスクや、一般常識に関連するタスク等のタスクでLLMの性能を改善するために考えられたプロンプト戦略。

ICLでは入力-出力のペアのみをプロンプトに与えるが、CoTでは最終的な出力結果につながる中間出力をプロンプトに含める。(図7参照)

CoTは下記それぞれの設定のもとで頻繁に利用される。

  • Few-shot CoT
    • Few-shot CoTは実行例を「入力-CoT-出力」として与える方法(「入力-出力」ではないということ)
      • CoT prompt design
        • CoTの多様性を増やすこと(各タスクに対して複数のロジックを記載する等)で性能が改善するということが報告されている。特に複雑なロジックの方がLLMの性能改善につながるとのこと。
        • ただ、↑の場合、データが必要になってしまう。そこでAuto CoTではZero-shot-CoTを活用し、手動データ準備が不要になるようにしている。
      • Enhanced CoT strategies
        • CoTはタスクの背景知識を増やすだけでなく、タスクの検討に利用するロジックの幅を増やすことに利用できる
        • 多くの研究では複数のロジックパスを生成し、正しい回答に紐づくパスを回答の多数決から決めて、決めて利用している。これを活用した提案であるself-consistencyでは、CoTによる性能改善幅をブーストしたことが報告されている
  • Zero-shot CoT
    • Zero-shot CoTは、データを利用せずに「Let’s think step by step」でプロンプトを開始し、最終的な結論を「Therefore, the answer is」というプロンプトで促す方法
    • LLMが一定の規模を超えると、この戦略で性能が大幅に改善することが確認されている

CoTはLLMで初めて確認された能力のため、一定以上の規模のモデル(10B以上のパラメータ数)でのみ有効に働く。また、数学の文章題、一般常識課題、記号推論といったステップごとのロジックが必要なタスクでは有効に働くが、その他の通常タスクで利用すると精度が劣化するという報告もあるため、使い所は慎重に考える必要がある。

機能評価 : Capacity Evaluation

LLM機能の評価で利用されているタスクとデータセットには下記のようなものがある。

評価データセット

  • Language Generation
    • Language Modeling : 次に来る単語(トークン)を予測するタスク
    • Conditional Text Generation : 特定の要求(翻訳、QA、ようやくなど)を満たす文章を生成するタスク。LLMにより高いスコアが得られすぎたため、よりBIG-bench Hard等の難しいデータセットが作られている
    • Code Synthesis:コードを生成するタスク
  • Knowledge Utilization
    • Closed-Book QA : 外部のリソースを利用することなく、特定コンテキスト内で質問に回答するタスク
    • Open-Book QA:外部のリソース利用を許可した上で、質問に回答するタスク
    • Knowledge Completion:欠損している部分の知識を補完するタスク
  • Complex reasoning
    • Knowledge Reasoning : 論理構造と根拠をもとに質問に回答するタスク
    • Symbolic Reasoning : 記号と記号活用ルールをもとに推論するタスク
    • Mathematical Reasoning : 数学課題に回答するタスク

現在評価データとして頻繁に利用されるのは、上記のうちMMLU、BIG-benchとHELM。

  • MMLU:幅広い知識(数学、CS、人文学など)を含む、知識理解の能力を図るために利用されるデータセット
  • BIG-bench:204のタスクを含むLLMの性能を測るために作成されたベンチマークデータセット
  • HELM:16シナリオ7カテゴリの情報に関するLLMの性能を測るために作成されたデータセット

結論と今後の方向性 : Conclusion And Future Directions

本論文では近年のLLMの発展を理解するために、発展に寄与した主要なコンセプトや技術、LLMの利用方法について下記の観点で紹介した。(LLMの対象としてはパラメータ数が10Bを超えるものを対象とした)

  • Pre-training:優秀なLLMを作るためにどう事前学習するか
  • Adaptation tuning:事前学習済みLLMをどう有効にチューニングするか
  • Utilization:どうLLMを利用してタスクを解くか
  • Capacity evaluation:どのようにLLMの能力を評価するか

現在LLMが抱える課題や挑戦、今後の発展の方向性をまとめると下記のようになる

  • Theory and Principle
    • LLMが獲得した能力が、いつ、どのように発現したかは明らかではない。この原因究明に研究コミュニティが取り組むことは次世代のLLM開発のために非常に価値がある
  • Model Architecture
    • スケーラビリティや有効性の観点から現在のLLMではTransformerを活用することがスタンダードとなっている。現在はcontext windowを広げる(GPT-4-32kは32,768tokenをコンテキストとして利用)、より多くの文脈情報を利用することでモデルの性能を改善しているがより効率的なアーキテクチャを模索する必要がある
    • またcatastrophic forgetting等に関しても、データの更新やタスクへの特化を効果的に行えるような既存のアーキテクチャを拡張する柔軟な方法や機構の検討が必要になる。
  • Model Training
    • LLMを何度も学習するのは、計算リソース、学習のコツ、データの質の担保の観点から難しい。そのために下記に取り組む必要がある
      • 学習時に発生した異常の早期検知
      • 計算リソースの最適化
      • 検証に利用可能なオープンソースの学習済みモデルの整備
  • Model Utilization
    • LLMのfine-tuningを実施するのはコストが非常に高いため、LLM活用の際にはプロンプトを利用したIn-Context Learningを活用することが多くなると思われる。プロンプト活用の幅を広げるために、下記課題への取り組みが必要。
      • プロンプトのデザインにかかる人手の削減方法検討
      • 自然言語で表現されていない複雑なタスクのプロンプトデザイン方法の検討
      • 複数回のコミュニケーションを前提としたプロンプト方法の検討
  • Safety and Alignment
    • LLMは人にとって有害な情報を生成してしまうことがある。これをGPT-3/4ではRLHFで軽減することに成功している。ただ、現状のRLHFには多大な人手が必要になる。これを改善するためのフレームワークの検討が必要

今後読みたい論文や資料など

  • LLMについて本論文を記載した研究メンバーがメンテナンスするリポジトリ

github.com

参考資料

  • OpenAIブログポスト

Planning for AGI and beyond Learning from human preferences Our approach to alignment research Introducing ChatGPT https://cdn.openai.com/papers/gpt-4.pdf Product

  • 論文

[1706.03741] Deep reinforcement learning from human preferences [1707.06347] Proximal Policy Optimization Algorithms [2203.02155] Training language models to follow instructions with human feedback [2303.12712] Sparks of Artificial General Intelligence: Early experiments with GPT-4 [1808.06226] SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing [2301.00234] A Survey on In-context Learning [2303.18223] A Survey of Large Language Models

  • その他

GitHub - RUCAIBox/LLMSurvey: The official GitHub page for the survey paper "A Survey of Large Language Models". はじめての自然言語処理 T5 によるテキスト生成の検証 | オブジェクトの広場