【論文解説】LLMとは何か?GPT-3論文からChatGPTの仕組みを初心者向けに解説

LLMにFew-shotプロンプトを入力して回答を得る流れ

LLMとは何か?GPT-3論文からChatGPTの仕組みを初心者向けに解説

スポンサーリンク

3文要約

LLMにFew-shotプロンプトを入力して回答を得る流れ

LLM(Large Language Model、大規模なテキストデータで学習した言語モデル)は、文章の続きを予測する学習を通じて作られます。

その結果、翻訳、要約、質問応答、文章生成など、多くの言語タスクに使えるモデルになります。

GPT-3論文「Language Models are Few-Shot Learners」は、1750億パラメータの自己回帰型言語モデルを扱った論文です。

Fine-tuning(特定タスク用に追加学習すること)なしでも、プロンプト内の指示や少数例だけで多様なタスクを解ける可能性を示しました。

この記事では、GPT-3論文を入口に、LLMの基本構造を整理します。

あわせて、なぜ文章生成ができるのか、Few-shot learningの意味、ChatGPTのような対話AIへつながる流れも見ていきます。

論文情報

項目 内容
論文タイトル Language Models are Few-Shot Learners
著者 Tom B. Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared Kaplan ほか
公開日 2020年5月28日、最終改訂 2020年7月22日
分野 Computation and Language
arXiv Language Models are Few-Shot Learners
DOI 10.48550/arXiv.2005.14165

LLMとは何か

LLMは、Large Language Modelの略で、日本語では大規模言語モデルと呼ばれます。

言語モデルとは、簡単に言えば「ある文脈の次に何が来そうか」を予測するモデルです。

ここで予測する単位は、単語やtoken(モデルが扱う文字列の単位)です。

たとえば、次の文があるとします。

今日は天気がいいので、近くの公園へ

この続きを予測するなら、「行く」「散歩に行く」「出かける」などが自然です。言語モデルは、このような続きを大量のテキストから学習します。

LLMが「大規模」と呼ばれる理由は、主に次の3つです。

大規模な要素 内容
パラメータ数 モデル内部の重みの数が非常に多い
学習データ Webテキストや書籍など、大量の文章で学習する
計算量 学習に大量のGPUやTPUなどの計算資源を使う

GPT-3は、175B、つまり1750億パラメータのモデルとして発表されました。

当時の非スパースな言語モデルとして非常に大きく、LLM時代を象徴する論文の1つになりました。

背景:なぜGPT-3論文が重要だったのか

GPT-3以前にも、BERT、GPT-2、T5などの大規模な事前学習モデルは存在していました。

その多くは、まず大量のテキストで事前学習し、その後に特定タスクのデータでFine-tuningする流れを取っていました。

方法 何をするか 強み 課題
Fine-tuning タスクごとの教師データで追加学習する 特定タスクで高精度を出しやすい タスクごとにデータと学習が必要
Zero-shot 例を与えず、指示だけで解かせる 追加学習が不要 指示理解が難しい場合がある
One-shot 1つの例をプロンプト内に入れる 出力形式を伝えやすい 例が少なく不安定なことがある
Few-shot 少数の例をプロンプト内に入れる タスク形式をその場で示せる 長いプロンプトが必要になりやすい

GPT-3論文が注目されたのは、モデルを大きくすると何が起きるかを大規模に検証した点です。

特に、Fine-tuningなしでも、プロンプト内の少数例だけで多くのタスクに対応できるのではないか、という方向性を調べています。

論文では、翻訳、質問応答、穴埋め、読解、常識推論、簡単な算術、単語並べ替えなど、多様なタスクが評価されています。

既存手法の課題

GPT-3論文が問題意識として置いているのは、NLP(Natural Language Processing、自然言語処理)システムの限界です。

特に、タスクごとのFine-tuningに依存する作り方を問題にしています。

従来の流れでは、あるタスクを解くために、そのタスク専用のデータセットを用意し、モデルを追加学習することが一般的でした。

この方法は強力ですが、次のような課題があります。

課題 内容
データ作成コスト タスクごとにラベル付きデータを集める必要がある
学習コスト タスクごとにモデルを再学習または調整する必要がある
汎用性の低さ 新しいタスクにすぐ対応しにくい
実運用の複雑さ タスクごとにモデルやパイプラインが分かれやすい

人間は、新しい作業を覚えるときに、数個の例や簡単な説明だけで対応できることがあります。

GPT-3論文では、このような柔軟性を言語モデルでも実現できるかが大きなテーマになっています。

GPT-3の基本構造

GPT-3は、自己回帰言語モデルです。

自己回帰言語モデルが次tokenを予測する流れ

自己回帰(過去の出力や文脈を使って次を予測する方式)とは、左から右へ順番にtokenを予測する仕組みです。

入力:  LLM は 文章 の
予測:  次に来るtoken

モデルは、文脈 $u_1, u_2, …, u_{i-1}$ が与えられたとき、次のtoken $u_i$ の確率を学習します。

論文で扱われる基本的な学習目的は、次のように整理できます。

$$L(U) = \sum_i \log P(u_i \mid u_{i-k}, …, u_{i-1}; \Theta)$$

ここで、$U$ はtoken列、$k$ は参照する文脈長、$\Theta$ はモデルのパラメータです。

つまり、LLMは「文章全体の意味」を直接教え込まれているわけではありません。

「次に来るtokenを当てる」というシンプルな目的を、大量データで学習しています。

その結果として、文法、事実らしさ、文体、推論のパターン、翻訳の対応関係などが内部表現として獲得される可能性があります。

ここで大事なのは、「次token」は単なる文末の続きだけではないという点です。

プロンプトに質問文と 回答: のような形式が含まれていれば、モデルにとっての次tokenは変わります。

その場合は「質問文の続きをだらだら書くtoken」ではなく、「回答欄に続くtoken」になります。

LLMにFew-shotプロンプトを入力して回答を得る流れ

たとえば、学習データに次のような形式が大量に含まれているとします。

Q: 日本の首都はどこですか?
A: 東京です。

モデルは、このようなテキストでも同じく「次に来るtoken」を予測します。

そのため、新しいプロンプトで Q: GPT-3とは何ですか? A: まで入力されると、文脈上は A: の後に説明文が続く確率が高くなります。

これが、次token予測だけで質問応答のように見える出力が生成される基本的な理由です。

Transformerとの関係

GPT-3の土台はTransformerです。

Transformerは、Attention(入力中のどの部分を重視するかを計算する仕組み)を中心にしたニューラルネットワーク構造です。

LLMシリーズでは後の記事で詳しく扱いますが、ここでは次の理解で十分です。

要素 役割
Tokenization 文章をモデルが扱えるtoken列に分割する
Embedding tokenをベクトルへ変換する
Positional Encoding tokenの順序情報を加える
Self-Attention 文脈中のtoken同士の関係を計算する
Feed Forward Network 各token表現を非線形に変換する
Output Layer 次tokenの確率分布を出す

GPT系モデルは、TransformerのうちDecoder-only Transformerと呼ばれる構造を使います。

これは、生成方向に合わせて過去のtokenだけを参照する構造です。

未来のtokenを見ないようにする点が特徴です。

GPT-3論文の提案手法の概要

GPT-3論文の中心は、新しい複雑なアーキテクチャを提案することではありません。

次token予測が質問応答や翻訳につながる理由

むしろ、既存のTransformer系自己回帰言語モデルを非常に大規模にした点にあります。

そのうえで、Few-shot learning性能を広く検証しています。

大きな流れは次の通りです。

ステップ 内容
1 大規模なテキストコーパスで自己回帰言語モデルを事前学習する
2 175Bパラメータまで複数サイズのモデルを用意する
3 Zero-shot、One-shot、Few-shotの設定で評価する
4 Fine-tuningせず、プロンプト内の指示と例だけでタスクを解かせる
5 モデルサイズと性能の関係を分析する

重要なのは、評価時にモデルの重みを更新しない点です。

タスクの説明や例は、すべてテキストとしてプロンプト内に入れます。

Few-shot learningとは何か

Few-shot learning(少数例からタスクを解く設定)は、GPT-3論文の中心概念です。

Few-shotプロンプトで出力形式をその場で示す流れ

GPT-3におけるFew-shotは、モデルを追加学習するという意味ではありません。

プロンプトの中にいくつかの入出力例を並べます。

その後に、解かせたい入力を続けます。

たとえば感情分類なら、次のような形です。

文章: この映画はとても面白かった
分類: ポジティブ

文章: 待ち時間が長くて疲れた
分類: ネガティブ

文章: 店員さんの対応が丁寧だった
分類:

モデルは、このプロンプトのパターンから「分類:」の後に何を出すべきかを推測します。

注目ポイント:Few-shotの本質は、モデルに「このタスクでは、こういう入力の後にこういう出力が続く」という文脈パターンを見せることです。

この仕組みは、現在のプロンプトエンジニアリングにもつながっています。

つまり、LLMに何かを依頼するとき、単に命令文を書くのではありません。

役割、制約、望ましい入力例、出力例をプロンプトに含めると、モデルが「次に続くべき回答の形式」を推測しやすくなります。

現在のプロンプトで「あなたは技術編集者です」と書くのは、単なるお願いではありません。

「次のJSON形式で返してください」「例: 入力A → 出力B」のような指定も同じです。

LLMから見ると、それらはすべて次tokenを決めるための文脈です。

出力例があるほど、モデルは「この後に何を書けば自然か」を狭い候補へ絞り込みやすくなります。

技術的な新規性

GPT-3論文の技術的な新規性は、単に「大きいモデルを作った」ことだけではありません。

重要なのは、スケール、学習目的、評価設定を組み合わせて、言語モデルの使い方を変えた点です。

観点 GPT-3論文のポイント 何が重要か
モデル規模 最大175Bパラメータ 性能がモデルサイズに応じて改善する傾向を検証
学習目的 次token予測 タスク固有の目的関数を使わず汎用的に学習
評価方法 Zero-shot / One-shot / Few-shot Fine-tuningなしのタスク適応を評価
インターフェース 自然言語プロンプト ユーザーがテキストでタスクを指定できる
社会的影響 生成文章の人間らしさも議論 悪用、バイアス、評価方法の課題を扱う

この論文以降、1つの方向性が一気に重要になりました。

それは「大規模に事前学習したモデルを、自然言語の指示や例で使う」という方向性です。

実験結果の要約

論文では、GPT-3が多くのNLPベンチマークで強いFew-shot性能を示したと報告されています。

代表的な傾向は次の通りです。

評価領域 論文での傾向
翻訳 一部設定で強い性能を示すが、言語や条件により差がある
質問応答 Few-shot設定で性能が改善しやすい
Cloze / 穴埋め 言語モデルの得意領域として比較的強い
常識推論 モデルサイズ拡大で改善するが、苦手なデータセットもある
算術 桁数や形式によって難しさが大きく変わる
文章生成 人間評価で識別が難しいサンプルがあると報告されている

ここで注意したいのは、GPT-3がすべてのタスクを完全に解決したわけではないことです。

論文でも、苦手なデータセットや評価上の問題が指摘されています。

特に、Web由来の大規模学習データには注意が必要です。

ベンチマークデータが学習データに混入している可能性、社会的バイアス、誤情報生成などは重要な論点です。

なぜ次token予測だけで多様なタスクができるのか

LLMにFew-shotプロンプトを入力して回答を得る流れ

これはLLMを理解するときに一番不思議に見えるポイントです。

次token予測は、一見すると「文章の続きを当てるだけ」です。

しかし、大量のテキストには、説明、翻訳、対話、コード、問題と解答、表、手順書など、さまざまな形式が含まれています。

モデルがそれらの続きを予測するには、文脈の形式を読み取り、次に自然な文字列を出す必要があります。

たとえば、プロンプトに「英語を日本語に翻訳してください」と書かれている場合を考えます。

その場合、後ろには翻訳文が続く確率が高くなります。

いくつかの例を示せば、さらにその形式に合わせやすくなります。

もう少し分解すると、LLMは次のように動いています。

プロンプト内の形式 モデルが予測しやすくなる次token
Q: ... A: 質問への回答文
English: ... Japanese: 日本語訳
要約してください: ... 要約: 要約文
入力: ... 出力: 例と同じ形式の出力

つまり、LLMは入力された文章とは無関係な別文を突然作っているわけではありません。

質問文、区切り記号、出力欄、過去の例を含めたプロンプト全体を読みます。

それを「すでに始まっている文章」として扱い、その続きとして回答を生成しています。

この考え方を理解すると、プロンプトに役割や出力例を入れる理由も見えやすくなります。

役割は「どんな文体や観点で続けるか」を決める文脈になります。

出力例は「どんな構造で続けるか」を決める文脈になります。

Few-shot promptingは、この性質を意図的に使う方法です。

ChatGPTとの関係

GPT-3論文はChatGPTそのものの論文ではありません。

ChatGPTのような対話AIには、GPT-3系の大規模言語モデルだけでなく、後続技術も関わります。

代表例が、Instruction Tuning(指示に従うように追加学習すること)やRLHF(人間の好みに基づく強化学習)です。

ただし、GPT-3論文はその土台を理解するうえで非常に重要です。

技術 役割
GPT-3 大規模な自己回帰言語モデルのFew-shot能力を示した代表例
Instruction Tuning ユーザーの自然言語指示に従いやすくする
RLHF 人間にとって望ましい応答へ近づける
ChatGPT 対話インターフェースとして利用しやすくしたシステム

このシリーズでは、まずGPT-3論文を入口にLLMの全体像をつかみます。

その後に、Tokenization、Embedding、Attention、Transformer、Fine-tuning、RLHFへ進んでいきます。

よくある誤解

LLMについては、次のような誤解がよくあります。

誤解 正確な見方
LLMは人間と同じ意味で文章を理解している 内部表現として言語パターンを学習しているが、人間の理解と同一とは言えない
モデルを大きくすれば必ず正しくなる 多くのタスクで改善傾向はあるが、誤情報やバイアスは残る
Few-shot learningは追加学習のこと GPT-3文脈では、重み更新なしでプロンプト内の例から振る舞いを変えること
GPT-3はChatGPTと同じ ChatGPTには指示追従や対話向けの追加調整が含まれる
LLMは検索エンジンのように事実を取り出している 学習した確率分布から文章を生成しており、事実確認は別途必要

特に重要なのは、LLMの出力が「もっともらしい」ことと「正しい」ことは別だという点です。

実務でLLMを使うときのポイント

GPT-3論文から実務に引き寄せると、次のような示唆があります。

実務ポイント 内容
プロンプト設計 指示だけでなく、入出力例を入れると形式が安定しやすい
評価 タスクごとに正解率、再現率、人間評価などを設計する必要がある
事実性 重要な情報はRAG(検索結果を生成に使う手法)や外部DBで補強する
安全性 バイアス、個人情報、誤情報、悪用リスクを考慮する
コスト モデルサイズが大きいほど推論コストや遅延が増えやすい

LLMは汎用性が高い一方で、すべてを1つのプロンプトで解決できるわけではありません。

実サービスでは、検索、ルールベース処理、ツール呼び出し、ログ監視、ユーザー体験設計と組み合わせることが重要です。

限界点

GPT-3論文の結果を見るときは、以下の点に注意が必要です。

限界 内容
評価データ混入の懸念 Web由来の大規模データでは、評価データが学習データに含まれる可能性がある
苦手タスクの存在 複雑な推論、長い計算、厳密な事実確認では失敗することがある
社会的バイアス 学習データに含まれる偏りを反映する可能性がある
推論コスト 大規模モデルは計算資源と運用コストが大きい
説明可能性 なぜその出力になったかを完全に説明することは難しい

論文では、生成文章の人間らしさや社会的影響についても議論されています。

LLMは便利な技術です。

一方で、出力の信頼性や利用範囲を慎重に設計する必要があります。

今後の展望

GPT-3以降、LLMは次のような方向へ発展してきました。

方向性 内容
指示追従 自然言語の命令により正確に従う
対話最適化 ユーザーとの複数ターン対話に適応する
RAG 外部知識を検索して回答に使う
Tool Use APIや外部ツールを呼び出す
マルチモーダル 画像、音声、動画も扱う
省メモリ化 量子化やKV Cache最適化で運用しやすくする

LLMの基本は「次token予測」です。

その上に多くの技術が積み重なることで、現在の生成AIアプリケーションが成立しています。

まとめ

GPT-3論文「Language Models are Few-Shot Learners」は、LLMを理解するうえで非常に重要な論文です。

この論文は、175Bパラメータの自己回帰言語モデルを扱っています。

そして、Fine-tuningなしでも、自然言語の指示や少数例を使って多様なタスクに対応できる可能性を示しました。

LLMを理解する入口としては、まず「大量のテキストで次tokenを予測する」「Transformerが文脈を扱う」「プロンプト内の例で振る舞いを変えられる」という3点を押さえると分かりやすいです。

ただし、LLMは万能ではありません。

誤情報、バイアス、評価データ混入、コスト、安全性などの課題もあります。

LLMを使うときは、できることと限界を分けて理解することが大切です。

関連技術

次に読むべき記事

次の記事では、Tokenization(文章をtokenへ分割する処理)を扱います。

LLMは文章をそのまま読んでいるわけではありません。

文字列をtokenに分割し、それぞれをIDに変換してからモデルへ入力します。

特に日本語では、英語と比べてtokenizationの影響が見えにくいです。

それでも、コストや精度に関わるため重要です。

コメント

タイトルとURLをコピーしました