.NET 控制台应用程序演示了 Azure OpenAI LogProbs 如何用于质量信息检索的四个示例:
git clone https://github.com/bartczernicki/AzureOpenAILogProbs.git
{
"AzureOpenAI" : {
"ModelDeploymentName" : "gpt-4-2024-04-09" , // Any Azure OpenAI GPT-4o-mini, GPT-4o or GPT3.5 model should perform well
"APIKey" : "YOURAZUREOPENAIKEY" ,
"Endpoint" : "https://YOURAZUREOPENAIENDPOINT.openai.azure.com/"
}
}
dotnet build
dotnet run
在此设置中,法学硕士将获得维基百科关于纽约大都会棒球队历史的文章中的选定段落。完整的文章可以在这里找到:https://en.wikipedia.org/wiki/New_York_Mets。这是每个提示中始终提供的上下文(基础信息)。
此外,还提供了20对问答。列表中的每个项目都有一个关于 Mets 维基百科文章的问题,并配有人工评估对/错,如果提供的维基百科文章中有足够的信息来回答该问题。每个问题都会发送给法学硕士,然后法学硕士将评估是否有足够的信息来回答该问题。该答案将与人类的评估(逻辑真理)进行比较。 20 个问题列表中的两个示例:
new Question { Number = 1 , EnoughInformationInProvidedContext = true , QuestionText = " When where the Mets founded? " } ,
new Question { Number = 2 , EnoughInformationInProvidedContext = true , QuestionText = " Are the Mets a baseball team or basketball team? " } ,
默认情况下,检查令牌日志概率的功能处于关闭状态。要启用此功能,应将IncludeLogProbativity属性设置为 true。这不会花费任何额外的令牌,也不会让 API 调用花费更多的钱。然而,这会稍微增加返回的 JSON 对象的负载。例如,使用新的 OpenAI .NET 库,它会作为 ChatCompletionOptions 类的属性公开。
chatCompletionOptions . IncludeLogProbabilities = true ;
.NET 库中包含控制每个 API 调用返回的日志概率数量的功能。这提供了具有各自概率的标记数组/列表。在统计学中,这称为概率质量函数 (PMF),因为它是概率的离散分布。注意:在 Azure OpenAI 上,当前最大值为 5,在 OpenAI 10 上(对于大多数 API)。例如,使用新的 OpenAI .NET 库,它会作为 ChatCompletionOptions 类的属性公开。
chatCompletionOptions . TopLogProbabilityCount = 5 ;
该解决方案还包括设置 (LLM) 模型的每个预期输出的温度的能力。默认值为 0.3f(浮点数),但可以增加到 2f 以获得更多创造力和变化。
internal static class GenAI
{
// To simulate more variance in selecting lower probability tokens, increase the temperature to between 1.4 - 2.0.
public const float OPENAITEMPATURE = 0.3f ;
.. .
这本质上是该解决方案的核心设置。其余代码是 C# 代码,用于连接服务的输入/输出,并确保计算正确执行并在控制台应用程序中可视化。
什么是 LogProb(对数概率)?大多数当前的 LLM 通过预测下一个令牌并迭代每个令牌直到到达停止点(即最大令牌长度,完成用户指令)来处理提示指令。对于考虑输出的每个令牌,都通过内部 LLM 管道进行处理,该管道输出可供选择的“最佳匹配”令牌的统计概率分布。基于配置(温度、top_p 等),可以计算这些令牌概率,然后 LLM 根据不同的配置选择下一个“最佳匹配”令牌。由于这些 LLM 本质上是概率性的,因此您可能会看到发送到 (LLM) 模型的相同提示指令的不同标记输出。
下面是一个问答场景的示例,以及选择回答以下问题的两个标记(单词)的相关概率: “谁是美国第一任总统?” 。在下面的示例中,模型回答了两个标记“George”“Washington”,标记概率分别为 99.62% 和 99.99%。请注意,还有其他标记可供选择,但法学硕士固有的知识和推理能力(来自大量数据的训练)自信地增加了这两个标记的概率:“乔治”和“华盛顿”。
有一些设置可以校准法学硕士的严格程度或创造性。例如,您可能听说过一种名为“温度”的 (LLM) 模型设置,它本质上增加了选择较低概率标记的机会。
需要更多信息吗? Azure OpenAI LogProbs 背景推荐阅读:
有各种经过验证的新改进技术,它们使用对一个模型或多个模型的多次调用来得出响应、结论或质量决策。目前,LLM 在 GenAI 生产系统中使用的大多数方式是通过提供额外的上下文信息来接地(RAG)。 (LLM) 模型被要求回答问题、对该信息进行推理等。但是,如果基础技术较差,这可能会导致结果质量较低。
Azure OpenAI LogProbs 是一种先进的技术,可以帮助测量模型响应的置信度(概率)。这种巨大的能力可以使 GenAI 系统能够自我纠正或指导用户/代理获得更高质量的响应。
下面通过 GenAI 工作流程图说明了 LogProbs 的强大功能。请注意,有两条路径(左和右):
示例输出:
请注意,上图说明了 LLM 的 True 和 False 输出以及 True 或 False 输出的概率。由于“True”或“False”是响应中的第一个也是唯一的标记,因此可以使用第一个标记 (LogProb) 概率。这种方法有几个问题:
Brier 分数将根据模型功能、提示和问题上下文而有所不同。通过保持提示和上下文相同,可以比较整体模型的准确性性能。请注意下面比较 GPT-4o 和 GPT-4o-mini 模型的 Brier 分数。 GPT-4o-mini 模型的 Brier 分数较低,这意味着它在预测正确答案响应的概率方面更加准确。事实上,GPT-4o-mini 正确地得出了 20 个问题中的 18 个问题的最终答案,而 GPT-4o 模型正确地得出了 20 个问题中的 17 个问题的最终答案(如果上下文中有足够的信息来回答问题)问题。请注意,GPT-4o-mini 的平均 Brier 分数为 0.083(低于 0.1),这表明预测性能出色。因此,GPT-4o-mini 模型的 Brier 分数较低(较好)。这从经验上表明,它在量化有足够信息来回答所提供的提示问题的概率方面更加准确。
示例输出:
要返回多个日志概率,请将 LogProbativityPerToken 设置为 5(截至撰写本文时当前的 Azure OpenAI 最大值):
chatCompletionOptions.Temperature = 0.3f; // Higher Temperature setting will use tokens with much lower probability
chatCompletionOptions.IncludeLogProbabilities = true;
// For the Confidence Score, we want to investigate 5 of the top log probabilities (PMF)
chatCompletionOptions.TopLogProbabilityCount = 5;
示例输出:
下面是返回 5 个 LogProbs 令牌及其各自概率时的令牌概率分布示例。在下面的直方图中,“置信度分数:1”的概率为 42.3%;这意味着该模型认为回答问题的置信度分数=1 非常低,并且概率较低为 42.3%。如果您仅选择模型返回的最高置信度分数,则可能会丢失其他标记(标记编号 2 - 5)的大量其他信息。在这种情况下,还有大约 57% 的信息可以使用其他令牌概率来计算“加权”置信度分数,该置信度分数从 1 -> 2.3 进行校准。
示例输出:
这个 repo 没有涉及模型置信度得分的校准,也没有涉及模型概率 LogProbs 的校准。由于法学硕士本质上是神经网络,因此它们可能无法针对特定任务或领域进行校准。基本上,当 LLM 表示其置信度为 8/10 或确定概率为 80% 时,模型应该在大约 80% 的时间内正确(在错误率范围内)。
统计模拟显示 10,000,000 次模拟和 100 个问题 80% 校准的预期范围:
这些校准技术适用于现实场景。考虑 Mainifold Markets (https://manifold.markets/),人类超级预测者对事件的概率进行下注。这些人类超级预测者的集体智慧在预测现实世界事件方面得到了高度校准!
来自 Manifold Markets 的数千个预测的真实预测环境中的校准示例:
校准这个话题并不新鲜,决策理论和机器学习领域已经对其进行了研究。您可以应用决策智能(认知科学)和机器学习技术来进一步校准模型性能。