[转载]神经网络偏置项(bias)的设置及作用


原文来自:https://www.cnblogs.com/shuaishuaidefeizhu/p/6832541.html

1、什么是bias?

偏置单元(bias unit),在有些资料里也称为偏置项(bias term)或者截距项(intercept term),它其实就是函数的截距,与线性方程 y=wx+b 中的 b 的意义是一致的。在 y=wx+b中,b表示函数在y轴上的截距,控制着函数偏离原点的距离,其实在神经网络中的偏置单元也是类似的作用。
因此,神经网络的参数也可以表示为:(W, b),其中W表示参数矩阵,b表示偏置项或截距项。

2、bias的计算方式?

 神经网络结构中对偏置单元的计算处理方式有两种,
 (1)设置偏置单元=1,并在参数矩阵 Θ 中设置第 0 列对应偏置单元的参数,对应的神经网络如下:
 
 其中,x0 是第一层的偏置单元(设置为1),Θ(1)10 是对应该偏置单元 x0 的参数;a(2)0 是第二层的偏置单元,Θ(2)10 是对应的参数。
 在计算激活值时按照(以a(2)1为例):
 

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

 (2)设置偏置单元,不在参数矩阵中设置对应偏置单元的参数,对应的神经网络如下:
 
 其中,b(1) 是 W(1) 对应的偏置单元向量,b(2) 是 W(2) 对应的偏置单元向量,b(1)1 是对应 a(2)1 的偏置单元。注意,此时神经网络的参数表示更改为:(W, b)
 在计算激活值时按照:
 

相当于bias连接各个神经元的所有权重都为1,但bias本身不为1,即---有多个bias,但所有的bias对应的权重都为1(bias的个数等于hide层和out层神经元的个数)

 综上,
 两者的原理是一致的,只是具体的实现方式不同。
 其实在大部分资料和论文中看到的神经网络的参数都是表示为:(W, b),其中W代表weight,b代表bias。包括在UFLDL Tutorial中也是采用 (W, b) 表示,只是在Coursera上Andrew Ng老师的在线教程中看到将神经网络参数表示为 Θ,个人还是更喜欢 (W, b) 这种表示,很清晰。


原文来源:https://blog.csdn.net/xwd18280820053/article/details/70681750

加入我们激活函数用的是 sigmoid 函数,它的图像如下:

我们很容易看到 sigmoid 函数的作用是将输入映射到一个 (0,1) 的输出范围

现在我们还是有一个简单的任务,需要将下面三角形和圆形进行分类:

利用上面神经元训练可以得到一个直线,去线性分开这些数据点. 方程如下:

w1x1+w2x2+b=0,我们就可以得到下面这条类似的直线去线性分割好俩种不同类型的数据点.

那么这条边界找到了. 而这个边界是 w1x1+w2x2+b=0 的方程,而 w1x1+w2x2+b 是作为激活函数 sigmoid 的输入处理.

激活函数将这个输入映射到 (0,1) 的范围内. 那么可以增加一个维度来表示激活函数的输出.

我们认为 g(x)>0.5 就为正类(这里指圆形),g(x)<0.5 就为负类,这里指三角形类. 得到的三维图如下:第三维 z 可以看成是一种类别!(比如圆形就是 + 1、三角形就是 - 1)

图来自:Hugo Larochelle 课程 ppt

那么就可以真正的可视化说明一下 w.b 等参数的作用在图中是怎么体现的~

我们从上图很容易得到,当我们将这个三维图进行投影的时候,就是我们上个用直线分割好俩类的平面图,三维图中的那个分割平面投影下来就是方程 w1x1+w2x2+b=0.

右边输出为 1 的部分就是说 w1x1+w2x2+b>0, 导致激活函数输出 > 0.5,从而分为正类( 圆形类), 左边输出为 - 1 的部分就是说 w1x1+w2x2+b<0, 导致激活函数输出 < 0.5,从而分为负类( 三角形类)

1 w 参数的作用

其中 w 参数的作用,我们可以得到,是决定那个分割平面的方向所在. 分割平面的投影就是直线 w1x1+w2x2+b=0

我们解释如下,在二个输入中,可以得到 w=[w1,w2], 令方程 w1x1+w2x2+b=0,那么该直线的斜率就是 - w1/w2。随着 w1,w2 的变动,直线的方向也在改变,那么分割平面的方向也在改变~

2 b 参数的作用

其中 b 参数的作用,是决定竖直平面沿着垂直于直线方向移动的距离,当 b>0 的时候,直线往左边移动,当 b<0 的时候,直线往右边移动.

我们通过例子解释如下:首先我们可以肯定是直线方向不变,因为我们没有动斜率的任何参数,只是改变 b,要说明的就是为什么当 b>0 的时候,直线往左边移动,当 b<0 的时候,直线往右边移动.

假设我们有直线方程 x1+x2-3=0, 画出这个图像如下:

此时我们将 b 减小到 0,图像变为如下:

我们从上面图像中很容易得到结论:

当 b>0 的时候,直线往左边移动,当 b<0 的时候,直线往右边移动.

有了 b 参数可视化作用之后,我们很容易解决我一开始的问题. 每个神经元为什么要加上偏置 b, 不加又有什么后果呢?下面通过二维可视化图来直观说明一下它们的作用:

3 每个神经元为什么要加上偏置

我先不说为什么一定要加入偏置 b, 就还是上面的分类问题,假如我现在的样本点是如下这种:

原文来自:https://www.cnblogs.com/shuaishuaidefeizhu/p/6832541.html

1、什么是bias?

偏置单元(bias unit),在有些资料里也称为偏置项(bias term)或者截距项(intercept term),它其实就是函数的截距,与线性方程 y=wx+b 中的 b 的意义是一致的。在 y=wx+b中,b表示函数在y轴上的截距,控制着函数偏离原点的距离,其实在神经网络中的偏置单元也是类似的作用。
因此,神经网络的参数也可以表示为:(W, b),其中W表示参数矩阵,b表示偏置项或截距项。

2、bias的计算方式?

 神经网络结构中对偏置单元的计算处理方式有两种,
 (1)设置偏置单元=1,并在参数矩阵 Θ 中设置第 0 列对应偏置单元的参数,对应的神经网络如下:
 
 其中,x0 是第一层的偏置单元(设置为1),Θ(1)10 是对应该偏置单元 x0 的参数;a(2)0 是第二层的偏置单元,Θ(2)10 是对应的参数。
 在计算激活值时按照(以a(2)1为例):
 

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

 (2)设置偏置单元,不在参数矩阵中设置对应偏置单元的参数,对应的神经网络如下:
 
 其中,b(1) 是 W(1) 对应的偏置单元向量,b(2) 是 W(2) 对应的偏置单元向量,b(1)1 是对应 a(2)1 的偏置单元。注意,此时神经网络的参数表示更改为:(W, b)
 在计算激活值时按照:
 

相当于bias连接各个神经元的所有权重都为1,但bias本身不为1,即---有多个bias,但所有的bias对应的权重都为1(bias的个数等于hide层和out层神经元的个数)

 综上,
 两者的原理是一致的,只是具体的实现方式不同。
 其实在大部分资料和论文中看到的神经网络的参数都是表示为:(W, b),其中W代表weight,b代表bias。包括在UFLDL Tutorial中也是采用 (W, b) 表示,只是在Coursera上Andrew Ng老师的在线教程中看到将神经网络参数表示为 Θ,个人还是更喜欢 (W, b) 这种表示,很清晰。

原文来源:https://blog.csdn.net/xwd18280820053/article/details/70681750

加入我们激活函数用的是 sigmoid 函数,它的图像如下:

我们很容易看到 sigmoid 函数的作用是将输入映射到一个 (0,1) 的输出范围

现在我们还是有一个简单的任务,需要将下面三角形和圆形进行分类:

利用上面神经元训练可以得到一个直线,去线性分开这些数据点. 方程如下:

w1x1+w2x2+b=0,我们就可以得到下面这条类似的直线去线性分割好俩种不同类型的数据点.

那么这条边界找到了. 而这个边界是 w1x1+w2x2+b=0 的方程,而 w1x1+w2x2+b 是作为激活函数 sigmoid 的输入处理.

激活函数将这个输入映射到 (0,1) 的范围内. 那么可以增加一个维度来表示激活函数的输出.

我们认为 g(x)>0.5 就为正类(这里指圆形),g(x)<0.5 就为负类,这里指三角形类. 得到的三维图如下:第三维 z 可以看成是一种类别!(比如圆形就是 + 1、三角形就是 - 1)

图来自:Hugo Larochelle 课程 ppt

那么就可以真正的可视化说明一下 w.b 等参数的作用在图中是怎么体现的~

我们从上图很容易得到,当我们将这个三维图进行投影的时候,就是我们上个用直线分割好俩类的平面图,三维图中的那个分割平面投影下来就是方程 w1x1+w2x2+b=0.

右边输出为 1 的部分就是说 w1x1+w2x2+b>0, 导致激活函数输出 > 0.5,从而分为正类( 圆形类), 左边输出为 - 1 的部分就是说 w1x1+w2x2+b<0, 导致激活函数输出 < 0.5,从而分为负类( 三角形类)

1 w 参数的作用
其中 w 参数的作用,我们可以得到,是决定那个分割平面的方向所在. 分割平面的投影就是直线 w1x1+w2x2+b=0

我们解释如下,在二个输入中,可以得到 w=[w1,w2], 令方程 w1x1+w2x2+b=0,那么该直线的斜率就是 - w1/w2。随着 w1,w2 的变动,直线的方向也在改变,那么分割平面的方向也在改变~

2 b 参数的作用
其中 b 参数的作用,是决定竖直平面沿着垂直于直线方向移动的距离,当 b>0 的时候,直线往左边移动,当 b<0 的时候,直线往右边移动.

我们通过例子解释如下:首先我们可以肯定是直线方向不变,因为我们没有动斜率的任何参数,只是改变 b,要说明的就是为什么当 b>0 的时候,直线往左边移动,当 b<0 的时候,直线往右边移动.

假设我们有直线方程 x1+x2-3=0, 画出这个图像如下:

此时我们将 b 减小到 0,图像变为如下:

我们从上面图像中很容易得到结论:

当 b>0 的时候,直线往左边移动,当 b<0 的时候,直线往右边移动.

有了 b 参数可视化作用之后,我们很容易解决我一开始的问题. 每个神经元为什么要加上偏置 b, 不加又有什么后果呢?下面通过二维可视化图来直观说明一下它们的作用:

3 每个神经元为什么要加上偏置
我先不说为什么一定要加入偏置 b, 就还是上面的分类问题,假如我现在的样本点是如下这种:

此时我们希望得到的线性方程分割线是下面这种,能够正确的将俩类进行分开:

到这个时候,我想我们已经明白了,如果没有偏置的话,我们所有的分割线都是经过原点的,但是现实问题并不会那么如我们所愿. 都是能够是经过原点线性可分的。

[转载]神经网络偏置项(bias)的设置及作用的更多相关文章

  1. 神经网络中的偏置项b到底是什么?

    原文地址:https://blog.csdn.net/Uwr44UOuQcNsUQb60zk2/article/details/81074408 前言        很多人不明白为什么要在神经网络.逻 ...

  2. 浅谈神经网络中的bias

    1.什么是bias? 偏置单元(bias unit),在有些资料里也称为偏置项(bias term)或者截距项(intercept term),它其实就是函数的截距,与线性方程 y=wx+b 中的 b ...

  3. 【转载】 IIS服务器防盗链设置

    在实际运行的服务器环境中,我们自己网站中的资源一般不希望被外部网站引用,被外部网站引用IIS网站中的资源文件,一是会加重了服务器的负担,二是占用了你自己服务器的外网带宽资源,因此我们希望防止盗链这种情 ...

  4. CSS3 GENERATOR可以同时为一个元素完成border-radius、box-shadow、gradient和opacity多项属性的设置

    CSS3 GENERATOR可以同时为一个元素完成border-radius.box-shadow.gradient和opacity多项属性的设置 CSS3 GENERATOR 彩蛋爆料直击现场 CS ...

  5. 【转载】Asp.Net中Cookie对象的作用以及常见属性

    Cookie对象是服务器为用户访问存储的特定信息,这些信息一般存储在浏览器中,服务器可以从提交的数据中获取到相应的Cookie信息,Cookie的最大用途在于服务器对用户身份的确认,即票据认证,用户会 ...

  6. SSIS变量属性中EvaluateAsExpression设置的作用

    我们在做SqlServer SSIS包开发的时候,经常会用到SSIS的变量,我们可以使用和修改SSIS变量的值使得SSIS包的逻辑更灵活,如下图所示: 在定义SSIS变量的时候可以使用固定值(如上图中 ...

  7. rabbitmq qos prefetch count的设置与作用

    因为原来使用了MQ作为rpc机制,随着客户交易量越来越大,很多服务器推送行情的压力很大,最近打算重写为批量模式,又重新看了下qos和prefetch设置的作用以确定优化的具体细节. 消费者在开启ack ...

  8. Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用

    Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用 在串口编程模式下,open未设置O_NONBLOCK或O_NDELAY的情况下. c_cc[VTIME]和c_cc[VMIN] ...

  9. spring中的传播性 个人认为就是对方法的设置 其作用能传播到里面包含的方法上

    spring中的传播性 个人认为就是对方法的设置 其作用能传播到里面包含的方法上

随机推荐

  1. ubuntu E: Could not get lock /var/lib/apt/lists/lock 异常信息

    转载:https://www.cnblogs.com/qq952693358/p/6537846.html 在更换软件源时遇到了如下问题: sudo apt-get update E: Could n ...

  2. is == 编码与解码

    is 和 ==  主要是数字和字符串的比较 1 区别: ==比较的是两边的值     is比较的是两边值的id    id获取的方法 id() 2 小数据池: -5~256 3 字符串中特殊字符有id ...

  3. C++入门经典-例6.2-将二维数组进行行列对换

    1:一维数组的初始化有两种,一种是单个逐一赋值,一种是使用聚合方式赋值.聚合方式的例子如下: int a[3]={1,2,3}; int a[]={1,2,3};//编译器能够获得数组元素的个数 in ...

  4. Apache配置转发

    第一种: LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_htt ...

  5. leetcode-hard-array-54. Spiral Matrix-NO

    mycode 思路:这种方格图一定要预先设置定位的变量,例如最大的长.宽,变化中的长.宽,在while循环中也要不断判断是否满足break条件 class Solution(object): def ...

  6. UVa 839 -- Not so Mobile(树的递归输入)

    UVa 839 Not so Mobile(树的递归输入) 判断一个树状天平是否平衡,每个测试样例每行4个数 wl,dl,wr,dr,当wl*dl=wr*dr时,视为这个天平平衡,当wl或wr等于0是 ...

  7. VMware or VirtualBox+centos7 安装教程

    一.准备工作:1.首次安装虚拟机时,需要的准备工作:打开intel的虚拟技术服务(否则安装centos系统时会报错).重启电脑,显示log时进入BIOS服务(不同电脑进入BIOS方式不同,一般是进入l ...

  8. Windows服务器连接

    公司部分服务器是使用的Windows系统,需要远程连接 首先,我们要做的就是打开一个运行界面.按住win+r. 然后,我们在打开一行里输入mstsc. 这个时候我们点击确定,就会弹出一个远程桌面连接的 ...

  9. 转载----c++ static修饰的函数作用与意义

    static修饰的函数叫做静态函数,静态函数有两种,根据其出现的地方来分类: 如果这个静态函数出现在类里,那么它是一个静态成员函数: 静态成员函数的作用在于:调用这个函数不会访问或者修改任何对象(非s ...

  10. lnmp 环境下 部署 laravel 项目

    出现错误 Warning: require(): open_basedir restriction in effect. File(/xxxx/vendor/autoload.php) is not ...