大模型中常见的名词:token、temperature、top-p、top-k

1. Token

  • 定义: 在自然语言处理(NLP)中,Token 是将文本数据分割成更小单位的过程,称为“分词”,每个小单位称为一个 token
  • 示例:
    • 词级分词:对于句子“Hello, world!”,可能会被分割成两个 token:“Hello” 和 “world”。
    • 字符级分词:对于相同的句子,可能会被分割成“H”, “e”, “l”, “l”, “o”, “,”, “ ”, “w”, “o”, “r”, “l”, “d”, “!”。
  • 重要性: 在大多数 NLP 模型中,token 是输入和输出的基本单位。模型在训练和推理过程中,处理的对象往往是 token 的序列,而不是直接的文本字符串。

2. Temperature

  • 定义: Temperature 是在生成式模型(如GPT)中用来控制采样过程的参数。它调整模型输出的概率分布的“平滑度”。
  • 原理: 具体来说,temperature 是用来调节 softmax 函数的分布。在生成过程中,temperature 越高,模型的输出越随机;temperature 越低,模型的输出越确定。
  • 数值范围:
    • temperature = 1.0 是默认值,表示没有任何调节。
    • temperature > 1.0 会使生成结果更加多样化,但也可能导致生成的文本不连贯。
    • temperature < 1.0 会使生成结果更加确定,但也可能导致模型重复生成相同的内容。

3. Top-p (Nucleus Sampling)

  • 定义: Top-p 是另一种控制生成模型输出随机性的方法,称为核采样(Nucleus Sampling)。它通过选择占总概率质量 p% 的最可能的词(或 token)进行采样。
  • 原理: 与 top-k 不同,top-p 动态地调整候选 token 的数量,确保这些 token 的累积概率超过阈值 p。例如,如果 p=0.9,模型会在概率分布的前 90% 的 token 中进行选择。
  • 优点: Top-p 采样相比 Top-k 更加灵活,因为它根据概率分布的形状调整 token 的选择范围。

4. Top-k

  • 定义: Top-k 是生成模型输出的另一种采样方法。它在每个时间步选择概率最高的 k 个 token 进行采样。
  • 原理: 模型生成下一个 token 时,首先对所有可能的 token 进行排序,然后仅从前 k 个最有可能的 token 中进行选择。Top-k 使生成过程更具确定性,因为它限制了选择的范围。
  • 数值范围:
    • k 的值越大,生成的文本可能性越广,但也更随机。
    • k 的值越小,生成的文本会更确定,但可能会缺乏多样性。

总结:

  • Token 是文本处理的基本单位。
  • Temperature 控制生成文本的随机性和多样性。
  • Top-pTop-k 是两种常见的采样方法,用于控制生成模型的输出,前者基于累积概率,后者基于固定的候选数量。
### 大模型微调时参数温度和top_p的作用 #### 温度(Temperature) 温度是一个在应用 `softmax` 函数以获得概率之前对对数几率(logits)进行缩放的参数。它主要用于控制生成文本的随机性和创造性[^1]。 - **较高温度值**:当温度值较大(如 1 或 2),会增加对数几率的方差,使得概率分布更加均匀,从而导致生成的文本更具多样性和不可预测性。 - **较低温度值**:当温度值较小(如 0.5),会使概率分布更集中于高概率词元上,因此生成的文本更具针对性和确定性。 以下是基于不同温度值的效果对比代码示例: ```python import torch import torch.nn.functional as F def apply_temperature(logits, temperature): scaled_logits = logits / temperature probabilities = F.softmax(scaled_logits, dim=-1) return probabilities # 原始 logits 输出 logits = torch.tensor([1.0, 2.0, 3.0]) print("High Temperature (e.g., T=2):", apply_temperature(logits, 2)) print("Low Temperature (e.g., T=0.5):", apply_temperature(logits, 0.5)) ``` #### Top-p(Nucleus Sampling) Top-p 是一种采样策略,也称为核采样(nucleus sampling)。它的作用是从累积概率达到指定阈值 p 的最小候选集合中抽取下一个 token。这种方法可以有效平衡多样性与质量之间的关系[^2]。 - 当设定较大的 top-p 值(接近 1),意味着允许更多的低概率词元被选中,这增加了生成文本的多样性。 - 当设定较小的 top-p 值(如 0.8 或更低),则倾向于选择更高概率的词元,从而使生成的结果更加稳定和可控。 以下是一个实现 Top-p 采样的 Python 示例: ```python def nucleus_sampling(probs, p): sorted_probs, indices = torch.sort(probs, descending=True) cumulative_probs = torch.cumsum(sorted_probs, dim=-1) # 找到满足条件的最大索引位置 cutoff_index = torch.searchsorted(cumulative_probs, p).item() sampled_indices = indices[:cutoff_index] # 归一化剩余概率并返回 normalized_probs = sorted_probs[:cutoff_index] / torch.sum(sorted_probs[:cutoff_index]) chosen_token_idx = torch.multinomial(normalized_probs, num_samples=1).item() return sampled_indices[chosen_token_idx].item() probs = torch.tensor([0.1, 0.2, 0.3, 0.4]) chosen_token = nucleus_sampling(probs, 0.9) print(f"Chosen Token Index with P=0.9: {chosen_token}") ``` #### 实际应用场景中的调整建议 在实际应用中,温度和 top-p 参数的选择取决于具体的任务需求以及期望生成文本的特点[^3]。例如: - 如果希望生成创造性强但又不失连贯性的内容,则可以选择适中的温度值(如 0.7~1.0)和较高的 top-p 阈值(如 0.9)。 - 若目标是生成高度可预测且精确的内容,则应降低温度值(如 0.2~0.5)并减少 top-p 范围(如 0.5~0.7)。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值