評価(Evaluations)
概要
評価(Evaluation)とは?
評価は、AI ワークフローの信頼性と安定性を確保するための重要な技術です。適切な評価を行わなければ、AI プロダクトは脆弱な概念実証(PoC)の段階にとどまり、本番環境で安定して動作するワークフローにはなり得ません。評価は、構築フェーズでも、本番環境へデプロイ後でも、どちらにおいても極めて重要です。
評価の中心となるのは、複数のテストケースを含むテストデータセットをワークフローに入力することです。各テストケースには、ワークフローに対するサンプル入力が含まれ、通常は期待される出力結果も含まれます。
評価を行うことで、以下のことが可能になります:
- 多様な入力を用いてワークフローをテストし、エッジケースにおける動作を把握する
- 安心して変更を加えられ、意図せず他の部分に問題を引き起こすリスクを減らす
- 異なるモデルやプロンプト間でのパフォーマンスを比較する
次の動画では、評価とは何か、なぜ有用なのか、そしてその仕組みについて解説しています:
なぜ評価が必要なのか?
AI モデルは通常のコードとは本質的に異なります。通常のコードは決定論的であり、その挙動を推論できます。一方、LLM(大規模言語モデル)は「ブラックボックス」と呼ばれるものであり、その内部動作を推論するのは困難です。そのため、LLM のパフォーマンスを測定するには、実際にデータを入力してその出力を観察するしかありません。
モデルが本番環境で遭遇するあらゆるエッジケースを反映した多様な入力でテストを行った後でなければ、モデルの安定性に対して確信を持つことはできません。
2 種類の評価
軽量評価(デプロイ前)
クリーンで包括的なデータセットを構築するのは難しいことです。初期の構築段階では、通常、少量のサンプルを生成するだけで十分です。これらのサンプルにより、ワークフローをリリース可能な状態(または PoC の状態)まで反復的に改善できます。正式な評価指標を定義しなくても、結果を直感的に比較することで、ワークフローの品質についての初期判断を下すことができます。
指標ベースの評価(デプロイ後)
ワークフローをデプロイした後は、本番環境での実行ログから、より豊かで代表的なデータセットを構築しやすくなります。バグを発見した際には、そのバグを引き起こした入力をデータセットに追加できます。バグを修正する際には、修正後に全データセットに対してワークフローを再実行することが非常に重要です。これは回帰テストと呼ばれ、修正によって他の機能に予期せぬ影響が出ていないかを検証する手法です。
テストケースの数が多すぎて一つひとつ確認できない場合、評価では出力の品質を測定するために指標(特定の特性を表す数値)を使用します。これにより、異なる実行間での品質変化を追跡することも可能になります。
2 種類の評価の比較
| 軽量評価(デプロイ前) | 指標ベースの評価(デプロイ後) | |
|---|---|---|
| イテレーションごとの改善効果 | 大きい | 小さい |
| データセットのサイズ | 小さい | 大きい |
| データセットのソース | 手動作成 / AI 生成 / その他 | 本番環境の実行ログ / AI 生成 / その他 |
| 実際の出力 | 必須 | 必須 |
| 期待される出力 | 任意 | 通常必須 |
| 評価指標 | 任意 | 必須 |
さらに詳しく
- 軽量評価:開発段階において、手動で選んだテストケースを使って AI ワークフローを評価するのに最適です。
- 指標ベースの評価:大規模なデータセットに対して定量的な指標を用いて、本番環境におけるパフォーマンスと正確性を維持するための高度な評価手法です。
- テクニックとよくある問題:特定の評価ケースをどのように設定すればよいか、またよくある落とし穴をどう回避すればよいかを学びましょう。