分享

深度学习参数初始化详细推导:Xavier方法和kaiming方法【二】

 520jefferson 2022-06-27 发布于北京

上一章传送门:深度学习参数初始化详细推导:Xavier方法和kaiming方法【一】

上一章公式更正:

1.2节->“前向传播”中的公式  有误,应该是

2. kaiming初始化

上一章说到Xavier方法并不适用于ReLU函数,但ReLU函数早已经用得越来越广泛,这可怎么办?时代在召唤,kaiming大神出手了,2015年的论文[1]完美解决了这个问题,提出的kaiming初始化方法专门针对ReLU函数及其变种,达到了和Xavier一样的效果,可以说是Xavier的升级版。

这篇论文[1]针对的是CNN结构的网络,主要的贡献一是提出了ReLU的变种PReLU,另一个就是kaiming初始化方法。PReLU不是今天的重点,大概说一下,如下图,很像Leaky ReLU,差别只是参数  不是常数,而是可训练的。

Image

kaiming方法虽然提出来是针对CNN的,但其实完全可以用到普通的DNN中,下面我们的推导先假定是普通的DNN网络,后面再专门讨论CNN的情况。

2.1 符号约定

依旧入乡随俗,数学符号尽量和论文一致。

网络层数为 ,第  层的输入列向量为 ,状态向量为 ,参数矩阵为 ,偏置向量为  为激活函数,则有

2.2 公式推导

所有偏置项  依然是初始化为0;假定  的每个元素在初始化阶段独立同分布,且采样分布为对称分布,均值为0,方差统一记为 ,这样就有 ;再假定  的所有元素也是独立同分布,且  和  相互独立。

前向传播情况

根据 ,有

上式换成方差形式:

由于激活函数是ReLU, 不可能为0,因此 

是对称分布且均值为0,根据  可以得出  也是对称分布的。证明如下:

回顾一下概率论的知识

(1) 设随机变量  和  相互独立,其密度函数分别为  和 ,则  的密度函数为

假定  为对称分布,即 ,则根据上式易知 ,即  也是对称分布的。

(2) 设随机变量  和  相互独立,其密度函数分别为  和 ,则  的密度函数为

假定  和  均为对称分布,即 ,则根据上式有

因此  也为对称分布。

已知  为对称分布,由(1)和(2),易知  也是对称分布。

证毕。

有了  分布的对称性,设  的概率密度函数为 ,激活函数为 ,我们就可以直接算一下 

代入(9)式,就有

然后递归一下,看最后一层  的方差:

为了让各层的  和  相等保持不变,只需要:

严格来讲,对于第一层,即 ,(12)式要把1/2去掉,因为原始的输入  并没有经过ReLU函数,我们假定它是符合对称分布的。不过论文也说了,为了简单,所有层都可以按(12)处理,影响并不大。

后向传播情况

这一部分CNN和DNN有些差异,我这里公式符号不再严格和论文一致,思路是一致的。

损失函数用  表示,对向量  的偏导为  维的行向量:

其中任意一个元素  可以展开如下:

由 ,易知 ,进而

然后计算 , 这里先将  展开

这里  是激活函数ReLU的导函数,根据  的对称分布特性,可知  有50%的概率为1,50%的概率为0。

由  可知  ,因此

代入前面的公式(b)即有

递归下去,便有

因此保持梯度方差稳定,只需要:

同样严格来讲,对于第一层即  来说,约束(16')是不必要的,因为  是原始输入,不需要计算 ,但为了简单和统一,同样让满足(16'),对结果影响可忽略。

两个约束条件的关系

通过前向和后向的分析,我们得到两个约束条件(12)和(16'),和Xavier方法对比一下可以发现只是差了一个常数项1/2。

同样的问题,当各层维度不等时,(12)和(16')无法同时满足,当然也可以像Xavier方法一样整个折衷方案,不过论文里又做了一番分析,认为只要任选一个约束就行。其实也很好理解,比如我们选(16')式成立,即让 ,那么后向传播方差稳定自不必说,看一下前向的情况,公式(11)中的系数变成了

因为连乘都约掉了,这个系数虽然不是1,但也不会随层数指数衰减或增大,只要各层维度相差不要太大,这个系数都可以接受。反过来选(12)成立也是一样的,所以没必要再整折衷方案。这个分析其实对Xavier方法一样是成立的。

还有跟我们在上一章提到的一样,有时我们特意需要缩放方差  倍,只需要将(12)和(16')等式右边的1改成  即可。

2.3 推广到PReLU

2.2的分析都是假设激活函数为ReLU,下面将其推广到PReLU函数。PReLU的形式为:

不是固定常数而是可学习的参数,带下标表示不是全局唯一的,而是可以每层共享同一个(称为channel-shared),或者每个channel都对应一个单独的(称为channel-wise)。不过在初始化阶段我们都用同一个值  初始化所有的 ,所以这时候是等价于Leaky ReLU函数,参数为 。当  时就退化成了ReLU。

前向传播情况

对应2.2,需要修改公式(a):

代入(9)式,就有

所以约束条件(12)变成了

后向传播情况

对应2.2, 变为激活函数PReLU的导函数,根据  的对称分布特性,可知  有50%的概率为1,50%的概率为 。这样就有  有50%的概率为1,50%的概率为 ,即其期望为 。公式(c)修改为

代入公式(b)即有

所以约束条件(16')变成了

2.4 具体实现

因为初始化阶段ReLU可以看作是PReLU在  下的特例,所以我们统一按PReLU处理。

的每个元素  初始化采用均值为0的分布,且要求方差相同,满足约束(12-PReLU)或约束(16’-PReLU)。通常采用均匀分布或正态分布,以(12-PReLU)式为例,具体为:

PyTorch中提供了这两个初始化函数:

torch.nn.init.kaiming_uniform_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu')

torch.nn.init.kaiming_normal_(tensor, a=0, mode='fan_in', nonlinearity='leaky_relu')

参数mode可选fan_in和fan_out,fan_in对应前向,fan_out对应后向。

2.5 CNN的情况

一图胜千言,我这里画了个示意图,将CNN的卷积过程转换为类似于DNN的矩阵相乘运算。

Image

原始论文中是针对CNN网络,跟我前面推导的主要差异在于  和  的意义不同,论文中对应的符号是  和 

对于普通的DNN网络,  和  的意义很简单,就是第  层的输入和输出维度, 同时也是第  层的输入维度。

对于CNN网络,比较复杂,论文中给出的 ,其中  来自于第  层filter的尺寸  为输入channel数量。 就对应于上图  矩阵列数,具体为 ,filter尺寸为 ,输入channel数量为3。

前向过程

看论文中公式(7) 

为列向量,维度就是 ,对应图中  矩阵的一行,。我画图为了方便,改成了行向量,包括  和 ,可以理解为都是转置的关系。

维度为 ,即 ,对应图中 ,转置关系。 为fitler数量,对应图中为2,也就是下一层网络的输入channel数量,因此有 

为列向量,维度是 ,对应图中  矩阵的列数,为2。

后向过程

看论文中公式(13) 

和  分别表示  和  的列向量形式,按我之前的约定,就是:

维度为  维度为  维度为 

注意,这里的  和前向过程的完全不是一个概念。对照图,我们可以这么理解,对于这一层的输入图像  的一个非边缘像素点 (上图为了简单,输入尺寸很小只有 ,导致只有一个点非边缘,实际场景尺寸一般大得多,非边缘点占大多数),维度为输入channel数 ,这个像素点在前向传播中被每个filter做  次卷积, 个filter就一共做  次卷积,每次卷积都会参与到一个不同的  的更新运算,一共参与  个  的运算,在此图中恰好覆盖了  的所有元素,展开成向量就是

对应的矩阵为 ,即维度为 ,图中没有画出,其实还是图中  矩阵里的那些元素,只是需要重新排列一下。

因此有

上式正是论文中的公式(13)。

两个约束条件的关系

弄清楚了  和  的含义,其他就和2.2的推导没啥太大差别了。

而且因为  和 ,当我们按论文中约束公式(16)初始化时,即 ,公式(11)的系数

同样不会随层数指数衰减或增大,是个可接受的值,跟2.2结论一致。

参考文献

[1] He K, Zhang X, Ren S, et al. Delving deep into rectifiers: Surpassing human-level performance on imagenet classification[C]//Proceedings of the IEEE international conference on computer vision. 2015: 1026-1034.

都看到这儿了,何不关注一下Image

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多