大家好,我是小喵,你萌的算法小姐姐!
关注和星标『AI算法小喵』,和小喵一起学习!
点击关注|设为星标|干货速递
语言建模即根据给定的 token 来预测后续 token是 NLP 的一项基础任务,这个任务反映了模型对语言的基本理解能力。
那如何评估这个能力呢?或者说如何衡量一个模型是不是真的理解语言、生成连贯的文本呢?
一个非常容易想到的方法就是概率,具体地说就是计算给定文本的概率:
这里 表示句子长度, 表示的是给定前 个token的前提下第 个token出现的概率。
直觉上,一个好的 LLM 会给一个自然流畅的句子比较高的概率,给一个无意义的句子比较低的概率。
但是,千万不要忽视了连乘符号的威力,因为连乘符号的存在,文本的长度对概率会产生一定的影响。
举个例子,“最近3刷了《武林外传》,小时候看不懂,长大了才发现没有一句废话,全是经典。”这个句子,假设每个字在其前序字的条件下出现的概率都是0.9,那么整个句子的概率就是 。
1.2 困惑度
既然文本长度会影响指标,那么就对文本长度做惩罚,或者说把文本长度因素干掉。
怎么做呢?既然是连乘,那就开根,相当于计算平均每个字出现的概率。在数学上,也叫几何平均,即对各变量值的连乘开项数次方根。
实际上,困惑度定义为文本序列概率的倒数的几何平均或者说文本序列概率的几何平均的倒数:
这里的倒数如何理解呢?
假设推理下一个 token 的平均概率是 ,其倒数 也就是困惑度,表达的实际上是推理下一个 token 时,平均面临的选择数量。自然地:
2.困惑度计算公式
计算时,为了避免数值下溢,可以利用对数将连乘变成累加。具体
再利用指数函数来保持等式不变,即 ,得到:
当然,如果对数底数为2,那
发现什么没有,困惑度公式中有交叉熵。实际上,困惑度与交叉熵损失紧密相关,这部分的内容我们留作下次分享了。
长按关注- AI算法小喵 -设为星标,干货速递