[转载]神经网络偏置项(bias)的设置及作用
[转载]神经网络偏置项(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)的设置及作用的更多相关文章
- 神经网络中的偏置项b到底是什么?
原文地址:https://blog.csdn.net/Uwr44UOuQcNsUQb60zk2/article/details/81074408 前言 很多人不明白为什么要在神经网络.逻 ...
- 浅谈神经网络中的bias
1.什么是bias? 偏置单元(bias unit),在有些资料里也称为偏置项(bias term)或者截距项(intercept term),它其实就是函数的截距,与线性方程 y=wx+b 中的 b ...
- 【转载】 IIS服务器防盗链设置
在实际运行的服务器环境中,我们自己网站中的资源一般不希望被外部网站引用,被外部网站引用IIS网站中的资源文件,一是会加重了服务器的负担,二是占用了你自己服务器的外网带宽资源,因此我们希望防止盗链这种情 ...
- CSS3 GENERATOR可以同时为一个元素完成border-radius、box-shadow、gradient和opacity多项属性的设置
CSS3 GENERATOR可以同时为一个元素完成border-radius.box-shadow.gradient和opacity多项属性的设置 CSS3 GENERATOR 彩蛋爆料直击现场 CS ...
- 【转载】Asp.Net中Cookie对象的作用以及常见属性
Cookie对象是服务器为用户访问存储的特定信息,这些信息一般存储在浏览器中,服务器可以从提交的数据中获取到相应的Cookie信息,Cookie的最大用途在于服务器对用户身份的确认,即票据认证,用户会 ...
- SSIS变量属性中EvaluateAsExpression设置的作用
我们在做SqlServer SSIS包开发的时候,经常会用到SSIS的变量,我们可以使用和修改SSIS变量的值使得SSIS包的逻辑更灵活,如下图所示: 在定义SSIS变量的时候可以使用固定值(如上图中 ...
- rabbitmq qos prefetch count的设置与作用
因为原来使用了MQ作为rpc机制,随着客户交易量越来越大,很多服务器推送行情的压力很大,最近打算重写为批量模式,又重新看了下qos和prefetch设置的作用以确定优化的具体细节. 消费者在开启ack ...
- 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] ...
- spring中的传播性 个人认为就是对方法的设置 其作用能传播到里面包含的方法上
spring中的传播性 个人认为就是对方法的设置 其作用能传播到里面包含的方法上
随机推荐
- JavaWeb_ XML文件
百度百科 传送门 W3school 传送门 XML语言(可扩展标记语言):是一种表示数据的格式,按照xml规则编写的文本文件称为xml文件 Learn 一.编写XML文件 二.DTD约束 三.sche ...
- 原生Js_实现简单选项卡功能
javascript实现选项卡功能,在<script>...</script>中编写代码 实现步骤 a)获得各操作的dom对象: b)在所有按钮对象上添加单击事件: c)设置所 ...
- 缓存区溢出之slmail fuzzing
这是我们的实验环境 kali 172.18.5.118smtp windows2003 172.18.5.117 pop3 110 smtp 25 本机 172.18.5.114 已经知道slma ...
- [CSP-S模拟测试]:迷宫(最短路)
题目传送门(内部题123) 输入格式 输入文件的第一行为四个正整数$n,m,k,d$. 接下来$m$行,每行三个整数$u,v,w$,描述一条无向道路. 输入文件最后一行包含$k$个整数,为$p_0,p ...
- [论文理解] Receptive Field Block Net for Accurate and Fast Object Detection
Receptive Field Block Net for Accurate and Fast Object Detection 简介 本文在SSD基础上提出了RFB Module,利用神经科学的先验 ...
- [C#菜鸟]C# Hook (二) 常用钩子的类型
; //监视和记录输入事件.安装一个挂钩处理过程,对寄送至系统消息队列的输入消息进行纪录 ; //回放用WH_JOURNALRECORD记录事件 ; //键盘钩子,键盘触发消息.WM_KEYUP或WM ...
- EMQTT测试--安装与测试 (windows)
我下载的是windows版 安装 参考http://emqtt.com/docs/install.html 将下载的压缩包解压,我解压到了D盘 命令行窗口,cd到程序目录 控制台模式启动: .\bin ...
- oracle 一张表插入另外一张表 存储过程
----创建存储过程 create or replace procedure inserttest as cursor cs is select id, name, cla, addr, phone, ...
- redis的LRU策略理解
首先看下serverCron中,服务器每次循环执行的时候,都会刷新server.lrulock. int serverCron(struct aeEventLoop *eventLoop, long ...
- 通过JavaScript让页面只刷新一次
1.充分利用地址栏可带参数的选项,用脚本来取得页面间的传递参数,并不需要后台程序的支持. 2.函数名 function reurl(){ url = location.href; //把当前页面的地址 ...