はじめに
LLMを組み込んだアプリケーションの評価手法について、色々と調査しています。
私が以前、取り組んでいた機械学習の評価を含む運用などはMLOpsとも呼ばれ、ある程度、手法が確立されてきていたりしますが、LLMに関連する手法はLLMOpsとも言われており、まだ発展途上の状況であるのが現状のようです。自然言語の評価は単一の正解を定めにくく、「流暢さ」や「一貫性」といった複雑な基準の評価をするには、どうしても人間の判断が必要となる点で、MLOpsと大きく異なります。そして、そのことは、スケールした場合に手間が増加してしまうなどスケーラビリティに関連する課題を生み出します。
それを解決するために計算ベース(Computation-based)に加え、モデルベース(Model-based)と呼ばれる手法を用いたLLM-as-a-Judgeという手法があります。モデルベースとは、LLM自体を判定モデルとして用いて、人間による評価に近い形で評価を行う手法のことで、プロンプトを作成して行います。プロンプトによる評価は0か1かというはっきりとしたものに加えて、グラデーションのあるものにも対応することができます。このような、計算ベース(BLEU、ROUGEなど)と、モデルベースを組み合わせた手法は、Gen AI evaluation serviceなどに評価手法として取り入れられており、非常に参考になります。
データセットの作成から評価までのPDCAを回す
LLMOpsにおいて重要な点は、評価のみを単独で作るのではなく、評価するためのデータセットの作り方などから一貫した設計が必要となる点です。学校のテストなどにおいても出題範囲が設定され、その出題範囲のなかでの評価を行うことで公平な比較ができるように、LLMの評価においてもこうしたデータセットから一貫性をもった設計を行うことが必要となります。また、データセットの作成および評価についての良し悪しは、最終的には人間の判断が必要で「ドメインエキスパート」と呼ばれるその分野に精通した人の存在も必要となります。こういった実際の使われ方などを見て漸進的に改善していくプロセスとして、EvalGenというフレームワークが提唱されていて、非常に参考になります。
参考にした記事
データセット
1.人間が作る
2.LLMなどに作ってもらう(Synthetic Dataset)
3.実際の実行ログから集める
https://zenn.dev/gaudiy_blog/articles/ba06e37d226182#評価基準をどう作るか
LLMを活用したLLMの評価アプローチ
https://arxiv.org/abs/2304.10149
LLM-as-a-Judge
https://techblog.gaudiy.com/entry/2024/10/22/105609
RagasとPromptFlowでのメトリックの違い
https://zenn.dev/headwaters/articles/c9c3f19d5edc62
LLM as a Judege
https://techblog.gaudiy.com/entry/2024/10/22/105609
Ambiguous Question
https://techblog.asia-quest.jp/202409/specific-evaluation-methods-actually-used-to-improve-the-accuracy-of-llm-responses