最新公告
  • 欢迎您光临欧资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 随机初始化(Random+Initialization)当你训练神经网络时时

    随机+初始化

    训练神经网络时,随机初始化权重很重要。

    对于逻辑回归,当然可以将权重初始化为 0。

    但是对于神经网络,如果将权重或参数初始化为 0,那么梯度下降将不起作用。

    让我们看看这是为什么?

    有两个输入特征,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 就没有这个对称性问题(称为对称性破坏问题),所以可以将 b 初始化为 0,因为只要随机初始化 W,就有不同的隐式单元计算不同的东西,所以不会有对称性断裂问题。同样,对于 W^([2]) 可以随机初始化,b^([2]) 可以初始化为 0。

    W^[1] =np.random.randn(2,2) * 0.01 ,
    b^([1])=np.zeros((2,1)) 
    W^([2])=np.random.randn(2,2) * 0.01 , 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 激活函数在海龟速度学习时饱和,

    如果你的整个神经网络中没有 sigmoid/tanh 激活函数,那不是问题。

    但是如果你正在做二进制分类并且你的输出单元是一个 sigmoid 函数,那么你不想让初始参数太大,所以这就是为什么乘以 0.01 或其他一些小数是一个合理的尝试. w^([2]) 也一样,也就是 np.random.randn((1,2)),我猜它会乘以 0.01。

    事实上有时会有比 0.01 更好的常数,当你训练一个只有一个隐藏层的网络(一个没有太多隐藏层的相对浅的神经网络)时,将其设置为 0. 01 也可以工作.

    但是当你训练一个非常非常深的神经网络时,你可能会选择一个不同于 0.01 的常数。

    那么如何设置常数呢?这将在深度学习网络的下一章中进一步解释!

    点击关注,继续更新……

    站内大部分资源收集于网络,若侵犯了您的合法权益,请联系我们删除!
    欧资源网 » 随机初始化(Random+Initialization)当你训练神经网络时时

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    欧资源网
    一个高级程序员模板开发平台

    发表评论