GQA:从多头checkpoints中训练通用多查询Transformer模型
自回归解码器推理的成本很高,这是因为每个解码步骤加载解码器权重和所有注意力的keys与values的内存带宽很高。多查询注意力MAQ利用多个查询头但只有一个键与值,因此内存带宽的需求大大降低。然而,MQA会导致模型质量退化且训练不稳定。而且,为了优化质量与推理速度,单独训练一个模型不可行。
自回归解码器推理的成本很高,这是因为每个解码步骤加载解码器权重和所有注意力的keys与values的内存带宽很高。多查询注意力MAQ利用多个查询头但只有一个键与值,因此内存带宽的需求大大降低。然而,MQA会导致模型质量退化且训练不稳定。而且,为了优化质量与推理速度,单独训练一个模型不可行。
对于标准随机梯度下降,$L_2$正则化与权重衰退正则化的作用是相同。然而,对于自适应梯度下降算法,例如:Adam,这种等效不存在。确切的说,由于大部分深度学习库中正则化利用的是$L_2$,从而导致部分任务中利用带有动量的SGD进行优化产生的性能优于自适应梯度下降算法优化产生的模型。AdamW梯度下降算法通过对权重衰减与学习率设置进行解耦合,从而提升Adam算法的泛化性。
在深度神经网络中,LayerNorm用于帮助稳定化训练且提升模型的拟合能力。这是因为LayerNorm对输入和权重矩阵具有re-centering与re-scaling不变的特性。然而,随着网络加深,尤其是RNN,因计算量越来越大导致LayerNorm带来性能的成本越来越高。由此,在LayerNorm的re-centering不变属于不必要的假设下,RMSNorm基于均方根进行标准化,且使模型拥有re-scaling不变的特性和学习率的隐式自适应能力。
深度神经网络是由线性变形和激活函数构成。其中,激活函数对深度神经网络的训练成功很重要。激活函数ReLU因其简单性和可靠性,而得到了广泛的采用。虽然许多实践者提出了ReLU的替代版,但是这些激活函数对于不同的模型和数据集往往拥有不一致的表现。由此,Searching for Activation Functions作者们利用自动搜索技术,找到了Swish激活函数,其性能不仅优越于ReLU,且表现一致。
在较早的阶段,人工神经单元利用二值阈值单元作为激活函数。后来,这些二值阈值被sigmoid函数代替,拥有了平滑性。然而,随着网络越来越深,利用sigmoid作为激活函数,反而不如ReLU这种非平滑且少概率的激活函数有效。同时,深度非线性分类器往往过拟合数据,所以网络设计者需要选择随机正则化器,例如:隐藏层添加随机噪音、droupout。最终,非线性激活函数与dropout共同决定神经元的输出。然而,两者仍然有明显的区别或独立,即彼此不包含。由此,GELU诞生了。
Transformer由多头注意力和FFN交替形成的模型。其中,FFN的输入为向量$x$,再经过两个线性变形。在这两个线性变形之间的激活函数为ReLU