美文网首页Deep Learning
part1-3.11随机初始化

part1-3.11随机初始化

作者: 透明的红萝卜123 | 来源:发表于2019-02-05 23:53 被阅读0次

当你训练神经网络时,权重随机初始化是很重要的。对于逻辑回归,把权重初始化为0当然也是可以的。但是对于一个神经网络,如果你把权重或者参数都初始化为0,那么梯度下降将不会起作用。

为什么罗辑回归没事?
因为当是神经网络的时候,是整个向量的a重复一样。而罗辑回归只有一个z,一个a。

如果你这样初始化这个神经网络,那么这两个隐含单元就会完全一样,因此他们完全对称,也就意味着计算同样的函数,并且肯定的是最终经过每次训练的迭代,这两个隐含单元仍然是同一个函数,令人困惑。dW会是一个这样的矩阵,每一行有同样的值因此我们做权重更新把权重W^([1])⟹W^([1])-adW每次迭代后的W^([1]),第一行等于第二行。

由此可以推导,如果你把权重都初始化为0,那么由于隐含单元开始计算同一个函数,所有的隐含单元就会对输出单元有同样的影响。一次迭代后同样的表达式结果仍然是相同的,即隐含单元仍是对称的。通过推导,两次、三次、无论多少次迭代,不管你训练网络多长时间,隐含单元仍然计算的是同样的函数。因此这种情况下超过1个隐含单元也没什么意义,因为他们计算同样的东西。当然更大的网络,比如你有3个特征,还有相当多的隐含单元。

如何初始化参数w

如果你要初始化成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函数的平坦的地方(见图3.8.2),这些地方梯度很小也就意味着梯度下降会很慢,因此学习也就很慢。

回顾一下:如果w很大,那么你很可能最终停在(甚至在训练刚刚开始的时候)z很大的值,这会造成tanh/Sigmoid激活函数饱和在龟速的学习上,如果你没有sigmoid/tanh激活函数在你整个的神经网络里,就不成问题。但如果你做二分类并且你的输出单元是Sigmoid函数,那么你不会想让初始参数太大,因此这就是为什么乘上0.01或者其他一些小数是合理的尝试。对于w^([2])一样,就是np.random.randn((1,2)),我猜会是乘以0.01。

事实上有时有比0.01更好的常数,当你训练一个只有一层隐藏层的网络时(这是相对浅的神经网络,没有太多的隐藏层),设为0.01可能也可以。但当你训练一个非常非常深的神经网络,你可能会选择一个不同于的常数而不是0.01。下一节课我们会讨论怎么并且何时去选择一个不同于0.01的常数,但是无论如何它通常都会是个相对小的数。

相关文章

  • part1-3.11随机初始化

    当你训练神经网络时,权重随机初始化是很重要的。对于逻辑回归,把权重初始化为0当然也是可以的。但是对于一个神经网络,...

  • Confetti效果实现

    构建confetti粒子对象 随机初始化x的坐标,y的坐标是在屏幕的上方初始化,随机初始化宽度随机初始化倾斜长度 ...

  • 权重初始化

    全0初始化。 随机初始化(高斯随机化、均匀随机化)。 稀疏随机化(将权重全部初始化为0,然后为了打破对称性在里面随...

  • 吴恩达深度学习笔记(21)-神经网络的权重初始化为什么要随机?

    随机初始化(Random+Initialization) 当你训练神经网络时,权重随机初始化是很重要的。 对于逻辑...

  • 损失函数不变

    损失函数不变 cost 由300降到1.8后维持不变 怀疑 权重初始化错误 正确,初始化失败,未能随机初始化时乘以...

  • Random Number

    随机数生成 如下每次执行 sess.run(random) 都会生成不同的随机数 随机初始化 如上所定义的para...

  • 权重初始化方法

    常用的初始化方法:全0初始化、随机初始化 全0初始化 在线性回归、逻辑回归这类简单模型中全0初始化一般是work的...

  • tensorflow运作方式

    定义变量,初始化,一般初始化随机值,或者常值 保存变量 恢复变量 保存部分变量 恢复变量

  • ios 随机数

    random() random()不是一个真正的伪随机数发生器,因此在使用前必须初始化随机种子,否则每次生成的随机...

  • 随机初始化(Random initialization)

    对于随机初始化,有一种常用的办法: 随机选K个训练样本,然后以它们为聚类中心: 局部最优: 如何避免,随机化多次,...

网友评论

    本文标题:part1-3.11随机初始化

    本文链接:https://www.haomeiwen.com/subject/lfrbsqtx.html