化直为曲:激活函数

2019-10-09  本文已影响0人  熊出没之熊二快跑

曲径通幽处,禅房花木深 —— 《题破山寺后禅院》-常建

单位阶跃函数

1 引言

作为一个学通信的人来说,对激活函数的启蒙恐怕要从《信号与系统》中的阶跃函数谈起,阶跃信号作为一种特殊的时间函数,是一个从0跳变为1的过程。在电路分析中,阶跃函数是研究动态响应电路的基础,利用阶跃函数可以进行信号处理积分变换
在信号处理中,可以通过阶跃信号及其时延信号的线性组合进行复杂信号的表达。由于阶跃函数将小于0的信号输入置为0,大于零的信号输入置为1,其本质也是一个非线性的变换,神经网络的鼻祖感知机就是运用阶跃函数作为其激活函数来进行模式分类。
再进一步,如果将输入信号通过级联的方式通过多个阶跃函数就构成了多层感知机模型,也就是我们所熟悉的深度神经网络的雏形。

2 为什么需要激活函数(激活层)?

这个在很多博客中都有介绍,首先深度学习想要学习到的函数不是简单的线性关系,而是复杂的非线性关系,需要有非线性变换,而深度神经网络中的卷积层和池化层都是线性变换(乘的是权重矩阵,矩阵的几何意义就是线性变换,无论经过多少卷积层都是线性的),因此要给深度学习增加非线性的话,就需要非线性层,就是我们所说的激活层。

3 理想激活函数

很多博客,上来就是介绍几种激活函数,还有他们的优缺点,没有从一个更高的视角来审视激活函数本质。我也是看了CS231n上的解释才彻底明白不同激活函数所遵从的设计思想,明白了设计思想就能对不同激活函数进行分析,同时也可以根据自己的任务特点选用甚至是设计自己的激活函数。本文从以下两个方面介绍激活函数:什么样的函数可以做激活函数、什么样的函数是好的激活函数。

3.1 什么样的函数可以做激活函数?

3.2 什么样的函数是好的激活函数?

从反面看,这也是为什么我们期望每层的输入的信号都是零对称的原因,从而有了批归一化层的提出。(题外话)

对于sigmoid和tanh激活函数而言,都存在左右饱和区,从而有梯度消失的问题。

4 常见激活函数优缺点

我们如果从上文的零对称非饱和区域梯度计算高效三个特性来看常见的激活函数,就比较容易理解激活函数的发展史。

缺点:非零对称、有饱和区(容易梯度消失)、梯度计算复杂度高

优点:零对称
缺点:有饱和区(容易梯度消失)、梯度计算复杂度高

优点:右半轴无饱和区(不会梯度消失)、梯度计算高效(收敛快)
缺点:非零对称、负半轴永远不会被激活(权重初始化不好会导致某些神经元dead)

优点:不会饱和(两边都不会)、梯度计算高效(收敛快)、不会出现dead神经元

5 激活函数使用建议

上一篇下一篇

猜你喜欢

热点阅读