Sigmoid 是常用的非线性的激活函数,能够把连续值压缩到0-1区间上。
其函数表达式为:
f ( x ) = 1 1 + e − x f(x)=\frac{1}{1+e^{-x}} f(x)=1+e−x1
其对应导函数为:
f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f^{'}(x)=f(x)(1-f(x)) f′(x)=f(x)(1−f(x))
由图发现, lim x → ∞ \lim_{x \to \infty} limx→∞时, f ′ ( x ) = 0 f^{'}(x)=0 f′(x)=0,将具有这种性质的激活函数叫作软饱和激活函数。Sigmoid导数的取值范围在0~0.25之间。
sigmoid函数求导过程:
f ′ ( x ) = ( 1 1 + e − x ) ′ = ( ( 1 + e − x ) − 1 ) ′ = ( − 1 ) ( 1 + e − x ) − 2 ⋅ ( e − x ) ′ = ( 1 + e − x ) − 2 ( e − x ) = e − x ( 1 + e − x ) 2 = e − x + 1 − 1 ( 1 + e − x ) 2 = 1 1 + e − x − 1 ( 1 + e − x ) 2 = 1 1 + e − x ( 1 − 1 1 + e − x ) = f ( x ) ( 1 − f ( x ) ) \begin{aligned} f'(x) &= (\frac{1}{1+e^{-x}})' \\ &=((1+e^{-x})^{-1})' \\ &=(-1)(1+e^{-x})^{-2} \cdot (e^{-x})' \\ &=(1+e^{-x})^{-2}(e^{-x}) \\ &=\frac{e^{-x}}{(1+e^{-x})^{2}} \\ &=\frac{e^{-x}+1-1}{(1+e^{-x})^{2}} \\ &=\frac{1}{1+e^{-x}} - \frac{1}{(1+e^{-x})^2} \\ &=\frac{1}{1+e^{-x}}(1-\frac{1}{1+e^{-x}}) \\ &=f(x)(1-f(x)) \end{aligned} f′(x)=(1+e−x1)′=((1+e−x)−1)′=(−1)(1+e−x)−2⋅(e−x)′=(1+e−x)−2(e−x)=(1+e−x)2e−x=(1+e−x)2e−x+1−1=1+e−x1−(1+e−x)21=1+e−x1(1−1+e−x1)=f(x)(1−f(x))
优点
缺点
输出不是zero-centered,为什么会降低权值更新的效率?
https://zhuanlan.zhihu.com/p/70821070
【梯度消失】:梯度趋近于零,网络权重无法更新或更新的很微小,网络训练再久也不会有效果;
【梯度爆炸】:梯度呈指数级增长,变的非常大,然后导致网络权重的大幅更新,使网络变得不稳定。
tanh也是一种非常常见的激活函数,与sigmoid相比,它的输出均值为0,这使得它的收敛速度要比sigmoid快,减少了迭代更新的次数。
其函数表达式为:
t a n h ( x ) = e x − e − x e x + e − x tanh(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} tanh(x)=ex+e−xex−e−x
其对应导函数为:
t a n h ′ ( x ) = 1 − ( t a n h ( x ) ) 2 tanh^{'}(x)=1-(tanh(x))^2 tanh′(x)=1−(tanh(x))2
tanh(x)函数求导过程:
已知: e − x 导 数 为 − e − x e^{-x}导数为-e^{-x} e−x导数为−e−x, e x 导 数 为 e x e^{x}导数为e^{x} ex导数为ex
t a n h ′ ( x ) = ( e x − e − x e x + e − x ) ′ = ( ( e x − e − x ) ( e x + e − x ) − 1 ) ′ = ( e x + e − x ) ( e x + e − x ) − 1 + ( e x − e − x ) ( e x + e − x ) − 2 ( e x − e − x ) = 1 − ( e x − e − x ) 2 ( e x + e − x ) 2 = 1 − ( t a n h ( x ) ) 2 \begin{aligned} tanh^{'}(x) &= (\frac{e^x-e^{-x}}{e^x+e^{-x}})' \\ &=((e^x-e^{-x})(e^x+e^{-x})^{-1})' \\ &=(e^x+e^{-x})(e^x+e^{-x})^{-1}+(e^x-e^{-x})(e^x+e^{-x})^{-2}(e^x-e^{-x})\\ &= 1- \frac{(e^x-e^{-x})^2}{(e^x+e^{-x})^2}\\ &=1-(tanh(x))^2 \\ \end{aligned} tanh′(x)=(ex+e−xex−e−x)′=((ex−e−x)(ex+e−x)−1)′=(ex+e−x)(ex+e−x)−1+(ex−e−x)(ex+e−x)−2(ex−e−x)=1−(ex+e−x)2(ex−e−x)2=1−(tanh(x))2
优点
缺点
实际上,Tanh激活函数相当于sigmoid函数的平移:
t a n h ( x ) = 2 s i g m o i d ( 2 x ) − 2 tanh(x)=2sigmoid(2x)-2 tanh(x)=2sigmoid(2x)−2
ReLU是针对sigmoid和tanh的饱和性而提出的新的激活函数。,当 x>0 的时候,不存在饱和问题,所以ReLU能够在 x>0 的时候保持梯度不衰减,从而缓解梯度消失的问题。这让我们可以以有监督的方式训练深度神经网络,而无需依赖无监督的逐层训练。
其函数表达式为:
f ( x ) = { m a x ( 0 , x ) , x ≥ 0 0 , x < 0 f(x)= \left\{ \begin{aligned} &max(0,x) ,x≥0\\ &0,x<0 \end{aligned} \right. f(x)={max(0,x),x≥00,x<0
【稀疏激活性】:从信号方面来看,即神经元同时只对输入信号的少部分选择性响应,大量信号被刻意的屏蔽了,这样可以提高学习的精度,更好更快地提取稀疏特征。当 x<0 时,ReLU 硬饱和,而当 x>0 时,则不存在饱和问题。ReLU 能够在x>0 时保持梯度不衰减,从而缓解梯度消失问题。
缺点
ReLU的输出不是zero-centered。
训练过程中会导致神经元死亡。这是由于函数f(x)=max(,x)导致负梯度在经过该ReLU单元时被置为0,且在之后不被任何数据激活,即流经该神经元的梯度永远为0,不对任何数据产生响应。在实际训练中,如果学习率(Learning Rate)设置较大,会导致超过一定比例的神经元不可逆死亡,进而导致参数梯度无法更新,整个训练过程失败。
对参数初始化和学习率非常敏感;
要防范ReLU的梯度爆炸;
【神经元死亡】:随着训练的推进,部分输入会落入硬饱和区,导致对应权重无法更新。
为了解决了Relu会杀死一部分神经元的情况,人们设计了ReLU的变种Leaky ReLU。
其函数表达式为:
f ( x ) = { x , x ≥ 0 a x , x < 0 f(x)= \left\{ \begin{aligned} &x ,x≥0\\ &ax,x<0 \end{aligned} \right. f(x)={x,x≥0ax,x<0
其中a一般为很小的正常数(如0.01),是个固定值,即实现了单侧抑制,又保留了部分负梯度信息以至不完全丢失。但另一方面,a值的选择增加了问题难度,需要较强的人工先验或者重复训练以确定合适的参数值。
部分神经元不会出现死亡的情况。
Leaky ReLU线性、非饱和的形式,在SGD中能够快速收敛。
计算速度都比sigmoid和tanh快,Leaky ReLU函数只有线性关系,不需要指数计算。
缺点
根据α的选择策略不同,演变出RReLU和PReLU 。
RReLU训练时给定范围内随机选择α,α是从一个高斯分布U(l,u)中随机出来的,然后再测试过程中进行修正,一般预估时固定为平均值。
优点
缺点
PReLU是LReLU的改进,可以自适应地从数据中学习参数。
PReLU 函数表达式为:
f ( x ) = { x , x ≥ 0 a x , x < 0 f(x)= \left\{ \begin{aligned} &x ,x≥0\\ &ax,x<0 \end{aligned} \right. f(x)={x,x≥0ax,x<0
其中α是一个可调整的参数,范围0-1,它控制着负值部分在何时饱和,避免ReLU死掉问题。
优点
缺点
ELU 是在2015年出现的一种激活函数,是为解决ReLU存在的问题而提出。
与其他非饱和激活函数类似,ELU 没有梯度消失和梯度爆炸的问题。和Leaky-ReLU和 PReLU 类似,与 ReLU 不同的是,ELU 没有神经元死亡的问题。它已被证明优于 ReLU 及其变体,如 Leaky-ReLU(LReLU) 和 Parameterized-ReLU(PReLU)。与 ReLU 及其变体相比,使用 ELU 可以减少神经网络的训练时间和更高的准确度。
其函数表达式为:
f ( x ) = { x , x ≥ 0 α ( e x − 1 ) , x < 0 f(x)= \left\{ \begin{aligned} &x ,x≥0\\ &\alpha(e^x-1),x<0 \end{aligned} \right. f(x)={x,x≥0α(ex−1),x<0
优点
缺点
理论上虽然好于ReLU,但在实际使用中目前并没有好的证据ELU总是优于ReLU。
https://deeplearninguniversity.com/elu-as-an-activation-function-in-neural-networks/
研究论文https://arxiv.org/pdf/1511.07289