人工智能-深度学习笔记7 神经网络的初始化参数

先来复习下上篇笔记的激活函数,其作用,可以理解为每个网络之间的处理器,但它归属于上一个网络,从上一个网络出来,做一下处理,然后再将输出的数据传到下一个网络或者输出。

作用:提供非线性能力,增加运算简单度,增强鲁棒性(也就是神经网络系统稳定性)。

性质:处处可微分,定义域为负无穷到正无穷, 值域在(-1,1)之间比如(0,1)(-1,1)。

函数:sigmoid函数,tanh函数,Relu函数,Leaky Relu函数。

在激活函数的作用下神经网络进行着梯度下降,前向和后向计算,在后向计算中无可厚非的就是梯度下降问题,如何找到极小值。首要做的就是权重的初始化,有几点是需要注意的:

1.不能初始化为0,因为初始化了就无法学习了,同一层神经元都一样,没有区别,存在对称性。

2.随机生成正态分布的靠近中间的数据,比如截断正态分布,但数据不要太大或者太小,太大了容易造成梯度饱和(想象激活函数图像的两端,基本是平缓的),梯度消失来了。

神经网络的权重初始化为什么要随机?

大家先看下图示的计算:

图示有两个输入特征,n^([0])=2,2个隐藏层单元n^([1])就等于2。 因此与一个隐藏层相关的矩阵,或者说W^([1])是2*2的矩阵,假设把它初始化为0的2*2矩阵,b^([1])也等于 [0 0]^T,把偏置项b初始化为0是合理的,但是把w初始化为0就有问题了。问题是如果按照这样初始化的话,会发现a_1^([1]) 和 a_2^([1])相等,这个两个激活单元就会一样。因为两个隐含单元计算同样的函数,当做反向传播计算时,这会导致dz_1^([1]) 和 dz_2^([1])也会一样,对称这些隐含单元会初始化得一样,这样输出的权值也会一模一样,由此W^([2])等于[0 0]。如果这样初始化这个神经网络,那么这两个隐含单元就会完全一样,因此他们完全对称,也就意味着计算同样的函数,并且肯定的是最终经过每次训练的迭代,这两个隐含单元仍然是同一个函数,令人困惑。

dW也会是一个这样的矩阵,每一行有同样的值,因此在做权重更新时,把权重W^([1])⟹W^([1])-adW每次迭代后的W^([1]),第一行等于第二行。由此可以推导,如果把权重都初始化为0,那么由于隐含单元开始计算同一个函数,所有的隐含单元就会对输出单元有同样的影响。一次迭代后同样的表达式结果仍然是相同的,即隐含单元仍是对称的。两次、三次、无论多少次迭代,不管训练网络多长时间,隐含单元仍然计算的是同样的函数。因此这种情况下超过1个隐含单元也没什么意义,因为他们计算同样的东西。当然更大的网络,比如有3个特征,还有相当多的隐含单元。如果要初始化成0,由于所有的隐含单元都是对称的,无论运行梯度下降多久,他们一直计算同样的函数。这没有任何帮助,因为目的是想要两个不同的隐含单元计算不同的函数,这个问题的解决方法就是随机初始化参数。

通常的做法是这样的:

把W^([1])设为np.random.randn(2,2)(生成高斯分布),通常再乘上一个小的数,比如0.01,这样把它初始化为很小的随机数。然后b没有这个对称的问题(叫做symmetry breaking problem),所以可以把 b 初始化为0,因为只要随机初始化W你就有不同的隐含单元计算不同的东西,因此不会有symmetry breaking问题了。相似的,对于W^([2])是可以随机初始化的,b^([2])可以初始化为0。

但这个常数从哪里来,为什么是0.01,而不是100或者1000。通常倾向于初始化为很小的随机数,那是因为如果用tanh或者sigmoid激活函数,或者说只在输出层有一个Sigmoid,如果(数值)波动太大,当计算激活值时z^([1])=W^([1]) x+b^([1]) , a^([1])=σ(z^([1]))=g^([1]) (z^([1])),如果W很大,z就会很大。z的一些值a就会很大或者很小,在此情况下很可能停在tanh/sigmoid函数的平坦的地方,这些地方梯度很小也就意味着梯度下降会很慢,因此学习也就很慢。如果w很大,那么很可能最终停在(甚至在训练刚刚开始的时候)z很大的值,这就会造成tanh/Sigmoid激活函数饱和在龟速的学习上。

事实上有时有比0.01更好的常数,当训练一个只有一两层隐藏层的浅层神经网络时,设为0.01可能也是可以的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值