大话深度学习(二):激活函数
激活函数定义
网络中的每个神经元的输出为所有输入的加权和,那最后的结果整个网络模型成为一个线性结构。将每个神经元的输出通过一个非线性函数,那么整个神经网络模型将不再是线性的,这个非线性函数就被称为“激活函数”
ReLU激活函数
ReLU是目前出现频率较高的一个激活函数。其定义是f(z)=max{0,z},其图像如下图所示。
ReLU的激活函数的神经元被称为整流线性单元。整流线性单元容易优化,当整流线性单元处于激活状态时,其导数为1,处处保持一致。并且其二阶导数处处为零,这样的性质非常有用,对优化参数有非常大的好处。
经过ReLU激活函数之后,全连接神经网络可以按照下面的式子进行计算。
h=f(WTx+b)。当我们初始化网络参数的时候可以将偏置b设置为一个大于0,但很小的正值,例如b=0.05.这是保持了神经单元一开始就处于激活的状态。以下是ReLU激活函数运用到环形数据的分类效果,迭代两百次:
sigmoid激活函数
Sigmoid函数是一个在生物学中常见的S型函数,也称为S型生长曲线。在信息科学中,由于其单增以及反函数单增等性质,Sigmoid函数常被用作神经网络的激活函数,将变量映射到0,1之间。
Sigmoid函数图像如下:
sigmoid激活函数不被鼓励应用于前馈神经网络的隐藏单元,因为基于梯度下降的优化算法会因为sigmoid函数饱和性的存在而变得非常困难。 饱和性是指sigmoid函数在x的绝对值取很大的正值时,无限的趋近于1;在x的绝对值取很小的负值的时候,趋近于0;并且在0的时候,导数很大,对x的输入非常敏感。解决饱和性的问题,需要找一个合适的损失函数来抵消他的饱和性。
以下是Sigmoid激活函数运用到环形数据的分类效果,迭代225次:(使用sigmoid函数也没有成功实现分类)
tanh激活函数
tanh是双曲函数中的一个,tanh()为双曲正切。在数学中,双曲正切“tanh”是由基本双曲函数双曲正弦和双曲余弦推导而来。
图像如下:
当必须要使用sigmoid函数时,可以考虑试用一下比sigmoid激活函数表现更好的tanh激活函数。以下是tanh激活函数运用到环形数据的分类效果,迭代181次:
在tensorflow2.0中如何使用tensorflow可参考博客tensorflow2.0激活函数的使用
参考资料
Tensorflow 深度学习算法原理与编程实战