神经网络中w,b参数的作用(为何需要偏置b的解释)
http://blog.csdn.net/xwd18280820053/article/details/70681750
可视图讲解神经元w,b参数的作用
在我们接触神经网络过程中,很容易看到就是这样一个式子,g(wx+b),其中w,x均为向量.比如下图所示:
加入激活函数为g(x),我们就可以用公式g(w1x1+w2x2+b)(注:1,2均为下标,公众号很难打,下面所有的公式均是)来表示神经元的输出。
其中b为神经元的偏置.那么w,b这些参数的作用有没有最直观的感受呢?以及我当时学习的时候问师兄的,每个神经元为什么要加上偏置b,不加又有什么后果呢?
下面通过二维可视化图来直观说明一下它们的作用:
加入我们激活函数用的是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,就还是上面的分类问题,假如我现在的样本点是如下这种:
此时我们希望得到的线性方程分割线是下面这种,能够正确的将俩类进行分开:
到这个时候,我想我们已经明白了,如果没有偏置的话,我们所有的分割线都是经过原点的,但是现实问题并不会那么如我们所愿.都是能够是经过原点线性可分的。
神经网络中w,b参数的作用(为何需要偏置b的解释)的更多相关文章
- 如何选取一个神经网络中的超参数hyper-parameters
1.什么是超参数 所谓超参数,就是机器学习模型里面的框架参数.比如聚类方法里面类的个数,或者话题模型里面话题的个数等等,都称为超参数.它们跟训练过程中学习的参数(权重)是不一样的,通常是手工设定的,经 ...
- Jquery中Ajax异步请求中的async参数的作用
之前不知道这个参数的作用,上网找了前辈的博客,在此收录到自己的博客,希望能帮到更多的朋友: test.html <a href="javascript:void(0)" on ...
- (转)AS3 中,Function.apply、call中第一个参数的作用;与什么时候用
http://blog.csdn.net/linjf520/article/details/8746064 大家在使用Function.apply或是call时,是否发现,第一个参数不知道怎么用,赋值 ...
- Java中final修饰参数的作用
在方法参数前面加final关键字就是为了防止数据在方法体中被修改. 主要分两种情况:第一,用final修饰基本数据类型:第二,用final修饰引用类型. 第一种情况,修饰基本类型(非引用类型).这时参 ...
- 【转载】 【Tensorflow】卷积神经网络中strides的参数
原文地址: https://blog.csdn.net/TwT520Ly/article/details/79540251 http://blog.csdn.net/TwT520Ly -------- ...
- pytorch的函数中的group参数的作用
1.当设置group=1时: conv = nn.Conv2d(in_channels=, out_channels=, kernel_size=, groups=) conv.weight.data ...
- ListView的监听器中OnItemClick各个参数的作用
方法的原型如下 public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3){ } 后面有4个参 ...
- pytorch的函数中的dilation参数的作用
如果我们设置的dilation=0的话,效果如图: 蓝色为输入,绿色为输出,可见卷积核为3*3的卷积核 如果我们设置的是dilation=1,那么效果如图: 蓝色为输入,绿色为输出,卷积核仍为3*3, ...
- 浅谈神经网络中的bias
1.什么是bias? 偏置单元(bias unit),在有些资料里也称为偏置项(bias term)或者截距项(intercept term),它其实就是函数的截距,与线性方程 y=wx+b 中的 b ...
随机推荐
- Linux基础学习(14)--日志管理
第十四章——日志管理 一.日志管理简介 1.日志服务: 2.常见日志的作用: 二. rsyslogd日志服务 1.日志文件格式: 2./etc/rsyslog.conf配置文件: 三.日志轮替 1.日 ...
- php2
session //将用户的会话数据存储在服务端,通过 session_start()开启session,通过$_SESSION读写session session_start(); //开启ses ...
- PCIE
---恢复内容开始--- 高速差分总线.串行总线 每一条PCIe链路中只能连接两个设备这两个设备互为是数据发送端和数据接收端.PCIe链路可以由多条Lane组成,目前PCIe链路×1.×2.×4.×8 ...
- mysql,mybatis模糊查询
<if test="deviceType != null and deviceType != ''">and device_type like CONCAT('%', ...
- zabbix自动注册
实现方法是: 第一: 选择动作-->事件源-->自动注册-->创建动作 第二: 动作-->触发条件-->主机元数据-->contains-->Linux 第四 ...
- Java中的CopyOnWrite
CopyOnWrite简称COW,是一种程序设计的一种优化的策略方法,他开始的思想就是大家一起共享一件东西或商品,当一个人想要改这个事物原有的状态时,会重新复制一份出去,然后再新的事物上面改他所需要的 ...
- JPA save新增问题
前台传递json,有关联表的情况下 { //主键 "pId" : 0, "platformId" : 0, "poNo" : "p ...
- Codeforces1073E Segment Sum 【数位DP】
题目分析: 裸的数位DP,注意细节. #include<bits/stdc++.h> using namespace std; ; int k; ][],sz[][],cnt[][]; ] ...
- RMQ--ST表
RMQ即区间最值查询,是指这样一个问题:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j之间的最小/大值. ST表既ST算法是一个非常有名的在线处 ...
- ☆ [HDU2157] How many ways?? 「矩阵乘法求路径方案数」
传送门:>Here< 题意:给出一张有向图,问从点A到点B恰好经过k个点(包括终点)的路径方案数 解题思路 一道矩阵乘法的好题!妙哉~ 话说把矩阵乘法放在图上好神奇,那么跟矩阵唯一有关的就 ...