激活函数
不可以不使用激活函数。
激活函数的主要作用是提供网络的非线性建模能力,如果没有激活函数,隐藏层数量再多与单层神经网络等价。必须满足以下性质:
- 可微性:基于梯度优化必须可微(可导)。
- 单调性:单层网络保证是凸函数。
- 输出值范围:当激活函数输出值有限时,基于梯度的优化方法可以更加稳定,因为特征的表示受有限权值的影响更加显著。
当输出值时无限时,模型的训练更加高效,在这种情况下需要更小的learning rate.
sigmoid
f(x)=1+e−x1
sigmoid 是使用范围最广的一类激活函数,具有指数函数形状,它在物理意义上最为接近生物神经元。此外,(0, 1) 的输出还可以被表示作概率,或用于输入的归一化,代表性的如Sigmoid交叉熵损失函数。
sigmoid自身的缺陷:
- 最明显的就是饱和性。从上图可以看到,其两侧导数逐渐趋近于0:
lim_x→∞f′(x)=0
具有这种性质的函数称为软饱和激活函数。硬饱和函数定位如下:f′(x)=0,当∣x∣>c,c为常数.
由于sigmoid的软饱和性,当输入落入饱和区,f′(x)=0导致梯度消失。 - sigmoid函数输出均大于0,使得输出均值不为0,这称为偏移现象,这会导致后一层神经元将得到上一层非0均值的信号作为输入。
tanh
f(x)=1+e−2x1−e−2x
tanh也是一种非常常见的激活函数。与sigmoid相比,它的输出均值是0,使得其收敛速度要比sigmoid快,减少迭代次数。然而,从途中可以看出,tanh一样具有软饱和性,从而造成梯度消失。
ReLU、P-ReLU、Leaky-ReLU
f(x)={x, if x≥00, if x<0
f(x)=max(0,x)
ReLU的全称是Rectified Linear Units,当x<0时,ReLU硬饱和,而当x>0时,则不存在饱和问题。所以,ReLU 能够在x>0时保持梯度不衰减,从而缓解梯度消失问题。
然而,随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新。这种现象被称为“神经元死亡”。与sigmoid类似,ReLU的输出均值也大于0,偏移现象和 神经元死亡会共同影响网络的收敛性。
针对在x<0的硬饱和问题,我们对ReLU做出相应的改进,使得:
f(x)={x,αx, if x≥0 if x<0
这就是Leaky-ReLU, 而P-ReLU认为,α也可以作为一个参数来学习,原文献建议初始化α为0.25,不采用正则。
ELU
f(x)={x, if x≥0α(ex−1), if x<0
融合了sigmoid和ReLU,左侧具有软饱和性,右侧无饱和性。右侧线性部分使得ELU能够缓解梯度消失,而左侧软饱能够让ELU对输入变化或噪声更鲁棒。ELU的输出均值接近于零,所以收敛速度更快.
损失函数
0-1损失函数(感知机)
L(Y,f(X))={1,Y=f(X)0,Y=f(X)
平方损失函数(线性回归)
L(Y,f(X))=i=1∑n(Y−f(X))2
绝对值损失函数
L(Y,f(X)=∣Y−f(X)∣
指数损失函数(adaboost)
L(Y∣f(X))=exp[−yf(x)]
对数损失函数(logistic)
cost(hθ(x),y)=i=1∑m−yilog(hθ(x))−(1−yi)log(1−hθ(x))
Hinge(合页)损失函数(SVM)
L_i=j=yi∑max(0,fj−fyi+Δ)
Δ 代表间隔,一般取1. 或者L(y)=max(0,1−ty)
softmax损失函数
交叉熵损失函数:
L=−i∑yilnai
联系作者