如何实现LLM-as-a-Judge?

用大语言模型(LLM)来评估其他LLM的输出是当前被广泛使用的一种技术,但具体应该怎么做呢?让我们看一下几篇广受引用的论文、博客和教程,总结一下它们到底是怎么实施这个技术的,并尝试找出一些有用的规律。

1. Vicuna的做法

Vicuna是最早用LLM作为评估者的模型之一。他们的方法取决于要解决的问题,不同领域用不同的提示(prompt)来处理。关键点如下:

- 通用问题:使用简洁的通用提示。

- 编程问题:提供良好解决方案的特性清单。

- 数学问题:提示评估者自己先解题再评分。

有趣的是,评估者会同时看到两个模型的输出,但不是让它直接选出更好的,而是要求它给每个输出打1-10的分数。

2. AlpacaEval的方法

AlpacaEval是广泛使用的LLM排行榜之一,完全基于LLM-as-a-Judge的技术。其方法使用GPT-4-Turbo,通过非常简单的提示实现:

- 给评估者一个指令。

- 给评估者两个响应例子。

- 让评估者根据人类偏好选择更好的响应。

尽管简单,但这种策略与人类偏好评分的相关性很高(Spearman相关系数0.9+)。

3. G-Eval的方法

G-Eval是最早展示与人类评估高度相关的LLM驱动评估指标之一。其成功的关键在于使用了两阶段的提示方法:

- 第一阶段:给LLM一个任务或指令,让它生成评估解决方案所需的步骤(称为自动链式思考,AutoCoT)。

- 第二阶段:LLM使用这些步骤作为输入,生成实际评分,从而提高评分准确性。

4. LLM-as-a-Judge论文的方法

LLM-as-a-Judge这篇论文本身使用了相对简单的提示策略来评分模型输出。不过,它还要求模型为其评分提供解释,这类似于链式思考提示策略,被发现可以提高评分准确性。此外,论文还探索了多种提示策略,包括点对点和成对提示,均被证明有效。

关键启示

从这些例子中,我们可以得出几个共同的启示:

1. LLM对识别更优的响应非常在行:这是因为模型在训练中使用了强化学习(RLHF)。

2. 为每个领域/应用创建专门的评估提示是有用的。

3. 提供评分标准或良好解决方案的特性清单可以帮助LLM。

4. 简单的提示策略极其有效:不要把它搞得过于复杂。

5. 提供(或生成)参考解决方案对复杂问题(如数学)来说很有帮助。

6. 链式思考提示(CoT)有助于提高准确性。

7. 成对提示和点对点提示都常用。

8. 成对提示可以选择单独评分或选择更好的输出。

总之,想搞清楚如何使用LLM进行评估并不复杂,只要把这些启示应用到实际中,就能大大提高评估的准确性和有效性。

Reply to this note

Please Login to reply.

Discussion

No replies yet.