Soft Prompt(ソフトプロンプト)
Prompt Tuning で使用される学習可能な連続ベクトルの集合。離散的な自然言語トークン(Hard Prompt)とは異なり、embedding 空間上の任意の位置に最適化されるため、人間には解読できないが高い表現力を持つ。
Soft Prompt(ソフトプロンプト)とは
Soft Prompt は、Prompt Tuning において LLM の入力シーケンスに付加される学習可能な連続ベクトルの集合である。通常のプロンプト(Hard Prompt)が語彙テーブル上の離散トークンであるのに対し、Soft Prompt は embedding 空間上の任意の実数値ベクトルであり、勾配降下法で最適化される。
概要
Soft Prompt の概念は 2021 年の Prompt Tuning 論文で本格的に導入された。入力テキストの前方に k 個の仮想トークン(virtual tokens)を挿入し、各仮想トークンは d 次元の embedding ベクトルとして表現される。例えば Llama 3.1-8B(d=4096)で 20 トークンの Soft Prompt を使う場合、学習パラメータは 20 × 4096 = 81,920 個(約 320KB、FP32)に過ぎない。
Hard Prompt vs Soft Prompt 比較
| 特性 | Hard Prompt | Soft Prompt |
|---|---|---|
| 表現空間 | 離散(語彙テーブル上) | 連続(embedding 空間全体) |
| 設計方法 | 人間が自然言語で記述 | 勾配降下法で自動最適化 |
| 解釈可能性 | 高い(人間が読める) | 低い(数値ベクトル) |
| 表現力 | 語彙に制約される | 語彙間の任意の位置を取れる |
| 再現性 | テキストをコピーすれば再現 | ベクトルファイルの共有が必要 |
| 最適化上限 | 人間の試行錯誤に依存 | 理論上は最適解に収束 |
初期化戦略
Soft Prompt の初期化方法は収束速度と最終性能に大きく影響する。
- ランダム初期化:各次元を正規分布 N(0, 0.02) からサンプリング。最も単純だが収束に時間がかかる
- 語彙トークン初期化:タスクに関連する既存トークンの embedding をコピーして初期値とする。例えば感情分析タスクなら「Classify」「sentiment」「positive」「negative」等のトークン embedding を使用
- タスクラベル初期化:分類タスクの場合、出力ラベルのテキスト表現の embedding で初期化。Few-shot 性能が向上
- 転移初期化:別タスクで学習済みの Soft Prompt を初期値に使用。ドメイン近接タスク間で有効
初期化方法別の収束比較
| 初期化方法 | 収束ステップ | 最終精度(SST-2) | 推奨度 |
|---|---|---|---|
| ランダム | 30,000 | 92.1% | △ |
| 語彙トークン | 12,000 | 93.8% | ◎ |
| タスクラベル | 10,000 | 94.2% | ◎ |
| 転移(類似タスク) | 5,000 | 94.5% | ○(条件付き) |
技術的詳細
Embedding 空間上の振る舞い
Soft Prompt のベクトルは、語彙トークンの embedding とは異なる位置に最適化されることが多い。研究によれば、学習後の Soft Prompt ベクトルは:
- 最近傍の語彙トークンとの コサイン類似度が 0.3〜0.6 程度(完全に一致しない)
- タスク固有の「意味的方向」を encoding している
- 複数の語彙トークンの意味を 1 つのベクトルに圧縮している場合がある
メモリフットプリント
- Soft Prompt サイズ:k × d × 精度バイト数(例:50 × 4096 × 4 = 800KB、FP32)
- 学習時追加メモリ:オプティマイザ状態(Adam なら ×3)で約 2.4MB
- モデル本体との比較:Llama 3.1-8B のフルパラメータ 16GB に対し、Soft Prompt は 0.005% 未満
実用上の注意点
- 長さの選択:20 トークンが最小推奨。複雑なタスクでは 50〜100。200 以上は費用対効果が低下
- 保存と配布:PyTorch の state_dict として保存。数百 KB のファイルで顧客間共有可能
- バージョン管理:モデルバージョンと Soft Prompt は 1:1 対応。ベースモデルを更新したら Soft Prompt の再学習が必要
- Quantized モデルとの互換性:GPTQ/AWQ 量子化モデルでも Soft Prompt は FP32/FP16 で保持するのが一般的
よくある質問(FAQ)
Q1: Soft Prompt は人間が読めますか? A: 読めない。最近傍トークンを表示する手法(nearest token projection)で近似的な解釈は可能だが、実際のベクトルは語彙トークンの中間的な位置にあり、1 対 1 のテキスト変換はできない。
Q2: Soft Prompt の長さを増やすと必ず性能は上がりますか? A: 一般的に 20→50 トークンでは性能向上するが、100 以上では飽和する。逆に推論時の入力長が伸びてレイテンシが増えるため、最小限の長さで十分な性能を達成するのが望ましい。
Q3: 異なるタスクの Soft Prompt を結合できますか? A: 理論上は結合(concatenation)可能だが、タスク間の干渉が起きるため単純結合では性能が劣化する。Multi-task Prompt Tuning の研究では、共有 Soft Prompt + タスク固有 Soft Prompt の 2 段構成で解決している。
まとめ
- Soft Prompt は連続ベクトル空間上で最適化される学習可能なプロンプト
- 離散トークンより高い表現力を持ち、語彙初期化で効率的に学習
- 数百 KB の超軽量ファイルとしてタスク間・顧客間で共有可能
- ベースモデルとのバージョン対応に注意が必要