首页 » 信息技术 »

如何初始化weights和bias?

2018年12月18日 / 163次阅读

  • 打开支付宝,搜索“ 529018372 ”,领取专属红包!每日支付每日领。

初始化神经网络中神经元的weights和bias,方法多种多样,但有一些讲究。核心思想是:通过合理的初始化,来加速hidden layer的学习。

使用softmax可以加速output layer的学习,但是在BP算法中,从output layer向后传递“差错”时,要乘以一个神经元针对weighted input(z)的偏导数。如果是sigmoid,或者tanh神经元,这个偏导数的值可能会导致“差错”传递到hidden layser会变得很小很小,导致网络学习得很慢很慢。其实,这也是梯度消失的原理,这应该也是现在大家都是用reLU神经元的原因。

以下是三种主要的神经元激活函数的图形:

三种主要的神经元激活函数的图形

三种主要的神经元激活函数的图形

如果z的值很大,或很小,sigmoid和tanh函数的导数就非常小,就会导致“差错”被缩小后传递,影响前面的layer的学习效率。

初始化weights和bias的目标,就是让计算出来的weighted input的值,在0附近,这样可以加速hidden layer的学习。

一般都是采用符合正态分布的随机数np.random.randn来给weight和bias赋值,然后再除以一个数,这个数最好是跟前一层神经元的数量相关,或者直接除以一个很大的数,也未尝不可。

不过,初始化weight和bias,不能将其全部设为0,这样所有神经元的学习都是一样的,Ng老师说,随机设置weight和bias,这叫做symmetry breaking(打破平衡)。

本文链接:http://www.maixj.net/ict/weights-bias-19680

相关文章

留言区

《如何初始化weights和bias?》有1条留言

电子邮件地址不会被公开。 必填项已用*标注

  • 麦新杰

    数据的normalization也是一个加速学习的维度,最终目的都是让神经元的计算结果在0附近。 [回复]


前一篇:
后一篇:
推一篇:可靠正规,长期稳定,网络兼职项目!!

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top