大模型解码策略详解:top-k、top-p与temperature

为什么需要解码策略?

在大型语言模型(如GPT、LLaMA)的文本生成过程中,直接选择概率最高的词(贪心搜索)会导致重复和机械化的输出,而完全随机采样又可能产生不合理的文本。top-ktop-ptemperature这三个参数,正是为平衡创造性可控性设计的核心工具。


核心参数解析

1. Top-k 采样

原理
# 伪代码实现
def top_k_sampling(prob_distribution, k=50):
    top_k_probs, top_k_indices = get_top_k(prob_distribution, k)
    sampled_token = random.choice(top_k_indices, weights=top_k_probs)
    return sampled_token
  • 功能:每步生成时,仅保留概率最高的前k个候选词
  • 特点
    • k越大,多样性越强(例:k=100适合创意写作)
    • k越小,输出越保守(例:k=10适合技术问答)
典型值建议
场景 k值范围
开放创作 50-100
技术内容生成 20-50
高精度任务 1-10

2. Top-p(核采样)

原理
# 伪代码实现
def top_p_sampling(prob_distribution, p=0.9):
    sorted_probs, sorted_indices = sort_descending(prob_distribution)
    cumulative_probs = calculate_cumulative(sorted_probs)
    cutoff_index = find_first_exceeding(cumulative_probs, p)
    valid_probs = sorted_probs[:cutoff_index+1]
    sampled_token = random.choice(sorted_indices[:cutoff_index+1], weights=valid_probs)
    return sampled_token
  • 功能:动态选择累积概率超过p的最小词集合
  • 特点
    • p=0.9表示只考虑覆盖90%概率质量的词汇
    • 自适应上下文:候选词数量随分布变化
典型值建议
场景 p值范围
故事生成 0.9-0.95
对话系统 0.85-0.9
代码生成 0.7-0.85

3. Temperature(温度系数)

3.1. 背景知识:Softmax函数

Softmax函数是将一个实数向量转换为概率分布向量的常用函数。其定义为:对于输入向量 x = ( x 1 , x 2 , ⋯   , x n ) \mathbf{x}=(x_1,x_2,\cdots,x_n) x=(x1,x2,,xn),经过Softmax函数处理后得到的输出概率分布向量 p = ( p 1 , p 2 , ⋯   , p n ) \mathbf{p}=(p_1,p_2,\cdots,p_n) p=(p1,p2,,pn),其中 p i = e x i ∑ j = 1 n e x j p_i = \frac{e^{x_i}}{\sum_{j = 1}^{n}e^{x_j}} pi=j=1nexje

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值