为什么要用activation functions?

activation functions好像是为了让把线性的变成非线性的了,准确的解释我记不住了;而且我不明白为什么非得变成非线性的呢?有什么好处?
已邀请:

YJango - 在日研究生,人工智能专业

赞同来自: 辛淼 cjwdeq hao_DL CrystalYouth lishanlu136 南七骄傲 lxwahu empty更多 »

问的很好。不过问题有些大。你的问题可以说是直接牵扯到 “为什么深层学习这么强大”。
有大致3个角度可以回答这个问题。三个角度是有所交集的,只是方便你理解。
1,神经元模拟层面解释。
深层学习是模拟大脑神经元工作原理的仿生物产物。每一个神经网络中的概念都可以在神经元细胞中找到类似的概念。
先是第一张图。聚焦蓝色神经元。其他神经元细胞(绿色)向蓝色传输电信号。信号的强弱是深层学习里的W权重模拟的。当蓝色的总电势突破阀值的时候,就会向B1这个方向发送电信号。阀值的模拟是由深层学习里的b来完成的(数学简化后)。activation function实际上是模拟神经递质(化学信号)。神经递质可以增强或抑制细胞兴奋。电信号的传输都是线性的。但神经递质是非线性。

2,数学角度解释。
基于这篇NN-Manifolds给你简单描述一下
这是关于预测(识别、分类、回归)问题。
当你得到一组数据,在其本身空间内无法线性分割的时候,通常的做法就是把这组数据投向(transformation)高纬度空间,比如SVM的做法。但是SVM仅仅是投向高维度这一种操作。而DNN不仅包括投高纬度(或降低维度)的变换,还包括了另外3种线性变换和1种非线性的可以弯曲空间的变换(源于activation function)
这张图显示的是4个线性操作+1个非线性操作:
4个线性变换:
    1,升降维度(SVM只有这个操作)
    2,放大缩小
    3,旋转
    4,平移
1个非线性变换:5,弯曲空间
 
在数学公式上,1-3主要由由W*x完成,4由b完成, 5由activation function完成(简称a)
五种变换合起来的数学式子:a(W*x+b)
但这仅仅是一层神经网络所做的事情。 
如果把上一层变换完的结果作为新的x,又可以再次“扭曲”空间:a2 ( W2* a(W*x+b) + b2 )
这样,层数越深,DNN扭曲空间的能力越大。

下一张图展示了扭曲空间对识别的作用。通过多层神经网络将数据进行变换后,原来不可线性分割的数据变得可以分割。

3,这种变换克服了哪些识别的难题?智能的本质 的 “2、预测的工作原理” 中 提到了两个难点。用这种方式,两个难点都被克服。
 
最后你再思考一下,activation function到底起到了什么作用。如果没有的话又会怎样。

crackhopper

赞同来自:

没有非线性,不就是若干矩阵乘法,最后还是矩阵乘法么?

南七骄傲 - 90后IT男

赞同来自:

非线性的叠加才有意义,如果多层线性单元进行叠加,和一层线性叠加的效果是一样的。

要回复问题请先登录注册