在本文中,作者对Transformer难以优化这一问题进行了探究,并对模型的初始化方法提出了改进。
在Transformer框架中,self-attention的引入使得模型变得难以优化,想要有效的对其进行优化必须使用一些训练上的技巧,如learning rate warmup。
本文作者的贡献主要在以下两个方面:
- 分析了transformer难以被优化的原因。
- 提出了一种新的权重初始化策略,使用该策略可以使得模型在没有warmup和LN的情况下被训练。
Transformer的成功训练一般需要以下因素:learning rate warmup、LN、residual connection、large batch size等,并且移除任何一个,都极易让训练失败。
并且作者认为learning rate warmup是十分让人迷惑的,因为在如此众多的模型结构当中,只有Transformer等相关结构需要learning rate warmup。而作者在本文中发现,LN或许是这个问题的根源。
最后作者成功的训练了一个具有200层encoder和200层decoder的Transformer。
Approach
作者首先分析了为何warmup策略是必须的。作者认为,该问题的本质来源于Adam优化器的高的方差,和反向传播时LN的影响。
在作者之前又已经有工作对这两点进行了研究:
- 针对Adam优化器存在的问题,较为普遍的观点认为,参数二阶矩的估计在训练开始时不稳定,导致了模型优化的困难。
- LN的反向传播过程中,如果x的范数大于模型维度的二分之一次方,就会导致模型梯度的减小。详见下图:
作者综合了以上两点,发现没有warmup时,一开始较大的学习率使得二阶矩估计得不稳定被放大,由下图可以看出,当去除warmup后,模型的更新变得不稳定(纵轴代表训练轮数,横轴代表adam算法更新的量级)
同时,这种大量级的更新使得LN的输入也变大。如下图所示:
同时如上所述,LN较大的输入很快使他的量级大大于了模型维度d的二分之一次方,当d=512时,
这就导致了梯度的消失(如下图所示)。
这实际上导致了一个恶性的循环:参数二阶矩估计得不稳定被较大的学习率放大->梯度的消失->进一步影响模型方差使得二阶矩估计不稳定。
在传统的Transformer训练过程中,上述循环只有在参数的历史状态积累到一定状态后,训练过程才会趋于稳定,这也解释了为何warmup是必须的,但这个过程中,模型可能已经到了一个比较坏的状态。
目前深层网络的训练可由pre-norm方式进行缓解,其将LN放入block内,使得整体的模型更加接近残差网络的结构,但其也存在着较多的问题,其中最重要的一点就是,他将模型的有效深度变浅了,不利于模型性能的增长。而作者所做的工作为试图移除LN。
Fix Through Initialization
作者提出了一种参数初始化方法,使得模型可以不使用warmup策略和LN,同时使得深层模型可以被很好的训练。
原始的Adam通过滑动平均对参数的二阶矩进行估计,即
而作者想做的即为限制vt的边界,使得参数的更新过程的方差变小,从而更加稳定。该目标可转化为以下目标:
其中,f表示transformer的一层。
利用泰勒展开,我们可以得到下面的式子
今天就先写到这,后面的稍晚再进行更新。