数据挖掘算法基础 - 各种辅助函数及应用
符号函数是一个很神奇的东西,坐拥简单、求导方便等优点,非常适合用于机器学习的目标函数和激活函数中。
1.sign函数
是一个符号函数,可以理解为tanh函数的特殊化,满足以下条件:
当x>0,sign(x)=1;
当x=0,sign(x)=0;
当x<0, sign(x)=-1;
函数图像是:
sign函数图像
2.tanh函数
tanh函数是双曲正切函数,是高中数学中的一个基础函数,基本形式如下:
tanh函数的基本形式
这个函数,求导也比较好求,其实我们可以发现带e的求导都比较简单,tanh函数求导以后的形式为:
tanh函数求导
此外tanh函数和sigmoid之间还有个换算关系,虽然不重要,顺带提一嘴。
tanh函数和sigmoid函数之间的关系
tanh函数的图像是下边这样的:
tanh函数图像形式
tanh函数的导数值在0-1之间,用于激活函数要优于sigmoid函数。
3.sigmoid函数
sigmoid是最常用的激活函数,或者说最常用的分类函数的目标函数,sigmoid的基本形式为:
sigmoid函数基本形式
它求导也有优良的性能,
sigmoid函数求导
sigmoid函数的图像是这样的:
sigmoid函数图像
sigmoid的导数值在0-1之间如果用于激活函数,容易造成梯度消失。
sigmoid的进阶版是softmax用于多分类问题,基本形式如下:
softmax函数的形式
4.softplus函数
可以看做是softmax的一种近似,函数形式为:
softmax函数
函数图像为:
softplus函数和tanh函数比较
5.Relu函数
传统的Relu函数是0,x分段函数,基本形式是:
Relu函数
函数图像为:
Relu函数
他的问题是梯度反向传播的时候有可能乘0彻底消失,因此又多了很多变种。
-
leaky Relu
为了避免Relu的梯度消失,在<=0的时候赋予一个很小的梯度,这个函数收敛比较快,效果比较好,基本形式为:
leaky Relu函数形式
函数图像是这样的:
leaky Relu函数图像 -
ELU
指数线性单元,由于需要计算指数所以计算量比较大,但是对抗噪声的能力强。
函数和导数形式:
函数形式和导数形式
函数图像如下:
ELU函数图像 -
SELU函数
SELU函数是对ELU函数的优化,其实就是在ELU前边又乘了一个系数。实际是对ELU的拉伸。
SELU形式 -
SRelu
在Relu基础上又设置了几个阈值和函数,使其鲁棒性更好。
SRelu形式
函数图像是这样的:
SRelu函数 -
APL函数
自适应线性激活函数,这个笔者真不知道怎么用的,以后如果用到,会回来补充的。
APL函数形式
函数图像
APL函数
6.Swish函数
Swish函数具备有下界无上界,平滑、非单调的特性。在深层模型上效果优于Relu。
Swish函数
函数图像为:
Swish函数图像
7.maxout函数
一般的深度神经网络隐藏层节点的输出都要经过sigmoid激活一下,但是maxout的思想是,取最大而非经过函数计算。
maxout函数形式
实验表明,maxout和dropout结合有奇效。