書き手・読み手のモチベーション
- Few-Shot学習の効果を最大化したい
- 介護・医療など安全性が重要なドメインでLLMを活用したい
- 現場のFBを生成AIシステムの改善に反映させたい
背景と課題
RAG(検索拡張生成)を用いた生成AIシステムは社内の情報活用などを扱う分野において非常に有効ですが、運用する場合に以下の課題があると考えられます。
- コンテキストの取りこぼし: 対話が長くなるにつれて重要な文脈(「夜間」「認知症の既往」等)が埋もれる
- 重複提示: 過去に提示されたアクションが何度も提示されてしまう
- フィードバックが活かせない: 「この提案は不要だった」という現場の声を即座にシステムに反映することが困難
ファインチューニングはコストが高く頻繁には行えません。そこで介護のドメインで運用することを想定し、「外付けメモリでFew-Shotの順序を最適化する」アプローチ(POEM)を検証しました。
POEMとは
POEM (Prompting with Episodic Memory) は、Few-Shot例の順序を強化学習で最適化する手法です。
仕組み(シンプルに)
- 質問に対してFew-Shot例を検索
- 様々な順序を試して、良い結果が出た順序をメモリに保存
- 次回、似た質問が来たら成功した順序を再利用
LLM自体は更新せず、外付けメモリだけで完結するため低コストで導入可能な点が採用の決め手でした。
詳細なフローは「検証のフロー」セクションで説明します。
データセット
概要
- 介護現場で発生しうる典型的なシナリオを基に生成した合成データを使用(プライバシー保護のため)
- 症状を8カテゴリとして設定: 発熱、転倒、呼吸困難、脱水、薬剤関連、感染症、認知症関連、褥瘡
データ例:
質問: (75歳、男性):呼吸困難、動悸、不安。朝の対応として適切なアクションを教えてください。
正解: 1. バイタル測定(体温、血圧、脈拍、SpO2)
2. 症状の詳細を観察し、状態をアセスメント
3. 異常値を医師に報告し、指示を仰ぐ
データ構成
用途 | 件数 | 説明 |
|---|---|---|
メモリ更新用 | 400件 | POEMのメモリ更新に使用 |
インデックス用 | 400件 | 推論時の類似検索の際に使用(メモリ更新用と重複なし) |
推論時 | 200件 | 評価に使用(メモリ更新用と重複なし) |
検証のフローと検証環境
検証のフロー
POEMの動作を「メモリ更新時」と「推論時」の2フェーズに分けて説明します。
メモリ更新時(学習フェーズ)
- 質問文(s₁)を入力
- 介護関連の質問文を単語埋め込みベクトルに変換
- 類似事象をインデックスから抽出(m件)
- 類似事象と順序(a₁)を決定
- 抽出したm件のFew-Shot例の並び順を決定
- 順序は「類似度ランクの順列」として表現
- プロンプト生成とLLM実行
- 質問文(s₁)+ 類似事象と順序例(a₁)でプロンプトを構成
- LLMに入力し、回答を生成
- 報酬(r₁)の計算
- 出力結果を評価基準に基づいてスコア化
- この報酬の設計が検証の重要なポイント(次セクションで詳述)
- メモリ(M)に書き込み
- (s₁, a₁, r₁) の組をメモリに保存
- 同じ質問に対して複数の順序を試行し、それぞれの報酬を記録
推論時
- 新しい質問文(sₜ)を入力
- 単語埋め込みベクトルに変換し、メモリから類似事象を検索
- 最適な類似事象と順序(aₘ)を取得
- メモリから、類似した質問で最も報酬が高かった順序を読み出す
- プロンプト生成と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の結果を分析したところ、悪化したケースの要因が判明しました。
悪化ケースの特徴
- Baselineが元から高精度なケース
- 典型的な症状パターンでは、Baselineでも十分な精度が出る
- POEMで順序を変えることで、かえって精度が下がる
- 禁忌アクションの発生
- POEMで順序を変えた結果、禁忌アクションを含む回答が生成されるケースがあった
- 禁忌アクションが含まれると報酬が大幅に下がる(care_reward = 0.0)
判定ロジックの着想
検証1の結果とその要因分析から改善が期待できるケースのみにPOEMが適用できればより精度が上がるのではないかと考えました。
- 禁忌アクションの判定を最優先:安全性を担保する
2.精度が改善するケースのみPOEMを適用:悪化を防ぐ - それ以外は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まで、お客様にあったプロセスでの提案とご支援が可能です、お気軽にお問合せください。
また、中途採用やインターンの応募もお待ちしています!



