[转载]神经网络偏置项(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. JavaWeb_Get和Post方法传输数据区别

    Get方法和Post方法传输数据区别: 传送门 GET在浏览器回退时是无害的,而POST会再次提交请求 GET产生的URL地址可以被Bookmark,而POST不可以 GET请求会被浏览器主动cach ...

  2. 微信小程序_(视图)简单的scroll-view容器

    scroll-view容器效果 官方文档:传送门 scroll-view 可滚动视图区域 scroll-x Boolean false 允许横向滚动 scroll-y Boolean false 允许 ...

  3. java命令--jstack 工具【转载】

    一.介绍 jstack是java虚拟机自带的一种堆栈跟踪工具.jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项&qu ...

  4. 大哥带的JavaScript伪协议

    将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中.这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的 ...

  5. C++入门经典-关于extern变量

    1:extern用于解决使用非本源文件的全局变量. 例如:在sample1.cpp中 int a,b; /*外部变来那个定义*/ char c; void main() { cout<<a ...

  6. docker—tomcat 报错:Failed to get D-Bus connection: Operation not permitted

    docker search centos   查系统镜像 docker pull docker.io/centos 进入容器 [root@git opt]# docker images REPOSIT ...

  7. Let a mthod in RestControl return a json string

    The get method of EmpControl package com.hy.empcloud; import java.util.List; import org.springframew ...

  8. php array function

    说明:不特殊说明都支持php4,5,7 参考:https://www.php.net/manual/zh/ref.array.php   is_array ( mixed $var ) : bool ...

  9. flutter ListView嵌套高度问题

    ListView嵌套时高度无法自适应,需要设置高度才可以显示,设置以下属性可以解决上述问题 shrinkWrap: true, physics: NeverScrollableScrollPhysic ...

  10. OpenStack 虚拟机冷/热迁移功能实践与流程分析

    目录 文章目录 目录 前文列表 虚拟机迁移的应用场景 需要迁移的虚拟机数据类型 虚拟机迁移的存储场景 文件存储 块存储 非共享存储 迁移的类型 迁移的方式 执行虚拟机冷迁移 冷迁移日志分析 执行虚拟机 ...