大家好啊,我是董董灿。
本文介绍在大语言模型的后处理中的重复惩罚操作。
对于后处理而言,是指在大模型生成文本后,对生成的结果进行一系列的调整和优化,以确保输出的文本具有更好的质量、流畅性和可读性。
后处理的目的是弥补模型本身在生成过程中可能存在的问题,使得最终的输出更符合用户的预期。
对于以 Transformer 为架构的大模型而言,模型的最后两层往往是全连接层(线性层)和Softmax 层。
这两层的作用分别是将特征转换为分数以及将分数进行归一化得到概率分布,最终模型会根据概率从词表中选择对应的词作为输出。
所以说,后处理过程非常重要,如果对大模型的输出不添加后处理的逻辑,有时你会发现模型的输出结果惨不忍睹。
以下是一些常见的大模型用到的后处理方法和应用场景:
重复惩罚:重复惩罚的作用是避免模型重复生成相同的词或短语,通过降低已生成词的概率来实现。
温度调节:通过调整温度参数,控制生成文本的多样性和确定性,较低的温度会使输出更确定,而较高的温度会增加生成的多样性。
Top-k 和 Top-p 采样:这两个采样参数可以控制生成词汇的范围。Top-k 采样只从得分最高的 k 个词中选择,Top-p 采样则保证选择的词的累计概率达到某个阈值,从而减少生成不合适或不连贯词汇的可能性。
文本清理:移除生成文本中的无关字符、标点符号或多余的空格,修正语法错误等。
内容过滤:根据应用场景或政策要求,过滤掉不适宜或敏感的内容。比如在某些平台上,需要过滤掉不适宜的语言、广告或政治敏感的内容。
拼接与格式调整:对生成的多个片段进行拼接,并调整格式,使得整个文本更流畅和一致。
对话场景:在对话场景下,后处理可以确保生成的对话回复合乎情理,避免出现重复或不相关的回答。
文本生成:如新闻生成、故事生成,确保输出的文本结构完整、语言流畅。
代码生成:修正生成代码中的语法错误,确保生成的代码能够正确执行。
数据清洗:处理生成的表格数据、列表或其他结构化信息,使其符合预期的格式和标准。
本节看一个比较常见的后处理方法——重复惩罚。
在生成文本的过程中,有时候模型会倾向于输出相同的词或短语,这会导致生成的文本缺乏多样性和流畅性。
为了防止这种情况发生,便会对已经生成过的词汇进行“惩罚”,也就是降低它们再次被选择的概率。
如果不这么做,模型可能会不断重复一些已经生成的词,这不仅会让生成的文本显得机械,还可能偏离我们想要表达的意思,而通过惩罚,模型会更倾向于选择其他没有出现过的词,从而生成更连贯和自然的文本。
那么如何完成惩罚呢?
完成惩罚的方式也很简单,一般会通过调整模型生成的词的“得分”(Logits)来完成。
之前也介绍过,模型最后有一个全连接层,全连接层的输出即为原始的得分值——Logits,这些得分值代表了每个词在本次预测中被选中的可能性。
对于那些已经生成过的词,惩罚就是降低它们的得分,使它们在下一次被选中的机会变小。
具体来说,如果一个词之前已经被生成过:
如果它的得分是正的,则会将它的得分除以一个大于 1 的数字(惩罚系数),让得分变小。
如果它的得分是负的,则会将它的得分乘以这个惩罚系数,使得分进一步降低。
这样做的结果就是,已经生成过的词的概率会被降低,从而鼓励模型生成新的词,避免重复。
我是一名 AI 攻城狮,如果你也想学习 AI ,欢迎你关注我的公众号,会有非常多好玩的AI技术分享~欢迎查看我的专栏 >>1. 专栏:计算机视觉入门与调优 , 2. 专栏:Transformer 通关秘籍