激活函数的作用(转载)

作者:颜沁睿
链接:https://www.zhihu.com/question/22334626/answer/103835591
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

我觉得

@lee philip

的答案呢主要是在说为什么需要用非线性函数来进行分类, 而没有点出为什么没有activation function就不能非线性分类. 于是乎祭出我上次用的几幅图吧~~~
----------------------------------
这是一个单层的感知机, 也是我们最常用的神经网络组成单元啦. 用它可以划出一条线, 把平面分割开


那么很容易地我们就会想用多个感知机来进行组合, 获得更强的分类能力, 这是没问题的啦~~~~
如图所示,

那么我们动笔算一算, 就可以发现, 这样一个神经网络组合起来,输出的时候无论如何都还是一个线性方程哎~~~~纳尼, 说好的非线性分类呢~~~!!!!???

再盗用一幅经常在课堂上用的图...然而我已经不知道出处是哪了, 好像好多老师都是直接用的, 那我就不客气了嘿嘿嘿~~这幅图就跟前面的图一样, 描述了当我们直接使用step activation function的时候所能获得的分类器, 其实只能还是线性的, 最多不过是复杂的线性组合罢了~~~当然你可以说我们可以用无限条直线去逼近一条曲线啊......额,当然可以, 不过比起用non-linear的activation function来说就太傻了嘛....

祭出主菜. 题主问的激励函数作用是什么, 就在这里了!!
我们在每一层叠加完了以后, 加一个激活函数, 如图中的y=\sigma(a). 这样输出的就是一个不折不扣的非线性函数!

于是就很容易拓展到多层的情况啦, 更刚刚一样的结构, 加上non-linear activation function之后, 输出就变成了一个复杂的, 复杂的, 超级复杂的函数....额别问我他会长成什么样, 没人知道的~~~~我们只能说, 有了这样的非线性激活函数以后, 神经网络的表达能力更加强大了~~(比起纯线性组合, 那是必须得啊!)

继续厚颜无耻地放一张跟之前那副图并列的图, 加上非线性激活函数之后, 我们就有可能学习到这样的平滑分类平面. 这个比刚刚那个看起来牛逼多了有木有!

--------------------------------------
这样表达应该能够比较清楚地回答题主的问题了吧? 这就是为什么我们要有非线性的激活函数!

额, 基于这两天刚交完ann的报告, 就再说点个人的想法吧. 关于activation function这个东西的选择确实很trick, 可以说是完全依赖于做什么application吧. 比如我在做regression的时候, 不仅尝试了tanh, sigmoid这些常用的, 还试了一把近两年在dl中超级火的ReLU. 结果发现ReLU做出来的准确度简直是不忍直视啊...于是在报告里吹了一大通可能这个function不work的原因...其实自己知道那就是扯淡好么, 如果实验结果好了, 肯定又能找到一堆其它理由去support它了.
所以这也是NN一直以来饱受诟病的大问题, 别看这两年DL风生水起, 依然是个没办法好好解释的东西, 谁也不敢保证这东西放到某个应用上就一定能成, 最后调出来的就发paper, 调不出来就换参数, 甚至换一个模型继续试呗...
当然我也不是经验很丰富啦, 对调参这门手艺还是继续保持敬仰的~~~ 只是最近看到好多摩拳擦掌准备投身DL想要干一番大事业的同学, 有感而发...花点时间搞搞清楚原理可能就不会觉得这个东西那么靠谱了, 更多的像是magic, 还不如其它的模型用着心理踏实...入行需谨慎啊......
The end...

猜你喜欢

转载自blog.csdn.net/qq_33485434/article/details/81133309
今日推荐