Few-Shotプロンプトの「順序」を変えるだけで精度は上がるのか?

書き手・読み手のモチベーション

  • Few-Shot学習の効果を最大化したい
  • 介護・医療など安全性が重要なドメインでLLMを活用したい
  • 現場のFBを生成AIシステムの改善に反映させたい

背景と課題

RAG(検索拡張生成)を用いた生成AIシステムは社内の情報活用などを扱う分野において非常に有効ですが、運用する場合に以下の課題があると考えられます。

  • コンテキストの取りこぼし: 対話が長くなるにつれて重要な文脈(「夜間」「認知症の既往」等)が埋もれる
  • 重複提示: 過去に提示されたアクションが何度も提示されてしまう
  • フィードバックが活かせない: 「この提案は不要だった」という現場の声を即座にシステムに反映することが困難

ファインチューニングはコストが高く頻繁には行えません。そこで介護のドメインで運用することを想定し、「外付けメモリでFew-Shotの順序を最適化する」アプローチ(POEM)を検証しました。

POEMとは

POEM (Prompting with Episodic Memory) は、Few-Shot例の順序を強化学習で最適化する手法です。

仕組み(シンプルに)

  1. 質問に対してFew-Shot例を検索
  2. 様々な順序を試して、良い結果が出た順序をメモリに保存
  3. 次回、似た質問が来たら成功した順序を再利用

LLM自体は更新せず、外付けメモリだけで完結するため低コストで導入可能な点が採用の決め手でした。

詳細なフローは「検証のフロー」セクションで説明します。

データセット

概要

  • 介護現場で発生しうる典型的なシナリオを基に生成した合成データを使用(プライバシー保護のため)
  • 症状を8カテゴリとして設定: 発熱、転倒、呼吸困難、脱水、薬剤関連、感染症、認知症関連、褥瘡
データ例:
質問: (75歳、男性):呼吸困難、動悸、不安。朝の対応として適切なアクションを教えてください。
正解: 1. バイタル測定(体温、血圧、脈拍、SpO2)
      2. 症状の詳細を観察し、状態をアセスメント
      3. 異常値を医師に報告し、指示を仰ぐ

データ構成

用途

件数

説明

メモリ更新用

400件

POEMのメモリ更新に使用

インデックス用

400件

推論時の類似検索の際に使用(メモリ更新用と重複なし)

推論時

200件

評価に使用(メモリ更新用と重複なし)

検証のフローと検証環境

検証のフロー

POEMの動作を「メモリ更新時」と「推論時」の2フェーズに分けて説明します。

メモリ更新時(学習フェーズ)

  1. 質問文(s₁)を入力
    • 介護関連の質問文を単語埋め込みベクトルに変換
    • 類似事象をインデックスから抽出(m件)
  2. 類似事象と順序(a₁)を決定
    • 抽出したm件のFew-Shot例の並び順を決定
    • 順序は「類似度ランクの順列」として表現
  3. プロンプト生成とLLM実行
    • 質問文(s₁)+ 類似事象と順序例(a₁)でプロンプトを構成
    • LLMに入力し、回答を生成
  4. 報酬(r₁)の計算
    • 出力結果を評価基準に基づいてスコア化
    • この報酬の設計が検証の重要なポイント(次セクションで詳述)
  5. メモリ(M)に書き込み
    • (s₁, a₁, r₁) の組をメモリに保存
    • 同じ質問に対して複数の順序を試行し、それぞれの報酬を記録

推論時

  1. 新しい質問文(sₜ)を入力
    • 単語埋め込みベクトルに変換し、メモリから類似事象を検索
  2. 最適な類似事象と順序(aₘ)を取得
    • メモリから、類似した質問で最も報酬が高かった順序を読み出す
  3. プロンプト生成とLLM実行
    • 質問文(sₜ)+ 最適な類似事象と順序(aₘ)でプロンプトを構成
    • LLMに入力し、回答を生成

Attention

・メモリ更新時に「どの順序が良い結果を出すか」を学習
・Few-Shot例と順序をそのままメモリに保存
・推論時には学習済みの「成功パターン」を再利用

評価基準

前セクションの「報酬(r₁)」をどう計算するかを定義します。

介護ドメインの特性を反映するため、ルールベースの評価基準を設けました。

報酬 = 基本報酬(action_accuracy)
     + 必須アクションスコア(must_score)
     + 禁忌アクションスコア(taboo_score)
     + 専門家評価スコア(expert_score)

要素

説明

基本報酬

正解との一致度(0〜1)

必須アクションスコア

必須アクションの含有数に応じて加点

禁忌アクションスコア

禁忌アクションが含まれると大幅減点

専門家評価スコア

LLM(Expert Judge)による専門家視点での評価

Expert Judgeとは、LLMを用いて「介護の専門家視点で、この回答は適切か」を評価させる仕組みです。ルールベースでは捉えきれない文脈的な適切さを補完します。

最終的な評価スコア(care_reward)は0〜1に正規化されますが、禁忌アクションが1つでも含まれると強制的に0.0となります。

検証条件

項目

設定値

テスト件数

200件

メモリ件数

400件

インデックス件数

400件

学習試行回数(n_trials)

5回

シード数

3(再現性確保)

Few-Shot例の数(m)

4

メモリ検索近傍数(k)

10

LLMバックエンド

Gemini 2.5 Flash Lite

Gemini2.5 Flash Liteを選択した理由は、処理速度とコストのバランスです。

検証1:POEM一律適用 → +1.4%改善

POEMを全テストケースに一律適用した場合の効果を検証しました。

結果

指標

Baseline

POEM

改善率

action_accuracy

0.7989

0.8072

+1.04%

care_reward

0.735

0.7415

+0.54%

内訳

カテゴリ

件数

割合

説明

改善ケース

271件

45.2%

POEMの方が精度が高い

悪化ケース

221件

36.8%

Baselineの方が精度が高い

変化なしケース

108件

18.0%

ほぼ同等

全体としてほぼ変わらない結果になりました。

改善ケース(45%)と悪化ケース(37%)がほぼ均衡しており、POEMを一律適用するメリットは薄いことが判明しました。

なぜ悪化ケースが発生したのか

検証1の結果を分析したところ、悪化したケースの要因が判明しました。

悪化ケースの特徴

  1. Baselineが元から高精度なケース
    • 典型的な症状パターンでは、Baselineでも十分な精度が出る
    • POEMで順序を変えることで、かえって精度が下がる
  2. 禁忌アクションの発生
    • POEMで順序を変えた結果、禁忌アクションを含む回答が生成されるケースがあった
    • 禁忌アクションが含まれると報酬が大幅に下がる(care_reward = 0.0)

判定ロジックの着想

検証1の結果とその要因分析から改善が期待できるケースのみにPOEMが適用できればより精度が上がるのではないかと考えました。

  1. 禁忌アクションの判定を最優先:安全性を担保する
    2.精度が改善するケースのみPOEMを適用:悪化を防ぐ
  2. それ以外はBaselineを使用:安定性を確保

検証2:選択的適用 → +8.7%改善

アプローチ

検証1と同一の条件BaselineとPOEMの両方を実行し、判定ロジックから選択的適用をする戦略に切り替えました。

判定ロジック(禁忌アクション最優先)

関数定義

def compare_results(baseline, poem):
    # 1. POEMが禁忌を踏んだら → Baseline
    if poem.taboo_score < 0:
        return "baseline"

    # 2. Baselineが禁忌、POEMで解消 → POEM
    if baseline.taboo_score < 0 and poem.taboo_score == 0:
        return "poem"

    # 3. 精度が改善していれば → POEM
    if poem.accuracy > baseline.accuracy:
        return "poem"

    return "baseline"

結果

指標

Baseline

選択的適用

改善率

action_accuracy

0.7961

0.8656

+8.7%

care_reward

0.7375

0.7844

+6.4%

内訳と判定精度

カテゴリ

件数

割合

判定精度

改善ケース

271件

45.2%

POEM選択:98.2%

悪化ケース

221件

36.8%

Baseline選択:98.2%

変化なしケース

108件

18.0%

Baseline選択:85.3%

  • 禁忌アクション回避率: 100%(43件中43件で正しく判定)
  • 判定精度: 97.0%(600件中582件で正しい方を選択)

→残りの3%は禁忌アクションを回避する方へ選択

選択的適用の選択分布

方法

件数

割合

POEM選択

283件

47.2%

Baseline選択

317件

52.8%

約半数のケースでPOEMが選択され、残り半数はBaselineが採用されました。これは、POEMが有効なケースと逆効果なケースがほぼ同数存在することを示しています。

改善例:認知症患者の夜間対応(82歳女性、攻撃的行動、不眠)

❌ Baselineの回答 (Care Reward: 0.0)

バイタル測定 → 患者の安全確保 → 看護師報告 → 医師報告 → 記録

評価:一般的すぎて、夜間の不穏に対する具体的な策がない。禁忌パターンにも一部抵触。

✅ POEM (Hybrid) の回答 (Care Reward: 0.8398)

バイタル測定
→ 患者の安全確保(ベッド柵の確認、転倒防止策の実施)
→ 落ち着ける環境調整(照明を落とす、静かな音楽をかける等)
→ 攻撃的行動の原因アセスメント(痛み、不快感、環境の変化等)
→ 看護師報告
→ 医師報告
→ 記録

POEM適用後は、「照明を落とす」「痛みの有無を確認する」といった、より具体的で状況に適したアクションが提案されています。これは、メモリ内の類似事例から「具体的な指示を含む成功パターン」の順序構造を学習した結果と考えられます。

まとめ

今回の検証ではPOEMを一律適用ではなく、精度が上がる可能性があるケースに対して選択的に適用することで安全性を担保(禁忌回避率100%)しつつ、正解精度を約9%向上させることができました。

しかし合成データを使用した点やLLMを専門家と見立てて定性的に評価を行っていることから、生成AIシステムの改善を現場のFBから検討する際は実データを使用した検証と専門家に報酬設計を評価してもらうことが必要です。

宣伝

弊社ではデータ基盤策定からLLMまで、お客様にあったプロセスでの提案とご支援が可能です、お気軽にお問合せください。

また、中途採用やインターンの応募もお待ちしています!



お問い合わせ・資料請求

プロジェクトに関するご質問や詳細な情報が必要な場合は、お気軽にお問い合わせください。

サービス紹介資料

当社のサービスや実績について詳しく解説した資料をご覧いただけます。

資料をダウンロード

無料相談・お問い合わせ

お持ちの課題について、広くお問い合わせを受け付けています。

問い合わせをする

関連記事

LLM-as-a-Judge用にgpt-oss 20bをSFTし、専門的な指示をJudgeする
LLM-as-a-Judge用にgpt-oss 20bをSFTし、専門的な指示をJudgeする
記事を読む
日本語OCR「YomiToku」を活用したRAG構築とAdvanced RAGを用いて性能比較
日本語OCR「YomiToku」を活用したRAG構築とAdvanced RAGを用いて性能比較
記事を読む
「バイブコーディング入門:プロンプトエンジニアリングの基本概念からWebアプリ開発実践まで」
「バイブコーディング入門:プロンプトエンジニアリングの基本概念からWebアプリ開発実践まで」
記事を読む