开发者社区  >  技术专题  >  自然语言处理

可视图讲解神经元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)


那么就可以真正的可视化说明一下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,就还是上面的分类问题,假如我现在的样本点是如下这种:


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


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

那么我们加入偏置的作用可以理解为增强了神经元的表达能力.到这里为止,已经全部解释完了上面的问题,欢迎大家交流指错~

参考自:Hugo Larochelle  教授的深度学习课程

感谢德川的交流~




精彩评论