書籍「生成AIアプリケーション評価入門」にみるLLM as a Judgeの実践~ソースコードの引用とその修整案及び疑問点の解説~

とここまで来て、まだ良く分からない点がある。それが、「なぜexpected_outputなんて必要なんだろうか?」ってことだ。LLMが評価するならば、そんなんいらなくね?という疑問…これねコード内に実は理由が書かれている。”実際の出力に含まれる事実が、期待される出力に含まれる事実と矛盾していないかを確認してください”&”重要な情報が省略されている場合は大きく減点してください”ってある。つまり、あくまでexpected_outputは我々人間側が設定するグランド・トゥルース(絶対真実)なんだ。正解の一定指標・基準を設定することで、LLM as a Judgeの手助けをするわけ。

ある程度の絶対的真実を渡すことで、LLMはハルシネーション(AIの吐く嘘)に対して強い頑健性を持つことになる。ここにきてようやっとLLM as a Judgeの意味が色濃く出て来る。そうだな…例えるならば、expected_outputは教科書である。そしてJudgeするLLMが先生だ。教科書がないと、たとえLLMという強力な先生でも採点を間違えることがある。だからexpected_outputは教科書的に我々が人間側が手掛ける必要がある。そこで、まとめるけど…

Llama2(評価対象):質問に答える人「受験生」

Expected Output:テストの基準となる「教科書」

GEval / OpenAI(Judge役):「教科書」を片手に「受験生」の答案がどれくらい的確かを採点する「先生」

ということになるわけ。教科書無しで先生は全て正しい採点ができるわけじゃない。むしろ教科書があるからこそ、採点=Judgeもできるようになるのだ。ここで勘違いしてはならないのは、この時LLMは無力ではない、ということだ。一見、文字比較しているだけに見えるJudgeアルゴリズムにおいても、LLMの力は絶大、だということだ。単に文字の類似を見るだけならば、レーベンシュタイン距離などの指標を計算機に投げれば良いだけである。だが、このアルゴリズムはそうはなっていない。

いうならばLLMは採点役になっていて、質問者から手渡された「正解(expected)」と「Llama2の回答(actual)」の2つを読み比べている。つまり、LLMは「ほうほう、そう来たか…正解と回答の照らし合わせによって、またLLM的な巨大な背景によって、この高度な国語的採点がこう可能ですよ!」と言ってくれている。その国語的な客観評価を、かってこのアルゴリズムが登場する以前人間が脳でしてたようその代わりに、実地的にAI(LLM)が行ってくれているのである。

ただ、さらに議論したいことも巻き起こる。それがLLM as a Judgeがファクトチェックとどう違うのか?ということだ。簡単に言うと、ファクトチェックは〇×問題である。単に〇×、つまり1 or 0を付けて判定するだけだ。対してLLM as a Judgeは採点までしてくれる。つまり、100点と0点の間に無数の点数があるように柔軟に対応してくれるのだ。これがファクトチェックとは違う点だ。現にコード内に、これまた、”重要な情報が省略されている場合は大きく減点してください”としっかり記載がある。

Judgeは、正解データがない評価(ファクトチェック不可能なもの)にも使うことが出来る。例えば、回答が流暢か?あるいは適切か?Toxicではないか?と言う点も含め採点してくれるのだ。言うなれば、ファクトチェックは二項分布的な判定に過ぎないが、LLM as a Judgeはそのアルゴリズム的な本来の柔軟性でもってして、答案を採点してくれる。LLMの回答を他のLLMに採点させるなんて単なる思い付きに過ぎない、と思うかもしれないけど、そうじゃない。結構うまく作られてて、有力なLLMの評価手法なのである(既に何度も述べているけどね)。