介绍
使用大型语言模型(LLM)还是不用?
像ChatGPT、Claude、LLaMA这样的大型语言模型(LLM)功能强大,但仍是一项新兴技术,可能带来独特的风险。有时,LLM似乎完全明白发生了什么,能够轻松回答复杂问题。然而,另一些时候,它们却会输出无关信息,甚至“胡编乱造”(即虚构信息)。
为何使用大型语言模型(LLM)?
许多公司正在探索利用LLM和机器学习来改善客户体验的方法。一个常见的用例是处理客户支持问题。例如,一家公司可能每天收到数千个支持问题,其中一些问题可以通过适当的内部文档来回答(如“如何添加承包商?”、“如何将员工状态更改为兼职?”)。在这种情况下,基于LLM的问答服务可以帮助客户使用自然语言查询快速找到相关信息。
在这类应用中,至关重要的是要保持对LLM理解请求并能准确回答的高度信心。让我们通过LLM的信心水平来探讨一种可能的方法。
机器学习回顾
精确率-召回率曲线
在传统的机器学习建模方法中,我们通常通过控制模型的信心水平来防止低质量输出。
接收者操作特征曲线(ROC曲线)和精确率-召回率曲线(PR曲线)是查看这种权衡的常用方法。
然而,LLM的输出是自由形式的文本,而不是像传统机器学习系统中那样有明确的类别标签和信心值。因此,这些技术似乎不适用于依赖LLM的机器学习系统。但在我们放弃之前(剧透:我们可以非常接近我们需要的目标),让我们先回顾一下LLM实际上是如何工作的。
回顾:GPT的直观理解
生成式预训练变换器(GPT)是LLM的一种常见架构。
图1
在LLM中寻找信心
LLM信心评分
我们通过查看通常使用 Transformer 型 ML 模型的机器翻译文献,找到了检测幻觉的指导。
llm_confidence = np.mean([-0.25, -0.1, -0.15, -0.3, -0.2, -0.05]) # -0.175
为何它很好:
LLM设计模式
在实现LLM服务时,我们可以:
1. 收集输出的序列对数概率(信心)分数,以了解预期输出信心分布。通过OpenAI API可以获得对数概率分数。
2. 监控信心分布低端的LLM输出。
3. 使用这个决策边界*,你可以自动:
a) 拒绝低质量响应
b) 对低信心响应引入专家人工验证
c) 尝试收集更多信息以使LLM更有信心
*LLM信心分布对提示变化敏感。因此,请相应校准边界。
图2
在我的测试过程中,我发现不自信的响应往往含糊其辞或过于宽泛(见图3左侧),更有可能编造内容,并且不太可能遵循提示指南,比如包含来源(见图3右侧)或不参与对话。自信的响应通常在指令上非常准确,能够确切地理解问题和解决方案。利用这一知识,可以过滤掉那些不自信的响应,避免它们被展示给客户。
图3
示例案例研究:常见问题解答服务
利用LLM信心过滤LLM错误
为了在实践中探索这种方法,我进行了一个小实验。我将1000个支持问题通过我们的问题解答LLM服务进行处理,并记录了LLM信心分数。
然后,我请我们的客户支持专家将LLM生成的输出标记为“高质量”或“低质量”。这样我就得到了一个二元标签,可以将其与生成输出的LLM信心分数进行对齐。
本案例研究显示,最自信的LLM响应与最不自信的LLM响应之间存在69%的相对差异。(见图4)
图4
有了控制LLM系统敏感性的方法,我们现在更接近于传统的机器学习系统,这使我们能够控制达到期望的成功率。
LLM精确率-召回率曲线
使用我们的二元成功标签和LLM信心作为敏感性,我们甚至可以为我们的LLM系统可视化一个实际的PR(精确率-召回率)曲线!
图5
我们可以将这视为“幕后工作”。即使我们并不总是能看到它,但在大多数生成过程中,这都在LLM的“推理”中发生着。
这将使我们能够有效地限制低质量响应被展示给客户。
结论:更可靠的LLM系统