# 好み学習によるプロンプト最適化 — 調査とアルゴリズム設計

「2〜3枚の画像から1枚を選ぶ」を繰り返すだけで、ユーザーの好みに合った画像を生成する
プロンプトを自動的に改善し続ける機能(「好み学習」タブ)の設計文書。

## 1. 問題設定

- 探索対象: プロンプト。固定の**ベースプロンプト**に、**候補タグプール** T = {t₁, …, t_m} から
  選んだタグ部分集合 S ⊆ T を追記したものを1つの候補とする
- フィードバック: 1ラウンドに k 枚 (k = 2 or 3) の画像を提示し、ユーザーが1枚を選ぶ(順序ではなく最良選択)
- 目的: 少ないラウンド数(画像生成には時間と Anlas がかかる)で、ユーザーの潜在効用
  u*(S) を最大化する S を見つける + 学習した「タグごとの好み」を提示する

## 2. 先行研究の調査

### 2.1 対話型進化計算 (IEC) — 「人間が選ぶだけ」の古典的系譜

- Dawkins の Biomorphs に始まり、[Takagi (2001) のサーベイ](https://www.sciencedirect.com/science/article/abs/pii/S1568494624007245)
  で体系化された **Interactive Evolutionary Computation**。人間が適応度評価器となり、
  選ばれた個体を親として変異・交叉で次世代を作る
- [PicBreeder (Secretan et al., 2008)](https://dl.acm.org/doi/10.1162/EVCO_a_00030) は
  ユーザーが気に入った画像を選ぶだけで CPPN-NEAT により画像を進化させる代表例
- [Deep Interactive Evolution (Bontrager et al., 2018)](https://arxiv.org/pdf/1801.08230) は
  GAN の潜在空間を IEC で探索する現代版
- **教訓**: 選択だけで探索は可能だが、素朴な進化計算は「過去の選択を忘れる」ため
  サンプル効率が悪い(ユーザー疲労が最大の課題として知られる)。
  → 本実装では選択履歴を**すべて**使って効用モデルを推定する方式を採る

### 2.2 選好からの効用推定 — Bradley-Terry / Plackett-Luce

- [Bradley-Terry モデル](https://towardsdatascience.com/learning-from-pairwise-preferences-an-introduction-to-the-bradley-terry-model/)
  (1952): P(i ≻ j) = σ(uᵢ − uⱼ)。ペア比較から潜在スコアを推定する統計モデルの定番で、
  ChatGPT 等の RLHF の報酬モデルもこの損失で学習されている
- Plackett-Luce モデル: k 択から1つ選ぶ場合の一般化。P(i を選択) = exp(uᵢ) / Σⱼ exp(uⱼ)
- [Preferential Bayesian Optimization 系の研究](https://www.emergentmind.com/topics/pairwise-preference-based-approach)
  は、ペア比較のみから GP やニューラルネットで効用関数を推定し、
  獲得関数で次に比較すべきペアを能動的に選ぶ。
  [ラプラス近似でベイズ不確実性を推定して質問を選ぶ手法](https://www.sciencedirect.com/science/article/pii/S2468601826000386)
  も報告されている

### 2.3 人間フィードバックによるプロンプト最適化(最も近い先行研究)

- **[Prompt Optimization with Human Feedback (APOHF, Lin et al., 2024)](https://arxiv.org/abs/2405.17346)**
  ([ICML 2024 WS](https://icml.cc/virtual/2024/37753)) — 数値スコアではなく
  「2つのプロンプトの出力どちらが良いか」の選好のみでプロンプトを最適化。
  dueling bandits に基づき、1枚目は現在の推定最良(活用)、2枚目は不確実性を加味した
  楽観候補(探索)を提示する戦略。**テキスト→画像生成のプロンプト最適化でも検証済み**
- [ZO-RankSGD (Tang et al., 2023)](https://arxiv.org/pdf/2303.03751) — ランキングオラクル
  (人間が数枚を順位付け)だけで勾配を近似し、拡散モデルの生成画像を人間フィードバックで改善
- [Adaptive Prompt Elicitation for Text-to-Image Generation (2026)](https://arxiv.org/pdf/2602.04713) —
  対話的にユーザーの意図を引き出しプロンプトを適応させる直近の研究

### 2.4 大規模な人間選好報酬モデル(参考: 方向性が異なるもの)

- [ImageReward (Xu et al., 2023)](https://arxiv.org/pdf/2304.05977)(13.7万件の専門家比較)、
  [PickScore / Pick-a-Pic (Kirstain et al., 2023)](https://www.emergentmind.com/topics/pairwise-preference-based-approach)、
  [HPSv2 (Wu et al., 2023)](https://www.semanticscholar.org/paper/d8008ace077d72ccd277be795c720e9381623c10)
  (79.8万件のアノテーション)は、**万人平均の**選好を大規模データで学習した報酬モデル
- 本機能の目的は「**あなた個人の**好みを数十件のフィードバックで学習する」ことなので、
  これらとは補完関係にある(将来的にコールドスタートの事前分布として使える可能性)

### 2.5 本実装の設計判断

| 制約 | 判断 |
|---|---|
| 静的サイト(ブラウザ内で完結、GPU/サーバなし) | ニューラル報酬モデルではなく**線形効用 + タグ特徴量**(数十次元のロジスティック回帰相当)。ブラウザのJSで数ms で学習できる |
| フィードバックは数十件程度しか集まらない | ベイズ的に不確実性を管理し **Thompson Sampling** で探索・活用を両立(APOHF と同じ dueling bandits の思想) |
| 画像1枚の生成にコスト(時間・Anlas) | 1ラウンド内の候補は**同一シード**で生成し、プロンプト差分だけが画像差分に反映されるようにしてノイズを削減 |
| プロンプトは Danbooru タグの組合せ | 探索空間を「タグの部分集合」に離散化。線形モデルなら最良集合の復元が自明(正の重みのタグを採用) |

## 3. アルゴリズム仕様

### 3.1 モデル

- タグプール T (m 個)。候補 S の特徴ベクトル x ∈ {0,1}^m(タグの有無)
- 効用: u(S) = wᵀx。ラウンド r で候補 {S₁…S_k} から i が選ばれる確率は Plackett-Luce:

```
P(i | S₁…S_k) = exp(u(Sᵢ)) / Σⱼ exp(u(Sⱼ))
```

- 推定: ガウス事前分布 w ~ N(0, λ⁻¹I) による MAP 推定(L2 正則化付き多項ロジスティック回帰)。
  選択履歴全体の対数尤度を勾配上昇法で最大化
- 不確実性: **対角ラプラス近似**。ヘッセ行列の対角成分

```
H_jj = λ + Σ_r [ s_j − s_j² ],   s_j = Σᵢ pᵢ x_ij
```

  から σ_j = H_jj^(−1/2) を得る。観測が少ないタグほど σ が大きい

### 3.2 次ラウンドの候補生成(探索・活用)

1. **コールドスタート**(最初の3ラウンド): 出現回数が少ないタグを優先する重み付き
   ランダム部分集合で全タグをまんべんなく観測
2. 以降のラウンド:
   - 候補1 = **貪欲解**(現在の MAP 推定 ŵ で正の重みタグ上位を採用)… 活用
   - 候補2, 3 = **Thompson Sampling**: w̃ ~ N(ŵ, diag(σ²)) をサンプルし、その w̃ での
     貪欲解を採用 … 探索(APOHF の「楽観候補」に対応)
3. タグ数は [minTags, maxTags] に制約(正の重みが少なければ上位で補完)
4. ラウンド内で候補が重複したら変異(タグ1つを未使用タグと交換)で多様化
5. **同一シード**で k 枚を生成(プロンプト以外の条件を固定)

### 3.3 学習と提示

- 選択のたびに全履歴で再フィット(データが小さいため一瞬で終わる)
- タグランキング(ŵ ± σ、出現回数、選ばれた回数)と「現在のベストプロンプト」
  (貪欲解)を常時表示
- 「スキップ」(どれも同じくらい/判断つかない)はデータに含めない
- セッション(設定・全選択履歴)は localStorage に永続化し、途中再開できる

### 3.4 擬似コード

```
session = {tagPool, rounds: []}
loop:
  model = fit_plackett_luce(session.rounds)        # MAP + 対角ラプラス
  cands = propose(model, k)                        # 貪欲1 + TS(k-1)、初期はカバレッジ重視ランダム
  seed  = random()
  imgs  = [generate(base + tags(c), seed) for c in cands]
  choice = ユーザーが1枚選択 (or スキップ)
  if choice: session.rounds.append({cands, winner: choice})
```

### 3.5 実験の保存と引き継ぎ (ウォームスタート)

実験(設定 + 全選択履歴)はブラウザ内アーカイブに保存でき、JSONファイルとして
エクスポート/インポートも可能。再利用は2通り:

1. **続きから再開**: 履歴をそのまま読み込み、同じ実験を継続する
2. **引き継いで新規開始**: 前実験の事後分布 N(ŵ_j, σ_j²) を新実験の**事前分布**に変換する
   ベイズ的な転移学習。タグ**名**で対応付けるため、タグプールやベースプロンプトを
   変更しても一致するタグの学習結果は引き継がれる(新タグはデフォルト事前分布)

引き継ぎ時は確信度をそのまま使わず、以下で緩和する:

```
λ_j ← clamp( tempering / σ_j² ,  λ_default ,  1 / minStd² )     (tempering = 0.5, minStd = 0.25)
```

- **tempering**: 前実験の確信度を半分に割り引く。好みの変化・ベースプロンプトや
  生成条件の違いに新しいデータで追従できる余地を残す
- **minStd**: 分散の下限。どれだけ確信があっても新実験での再検証を完全には打ち切らない

事前分布があるためコールドスタート(ランダム提示)フェーズは省略し、
1ラウンド目から貪欲解 + Thompson Sampling で始まる。

## 4. 検証

`tests/optimizer.test.mjs`(`node tests/optimizer.test.mjs` で実行)にて、
真の効用ベクトル w* を持つ仮想ユーザー(Plackett-Luce に従って確率的に選択)を相手に
20タグ・40ラウンド(k=3)のシミュレーションを実施:

- 学習された上位タグが真の上位タグを回復すること
- ベストプロンプトの真の効用が、ランダムな候補の期待効用および
  コールドスタート直後より有意に改善すること
- **引き継ぎの効果**: 前実験20ラウンドの結果を事前分布にした新実験が、
  開始直後(選択0回)から高い到達率を示し、同ラウンド数のコールドスタートを上回ること

を確認している。参考値(20試行平均、到達率 = ランダム→理論最良の改善幅に対する達成割合):

| 条件 | 到達率 |
|---|---|
| コールドスタート 40ラウンド | 85.6% |
| コールドスタート 10ラウンド | 63.1% |
| 引き継ぎ直後 (選択0回) | 78.8% |
| 引き継ぎ + 10ラウンド | 85.3% |

## 5. 限界と今後の拡張

- **線形性の仮定**: タグ間の相互作用(例: 「watercolor × vibrant colors」の相性)は
  現状モデル化していない。データが溜まれば2次特徴(ペア交互作用)の追加が自然な拡張
- **タグ重み**: NovelAI の `1.2::tag::` 強度構文への拡張(特徴量を離散重みレベルに分割)
- **画像そのものからの学習**: 現在はプロンプト特徴のみ。CLIP 埋め込み等を特徴量に使えば
  シードによる偶然の良し悪しも学習に取り込めるが、ブラウザ内推論のコストと引き換え
- **コールドスタートの改善**: ImageReward / PickScore のような汎用選好モデルを事前分布に使う
- **引き分け・弱い選好**: 現在スキップは無情報として破棄。tie を尤度に組み込む拡張
  (Rao-Kupper モデル等)が可能

## 参考文献

- Lin et al., *Prompt Optimization with Human Feedback* (2024) — https://arxiv.org/abs/2405.17346
- Tang et al., *Zeroth-Order Optimization Meets Human Feedback* (2023) — https://arxiv.org/pdf/2303.03751
- *Adaptive Prompt Elicitation for Text-to-Image Generation* (2026) — https://arxiv.org/pdf/2602.04713
- Secretan et al., *Picbreeder: Collaborative Interactive Evolution of Images* (2008) — https://dl.acm.org/doi/10.1162/EVCO_a_00030
- Bontrager et al., *Deep Interactive Evolution* (2018) — https://arxiv.org/pdf/1801.08230
- Takagi, *Interactive Evolutionary Computation* サーベイ (2001) / 21世紀の包括サーベイ (2024) — https://www.sciencedirect.com/science/article/abs/pii/S1568494624007245
- Xu et al., *ImageReward* (2023) — https://arxiv.org/pdf/2304.05977
- Wu et al., *Human Preference Score v2* (2023) — https://www.semanticscholar.org/paper/d8008ace077d72ccd277be795c720e9381623c10
- Bradley-Terry モデル入門 — https://towardsdatascience.com/learning-from-pairwise-preferences-an-introduction-to-the-bradley-terry-model/
- ラプラス近似によるベイズ選好推定 — https://www.sciencedirect.com/science/article/pii/S2468601826000386
