大话深度学习(二):激活函数


文章目录

  • 大话深度学习(二):激活函数
  • 激活函数定义
  • ReLU激活函数
  • sigmoid激活函数
  • tanh激活函数


激活函数定义

网络中的每个神经元的输出为所有输入的加权和,那最后的结果整个网络模型成为一个线性结构。将每个神经元的输出通过一个非线性函数,那么整个神经网络模型将不再是线性的,这个非线性函数就被称为“激活函数”

ReLU激活函数

ReLU是目前出现频率较高的一个激活函数。其定义是f(z)=max{0,z},其图像如下图所示。

神经网络 模型结构 fc relu 画法 神经网络relu函数_激活函数


ReLU的激活函数的神经元被称为整流线性单元。整流线性单元容易优化,当整流线性单元处于激活状态时,其导数为1,处处保持一致。并且其二阶导数处处为零,这样的性质非常有用,对优化参数有非常大的好处。

经过ReLU激活函数之后,全连接神经网络可以按照下面的式子进行计算。

h=f(WTx+b)。当我们初始化网络参数的时候可以将偏置b设置为一个大于0,但很小的正值,例如b=0.05.这是保持了神经单元一开始就处于激活的状态。以下是ReLU激活函数运用到环形数据的分类效果,迭代两百次:

神经网络 模型结构 fc relu 画法 神经网络relu函数_softmax_02

sigmoid激活函数

Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的激活函数,将变量映射到0,1之间。

神经网络 模型结构 fc relu 画法 神经网络relu函数_tanh_03


Sigmoid函数图像如下:

神经网络 模型结构 fc relu 画法 神经网络relu函数_tanh_04


sigmoid激活函数不被鼓励应用于前馈神经网络的隐藏单元,因为基于梯度下降的优化算法会因为sigmoid函数饱和性的存在而变得非常困难。 饱和性是指sigmoid函数在x的绝对值取很大的正值时,无限的趋近于1;在x的绝对值取很小的负值的时候,趋近于0;并且在0的时候,导数很大,对x的输入非常敏感。解决饱和性的问题,需要找一个合适的损失函数来抵消他的饱和性。

以下是Sigmoid激活函数运用到环形数据的分类效果,迭代225次:(使用sigmoid函数也没有成功实现分类)

神经网络 模型结构 fc relu 画法 神经网络relu函数_激活函数_05

tanh激活函数

tanh是双曲函数中的一个,tanh()为双曲正切。在数学中,双曲正切“tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来。

神经网络 模型结构 fc relu 画法 神经网络relu函数_softmax_06


图像如下:

神经网络 模型结构 fc relu 画法 神经网络relu函数_tanh_07


当必须要使用sigmoid函数时,可以考虑试用一下比sigmoid激活函数表现更好的tanh激活函数。以下是tanh激活函数运用到环形数据的分类效果,迭代181次:

神经网络 模型结构 fc relu 画法 神经网络relu函数_激活函数_08