各种激活函数, 图像, 导数及其特点

sigmoid

f ( z ) = 1 1 + e − z f(z)=\frac1{1+e^{-z}} f(z)=1+ez1

其图像如下:
sigmoid

特点

  • 能够将输入的连续实值变换为0到1之间的输出

缺点

  • 在深度神经网络中梯度反向传播是容易造成梯度爆炸和梯度消失

sigmoid导数

f ′ ( z ) = e − z ( 1 + e − z ) 2 = 1 1 + e − z − 1 ( 1 + e − z ) 2 f'(z) = \frac{e^{-z}}{(1+e^{-z})^2} = \frac1{1+e^{-z}} - \frac1{(1+e^{-z})^2} f(z)=(1+ez)2ez=1+ez1(1+ez)21

tanh

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+exexex

其图像如下:
tanh

特点

解决了sigmoid函数不是zero-centered的问题, 但是梯度消失依旧存在

导数

t a n h ′ ( x ) = 1 − t a n h ( x ) 2 = 1 − ( e x − e − x e x + e − x ) 2 tanh'(x)=1-tanh(x)^2 = 1 - (\frac{e^x-e^{-x}}{e^x+e^{-x}})^2 tanh(x)=1tanh(x)2=1(ex+exexex)2

Relu

R e l u ( x ) = m a x ( 0 , x ) Relu(x)=max(0, x) Relu(x)=max(0,x)

函数图像

relu

导数

R e l u ′ ( x ) = { 0 x ≤ 0 1 x > 0 Relu'(x) = \begin{cases} 0& x\leq 0\\ 1& x> 0 \end{cases} Relu(x)={01x0x>0

优点

  • 解决了梯度消失问题
  • 计算速度非常快
  • 收敛速度远快于sigmoid和tanh

缺点

  • 输出的不是zero-centered
  • 有些神经元可能永远不会被激活(Dead ReLU)
    • 不好的参数初始化
    • 学习率过高, 导致网络不幸进入这种情况

Leaky Relu(PRelu)

f ( x ) = m a x ( α x , x ) f(x) = max(\alpha x, x) f(x)=max(αx,x)

函数图像 α = 0.01 \alpha=0.01 α=0.01
leakrelu

导数

f ′ ( x ) = { α x ≤ 0 1 x > 0 f'(x) = \begin{cases} \alpha& x\leq0\\ 1& x> 0 \end{cases} f(x)={α1x0x>0

特点

  • 具有ReLU的所有优点
  • 不会有Dead ReLU问题

ELU

f ( x ) = { x x > 0 α ( e x − 1 ) x ≤ 0 f(x)= \begin{cases} x& x>0\\ \alpha(e^x-1)& x\leq0 \end{cases} f(x)={xα(ex1)x>0x0

函数图像 α = 1 \alpha=1 α=1

elu

导数

f ′ ( x ) = { 1 x > 0 f ( x ) + α = α e x x ≤ 0 f'(x)= \begin{cases} 1&x>0\\ f(x)+\alpha = \alpha e^x& x\leq0 \end{cases} f(x)={1f(x)+α=αexx>0x0

特点

  • 类似于Leaky ReLU
  • 计算量稍大
  • 不会有Dead ReLU问题
  • 均值接近于0

SELU

s e l u ( x ) = λ { x x > 0 α e x − α x ≤ 0 其中 λ = 1.0507009873554804934193349852946 α = 1.6732632423543772848170429916717 selu(x) =\lambda \begin{cases} x& x>0\\ \alpha e^x-\alpha& x\leq0 \end{cases}\\ 其中\lambda=1.0507009873554804934193349852946\\ \alpha=1.6732632423543772848170429916717 selu(x)=λ{xαexαx>0x0其中λ=1.0507009873554804934193349852946α=1.6732632423543772848170429916717

函数图像
selu

导数

s e l u ′ ( x ) = λ { 1 x > 0 α e x selu'(x)=\lambda \begin{cases} 1& x>0\\ \alpha e^x \end{cases} selu(x)=λ{1αexx>0

特点

  • 在ELU的基础上求解了最佳的 α \alpha α , 并且扩大了 λ \lambda λ倍,
  • SELU拥有ELU所有的优点
  • 不存在死区

SoftMax

f ( x i ) = e x i ∑ j = 1 n e x j f(x_i)=\frac{e^{x_i}}{\sum_{j=1}^ne^{x_j}} f(xi)=j=1nexjexi

简单地说, 就是当前元素的值就等与e的当前元素次方在所有元素的e的次方和的比例
softmax

导数

当交叉熵作为损失函数时 , L O S S = − ∑ i t i l n y i , 其中 , t i 表示真实值 当预测第 i 个时 , 可以认为 t i = 1 , 那么 L O S S = − ∑ l n y i 因为 s o f t m a x 的和为 1 , 那么 e x i ∑ j = 1 n e x j , 对 L o s s 求导后为 − ( 1 − ∑ i ≠ j n e x i ∑ j n e x j ) = y i − 1 当交叉熵作为损失函数时, LOSS=-\sum_it_ilny_i, 其中, t_i表示真实值 \\当预测第i个时, 可以认为t_i=1, 那么LOSS=-\sum lny_i\\因为softmax的和为1, 那么\frac{e^{x^i}}{\sum_{j=1}^ne^{x_{j}}},对Loss求导后为-(1-\frac{\sum^n_{i\neq j}e^{x_i}}{\sum^n_je^{x_j}})=y_i-1 当交叉熵作为损失函数时,LOSS=itilnyi,其中,ti表示真实值当预测第i个时,可以认为ti=1,那么LOSS=lnyi因为softmax的和为1,那么j=1nexjexi,Loss求导后为(1jnexji=jnexi)=yi1

也就是说, 只要求出 j i j_i ji, 那么减一就是梯度.

特点

  • Softmax会将整个超空间按照分类个数进行划分
  • Softmax会比其他的激活函数更适合多分类问题最后的激活
  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小夏refresh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值