《LLM 推理必知参数,全网最全解析!》

文摘   2024-11-27 08:04   北京  

top_k,不管是greedysearch,还是beamsearch,对于固定输入,模型的输出是固定不变的,这就显得比较单调,为了增加模型输出的多样性,人们提出了top-k采样策略,其不像greedysearch那样每次取分数最高的,而是先选出分数最高的k个,然后将其分数作为权重进行随机采样,得到下一个Token。这也就引入了随机性,每次预测的结果都可能不一样。


在top_k中,每次都是从k个Token中采样,但是难免会出现一些特殊的case,比如某一个Token的分数非常高,其他分数都很低,此时仍旧会有一定的概率采样到那些分数非常低的Token,导致生成输出质量变差。此时,如果k是可变的,那么就可以过滤掉分数很低的Token,在The Curious Case of Neural Text Generation.中,作者提出了top_p采样,在每个step中,都对输出分数进行排序,然后将分数从大到小累加,直到累加分数大于设置的p为止,然后和top_k类似,将每个选择出来的Token的分数作为权重进行随机采样。这样,每次候选的Token个数都会因为Token分数的分布不同而不一样。

temperature事实上,在top_k和top_p的采样中并不是完全按照分数权重来采样的,一般采样前我们会将候选Token的得分向量经过softmax(公式如下图)转换为概率,然后按照概率分布采样。


repetition_penalty(重复惩罚),这个选项最早是由A Conditional Transformer Language Model for Controllable Generation中提出的,其是为了解决语言模型中重复生成的问题,即使比较大的LLM也会存在。其思想比较简单,就是记录之前已经生成过的Token,当预测下一个Token时,人为降低已经生成过的Token的分数,使其被采样到的概率降低

通过以上的介绍,大概知道了各个参数的含义,整体来说:

GreedySearch是最简单、最直接的方式,其可以保证稳定的输出,相应的,BeamSearch可以进一步提升生成效果,但是代价更高,也是可以保证稳定的输出。

top_p和top_k都可以用于增加模型生成结果的多样性,输出结果往往会变。

温度系数temperature一般用于控制随机性,temperature越大,随机性越强,temperature越小,随机性越弱。

重复惩罚repetition_penalty用于避免模型一直输出重复的结果,repetition_penalty越大,出现重复性可能越小,repetition_penalty越小,出现重复性可能越大。

参考:https://github.com/wdndev/llm_interview_note/blob/main/06.%E6%8E%A8%E7%90%86/LLM%E6%8E%A8%E7%90%86%E5%B8%B8%E8%A7%81%E5%8F%82%E6%95%B0/LLM%E6%8E%A8%E7%90%86%E5%B8%B8%E8%A7%81%E5%8F%82%E6%95%B0.md

AI技术研习社
专注分享人工智能、大模型、算法、大数据开发、数据分析领域的技术干货和落地实践!
 最新文章