文章目录
一、QKV的初始化方式
首先要知道,QKV的初始化方式为均值为0,方差为1的随机初始化
均值非零的负面影响
当数据分布均值不为零时,例如全为正数,每一层的输出会逐渐向上偏移。这种偏移在深层网络中不断累积,最终导致数值爆炸。对称分布的数据能让信号落在激活函数最敏感的区域内,通常以零为中心的区域对ReLU、Softmax等函数最为敏感,有利于梯度传播和学习效率。
方差过小的后果
方差过小(如0.0001)会导致信号在传播过程中逐渐衰减。矩阵乘法后的数值越来越小,激活函数输出接近零。这种情况下梯度也会变得极小,网络难以更新权重,出现梯度消失现象。
方差过大的后果
方差过大(如100)会使信号在传播过程中不断放大。矩阵乘法后的数值越来越大,激活函数进入饱和区。此时梯度可能变得极大或不稳定,导致权重更新幅度过大,出现梯度爆炸现象,甚至产生NaN值。
理想方差设置
将方差设置为1能保持信号传播的稳定性。经过线性变换、注意力机制或残差连接后,信号幅度既不会放大也不会缩小。这种稳定的信号传播是深层网络有效训练的基础。
初始化方法的选择
常用初始化方法如Xavier和Kaiming初始化,都考虑了输入输出的维度关系来调整初始权重分布。这些方法通过数学推导确保前向传播和反向传播中信号的方差保持稳定,避免梯度问题的发生。
激活函数的影响
不同激活函数对初始化策略有不同要求。例如ReLU家族函数需要特别处理负半轴的稀疏性,Sigmoid类函数需要注意避免饱和区。选择初始化方法时应结合具体激活函数的特性。
二、方差的累计特性
方差的可加性:独立随机变量和的方差等于方差的和。
方差的缩放性质:随机变量乘以常数 ( a ) 时,方差变为 ( a 2 ) ( a^2 ) (a2) 倍。
方差大 → 分数差距极端 → e x e^x% ex爆炸 → softmax 输出极度稀疏 → 梯度消失 → 训练崩溃。
除以 ( d k ) \sqrt{(d_k)} (dk) ,相当于将方差缩小的到了1的大小左右。