谈到 GPT 模型时,温度参数是什么意思?
我知道更高的温度值意味着更多的随机性,但我想知道如何引入随机性。
温度是否意味着我们在权重/激活中添加了噪声,或者我们在 softmax 层中选择令牌时是否添加了随机性?
谈到 GPT 模型时,温度参数是什么意思?
我知道更高的温度值意味着更多的随机性,但我想知道如何引入随机性。
温度是否意味着我们在权重/激活中添加了噪声,或者我们在 softmax 层中选择令牌时是否添加了随机性?
在序列生成模型中,对于大小的词汇表(单词的数量,单词的部分,任何其他类型的标记),从形式的分布预测下一个标记:
这里是温度。softmax 的输出是下一个令牌将是- 词汇表中的第一个词。
温度决定了生成模型的贪心程度。
如果温度低,除了对数概率最高的类之外,其他类的采样概率会很小,模型可能会输出最正确的文本,但很无聊,变化很小。
如果温度高,则模型可以以相当高的概率输出除概率最高的单词之外的其他单词。生成的文本会更加多样化,但语法错误和废话生成的可能性更高。
上图说明了分类分布的低温情况(左)和高温情况之间的差异,其中条形的高度对应于概率。
例子
François Chollet 在第 12 章的Python 深度学习中提供了一个很好的示例。教程的摘录,请参阅此笔记本。
import numpy as np
tokens_index = dict(enumerate(text_vectorization.get_vocabulary()))
def sample_next(predictions, temperature=1.0):
predictions = np.asarray(predictions).astype("float64")
predictions = np.log(predictions) / temperature
exp_preds = np.exp(predictions)
predictions = exp_preds / np.sum(exp_preds)
probas = np.random.multinomial(1, predictions, 1)
return np.argmax(probas)