【DataWhale组队学习】吃瓜教程(西瓜书+南瓜书)Task04-激活函数

本次任务是周志华老师《机器学习》第五章神经网络的内容,重点学习了前三个小节。学习过程中发现西瓜书对于神经网络激活函数的内容并未涉及太多,于是结合邱锡鹏老师的《神经网络与深度学习》第四章前馈神经网络的部分也进行了学习。下面对激活函数的学习结果进行大致的整理。

一、激活函数的性质

1.连续并可导(允许少数点上不可导)的非线性函数

可导的激活函数可以直接利用数值优化的方法来学习网络参数。

2.激活函数及其导函数要尽可能的简单

有利于提高网络计算效率。

3.激活函数的导函数的值域要在一个合适的区间内

不能太大也不能太小,否则会影响训练的效率和稳定性。

4.单调性

激活函数多为单调函数,甚至多为单调递减函数,这样单层神经网络能够保证其为凸函数,便于后续求解优化问题(这一点在邱老师的书中并没有提及,属于笔者拓展学习的结果,如果有误,欢迎指正)。

二、常见的激活函数

1.Sigmoid型函数

指一类S型曲线函数,常用的有Logistic函数和Tanh函数。

【DataWhale组队学习】吃瓜教程(西瓜书+南瓜书)Task04-激活函数_第1张图片

 Logistic函数可视为一个把实数域的输入“挤压"到(0,1)的挤压函数(输出直接可以看作概率分布,使得神经网络能够更好地和统计学习模型结合),定义为

输入越小,越接近0;输入越大,越接近1。这一点与生物神经元类似,即对一些输入产生兴奋(输出为1),对一些输入产生抑制(输出为0)。

Tanh函数可看作放大并平移的Logistic函数,输出是零中心化的:

 2.Hard Sigmoid型函数

由于Sigmoid函数具有饱和性,计算开销大,因此可以通过分段函数来近似这两个函数,得到Hard Logistic函数和Hard Tanh函数:

【DataWhale组队学习】吃瓜教程(西瓜书+南瓜书)Task04-激活函数_第2张图片

 3.修正线性单元(Rectified Linear Unit, ReLU)

这是目前深层神经网络经常使用的激活函数,定义为:

【DataWhale组队学习】吃瓜教程(西瓜书+南瓜书)Task04-激活函数_第3张图片

优点:ReLU神经元只需要进行加、乘和比较的操作,计算高效;被认为有生物上的解释性,如单侧抑制、宽兴奋边界;具有很好的稀疏性,约50%的神经元会处于激活状态;ReLU函数为左饱和函数,且在x>0时导数为1,一定程度缓解了神经网络的梯度消失问题,加速梯度下降的收敛速度。

缺点:输出非零中心化,给后一层的神经网络引入偏置偏移,会影响梯度下降速度;此外ReLU神经元训练时易出现“死亡ReLU问题”(这个笔者暂时也没太搞明白……)。

为避免上述情况,有以下几种ReLU的变种被广泛使用:

【DataWhale组队学习】吃瓜教程(西瓜书+南瓜书)Task04-激活函数_第4张图片

 4.Swish函数

Swish函数定义为

 其中\sigma(·)为Logistic函数,\beta是可学习的参数或一个固定超参数,当\sigma(\betax)接近于1时,门处于“开”状态,激活函数的输出近似于x本身; 当\sigma(\betax)接近于0时,门处于“关”状态,激活函数的输出近似于0。因此,Swish函数可看作是线性函数和ReLU函数之间的非线性插值函数,其程度由\beta控制。 

【DataWhale组队学习】吃瓜教程(西瓜书+南瓜书)Task04-激活函数_第5张图片

 小总结

【DataWhale组队学习】吃瓜教程(西瓜书+南瓜书)Task04-激活函数_第6张图片

你可能感兴趣的:(机器学习,人工智能)