統計学的にモデル評価を行いながら、ヒルクライミングプロセスで性能改善する手法の紹介。カッパ係数、統計学の授業で触れた気がするがまったく覚えてなかった。
Improve your prompts by hill-climbing with Evaluations
0:00 – Introduction
- ヒルクライミングの定義
- 評価スコアをガイドに知能機能を反復改善するアプローチ
- サイクル:開発 → 実行 → 分析
- AI 機能の改善に科学的思考を持ち込む考え方
2:42 – BookTracker’s tagging problem
- Book Tracker のタグジェネレーターが抱える問題
- 重要なテーマを見逃す
- 本の内容ではなく読者の感想やレビューからの引用をタグとして生成してしまう
5:27 – Analyzing the evaluation results
- データセットにレビューを 2 件追加して評価を実行
- Xcode の評価レポートで生成タグと期待タグを比較
- レポートの活用
- サンプルごとのスコアとジャッジの rationale を確認
- 期待するタグを欠いていてもモデルは高いジャッジスコアを付けており、人間評価と乖離があることが判明
8:26 – Drift between judge and human
- モデルジャッジの評価と人間の専門家評価の乖離:「ドリフト」
- 複数サンプルに対しモデル・人間で評価、それぞれの平均値の乖離がドリフト
- ドリフトが存在すると評価スコアを信頼できなくなるため、ジャッジを人間の判断に揃える必要がある
- 評価の乖離を測定する方法:
- 両者合致する評価の割合をパーセンテージで表記(accuracy)
- 分布が偏るケースに不適合(e.g. データセットの品質が高く人間がすべてを高く評価しがちな場合、モデルの評価と乖離が生じない)
- accuracy とは異なる評価方法が必要
- 両者合致する評価の割合をパーセンテージで表記(accuracy)
9:37 – Measuring drift with Cohen’s kappa
- カッパ係数(Cohen’s kappa)によるアライメント計測で一致度(alignment)を測定
- 偶然の一致(coincidence)の確率を差し引いた上で正確度を正規化 alignment = (accuracy – coincidence) / (1 – coincidence)
- 単純な一致率よりも真のアライメントを反映
- Evaluations の記述に必要な4つの要素:データセット、Evaluation の対象、Evaluation の定義、結果の集計
12:26 – Building a judge alignment evaluation
BookTagJudgmentCalibration:ジャッジと評者の評価を比較するための専用評価- 同じデータセットに対して人間の手動評価とモデルのジャッジの両方のスコアを収集
aggregateMetricsでカッパ係数を集計
- ジャッジアライメントのテスト
- カッパ係数に加えて、平均値と各 dimension ごとの標準偏差も取っておくと、ジャッジスコアの増減を把握するのに役立つ
- 閾値の目安:0.6 以上が望ましい(統計学的に意義のある一致水準を表すため)
#expect(result.aggregateValue(.custom(label: "Relevance: Judge vs Expert")) > 0.6)
15:16 – Analyzing alignment failures
- Evaluate を再実行するとテストに失敗:Assistant Editorでレポートを深掘りするとジャッジが過剰に特定的なタグや的外れなタグを高く評価していると判明
- 原因:良いタグ/悪いタグを分別するためのアプリに関するコンテキストがプロンプトに不足している
17:16 – Comparative evaluation: control vs experimental
- Xcode 27 の比較評価機能
- 2 つの評価を対照実験として比較し、変更の効果を客観的に検証
- Control group:ベースとなるプロンプト vs Experimental group:実験的に変更を加えたプロンプト
19:12 – Refining the scoring dimensions
ScoreDimensionの説明文を精緻化- Relevance:読者の反応・メタコメンタリー・著者情報をタグにしてはいけないことを明示
- Usefulness:標準的なジャンル・テーマタグが機能する一方で、造語・キャラクター名・過度に一般的な語は不適と明示
- 説明の改善で両次元のスコアが向上
21:23 – Adding few-shot examples to the judge
ModelJudgePromptでジャッジに文脈と worked examples を提供- アプリの目的(Shelf:個人書籍管理アプリのタグ生成)を説明
- Worked examples でレーティングの基準を示す
- 例 A(Pride and Prejudice):タグが適切
- 例 E(Frankenstein):ジャンル矛盾あり
- Few-shot examples でジャッジの評価を専門家の感覚に近づける
23:38 – Going beyond prompts: adding a tool
- ヒルクライミングの対象はプロンプトだけではない
BookLookupToolの追加し機能の品質を段階的に高める試み- レビューから本のタイトルと著者を検索するツール
- 登場人物名・舞台設定・引用フレーズなどの手がかりからサンプルブックを特定
- タグ生成サービスにツールを渡すだけで追加文脈を提供
BookTaggingService.generateTags(for:tools:)でツールを注入
- 評価スイートでツールなし vs ツールありを同時に比較
27:17 – Next steps
- 科学者のように考える:仮説を立て、変数を制御し、結果を測定する
- 投資する価値のあるプロセス
- 変数の創造性を持つ(プロンプトだけでなくツール・モデル・指示の構造なども対象)
- ドリフトに注意し続ける(ジャッジのアライメントを定期的に確認)