你可能注意到了,很多 RWKV 部署/体验工具都支持调整 Temperature
、Top_P
、Presence Penalty
、Frequency Penalty
等参数,这些参数是 RWKV 模型的“解码参数”(也可称之为“采样参数”)。
通过调整解码参数,可以改变模型的生成效果。
即使是使用同一个 Prompt、同一个 RWKV 模型,不同的参数配置可能获得截然不同的回答。
视频教程
高画质视频请跳转到 B 站 (opens in a new tab)观看。
RWKV 模型的解码参数
RWKV 主要解码参数对应的效果如下:
参数 | 效果 |
---|---|
Top_P | 选择累积概率达到 值的前 个 token 作为候选集。如设置成 0.1 则考虑前 10% , 生成内容质量更高但更保守。设置成 1 则内容质量降低但更多样。 |
Temperature | 温度参数 通过修改 logits 的缩放比例控制生成结果的随机性。高温会使概率分布更均匀,增加生成内容的随机性;低温则使模型更倾向于选择概率最高的 token。 |
Presence penalty | 存在惩罚,对已出现过的所有 token 施加固定惩罚,从而增加了模型生成新 token 的可能性。 |
Frequency Penalty | 频率惩罚,根据 token 出现的次数进行累加惩罚,从而减少模型频繁地重复相同内容的可能性。 |
max_tokens | 模型生成文本时的最大 token 数,可以理解为“模型一次最多生成多少字”。 |
接下来,我们将 RWKV 模型比喻为一名作家,并使用更通俗易懂的说法解释这些参数的作用。
Top_P
参数
Top_P
就像一位主编,它决定 RWKV 这位作家可以使用多少词汇。假设当前可选的词汇有 100 个,那么:
Top_P = 0.2
是一位非常严苛的主编,只允许 RWKV 使用最常见、最符合逻辑的词汇(按照 Zipf 语言分布,实际可选词可能仅有 3 ~ 8 个)。Top_P = 1
是一位非常宽松的主编,RWKV 可以自由选择所有 100 个词汇,生成更加多样化的文本。
Temperature
温度参数
增加 Temperature
温度参数就像给 RWKV 这位作家“喝酒”。增加温度参数会增大文字的随机性,使内容更多样化,但太高可能使生成的内容不通顺或不合常理。
- 如果温度较低(如 0.5 以下),模型会像严谨的学术作家一样,只使用最通用最稳健的词汇。比如“阳光明媚” 会描述为 “日照充足”。更严谨,适合正式写作或精确回答。
- 如果温度较高(如 1.5 以上),模型会像喝醉的诗人一样,使用更多不常见的词汇,比如把彩虹描述为"宇宙的彩色伤口"。更有创造力,但可能出现不连贯表达。
Presence penalty
参数
Presence penalty
可以防止同一个词被反复使用,但不会因多次出现而增加惩罚力度。它的本质类似于一个动态更新的“禁用词库”:
- 每当模型生成一个新词,该词会立即被加入“禁用词库”
- 在后续生成过程中,该词出现的概率会被固定降低一定值(例如 0.5)
假设当前的 Presence penalty
参数值是 0.5, “美丽” 这个词在原始情况下的生成概率为 10%。那么
- 若“美丽”这个词此前已出现过,则其生成概率会被扣除固定值,对应 logits 下降,最终概率降低
- 但其他未出现的词不受影响,其 logits 不变,最终概率可能因归一化略有调整
Presence penalty
数值过高,可能会导致模型过度避免重复用词,使文本变得不自然或不连贯。在 Top_P
极低等极端情况下,可能影响标点符号的使用,甚至生成异常字符或难以理解的文本。
Frequency Penalty
参数
Frequency Penalty
用于抑制高频重复词,它会根据某个词在已生成文本中出现的次数来降低其后续出现的概率。出现次数越多,惩罚越强。
可通过增加 Frequency Penalty
参数来减少“然后”、“嗯嗯”等口头禅式的重复,从而让生成的文本更加自然流畅。
假设当前的 Frequency Penalty
设为 0.3
,某个词“美丽”的原始生成概率是 10%
,但此前已经生成过三次:
- 计算惩罚后,"美丽" 的新概率 =
10% - (3 × 0.3)
=9.1%
- 如果再生成一次(累计四次出现),则新一轮惩罚扣除
4 × 0.3 = 1.2%
以上示例仅用于说明 Frequency Penalty
的作用,实际计算通常是对 logits 进行乘法调整,而不是简单的减法操作。
不同任务的参数组合
我们为不同的任务提供了一些推荐的参数:
创意类内容需要更多的随机性和开放性,让模型能生成更具想象力的表达,因此 Top_P
和 Temperature
设得较高,而 Presence Penalty
和 Frequency Penalty
适中,以避免过于重复。
任务类型 | Top_P | Temperature | Presence Penalty | Frequency Penalty |
---|---|---|---|---|
故事创作 | 0.8 | 1.3 | 0.4 | 0.5 |
诗歌 / 文学 | 0.9 | 1.8 | 0.3 | 0.4 |
广告文案 / 营销 | 0.7 | 1.2 | 0.5 | 0.6 |
自由写作 | 0.85 | 1.5 | 0.4 | 0.5 |
可以根据具体任务再微调参数,调整原则:
Top_P
控制选词范围:数值高更多样,数值低更精准。Temperature
控制随机性:数值高更有创意,数值低更稳定。Presence Penalty
控制全局重复:数值高减少整体重复,适用于写作。Frequency Penalty
控制频繁重复:数值高减少口头禅、短句重复,适用于对话和正式写作。