整流线性单元——分段线性函数
线性整流单元是隐藏层最常用的神经元单元,一般未经说明,隐藏层的单元多为经过仿射变换的输入输入到一个非线性的激活函数里。在整流线性单元广泛使用之前,
s
i
g
m
o
i
d
,
t
a
n
h
sigmoid,tanh
sigmoid,tanh为常用的激活函数,但是这些激活函数都不可避免的面对着当仿射变换后取值过大或者过小带来的饱和问题,导致当网络层数加深以后出现数值计算的下溢,或者梯度过小网络学习很慢的问题。线性整流单元及其扩展基于同一个原则,即当他们的表现越接近线性,在基于梯度的优化方法上表现会越好,避免出现梯度消失的问题。
在除了前馈神经网络的场景下,如在循环神经网络,概率模型以及一些自编码器的特殊要求使得他们不能使用分段线性激活函数,
s
i
g
m
o
i
d
sigmoid
sigmoid被广泛应用,尽管其存在着饱和性的问题。
-
常用的整流线性单元
最常用的RELU单元,将输入x经过放射变换后输入relu函数 z = W ′ x + b z=W'x+b z=W′x+b r e l u ( z ) = m a x ( 0 , z ) relu(z)=max(0,z) relu(z)=max(0,z)在使用relu单元时,单元处于激活状态时,处处梯度为1保持一个较高的水平不变,且二阶导数为零,不会出现sigmoid在输入值很小或者很大时候的饱和现象。但是线性整流单元存在缺点,即当z为负数时不被激活,在激活值为0的样本上,基于梯度的优化方法失效。针对线性整流单元的缺陷,学者提出关于线性整流单元的扩展,其核心思想是在 z < 0 z<0 z<0时候,给予 z < 0 z<0 z<0的部分一个系数 α \alpha α
1.1 绝对值整流——即绝对值函数,在 z < 0 z<0 z<0的部分, α = − 1 \alpha=-1 α=−1
1.2Leaky Relu——在 z < 0 z<0 z<0的部分, α \alpha α是一个很小的数值
1.3参数化整流线性单元——可以理解为Leaky Relu中将参数 α \alpha α做为参数进行学习 -
maxout单元——其他几类扩展可以视为是maxout单元的特殊形式
其他几种整流线性单元加入非线性激活的方式是将仿射变换以后的输入,输入到一个非线性的激活函数中,但maxout不同,每个maxout单元可以直观理解为,将k个仿射变换的结果 z i z_i zi输入到一个最大值 m a x max max函数里。最大值函数本身就是一个非线性函数。以二维情景为例:
m a x o u t ( z i ) = m a x ( z 1 , z 2 ) = m a x ( W 1 ′ x + b 1 W 2 ′ x + b 2 ) maxout(z_i)=max(\ z_1,z_2\ )=max(\ W_1'x+b_1\, W_2'x+b_2\ ) maxout(zi)=max( z1,z2 )=max( W1′x+b1W2′x+b2 )
在二维情境下,如果 W 1 = 0 , b 1 = 0 W_1=0,b_1=0 W1=0,b1=0时,就时常用的relu。
当 W 1 = − α W 2 , b 1 = − α b 2 , α > 0 W_1=-\alpha W_2,b_1=-\alpha b_2, \alpha>0 W1=−αW2,b1=−αb2,α>0时候,就是我们的leaky Relu。
maxout的特点:
优点:maxout学习的是一个分段线性函数,理论上当分段个数k无穷大的时候,可以拟合任意凸函数,有很强的拟合性。具有整流线性单元的线性和不饱和的优点,没有relu的缺点,如神经元一直为负数未激活,带来的神经元死亡
缺点:和一般的整流线性单元相比,参数个数扩展了至多k倍
除了整流线性单元和
s
i
g
m
o
i
d
,
t
a
n
h
sigmoid,tanh
sigmoid,tanh其他的隐藏单元激活函数,还有:
径向基函数
G
a
u
s
s
i
a
n
R
B
F
u
n
i
t
s
Gaussian\ RBF\ units
Gaussian RBF units:
R
B
F
(
x
)
=
e
x
p
{
∣
∣
W
−
x
∣
∣
2
σ
2
}
RBF(x)=exp\lbrace\cfrac{||W-x||^2}{\sigma^2}\rbrace
RBF(x)=exp{σ2∣∣W−x∣∣2}
s
o
f
t
p
l
u
s
softplus
softplus函数,作为平滑后的整流线性激活函数(我觉得一般没必要,因为分段线性函数确实有不可导点,但是这不可导点对我们执行梯度下降不影响,但是我们在计算机计算时候,参考的是他的左导或者右导,这里整流线性单元的左右导数都是存在的但是不相等而已)