1.Attention为什么要除以根号d?
当向量维度变大的时候,softmax 函数会造成梯度消失问题,所以设置了一个 softmax 的 temperature 来缓解这个问题。这里 temperature 被设置为了根号d.
为什么变大会导致梯度消失:
- 如果 d 变大,q 和 k 点积的方差会变大。
- 方差变大会导致向量之间元素的差值变大。
- 元素的差值变大会导致 softmax 退化为 argmax, 也就是最大值 softmax 后的值为 1, 其他值则为0。
- softmax 只有一个值为 1 的元素,其他都为 0 的话,反向传播的梯度会变为 0, 也就是所谓的梯度消失。
2.一个好的位置编码有哪些特性
①唯一性:每个位置应该有一个唯一的编码。
②相对(外推)性:应反映出序列中不同位置之间的相对关系。周期性规律。
③任何位置之间的相对距离在不同长度的句子中应该是一致的。(是指如果两个token在句子1中的相对距离为k,在句子2中的相对距离也是k,那么这两个句子中,两个token之间的相关性应该是一致的)
3.FFN的作用
FFN 的主要作用是对输入特征进行非线性变换和映射,可以看作用 1x1 的卷积核来进行特征的升维和降维。
Attention 的功能是做信息的提取和聚合,Resnet 提供信息带宽,而真正学到的知识或者信息都存储在 FFN 中。
《Transformer Feed-Forward Layers Are Key-Value Memories》这篇文章做了很多实验和统计,得出了以下结论:
- FFN 是一个 Key-Value 记忆网络,第一层线性变换是 Key Memory,第二层线性变换是 Value Memory。
- FFN 学到的记忆有一定的可解释性,比如低层的 Key 记住了一些通用 pattern (比如以某某结尾),而高层的 Key 则记住了一些语义上的 Pattern (比如句子的分类)。
- Value Memory 根据 Key Memory 记住的 Pattern,来预测输出词的分布。
- skip connection 将每层 FFN 的结果进行细化。
4.post Norm 和 pre Norm的区别
Post Norm: 对训练不稳定,梯度容易爆炸,学习率敏感,初始化权重敏感,收敛困难。
好处是有潜在效果上的优势。
Pre Norm: 在训练稳定和收敛性方面有明显的优势。
5.llama2和GPT的架构区别
1.Pre Norm 的 RMSNorm替代Post Norm的layer norm。
2.rope位置编码,取代余弦位置编码。
3.分组查询注意力替代MHA.
4.FFN结构的优化,SwiGLU替代gelu激活函数
6.激活函数的作用
1.代数的角度:如果没有激活函数,那么神经网络就是简单的线性变换,无法解决一些非线性的问题
2.信息论的角度:神经网络就是对信息的增强和压缩。激活函数除了做非线性映射,还在某种程度上对前一层的信息进行了筛选和加强。
3.微积分角度:精心设计的激活函数可以保证模型在训练的时候有一个稳定的梯度流。
7.信息量、期望、信息熵、交叉熵、KL散度
事件x发生的概率是P(x)
信息量:-log(P(x))
期望:实验中每次可能结果的概率 * 结果 的总和。
信息熵:信息量的期望:-sum(P(xi)log(P(xi)))。
信息熵就是某个随机事件的信息的期望值,同时也是最优编码的期望长度。
交叉熵:分布P和Q的信息熵:-sum(P(xi)log(Q(xi))
交叉熵 H(p, q) 有两种理解:
- 在p分布下,q分布定义的信息量的期望值。
- 在p分布下,使用基于q的最优编码方案的期望编码长度。
KL散度(相对熵):衡量两个分布的差异:sum(P(xi)log(P(xi)/Q(xi)))
KL 散度也有两种理解方式:
1.在p分布下,使用基于q的最优编码方案的期望编码长度中冗余的 bit 数。
2.使用分布 q 来 表示 p的时候,丢失的信息量。
8.RLHF的流程,PPO与DPO
1.RLHF的流程
1.监督学习阶段:通过人类编写的示例对语言模型进行预训练,获得基准模型。
2.奖励模型训练阶段:基于人类反馈训练一个奖励模型,用于衡量文本生成的质量。
3.强化学习阶段(PPO):使用奖励模型引导语言模型进行强化学习,通过策略优化来使模型生成的内容更符合人类偏好。
2.PPO
PPO 的目标是在强化学习中找到一种最优策略,让智能体能够在给定环境中做出最佳决策,获得最高的奖励。PPO 的核心思想是逐步调整策略,确保每次调整不要太大,从而保证模型在训练时的稳定性。使用一个概率比率来表示新旧策略之间的变化,并用剪辑函数来控制这种变化。
加载的模型:
Actor Model:从 SFT 模型 初始化。
Ref Model:从 SFT 模型 初始化,作为参考计算 KL 散度。
Critic Model:从 Reward Model 初始化,学习 token 级别的优势函数。
Reward Model:从 人类反馈中训练得到,评估整个序列的奖励。
3.DPO
DPO(Direct Preference Optimization) 的目标是通过直接最大化用户偏好样本的对数概率,来优化模型生成的内容。这使得模型的输出更符合用户偏好。包括偏好最大化、无需求解奖励模型。
训练时加载的模型:都从SFT模型初始化。
1.策略模型:策略网络是需要优化的目标模型,它通过增加偏好样本的概率和减少非偏好样本的概率,直接对齐人类偏好。
2.参考模型:用于计算策略网络与基准模型之间的 KL 散度,并将其纳入损失函数,确保策略更新不会偏离 SFT 模型太远,以保持训练过程的稳定性。
训练过程:
1.计算对数概率:将拼接后的 (prompt, chosen) 和 (prompt, rejected) 分别输入 策略网络 和 参考网络,计算得到 4 个对数概率。
2.计算差异(Diff):两个模型分别计算 chosen 样本的对数概率减去 rejected 样本的对数概率。
3.计算损失(Loss):最终的损失函数是策略网络的差异减去参考网络的差异。
9.为什么需要RLHF
传统的对话模型通常采用 预训练 + SFT 两个阶段,而 RLHF 则是在此基础上添加了强化学习的过程。
SFT与SFT基础上的RLHF的区别:
1.样本的区别
pretrain阶段压缩了知识,然后通过SFT让LLM具备问答能力,但是SFT没有负例,他只把概率分布往标准答案上面拉、同时打压其他所有情况,所以概率得到提升的会有很多种答案,也就是会带出来很多东西(拔出萝卜带出泥),只是能跟监督数据比较像。
SFT,是直接喂入“prompt + 标准答案”,本质上是通过梯度回传将模型输出的概率分布调整为接近标准答案。
RLHF:引入奖励模型(Reward Model),由奖励模型对模型生成的输出进行评分。PPO
强化学习的目标是逐步提高模型在奖励模型上的得分,不是简单地模仿标准答案,而是通过反馈逐步改进输出的质量。
2.loss的区别
SFT是在每个时间步都去拟合下一个答案给定的token。每个token的loss是平均的(现在也有一些sft阶段loss加权的方法)。因此SFT的训练方法是一种局部的、有偏的方式,只能利用前向信息。
RLHF是最大化sample出来的整个序列在奖励模型(reward model)上的得分,最终会落到字粒度的调节(也就是优化每个单个时间步的决策),在每个时间步追求的是后续n步期望回报的最大化,每个时间步的loss有不同的权重。