评估-LLM-的推理能力-或从机器学习教学中学到的经验

评估 LLM 的推理能力,或从机器学习教学中学到的经验

原文:towardsdatascience.com/evaluating-llms-for-inference-or-lessons-from-teaching-for-machine-learning/

最近我有一些有趣的机会参与评估 LLM 推理性能的任务,我认为这是一个在更广泛背景下讨论的好主题。思考这个问题有助于我们确定将 LLM 转变为可靠、值得信赖的工具,即使是小型或高度专业化的任务所面临的重大挑战。

我们试图做什么

在其最简单的形式中,评估一个 LLM 的任务实际上对机器学习领域的从业者来说非常熟悉——确定什么定义了一个成功的响应,并创建一种方法来对其进行定量测量。然而,当模型输出的是一个数字或概率时,与模型输出文本时,这项任务存在很大的差异。

首先,对于分类或回归任务,输出的解释要容易得多。对于分类,你的模型正在输出结果的概率,你确定该概率的最佳阈值来定义“是”和“否”之间的差异。然后,你测量诸如准确率、精确率和召回率等事物,这些是极其确立和定义明确的指标。对于回归,目标结果是数字,因此你可以量化模型预测的数字与目标之间的差异,使用类似 RMSE 或 MSE 等同样确立的指标。

但如果你提供一个提示,并且一个 LLM 返回一段文本,你如何定义返回的这段文本是否构成成功,或测量这段文本与期望结果有多接近?我们将这个结果与什么理想进行比较,以及哪些特征使其更接近“真相”?虽然它学习并试图复制“人类文本模式”的一般本质,但这个本质在很多情况下都是模糊和不精确的。在训练过程中,LLM 被给予关于响应应具有的一般属性和特征的指导,但如果没有这些指导,响应可能看起来既不是负面也不是正面,对结果评分没有影响。

但如果你提供一个提示,并且一个 LLM 返回一段文本,你如何定义返回的这段文本是否构成成功?

在传统的机器学习中,基本上任何关于输出的变化都会使结果要么更接近正确,要么更远离正确。但一个 LLM 可以做出对人类用户接受结果的可接受性中性的改变。这对评估意味着什么?这意味着我们必须创建我们自己的标准和方法来定义性能质量。

成功看起来是什么样子?

无论我们是调整 LLM 还是构建使用现成 LLM API 的应用程序,我们都需要带着一个清晰的想法来解决问题,即区分可接受的答案和失败的标准。这就像将机器学习思维与论文评分相结合。幸运的是,作为一名前教员,我有这方面的经验可以分享。

我总是用评分标准来评分论文,以尽可能实现标准化,最大限度地减少我可能带来的偏见或任意性。在学生开始作业之前,我会写一个文档,描述作业的关键学习目标,并解释我将如何衡量是否展示了这些学习目标的掌握。(我会在学生开始写作之前与他们分享,以确保透明度。)

因此,对于旨在分析和评论科学论文的论文(我在研究素养课程中给学生布置的真正作业),这些是学习成果:

  • 学生理解作者使用的研究问题和研究设计,并知道其含义。

  • 学生理解偏见的概念,并能够识别它在文章中的发生方式。

  • 学生理解研究人员发现的内容以及这项工作产生的结果。

  • 学生可以解释事实,并利用它们来形成自己对这项工作的有见地的观点。

  • 学生可以写出一个组织有序且语法正确的论文。

然后,对于这些领域中的每一个,我创建了四个表现水平,从 1(最小或没有技能展示)到 4(技能掌握优秀)。这些点的总和就是最终得分。

例如,组织清晰和清晰的写作的四个水平是:

  1. 论文组织混乱,结构不佳。论文难以理解。

  2. 论文存在重大的结构问题,有时不清楚。

  3. 论文总体上组织得很好,但有些地方信息放置不当或难以跟随。

  4. 论文组织流畅,非常清晰,易于跟随。

这种方法基于教育者被教导的教学策略,即从期望的结果(学生学习)开始,逆向工作到可以让你达到那里的任务、评估等。

你应该能够为使用 LLM 解决的问题创建类似的东西,也许可以使用提示和通用指南。如果你不能确定什么定义了成功的答案,那么我强烈建议你考虑 LLM 是否是这种情况的正确选择。在没有严格评估的情况下让 LLM 投入生产极其危险,对你和你的组织造成巨大的责任和风险。(实际上,即使有这种评估,你仍然承担着有意义的风险。)

如果你不能确定什么定义了成功的答案,那么我强烈建议你考虑 LLM 是否是这种情况的正确选择。

好的,但谁在评分?

如果你已经确定了你的评估标准,这听起来可能很好,但让我告诉你,即使有了评分标准,批改论文也是一项艰巨且极其耗时的工作。我不想把所有时间都花在为一个 LLM(大型语言模型)做这件事上,我打赌你也不想。目前评估 LLM 性能的行业标准方法实际上是使用其他 LLM,有点像教学助理。(我们还可以做一些机械评估,比如在你批改之前对学生论文进行拼写检查,我下面会讨论这个问题。)

这就是我最近在日常工作中学到的大量评估工作。使用像DeepEval这样的工具,我们可以将 LLM 的响应传递到一个管道中,包括我们想要询问的评分标准问题(如果需要,还有评分等级),精确地根据对我们重要的标准来构建评估。(我个人在DeepEval 的 DAG 框架上取得了很好的效果。)

LLM 无法判断的事物

现在,即使我们可以使用 LLM 进行评估,也要强调 LLM 无法期望完成或准确评估的事情,尤其是事实的真实性或准确性。正如我经常说的,LLM 没有区分事实与虚构的框架,它们只能理解抽象的语言。你可以问 LLM 某件事是否为真,但你不能相信答案。它可能会偶然说对,但 LLM 也可能自信地告诉你相反的真相。真相是一个没有训练到 LLM 中的概念。因此,如果你的项目关键在于答案必须事实准确,你需要整合其他工具来生成事实,例如使用经过精选、验证的文档的 RAG(阅读-答案生成),但永远不要仅依赖 LLM 来完成这项工作。

然而,如果你有一个像文档摘要这样的任务,或者适合 LLM 的其他任务,这应该为你提供一个好的技术来开始你的评估。

LLM 到底有多强大

如果你像我一样,你现在可能会想:“好吧,我们可以让一个 LLM 评估另一个 LLM 在特定任务上的表现。但我们怎么知道教学助理 LLM 有多好?我们需要评估这一点吗?”这是一个非常合理的问题——是的,你需要评估这一点。我的建议是,创建一些“地面真相”答案的段落,这些答案是你自己根据初始提示手动编写的,并以此创建一个验证数据集。

就像任何其他验证数据集一样,这需要有一定的规模,并且能够代表模型可能在野外遇到的情况,这样你可以在测试中建立信心。重要的是要包括不同类型的错误和错误,这些是你正在测试的——所以,回到上面的例子,一些组织有序、清晰的段落,以及一些不是的,这样你可以确保你的评估模型能够区分出来。

幸运的是,因为我们在评估流程中可以为性能分配量化值,我们可以以更传统的方式运行评估并与之比较答案键。这意味着你必须花费相当多的时间来创建验证数据,但这比你自己批改生产模型的所有答案要好得多!

额外的评估

除了这些基于 LLM 的评估方式,我非常相信构建出更多不依赖于 LLM 的额外测试。例如,如果我在运行提示时要求 LLM 生成支持其断言的 URL,我知道 LLM 经常会胡编乱造 URL!它给出的所有 URL 中,一定有一部分是假的。一种简单的策略来衡量这一点并尝试减轻它,就是使用正则表达式从输出中抓取 URL,并实际运行对该 URL 的请求以查看响应。这并不完全足够,因为 URL 可能不包含所需的信息,但至少你可以区分出那些被胡编乱造的 URL 和真实的 URL。

其他验证方法

好的,让我们来盘点一下我们现在所处的位置。我们有了第一个 LLM,我将称之为“任务 LLM”,以及我们的评估 LLM,并且我们已经创建了一个评分标准,评估 LLM 将使用它来审查任务 LLM 的输出。

我们还创建了一个验证数据集,我们可以用它来确认评估 LLM 的表现是否在可接受的范围内。但实际上,我们也可以使用验证数据来评估任务 LLM 的行为。

其中一种方法是从任务 LLM 获取输出,并要求评估 LLM 将此输出与基于相同提示的验证样本进行比较。如果你的验证样本旨在高质量,可以询问任务 LLM 的结果是否具有同等质量,或者要求评估 LLM 描述两者之间的差异(根据你关心的标准)。

这可以帮助你了解任务 LLM 行为中的缺陷,这可能导致改进提示、收紧指令或其他使事情变得更好的方法。

好的,我已经评估了我的 LLM

到现在为止,你对 LLM 的性能应该有一个相当好的了解。如果任务 LLM 在任务上表现糟糕怎么办?如果你得到的响应完全不符合你的标准怎么办?嗯,你有几个选择。

更改模型

现在有很多 LLM,如果你对性能有所顾虑,可以尝试不同的 LLM。它们并不完全相同,有些在特定任务上的表现要比其他 LLM 好得多——这种差异可能会相当令人惊讶。你也可能会发现不同的代理管道工具同样很有用。(Langchain 拥有大量的集成!)

更改提示

你确定你给模型提供了足够的信息,让它知道你想要什么吗?调查一下你的评估 LLM 标记为错误的是什么,看看是否有共同的主题。使你的提示更加具体,或添加额外的上下文,甚至添加示例结果,都可以帮助解决这类问题。

改变问题

最后,如果你做什么都无法让模型完成任务,那么可能到了重新考虑你在这里试图做什么的时候了。有没有办法将任务分解成更小的部分,并实现一个代理框架?也就是说,你能运行几个独立的提示,并将结果全部收集起来并这样处理吗?

此外,不要害怕考虑 LLM 可能根本不是解决你面临问题的正确工具。在我看来,单个 LLM 仅适用于与人类语言相关的相对狭窄的问题集,尽管你可以通过将它们与其他代理应用结合来在一定程度上扩展这种用途。

持续监控

一旦你达到了一个了解模型在任务上能表现多好的程度,并且这个标准对你的项目来说是足够的,你还没有完成!不要自欺欺人地认为你只需设置好就可以置之不理。就像任何机器学习模型一样,持续的监控和评估绝对是至关重要的。你的评估 LLM 应该与你的任务 LLM 一起部署,以便产生关于任务执行得如何的常规指标,以防你的输入数据发生变化,并且让你能够了解 LLM 可能犯的任何异常和罕见的错误。

结论

到这里,我想强调我之前提到的观点——考虑 LLM 是否是你正在工作的解决问题的方案,并确保你只使用真正有益的部分。很容易陷入一个境地,就像现在 LLM 和“AI”无处不在的时刻,你有一把锤子,每个问题看起来都像钉子。然而,如果你真正认真对待评估问题并测试你的用例,通常这将澄清 LLM 是否能够提供帮助。正如我在其他文章中描述的,使用 LLM 技术有巨大的环境和社会成本,因此我们所有人都必须考虑使用这个工具在工作中的权衡。有合理的应用,但我们也应该对外部性保持现实。祝你好运!


www.stephaniekirmer.com阅读更多我的作品


进一步阅读

deepeval.com/docs/metrics-dag

python.langchain.com/docs/integrations/providers

posted @ 2026-03-27 10:52  布客飞龙V  阅读(3)  评论(0)    收藏  举报