bias偏置项(bias term)

bias偏置项(bias term)或者称为截距项(intercept term)

简称b

它其实就是函数的截距,与线性方程y = wx + b中的b的意义是一样的。

在y = wx + b中,b表示函数在y轴上的截距,控制着函数偏离原点的距离,其实在神经网络中的偏置单元也是类似的作用。

因此,神经网络的参数也可以表示为:(w,b)

w表示参数矩阵,b表示偏置项或截距项。

那么,有个疑问,神经网络中,加上bias是如何让网络变得更灵活?

因此,通常网络都会使用bias,但并不是必须,对于网络性能的影响并不是很显著(除非网络太小导致拟合能力太差)。同时在有些场合里,bias的使用也没有意义。比如在batch normalization层之前的层就没必要加,因为会被归一化抵消掉。

实际上,bias相当于多了一个参数。在增加网络少量拟合能力的情况下,bias和其他普通权值相比无论前向还是后向,计算上都要简单,因为只需要一次加法。同时,bias与其它权值的区别在于,其对于输出的影响与输入无关,能够使网络的输出进行整体地调整,算是另一维自由度吧。放在二维上,权值相当于直线地斜率,而bias相当于截距,这二者都是直线参数地一部分,并没有必要区别对待。

卷积之后,如果要接BN操作,最好是不设置偏置,因为不起作用,而且占显卡内存。

其中x1 = x0 * w0 + b0,而E【x1】= E【x0 * w0】+ b0,所以对于分子而言,加没加偏置,没有影响。

而对于下面分母而言,因为Var是方差操作,所以也没有影响(为什么没影响,回头问问你的数学老师就知道了)

所以,卷积之后,如果要接BN操作。最好是不设置偏置。因为不起作用,而且占显卡内存。

bias的计算方式?

神经网络结构中对偏置单元的计算处理方式有两种。

(1)设置偏置单元=1

并在参数矩阵中设置第0列对应偏置单元的参数,对应的神经网络如下:

其中,

x0是第一层的偏置单元(设置为1),θ(1)是对应该偏置单元x0的参数,a(2)是第二层的偏置单元,θ(2)是对应的参数。

相当于bias本身值为1,但它连接各个神经元的权值不为1,即整个神经网络只有1个bias,对应有多个不同的权重(权重个数等于hide层和out层神经元的个数)

(2)设置偏置单元,不在参数矩阵中设置对应偏置单元的参数,对应的神经网络如下:

在计算激活值时按照:

其中,

b(1)是w(1)对应的偏置单元向量

b(2)是w(2)对应的偏置单元向量

b(1)是对应a(2)的偏置单元

注意,此时神经网络的参数表示更改为:(W,b)

相当于bias连接各个神经元的所有权重都为1,但bias本身不为1

即......有多个bias,但所有的bias对应的权重都为1,bias的个数等于hide层和out层神经元的个数。

综上,两者的

原理是一致的,只是具体的实现方式不同。

其实在大部分资料和论文中看到的神经网络的参数都是表示为:(W,b),其中W代表weight,b代表bias,包括在UFLDL Tutorial中也是采用(W,b)表示。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值