激活函数,提供非线性能力。
1. SIGMOD函数,二分类将数据压缩到0-1之间, 横轴0点对称,以用来做二分类,有饱和区间所以一般用在输出层
优点:平滑、易于求导。
缺点:激活函数计算量大,反向传播求误差梯度时,求导涉及除法;反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。
Sigmoid函数由下列公式定义
其对x的导数可以用自身表示:
Sigmoid函数的图形如S曲线
2. tanh是双曲函数中的一个,tanh()tanh()为双曲正切。在数学中,双曲正切“tanhtanh”是由基本双曲函数双曲正弦和双曲余弦推导而来。
tanhx=sinhxcoshx=ex−e−xex+e−xtanhx=sinhxcoshx=ex−e−xex+e−x
其曲线如下图所示:
sigmoid函数和tanh函数是研究早期被广泛使用的2种激活函数。两者都为S 型饱和函数。 当sigmoid 函数输入的值趋于正无穷或负无穷时,梯度会趋近零,从而发生梯度弥散现象。sigmoid函数的输出恒为正值,不是以零为中心的,这会导致权值更新时只能朝一个方向更新,从而影响收敛速度。tanh 激活函数是sigmoid 函数的改进版,是以零为中心的对称函数,收敛速度快,不容易出现 loss 值晃动,但是无法解决梯度弥散的问题。2个函数的计算量都是指数级的,计算相对复杂。softsign 函数是 tanh 函数的改进版,为 S 型饱和函数,以零为中心,值域为(−1,1)。
3. relu
relu用于神经网络层中间层中,在relu之前是tanh,目前建议使用relu, leaky_relu人脸视别,有一半的人脸时可用。 目前一般都使用relu
相比于传统的神经网络激活函数,诸如sigmoid和tanh等双曲函数,线性整流函数有着以下几方面的优势:
1.仿生物学原理:相关大脑方面的研究表明生物神经元的信息编码通常是比较分散及稀疏的。通常情况下,大脑中在同一时间大概只有1%-4%的神经元处于活跃状态。使用线性修正以及正则化(regularization)可以对机器神经网络中神经元的活跃度(即输出为正值)进行调试;相比之下,逻辑函数在输入为0时达到
,即已经是半饱和的稳定状态,不够符合实际生物学对模拟神经网络的期望。不过需要指出的是,一般情况下,在一个使用修正线性单元(即线性整流)的神经网络中大概有50%的神经元处于激活态。
2.更加有效率的梯度下降以及反向传播:避免了梯度爆炸和梯度消失问题