温度采样

最近,我在ODS聊天中遇到一个问题:为什么逐字母算法不从p语言模型预测的下一个字母的概率矢量)而是从p'=softmax(log(p)/t)t是其他一些奇怪的正标量吗?


一个快速而难以理解的答案: t是“温度”,它使您可以控制所生成文本的种类。 而且,为了获得冗长而详尽的答案,实际上是写这篇文章的。


数学位


首先, softmax(x)=exp(x)/sum(exp(x))提醒您, softmax(x)=exp(x)/sum(exp(x)) (exp,log和向量的除法是逐分量的)。 事实证明,如果t=1 ,则对数和指数会相互抵消,从而得到p'=p 。 也就是说,在单位温度下,这种转变不会改变任何东西。


如果您使温度很高,会发生什么? Softmax得到(几乎)零,在输出处得到(几乎)相同的数字,大约1/n ,其中n是维度p (字母表中字母的数目)。 也就是说,在非常高的温度下,我们会根据语言模型的预测进行预测,并且所有字母的样本也同样可能。


如果我们将温度设置为接近零,则每个分量p'将是一个非常大的指数除以非常大的指数之和。 在极限情况下,对应于p最大值的那个字母将支配所有其他字母,而p'趋于统一,而其他所有字母趋于零。 也就是说,在非常低的温度下,我们总是选择最可能的字母(即使它的绝对概率不是很高-例如只有5%)。


主要结论


也就是说,温度采样是不同类型采样的总体视图,并考虑了不同程度的模型预测。 这对于在模型置信度和多样性之间进行调节是必要的。 您可以提高温度以生成更多不同的文本,或降低温度以生成模型平均而言更加自信的文本。 当然,所有这些不仅适用于文本的生成,而且还适用于所有概率模型。


上图显示了通过Hugging Face组支持的精彩页面 ,在不同温度下从GPT-2模型进行采样的示例。 GPT-2并非通过字母或单词来生成文本,而是通过BPE令牌(特殊选择的字母序列)生成文本,但是其本质并没有真正改变。


一点物理


您可能会问,温度与温度有什么关系。 答案是参考热力学中的玻耳兹曼分布 。 该分布描述了系统所处状态的概率(例如,几个气体分子被锁在瓶中),具体取决于系统的温度和与这些状态相对应的势能水平。 从高能状态转变为低能状态时,它会被释放(转化为热量),但是相反,它会被消耗掉。 因此,系统通常会处于低能耗状态(更容易进入低能耗状态, 不可能忘记 ),但温度越高,系统也会越频繁地跳入高能状态。 实际上,玻尔兹曼用公式描述了这些规律性,并得到完全相同的p=softmax(-energy/t)


我已经在我的熵( 1,2,3 )文章中写过文章,但并未真正解释统计熵与物理学中熵的概念之间的关系。 但是实际上,通过玻耳兹曼分布,它们似乎是相互联系的。 但是在这里,我最好送您去阅读物理著作,而我本人将与NLP一起走得更远。 令您困惑不已!


PS:本文是在大约38°C的温度下撰写的,因此,如果它的随机性比您期望的稍微多一点,请不要感到惊讶。

Source: https://habr.com/ru/post/zh-CN467189/


All Articles