コントラスティブサーチ(デコーディング)(コントラスティブサーチデコーディング)
LLMデコーディング手法の一つ。各ステップでモデルの確信度(model confidence)と過去文脈との多様性(degeneration penalty)をバランスさせてトークンを選択する。繰り返しループを回避しつつ一貫性を維持。
コントラスティブサーチとは
コントラスティブサーチ(Contrastive Search)は、Su et al. (2022) がACL 2022で発表した「A Contrastive Framework for Neural Text Generation」で提案されたLLMテキスト生成のデコーディング手法である。GreedyデコーディングやBeam Searchが陥りやすいテキスト退化(Text Degeneration)問題(繰り返し・ループ・意味の崩壊)を解決しながら、確率的サンプリングより一貫性のあるテキストを生成することを目指す。
テキスト退化(Degeneration)問題
Greedy・Beam Searchは局所的に最高スコアのトークンを選び続けるため、同じフレーズの無限ループ・語彙の単調化・長距離文脈の無視が発生しやすい。サンプリングはこれを緩和するが代わりに一貫性・品質の低下リスクがある。
コントラスティブサーチの選択スコア
各ステップで、top-k候補トークンv∈V_topkに対して以下のスコアを計算:
Score(v, t) = (1-α) × p(v|context) - α × max_{j<t} sim(h_v, h_j)
p(v|context): モデルの確信度(次トークンvの確率)sim(h_v, h_j): vを選んだ場合の隠れ状態と過去トークンのコサイン類似度α: 退化ペナルティの重み(通常0.6)
直感: 確信度が高く、かつ過去の文脈と似すぎないトークンを選択する。
HuggingFaceでの実装
outputs = model.generate(
**inputs,
penalty_alpha=0.6, # α値
top_k=4, # 候補トークン数
max_new_tokens=100
)
他手法との評価比較(Su et al.)
Mauve・ROUGE等の評価指標でGreedy・Beam・Top-p・Top-kと比較。繰り返し率はGreedy/Beamより大幅低下、一貫性はサンプリング手法より高い。
2025年の採用状況
HuggingFace Transformersに実装済み(penalty_alphaパラメータ)。ただし各ステップで過去全隠れ状態との類似度計算が必要なため速度が課題。実用的にはtemperature + top-p/min-pの方が速度・品質バランスで採用されることが多く、研究的価値が高い手法として位置付けられる。