メインコンテンツまでスキップ

[スタンフォード CS146S #2] コーディングLLMの動作原理とプロンプトエンジニアリング:事前学習・RLHFからスイスチーズモデルの検証まで

· 約3分
Jaybee
AI & Robotics Engineer

Inside Coding LLMs & Prompt Engineering

スタンフォード大学の最先端ソフトウェア工学講義 CS146S: 現代のソフトウェア開発者 (The Modern Software Developer) 第2講の技術解説へようこそ。

第1講では、開発者が単なる構文のタイピストから、複数のAIエージェントを指揮する「オーケストラの指揮者」へと進化するパラダイムシフトを概観しました。第2講 (Week 1) では、この革命を支える計算エンジンである コーディング大規模言語モデル (Coding LLMs) の動作メカニズムと、これらを制御する プロンプトエンジニアリング (Prompt Engineering) の真髄に迫ります。

Andrej Karpathyの Deep Dive into LLMs、OpenAIの How OpenAI Uses Codex、Google Cloud / DAIR.AIの最新研究に基づき、事前学習・RLHFの3段階パイプライン、AIコードに潜む スイスチーズモデル (Swiss Cheese Model)、そして 「信頼せよ、されど検証せよ (Trust but Verify)」 の防御的アーキテクチャを解説します。


1. LLMの3段階トレーニングパイプライン​

AIコーディングモデルを正確に操るためには、その重み(Weights)がどのように構築されたかを理解することが不可欠です。

flowchart LR
subgraph ステップ1 ["ステップ1: 事前学習 (Pre-training)"]
D1[Webデータ & GitHubコード<br/>数兆トークン] --> N1[Transformerベースモデル<br/>次トークン予測 P(w_t | w_{<t})]
end

subgraph ステップ2 ["ステップ2: 教師あり微調整 (SFT)"]
N1 --> D2[高品質な対話ペア<br/>指示応答プロトコル]
D2 --> N2[指示追従アシスタント]
end

subgraph ステップ3 ["ステップ3: 人間のフィードバックによる強化学習 (RLHF)"]
N2 --> D3[人間の選好ランキング<br/>報酬モデル(Reward Model)評価]
D3 --> N3[プロダクションLLM<br/>安全かつ整列されたコード生成]
end
  1. 事前学習 (Pre-training): バイトペアエンコーディング (BPE) トークンを基に、数兆トークンのコードから次トークンの生起確率を最大化します。
  2. 教師あり微調整 (SFT): 人間が作成した優れたコード対話ペアを学習させ、実用的なアシスタントとして振る舞う規則を注入します。
  3. RLHF / DPO: 人間の好みに合致する安全で効率的なコードを選択する報酬モデルを用い、強化学習でアライメントを行います。

2. スイスチーズモデルと「信頼せよ、されど検証せよ」​

AIモデルは一見美しく完璧なコードを出力しますが、極稀に致命的な境界外参照や競合状態という「穴」を残します(スイスチーズモデル)。

flowchart TD
A["LLM生成コード: 95%の流麗なロジック"] --> H1["穴1: オフバイワンエラー"]
A --> H2["穴2: 非スレッドセーフなロック順序"]
H1 --> L1["第1防衛線: 厳格な型検査 & リンター (tsc / mypy)"]
H2 --> L2["第2防衛線: 単体テスト & プロパティファジング"]
L2 --> L3["第3防衛線: 人間アーキテクトによる最終レビュー"]
L3 ==> PASS[安全な本番リリース]

参考文献 & 公式教材​