会敲代码的猩猩:神经网络激励函数的作用是什么?

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

          今天打车去大行宫,路过九华山隧道,和司机聊天论2016 10房价去47回46 GCD最坏了房地产现在支柱产业,农村户口越来越值钱,十年以后房地产不行了搞粮食涨价0.5元什么概念?民以食为天!

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

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

某些数据是线性可分的,意思是,可以用一条直线将数据分开。比如下图:
id="iframe_0.8969219627324492" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://pic2.zhimg.com/afdef2420ca2bb8d5972f33d6d433e9d_b.jpg?_=4419494%22%20style=%22border:none;max-width:605px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.8969219627324492',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no" style="border-style: none; border-width: initial; width: 600px; height: 450px;">


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

但是有些数据不是线性可分的。比如如下数据:
id="iframe_0.3497274585533887" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://pic2.zhimg.com/1e948404d2f9d212028f0184f8ef4f59_b.jpg?_=4419494%22%20style=%22border:none;max-width:605px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.3497274585533887',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no" style="border-style: none; border-width: initial; width: 600px; height: 450px;">

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

这时候有两个办法,第一个办法,是做线性变换(linear transformation),比如讲x,y变成x^2,y^2,这样可以画出圆形。如图所示:
id="iframe_0.6295968750491738" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://pic4.zhimg.com/7c88498a754cc7766217e2a57370be03_b.jpg?_=4419494%22%20style=%22border:none;max-width:605px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.6295968750491738',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no" style="border-style: none; border-width: initial; width: 600px; height: 450px;">
如果将坐标轴从x,y变为以x^2,y^2为标准,你会发现数据经过变换后是线性可分的了。大致示意图如下:
id="iframe_0.6561134499497712" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://pic1.zhimg.com/04cccf522b8d0fb403c64bd6db53d204_b.jpg?_=4419494%22%20style=%22border:none;max-width:605px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.6561134499497712',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no" style="border-style: none; border-width: initial; width: 600px; height: 450px;">另外一种方法是引入非线性函数。我们来看异或问题(xor problem)。以下是xor真值表
id="iframe_0.8846684722229838" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://pic3.zhimg.com/8a5b88d6beda0c6ed79721ca709030fa_b.jpg?_=4419494%22%20style=%22border:none;max-width:605px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.8846684722229838',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no" style="border-style: none; border-width: initial; width: 247px; height: 81px;">

这个真值表不是线性可分的,所以不能使用线性模型,如图所示
id="iframe_0.5789069111924618" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://pic1.zhimg.com/b7353c7be23766ff563ee2f01950b9d8_b.jpg?_=4419494%22%20style=%22border:none;max-width:605px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.5789069111924618',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no" style="border-style: none; border-width: initial; width: 600px; height: 450px;">
我们可以设计一种神经网络,通过激活函数来使得这组数据线性可分。
激活函数我们选择阀值函数(threshold function),也就是大于某个值输出1(被激活了),小于等于则输出0(没有激活)。这个函数是非线性函数。

神经网络示意图如下:


id="iframe_0.8680434329435229" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://pic4.zhimg.com/d45f15128c401f6d7b8ae8a0b2fb2967_b.jpg?_=4419494%22%20style=%22border:none;max-width:605px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.8680434329435229',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no" style="border-style: none; border-width: initial; width: 600px; height: 450px;">其中直线上的数字为权重。圆圈中的数字为阀值。第二层,如果输入大于1.5则输出1,否则0;第三层,如果输入大于0.5,则输出1,否则0.

我们来一步步算。

第一层到第二层(阀值1.5)
id="iframe_0.9563873521983624" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://pic2.zhimg.com/bee8976df7f6388ea5e2f7c49d0718a9_b.jpg?_=4419494%22%20style=%22border:none;max-width:605px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.9563873521983624',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no" style="border-style: none; border-width: initial; width: 328px; height: 80px;">

第二层到第三层(阀值0.5)
id="iframe_0.6822542143054307" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://pic4.zhimg.com/2c54fea477b3960172874202e7c47657_b.jpg?_=4419494%22%20style=%22border:none;max-width:605px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.6822542143054307',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no" style="border-style: none; border-width: initial; width: 410px; height: 81px;">
可以看到第三层输出就是我们所要的xor的答案。

经过变换后的数据是线性可分的(n维,比如本例中可以用平面),如图所示:
id="iframe_0.24822779768146574" src="data:text/html;charset=utf8,%3Cimg%20id=%22img%22%20src=%22http://pic1.zhimg.com/3bf44923c05ef7e4ba6407aee8d2d938_b.jpg?_=4419494%22%20style=%22border:none;max-width:605px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.24822779768146574',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no" style="border-style: none; border-width: initial; width: 600px; height: 450px;">

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值