LLM(大语言模型)常用评测指标-困惑度(Perplexity)

困惑度(Perplexity)

是自然语言处理(NLP)中常用的一种评估语言模型的指标。它衡量的是模型对测试数据的预测能力,即模型对测试集中单词序列出现概率的预测准确度。困惑度越低,表示模型对数据的预测越准确。

计算方法

困惑度通常定义为测试集上的交叉熵的指数。对于一个语言模型,如果给定一个长度为 N N N 的词序列 W = w 1 , w 2 , ... , w N W=w_1,w_2,\ldots,w_N W=w1,w2,...,wN,其困惑度可以表示为:

P P ( W ) = 1 P ( w 1 , w 2 , ... , w N ) n PP(W)=\sqrt[n]{\frac1{P(w_1,w_2,\ldots,w_N)}} PP(W)=nP(w1,w2,...,wN)1

其中, P ( w 1 , w 2 , ... , w N ) P(w_1,w_2,\ldots,w_N) P(w1,w2,...,wN)是模型赋予该词序列的概率。在实际计算中,为了避免数值下溢,通常使用对数概率,并将公式转化为:

P P ( W ) = 2 − 1 N ∑ i = 1 N log ⁡ 2 P ( w i ∣ w 1 , w 2 , ... , w i − 1 ) PP(W)=2^{-\frac1N\sum_{i=1}^N\log_2P(w_i|w_1,w_2,\ldots,w_{i-1})} PP(W)=2−N1∑i=1Nlog2P(wi∣w1,w2,...,wi−1)

这里, ∑ i = 1 N log ⁡ 2 P ( w i ∣ w 1 , w 2 , ... , w i − 1 ) \sum_{i=1}^N\log_2P(w_i|w_1,w_2,\ldots,w_{i-1}) ∑i=1Nlog2P(wi∣w1,w2,...,wi−1)表示对整个测试集的对数似然,并且 N {N} N是测试集中的单词总数。

应用场景

困惑度常用于比较不同的语言模型或评估同一模型在不同数据集上的性能。它广泛应用于语言模型的训练和评估、机器翻译、语音识别等自然语言处理领域。

示例

假设一个简单的语言模型,给定一个测试集包含三个词的序列 "the cat sat",模型对这三个词的预测概率分别为 0.5, 0.4, 0.3。则该序列的困惑度计算如下:

P P ( W ) = 2 − ( 1 3 ( log ⁡ 2 0.5 + log ⁡ 2 0.4 + log ⁡ 2 0.3 ) ) ≈ 2.45 PP(W)=2^{-\left(\frac13(\log_20.5+\log_20.4+\log_20.3)\right)}\approx2.45 PP(W)=2−(31(log20.5+log20.4+log20.3))≈2.45

这意味着在这个简单的例子中,模型对测试集中单词序列的预测平均每个位置的不确定性相当于二进制选择中的2.45个选项。

当我们说模型对测试集中单词序列的预测平均每个位置的不确定性相当于二进制选择中的 2.45 个选项时,我们是在尝试将困惑度的数值转化为一个更直观的概念。具体来说,假设你面前有一个盒子,里面有若干个按钮,每个按钮代表一个不同的单词。每次你要预测下一个单词时,就需要按下一个按钮。如果模型对下一个单词的预测非常准确,那么你每次基本上只需要在少数几个按钮中选择。如果模型的预测非常不准确,那么你可能需要在很多按钮中进行选择。

困惑度的数值可以告诉我们,平均来看,你需要在多少个按钮中进行选择。在上面的例子中,困惑度为 2.45,这意味着平均每次预测时,你需要在大约 2.45 个按钮中进行选择。这个数值越小,表示模型的预测越准确,你需要在越少的选项中进行选择。

换句话说,困惑度可以被理解为模型在预测下一个单词时的平均"不确定性"。如果困惑度是 2.45,那么就好像你在进行二进制选择时平均有 2.45 个选项一样,这反映了模型对单词序列的预测能力。

相关推荐
星浩AI4 分钟前
让模型自己写 Skills——从素材到自动生成工作流
人工智能·后端·agent
千寻girling4 小时前
Python 是用来做 AI 人工智能 的 , 不适合开发 Web 网站 | 《Web框架》
人工智能·后端·算法
AI攻城狮4 小时前
OpenClaw 里 TAVILY_API_KEY 明明写在 ~/.bashrc,为什么还是失效?一次完整排查与修复
人工智能·云原生·aigc
stark张宇4 小时前
构建第一个AI聊天机器人:Flask+DeepSeek+Postgres实战
人工智能·postgresql·flask
yiyu07166 小时前
3分钟搞懂深度学习AI:自我进化的最简五步法
人工智能·深度学习
浪浪山_大橙子8 小时前
OpenClaw 十分钟快速,安装与接入完全指南 - 推荐使用trae 官方 skills 安装
前端·人工智能
火山引擎开发者社区8 小时前
OpenClaw 快速上手:把云手机变成你的 7×24 小时 AI 手机助手
人工智能
Qlly8 小时前
DDD 架构为什么适合 MCP Server 开发?
人工智能·后端·架构
Lee川8 小时前
从零构建智能对话系统:AI Agent 实战指南
人工智能
冬奇Lab8 小时前
一天一个开源项目(第43篇):Star-Office-UI - 像素风格的 AI 办公室看板,让 AI 助手的工作状态可视化
人工智能·开源·资讯