神经网络激励函数的作用是什么

ps:http://www.zhihu.com/question/22334626/answer/21036590

激活函数是用来加入非线性因素的,因为线性模型的表达能力不够。

以下,同种颜色为同类数据。

某些数据是线性可分的,意思是,可以用一条直线将数据分开。比如下图:



这时候你需要通过一定的机器学习的方法,比如感知机算法(perceptron learning algorithm) 找到一个合适的线性方程。

但是有些数据不是线性可分的。比如如下数据:


第二组数据你就没有办法画出一条直线来将数据区分开。

这时候有两个办法,第一个办法,是做线性变换(linear transformation),比如讲x,y变成x^2,y^2,这样可以画出圆形。如图所示:

如果将坐标轴从x,y变为以x^2,y^2为标准,你会发现数据经过变换后是线性可分的了。大致示意图如下:
另外一种方法是引入非线性函数。我们来看异或问题(xor problem)。以下是xor真值表


这个真值表不是线性可分的,所以不能使用线性模型,如图所示

我们可以设计一种神经网络,通过激活函数来使得这组数据线性可分。
激活函数我们选择阀值函数(threshold function),也就是大于某个值输出1(被激活了),小于等于则输出0(没有激活)。这个函数是非线性函数。

神经网络示意图如下:


其中直线上的数字为权重。圆圈中的数字为阀值。第二层,如果输入大于1.5则输出1,否则0;第三层,如果输入大于0.5,则输出1,否则0.

我们来一步步算。

第一层到第二层(阀值1.5)


第二层到第三层(阀值0.5)

可以看到第三层输出就是我们所要的xor的答案。

经过变换后的数据是线性可分的(n维,比如本例中可以用平面),如图所示:


总而言之,激活函数可以引入非线性因素,解决线性模型所不能解决的问题。

posted on 2015-04-12 14:35  会敲键盘的猩猩  阅读(2203)  评论(0编辑  收藏  举报