図 1-3 T5 の text-to-text フレームワーク:翻訳、分類、要約、回帰をすべて「入力テキスト → 出力テキスト」として表す。出典:Raffel et al., Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer, JMLR 2020, Figure 1。
図 2-2 RLHF の 3 段階:(1) 教師ありファインチューニング(SFT)→ (2) 報酬モデルの学習 → (3) 報酬に基づき PPO で方策を最適化。出典:Ouyang et al., Training language models to follow instructions with human feedback (InstructGPT), 2022, Figure 2。
図 3-1 左:標準的なプロンプティングでは直接答えて誤る。右:思考の連鎖では段階的に推論して正答する。出典:Wei et al., Chain-of-Thought Prompting Elicits Reasoning in Large Language Models, NeurIPS 2022, Figure 1。
これは、メルボルン大学で NLP の科目 COMP90042 を履修したときのノートです。本稿では、授業で扱った事前学習モデルと大規模言語モデルの内容を整理します。GPT、BERT、T5、RLHF、プロンプティング、指示チューニング、PEFT、LoRA を取り上げます。
1. 事前学習モデル:GPT / BERT / T5
1.1 事前学習モデルとは
1.2 GPT(Generative Pre-trained Transformer)
GPT-1(2018)
学習とモデルの詳細
項目
内容
サブワード分割
Byte-Pair Encoding (BPE)
規模
12 層の Transformer、117Mパラメータ
事前学習コーパス
BookCorpus
コーパスの特徴
多様な文体の異なる書籍 7,000 冊を含み、大量の連続したテキストを利用できる(長距離依存を学びやすい)
下流タスクへの適応
ファインチューニングの例:感情分類
W_yを初期化し、最後の単語の出力h_nを入力として使う:P(y\mid x) = \text{softmax}(h_n W_y)= -\log(0.4)(モデルが positive に 0.4 の確率しか与えていない場合)ファインチューニングの例:質問応答
GPT の評価:GLUE などのベンチマーク
ベンチマーク
タスクの種類
MNLI, RTE
テキスト間の含意認識
QQP, STS-B, MRPC
文の類似度
QNLI
回答可能性の予測
SST-2
感情分析
CoLA
文の容認可能性
1.3 BERT(Bidirectional Encoder Representations from Transformers, 2018)
主な違い:双方向の自己注意を使う。
事前学習の目的:マスク単語予測(マスク言語モデル、MLM)
学習とモデルの詳細
項目
内容
サブワード分割
WordPiece
BERT-base
12 層の Transformer、110M(1 億 1,000 万)パラメータ
BERT-large
24 層の Transformer、340M(3 億 4,000 万)パラメータ
事前学習コーパス
Wikipedia + BookCorpus
学習コスト
複数の GPU を使い、数日を要する
下流タスクへの適応
P(y \mid x) = \text{softmax}(h_{[\text{CLS}]} W_y)例:スパムメール検出
BERT の評価:元の論文では、当時の GLUE や SQuAD などの言語理解ベンチマークで最先端の結果を得た。ただし、特定のデータセット、モデル、実験設定における比較である。
エンコーダ
1.4 デコーダとエンコーダ–デコーダ
デコーダ
エンコーダ–デコーダ
3 つのアーキテクチャの比較
アーキテクチャ
代表例
注意
得意なタスク
Encoder-only
BERT
双方向
分類、抽出型質問応答、系列ラベリング
Decoder-only
GPT シリーズ、LLaMA
単方向(因果的)
生成、few-shot、対話
Encoder-Decoder
T5、BART、元の Transformer
双方向の符号化 + 単方向の復号 + 交差注意
翻訳、要約などの seq2seq タスク
1.5 T5(Text-to-Text Transfer Transformer, 2019)
事前学習の目的:スパン破損(Span Corruption)
他の目的関数との比較
目的
例
説明
Prefix language model(接頭辞言語モデル)
cows love to → eat grass
接頭辞が与えられた状態で後続を予測する(GPT に似ているが、エンコーダ–デコーダで実装)
Masked language model(マスク言語モデル)
cows <M> <M> eat grass → cows love to eat grass
単語をランダムにマスクして予測する(BERT に似ている)
Shuffling(語順のシャッフル)
grass cows to love eat → cows love to eat grass
語順を乱し、元に戻すように学習させる
Drop tokens(トークンの削除)
cows love grass → cows love to eat grass
入力の一部の単語を削除し、原文全体を再構成するように学習させる
事前学習コーパス:フィルタ済み C4(Colossal Clean Crawled Corpus)
ファインチューニング
T5 の評価
項目
内容
モデル規模
small (60M)、base (220M)、large (770M)、3B、11B
GLUE
9 種類の言語理解タスクを含むベンチマーク
CNN/DM
要約タスク
WMT
機械翻訳タスク
結論
最大モデルは、論文で評価した複数のベンチマークで当時最先端の結果を得た。汎用的な言語能力が人間の水準に達したという意味ではない
2. 大規模言語モデルと RLHF
2.1 LLM とは
大規模言語モデル(LLM)とは、一般に大量のテキストで事前学習した大きな言語モデルを指す。パラメータ数に統一的な基準はない。本節では主に Transformer モデルと、そのゼロショット汎化、文脈内学習、指示追従の能力を扱う。
関連手法の発展は、統計的言語モデル → ニューラル言語モデル → モデル全体の事前学習 → モデルとデータの大規模化 → 指示チューニングと選好アラインメント、と整理できる。Word2Vec は単語表現の手法であり、完全な言語モデルと同一視してはいけない。また、大規模化とアラインメントも別の事柄である。
2.2 GPT シリーズと能力の創発
NLP における事前学習とファインチューニングの役割:事前学習は、パラメータの初期値を与えることで下流タスクの性能を改善できる。
モデル
パラメータ数
層数
次元
学習データ
学習方法
GPT-1
117M
12
768
BookCorpus (~1B words)
自己教師あり事前学習 + 教師ありファインチューニング
GPT-2
1.5B
48
1600
WebText (~10B words)
自己教師あり事前学習
GPT-3
175B
96
12288
Common Crawl、WebText、書籍、Wikipedia の混合コーパス
自己教師あり事前学習
GPT-2 の創発的能力:ゼロショット学習
GPT-3 と文脈内学習
従来のファインチューニングと文脈内学習
比較項目
従来のファインチューニング
文脈内学習
パラメータ
モデルのパラメータを更新する
どのパラメータも更新しない
データ
多数のラベル付きサンプルが必要
少数の実演例のみでよい(0 件の場合もある)
手順
事前学習 → タスクごとにファインチューニング → 複数のモデルをデプロイ
1 つのモデル + 異なるプロンプト
コスト
各タスクで学習と保存が必要
長いプロンプトでは推論コストが高いが、学習コストは不要
文脈内学習の制約
2.3 InstructGPT と RLHF(人間のフィードバックによる強化学習)
全体の考え方:人間の実演と選好を集め、教師あり学習と強化学習でモデルの振る舞いを調整する。以下では、InstructGPT 論文で公開された 3 段階の手順を例にする。ChatGPT の学習の考え方を理解する助けにもなるが、InstructGPT のデータ量やモデル設定を、そのまま ChatGPT の完全な学習の詳細とみなしてはいけない。
第 1 段階:教師ありファインチューニング(SFT)
1. 高品質なデータの収集
2. 事前学習済みモデルのファインチューニング
第 2 段階:報酬モデル(RM)
1. 出力の生成
2. 人間による順位付け
3. 報酬モデルの学習
第 3 段階:近位方策最適化(PPO)
1. プロンプトを抽出する:データセットから「メルボルンについての物語を書いて」などのプロンプトを抽出する。論文の PPO データセットには約 31,000 件のプロンプトがあり、この段階では各プロンプトに人間の模範回答は必要ない。
2. 回答を生成する:現在の方策モデルでテキストを生成する。方策は SFT モデルで初期化され、学習の反復中に PPO で更新される。ユーザーへの回答を生成するたびに、その場でパラメータを更新するわけではない。
3. 報酬を計算する:第 2 段階で学習した報酬モデルが生成出力を評価し、スカラー報酬を返す。
4. 方策を更新する:報酬に基づき、PPO アルゴリズムで方策を更新する。
追加の制約:SFT 参照モデルに対するKL ペナルティを学習時に加え、方策のずれを抑えて、報酬モデルの過剰な最適化による問題を緩和する。ただし、あらゆる報酬ハッキングを解消できる保証はない。
対話能力への適応
対話モデルには、複数ターンの対話などのデータと評価も必要になる。文脈のつながり、不適切な要求の拒否、形式への準拠を考慮する。これは学習目的とデータ設計の問題であり、上記の手順に固定的な「第 4 段階」があるという意味ではない。
参考:InstructGPT 論文。
2.4 その他の LLM:LLaMA
LLaMA(Large Language Model Meta AI)
ここで扱うのは、2023 年の初代 LLaMAで、パラメータ数は 7B~65B。
参考:LLaMA 論文。
2.5 LLM の 3 つの主要な能力
能力
意味
例
文脈内学習
現在の入力に含まれる指示、例、情報を使ってタスクに適応し、モデルのパラメータは更新しない。対話をまたぐ記憶には別のシステム機構が必要
2 つの例を与えた後、新しいタスクを実行する
段階的な推論
複雑な問題を小さなステップに分ける
数学計算、プログラミング、論理推論
指示追従
ユーザーからの明示的な指示に従い、多様なタスクを効率よく支援する
指定に沿ったメール作成、レシピから手順を生成、ソフトウェア環境でコマンド列を実行
3. プロンプティングと思考の連鎖
3.1 ゼロショットと少数ショットの文脈内学習
設定
例の数
説明
Zero-shot
0
「Translate to French: cheese」のような指示だけを与える
One-shot
1
1 件の例を与える
Few-shot
数件
数件の例を与え、通常は性能が改善する
3.2 プロンプティングの制約
失敗例:標準的なプロンプティング
この誤答は
23-20+6を正しく計算できていない。27 を23+6と解釈することもできない。後者なら 29 になるからである。代わりの方法:プロンプトの与え方を変える ✅(次に説明する CoT)。
3.3 思考の連鎖によるプロンプティング(CoT)
定義:例の中に中間の推論ステップを含めるか、モデルにそのようなステップを生成させてから最終回答を得る。元の論文では算術、常識、記号推論のさまざまなタスクで改善が見られたが、中間ステップの正しさは保証されない。
比較
方法
プロンプト
出力
Standard Prompting
質問と答えだけを与える
The answer is 27 ❌
Chain-of-Thought Prompting
段階的に推論するよう導く
The answer is 9 ✅
例
3.4 モデル規模による創発的特性
3.5 2 種類の CoT
ゼロショット CoT
利点
欠点
例を人手で作成する必要がない
推論の品質がモデル自体に依存し、安定しにくい
手動 CoT
利点
欠点
望ましい推論形式を明示できる。効果は例とタスクの対応に依存する
例を人手で作成し、確認する必要がある。例の誤りまで模倣される場合がある
3.6 データセットの補足
3.7 プロンプトインジェクションと脱獄
3.8 文脈内学習の利点と欠点
利点
欠点
4. 指示チューニング
4.1 ファインチューニングの拡張:従来の 2 段階の枠組み
第 1 段階:事前学習
項目
内容
方法
書籍や Wikipedia などの大量のテキストで自己教師あり学習を行う
モデル
BERT など
データセット
Wikipedia など
目的
マスクされた単語を予測する(言語モデル学習)
第 2 段階:ファインチューニング
項目
内容
方法
具体的には、ラベル付きデータセットで教師あり学習を行う
モデル
第 1 段階で事前学習したモデル
データセット
例えば、スパムメールとそのラベル
目的
分類器を学習し、スパム検出などの具体的なタスクを実行する
4.2 指示チューニング
定義:指示チューニングは、タスクを自然言語で記述した指示データを使う教師ありファインチューニング(SFT)である。事後学習(post-training)の一種であり、事後学習には選好最適化などの段階も含まれる。これらの用語は完全な同義ではない。
(x, y)のペアである。自然言語の指示と、それに対する望ましい回答を組にする。SFT の詳細
4.3 Alpaca(Stanford Alpaca)
成果:著者らによる小規模で単一ターンの指示追従の予備評価では、Alpaca 7B は text-davinci-003 と同程度の性能を示した。あらゆるタスク、安全性、信頼性で同等という意味ではない。
学習の流れ
第 1 段階:シード生成(Self-Instruct)
第 2 段階:ファインチューニング
参考:Stanford Alpaca のプロジェクト説明。
4.4 T5 の視点:事前学習とマルチタスク学習
方法:事前学習の後、複数の具体的なタスク(Task A、B、C…)でファインチューニングし、同じタスクで評価する。
新しい言語モデルの傾向:GPT-3、LLaMA
4.5 事前学習–微調整、プロンプティング、指示チューニングの比較
枠組み
代表例
手順
特徴
事前学習–ファインチューニング
BERT, T5
事前学習済み LM → Task A で微調整 → Task A の推論
タスクごとに専用モデルを学習させる。通常、多数のタスク固有の例が必要
プロンプティング
GPT-3
事前学習済み LM → 少数ショットの例やプロンプト設計 → Task A
パラメータの更新は不要で、柔軟に利用できる。プロンプトに敏感で、その品質に性能が左右される
指示チューニング
FLAN
事前学習済み LM → 複数のタスクの自然言語指示で指示チューニング → 新たな Task A に汎化する
自然言語の指示を通じて多様なタスクの実行を学び、未見タスクに汎化する
4.6 FLAN(Instruction Fine-Tuning)
中心となる方法:(instruction, output) ペアの例を集めて複数のタスクを網羅し、言語モデルをファインチューニングする。
タスクの設定
項目
内容
タスクの種類
12 種類(分類と生成の両方を含む)
データセット
62 個
未見タスクの構成
評価では、同じクラスタのタスクは、学習セットかテストセットのどちらか一方だけに入れる。両方には入れない(同系統のタスクによる漏洩を防ぎ、汎化を評価するため)
テンプレート
同じタスクに対し、複数のテンプレートを人手で作り、指示の多様性を増やす
結果:指示チューニング後のゼロショット FLAN は、3 つの未見のタスクカテゴリにおいて、ゼロショットおよび few-shot の GPT-3 と比べ、明らかに性能が向上した。
新しいタスクへの汎化
タスク数の拡大:後続の FLAN
項目
数
拡大の規模
後続研究では、指示チューニングを約 1.8K タスクに拡大し、モデル規模と CoT データの効果も調べた
評価用に保持したタスク
ファインチューニングには使わず、汎化の評価に使う
その他の知見
参考:元の FLAN、Scaling Instruction-Finetuned Language Models。
4.7 利点と制約
利点
制約
4.8 能力と制約の考察
流暢なテキストを出力できても、信頼性や汎化の問題が解決したとは限らない。以下では、研究での観察と、より広い主張を区別する。
観点
要点
事実と計画
執筆を支援できる一方で、事実を捏造したり、実行不可能な計画を示したりすることもある。指示チューニングと人間のフィードバックは正しさを保証せず、具体的な能力は実際の評価が必要
自己修正
外部フィードバックがない特定の推論設定では、答えを確認して修正するよう求めるだけでは正答率が上がらず、正しい答えを誤りに変える場合さえあると報告されている。ツールや検証器を使う修正手法もすべて無効だとは言えない
逆転の呪い(Reversal Curse)
一部の実験では、「A は B」と学習したモデルが、対応する「B は A」という問いに自動的には答えられなかった。ある表現への適合が、逆向きの表現への汎化を必ず伴うわけではない。自然言語の関係がすべてそのまま逆転可能だという意味でもない
参考:Large Language Models Cannot Self-Correct Reasoning Yet、The Reversal Curse。
5. パラメータ効率的ファインチューニングと LoRA
5.1 なぜ PEFT が必要か
PLM と LLM:前者は事前学習済みであること、後者は規模の大きさを強調する。排他的な分類ではなく、統一的なパラメータ数の境界もない。本節では、モデルの大規模化に伴うタスク適応コストをどう下げるかを考える。
モデルが大きくなるほどファインチューニングは高コストになる
大規模モデルの全パラメータ更新にはコストとリスクが増す:
課題
説明
スケーラビリティ
計算コストが大きい(各タスクでモデル全体のコピーを保存する必要がある)
学習の不安定性
過学習、勾配の干渉など
破滅的忘却
新しいタスクでファインチューニングした後、元の汎用的な能力を失う
文脈内学習とファインチューニングは相補的な適応方法である。ICL はパラメータを更新しないが、制約もある:
制約
説明
非効率性
推論のたびにプロンプト全体を処理し直す必要がある(長いプロンプトは高コスト)
性能
プロンプトだけでは対象タスクに必要な性能に届かない場合がある。ファインチューニングとの優劣は同じ条件で比較すべき
敏感さ
プロンプトの言い回しや例の順序などに非常に敏感
不明確さ
あるプロンプトでの成功は、別の入力やプロンプトに安定して汎化することを意味しない
→ こうして、ファインチューニングから、パラメータ効率的ファインチューニングへと進む。
5.2 歴史的な流れ
5.3 一部のパラメータだけを更新する
1. 大規模モデルの全パラメータ更新は難しい
2. 最先端モデルは大幅に過剰パラメータ化されている
3. PEFT は全パラメータ更新に近い性能を得られる
5.4 モジュール化と構成的表現
a) モデル規模の拡大
b) 未見の状況
c) 破滅的干渉
d) 効率的なモデル更新
5.5 アーキテクチャの概要:3 つの計算方式
PEFT は、凍結した事前学習モデルに対する次の 3 種類の変更として整理できる:
種類
方法
代表例
追加型
小さな学習可能モジュールを追加する
Adapter、Prefix Tuning、Prompt Tuning
選択型
一部のパラメータや疎な更新量を選んで学習する
BitFit(バイアスのみ)、Diff Pruning
再パラメータ化
重みの低ランクまたは圧縮された変化量を学ぶ
LoRA、Compacter
5.6 疎なサブネットワークと枝刈り
疎性はパラメータ効率的な適応に関係するが、通常の枝刈りと PEFT は同じではない。
疎なサブネットワーク
5.7 LoRA(Low-Rank Adaptation)
中心となる考え方
Wを直接更新せず、その変化量\Delta Wのみを更新する:W' = W + \Delta W\Delta W = B \cdot Aここでは、よく使われるスケーリング係数
\alpha/rを省略し、低ランク更新の構造だけを示している。「低ランク」とは
Wは元の重み行列で、それ自体がフルランクである必要はない。r \ll d。効率:パラメータ数の計算
Wの形状を1024 \times 1024とする(合計 1,048,576 ≈ 100 万パラメータ)。A\,(r \times d)、B\,(d \times r)を使う。ここでr \ll d。d = 1024,\ r = 8のとき:A:8 \times 1024、B:1024 \times 82 \times 1024 \times 8 = \mathbf{16{,}384}1 - \frac{16{,}384}{1{,}048{,}576} \approx 98.4\%順伝播の計算:低ランクの合成
\text{Output} = (W + B\cdot A)\,x = W\cdot x + B\cdot(A\cdot x)記号
意味
W凍結された事前学習済みの重み(更新しない)
A, B学習可能なのはこの 2 つのみ
x入力ベクトル。通常はトークン埋め込み、または前の層の出力
逆伝播:学習するパラメータの勾配のみを計算・保存し、最適化器が更新するのは
AとBのみ。Wは凍結されたままである。勾配は凍結された線形層を通って伝わる場合もあり、その層が逆伝播にまったく関与しないという意味ではない。利点
AとBだけを学習し、W全体は更新しない。BAをW'に統合でき、構造は変わらない)。LoRA とその派生手法
派生手法
特徴
LoRA
標準的な低ランク適応。注意機構や FFN の線形層に並列の経路を追加する
LoRA-FA
ダウンプロジェクション行列
Aを凍結し、アッププロジェクション行列Bのみを学習して、活性値の保持に必要なメモリを削減QLoRA
4 ビット量子化した基盤モデル + LoRA。単一 GPU で大規模モデルを微調整できる
HydraLoRA
共有の
Aと複数のBを持つ非対称構造を使い、ルーティングで構成要素を組み合わせ、混合データの異なる成分を扱う5.8 PEFT 手法の比較
以下の比率は一般的な桁の目安であり、実際の値はモデル、モジュールの大きさ、学習対象の層数によって異なる。
手法
学習可能なパラメータ
構造の変更
推論時の追加コスト
全パラメータの微調整
100%
なし
なし(ただしタスクごとにモデルが必要)
LoRA
ランクと挿入位置による。通常は全パラメータよりはるかに少ない
学習時に並列の経路を追加。デプロイ時には統合可能
統合後は通常増えない
Adapter
1%–5%
あり(層を挿入)
少し増える(逐次計算)
Prefix/Prompt Tuning
<0.1%
なし
文脈長を消費する
BitFit
約 0.01%(バイアスのみ)
なし
なし
疎な選択/枝刈り
手法による。通常の圧縮目的の枝刈りは PEFT とは限らない
結合や更新量を選択
疎なパラメータが減っても、実際の高速化に自動的につながるわけではない
参考:LoRA、LoRA-FA、QLoRA、HydraLoRA。