Transformer——Q86 推导重复惩罚(Repetition Penalty)对概率分布的修正公式

该问题归类到Transformer架构问题集——解码策略——自回归生成。请参考LLM数学推导——Transformer架构问题集

1. 引言

在大语言模型(LLM)的文本生成过程中,重复生成相同或相似的内容是一个常见且棘手的问题。例如,在故事创作中可能会反复出现相同的情节描述,在对话生成中可能会不断重复相同的语句。为了解决这一问题,重复惩罚(Repetition Penalty)技术应运而生。它通过对已生成的 Token 进行惩罚,降低其再次被选择的概率,从而有效减少文本中的重复现象,提升生成文本的多样性和质量。接下来,我们将从技术原理、数学推导、实际应用、代码实现、优缺点及优化策略等方面,深入剖析重复惩罚技术。

2. 重复惩罚的技术原理

2.1 文本生成中的重复问题

在 LLM 的文本生成过程中,模型往往会因为对某些 Token 的过度依赖而产生重复。这主要是由于模型在训练过程中学习到了某些高频出现的语言模式,在生成时会倾向于选择这些模式,导致生成的文本缺乏多样性。例如,在生成一篇关于旅游的文章时,模型可能会反复使用 “美丽的风景”“令人惊叹” 等词汇,使文章显得单调乏味。

2.2 重复惩罚的基本思想

重复惩罚的核心思想是对已经在生成文本中出现过的 Token 进行惩罚,降低它们在后续生成过程中被再次选择的概率。具体来说,当一个 Token 在已生成的文本中出现的次数越多,它在后续生成中的概率就会被惩罚得越严重。这样可以促使模型尝试选择其他不同的 Token,从而增加文本的多样性。

2.3 与温度采样的对比

温度采样(Temperature Sampling)也是一种常用的增加文本生成多样性的方法,它通过调整 softmax 函数的温度参数来改变概率分布的形状。当温度较高时,概率分布会变得更加平坦,使得低概率的 Token 也有较大的机会被选中;当温度较低时,概率分布会变得更加尖锐,模型会更倾向于选择高概率的 Token。

与温度采样不同,重复惩罚是一种有针对性的惩罚机制,它只对已经出现过的 Token 进行惩罚,而不会影响其他 Token 的概率。这种方法更加直接地解决了文本重复的问题,而不需要像温度采样那样对整个概率分布进行调整。

3. 数学公式推导

3.1 原始概率分布

在 LLM 中,给定前面已经生成的 Token 序列y_{<t} = [y_1, y_2, \ldots, y_{t - 1}],模型预测下一个 Tokeny_t的概率分布可以表示为: P(y_t|y_{<t}) = \frac{\exp(z_{y_t})}{\sum_{i=1}^{|V|} \exp(z_i)}

其中,z_i是模型输出的第i个 Token 的 logit 值,|V|是词汇表的大小。

3.2 重复惩罚的修正公式

重复惩罚对原始概率分布的修正公式可以表示为:P'(y_t|y_{<t}) = \frac{\exp(z_{y_t} / \alpha)}{\sum_{i=1}^{|V|} \exp(z_i / \alpha)}

其中,\alpha是重复惩罚系数,定义为:

### Transformer 模型公式推导过程详解 #### 输入表示 在Transformer模型中,输入序列首先被转换成向量形式。对于每一个位置上的token,其对应的嵌入向量由两部分组成:词嵌入(Token Embeddings)和位置编码(Positional Encoding)。这种设计使得即使并行处理所有tokens也能保留它们的位置信息[^1]。 ```python import numpy as np def get_position_encoding(seq_len, d_model): position_enc = np.array([ [pos / np.power(10000, 2 * (i // 2) / d_model) for i in range(d_model)] for pos in range(seq_len)]) position_enc[:, 0::2] = np.sin(position_enc[:, 0::2]) # apply sin to even indices position_enc[:, 1::2] = np.cos(position_enc[:, 1::2]) # apply cos to odd indices return position_enc ``` #### 自注意力机制 自注意力层允许每个position与其他positions交互来计算新的特征表达。具体来说,在给定查询Q、键K以及值V的情况下,通过下面的公式可以得到加权求和的结果作为输出: \[ \text{Attention}(Q,K,V)=\text{softmax}\left(\frac{Q K^{T}}{\sqrt{d_{k}}} \right)V \] 其中\( Q=WK^qX,\; K=W_K^k X ,\; V=W_V^v X\) ,这里W代表权重矩阵,X则是输入embedding加上位置编码后的结果[^2]。 #### 前馈神经网络 每一层还包含了一个简单的前馈全连接网络应用于各自的子空间内独立操作: \[ FFN(x)=max(0,x W_1+b_1)W_2+b_2 \] 这一步骤有助于引入非线性特性到模型架构之中。 #### 编码器-解码器结构 Encoder接收原始句子并通过多层堆叠上述组件形成上下文理解;Decoder则基于encoder产生的中间表征逐步生成目标语言表述。两者之间通过masked multi-head attention防止decoder提前看到未来的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨顿

唵嘛呢叭咪吽

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值