电子商务网站建设与管理案例,wordpress文件夹里图片无法获取,网站开发技术规范要求,wordpress网站访问验证码Huggingface的GenerationConfig 中的top_k与top_p详细解读 Top_kTop_p联合共用 Top_k
top-k是指只保留概率最高的前k个单词#xff0c;然后基于剩余单词的概率进行归一化#xff0c;从中随机抽取一个单词作为最终输出。这种方法可以限制输出序列的长度#xff0c;并仍然保持… Huggingface的GenerationConfig 中的top_k与top_p详细解读 Top_kTop_p联合共用 Top_k
top-k是指只保留概率最高的前k个单词然后基于剩余单词的概率进行归一化从中随机抽取一个单词作为最终输出。这种方法可以限制输出序列的长度并仍然保持样本的一定多样性。
举个例子在使用语言模型生成「这个周末天气很」的句子时top-k保留概率最高的三个单词为「好」「热」「冷」此时将剩余单词进行概率归一化把它们的概率设定为0之后在三个保留的单词中随机选择一个比如选择了「好」后这个句子就变成了「这个周末天气很好」。这个过程可以反复进行直到生成的句子已经满足需要。
通过使用top-k我们可以限制输出序列的长度并尽可能地保持语句的一定多样性同时控制结果的生成质量。需要注意的是取值过小会导致结果过于随机而过大可能会限制生成的单词种类和多样性这个超参的设定需要根据任务需求和经验进行调整。
Top_p
top-p是一种用于在文本生成中控制输出的策略。top-p算法保留累计概率之和达到一个给定阈值p的概率分布中的词汇然后在这个分布中进行随机采样从而生成一个单词。
举一个例子假设我们选择的p值为0.8然后通过语言模型预测下一个单词。假设根据模型我们得到了10个可选单词它们分别具有不同的概率分布。下面是假设的10个单词和它们的概率
单词1: 0.25单词2: 0.20单词3: 0.15单词4: 0.1单词5: 0.07单词6: 0.06单词7: 0.05单词8: 0.04单词9: 0.03单词10: 0.01
根据top-p算法我们会按照概率从大到小的顺序逐个累加单词的概率直到累计概率达到0.8。上面10个单词累计概率为
单词1: 0.25单词1单词2: 0.45单词1单词2单词3: 0.60单词1单词2单词3单词4: 0.70单词1单词2单词3单词4单词5: 0.77单词1单词2单词3单词4单词5单词6: 0.83
累加到单词6时累计概率已经达到了0.83因此我们会从这6个单词中进行随机抽样以选择最终的输出。
top-p算法可以控制输出单词的多样性因为它可以保留给定阈值下的累计概率的单词。如果阈值设置的比较小如0.3则选择的单词就更少结果可能不够多样化如果阈值设置的比较大如0.9则选择的单词就更多结果可能会过于随机。因此选择一个合适的阈值需要结合任务需求和实际情况进行测试和调整。
联合共用
假设我们要生成一个关于水果的简短文本我们的模型输出了以下10个单词和它们的概率分别是
苹果0.2橙子0.2香蕉0.1葡萄0.1草莓0.1芒果0.1桃子0.05菠萝0.05柚子0.04火龙果0.03
我们想要生成多样性的语句那么可以在top-k和top-p的约束下进行采样下面来具体说明。
首先我们可以设置top-k为5表示保留概率最高的5个单词。这样就会保留苹果、橙子、香蕉、葡萄和草莓这5个单词并去掉其他单词也就是
苹果0.2橙子0.2香蕉0.1葡萄0.1草莓0.1
接下来我们可以使用top-p的方法保留概率的累计和达到0.9的单词也就是选取橙子、苹果、草莓三种水果。我们对这三种水果重新进行归一化概率分别为
苹果0.4橙子0.4草莓0.2
接着我们可以从上述分布中进行随机采样选取一个单词作为最终的生成结果。最终生成的水果可能是苹果或橙子或草莓并且橙子和苹果的概率要比草莓的概率高一些因为它们的概率更大。
从这个例子可以看出top-k和top-p可以结合使用确保我们生成的语句既具有多样性又具有合理性同时可以吸引读者的注意力。在不同的任务和需求中我们可以根据实际情况来调节参数从而得到更好的输出结果。