常见激活函数及其求导相关知识

本文详细介绍了Sigmoid、tanh、ReLU和Softmax这四种常见的激活函数,包括它们的函数形式、图像、优缺点以及求导过程。Sigmoid在深层网络中易导致梯度消失,tanh解决了平均值问题但仍有梯度消失,ReLU因其非零梯度在现代神经网络中广泛使用,而Softmax常用于多分类任务的概率输出。同时,文章还讨论了激活函数的作用,指出非线性变换对于提升模型表达能力的重要性,并提出了激活函数选择的建议。
摘要由CSDN通过智能技术生成

Sigmoid函数

Sigmoid函数介绍

Sigmoid 是常用的非线性的激活函数,公式如下:
σ ( x ) = 1 1 + e − x \sigma(x)=\frac{1}{1+e^{-x}} σ(x)=1+ex1
函数图像如下:

在这里插入图片描述

从图像可以看出,它能够把连续实值映射为0和1之间的输出,特别的,如果是非常大的负数,那么输出就是0;如果是非常大的正数,输出就是1。

Sigmoid 函数有很多局限性:

第一点,在数值的绝对值非常大的情况下,对应的函数图像的部分几乎是一条水平线。这意味着梯度几乎为0,不利于深层网络中梯度的反向传播,容易造成梯度消失。

第二点,Sigmoid 的输出不是0均值,导致梯度的更新要么都往正方向更新,要么都往负方向更新,导致有一种捆绑的效果,使得收敛缓慢。具体的解释,在文末讨论。

第三点,式子包含幂运算,计算量很大。

Sigmoid函数求导

求导过程及结果如下:
σ ′ ( x ) = ( 1 1 + e − x ) ′ = e − x ( 1 + e − x ) 2 = 1 + e − x − 1 ( 1 + e − x ) 2 = σ ( x ) ( 1 − σ ( x ) ) \begin{aligned} \sigma^{\prime}(x) &=\left(\frac{1}{1+e^{-x}}\right)^{\prime} \\ &=\frac{e^{-x}}{\left(1+e^{-x}\right)^{2}} \\ &=\frac{1+e^{-x}-1}{\left(1+e^{-x}\right)^{2}} \\ &=\sigma(x)(1-\sigma(x)) \end{aligned} σ(x)=(1+ex1)=(1+ex)2ex=(1+ex)21+ex1=σ(x)(1σ(x))
函数图像如下:

在这里插入图片描述

求导的结果可以看出,导数的最大值为0.25,小于1 ,很容易造成梯度消失。

tanh 函数

tanh 函数介绍

tanh 函数公式如下:
tanh ⁡ ( 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函数的输出不是0均值,然而,梯度消失和幂运算的问题仍然存在。

tanh 函数求导

求导过程如下:
t a n h ( x ) ′ = ( e x + e − x ) 2 − ( e x − e − x ) 2 ( e x + e − x ) 2 = 1 − ( t a n h ( x ) ) 2 tanh(x)^{\prime}=\frac{(e^{x}+e^{-x})^{2}-(e^{x}-e^{-x})^{2}}{(e^{x}+e^{-x})^{2}}=1-(tanh(x))^{2} tanh(x)=(ex+ex)2(ex+ex)2(exex)2=1(tanh(x))2
求导后的图像:

在这里插入图片描述

Relu函数

Relu函数介绍

Relu函数公式如下:
R e L U ( x ) = { 0 , x ⩽ 0 x , x > 0 ReLU(x)=\begin{cases}{0,} & {x \leqslant 0} \\ {x,} & {x>0}\end{cases} ReLU(x)={ 0,x,x0x>0
函数图像如下:

在这里插入图片描述

Relu 函数在输出值大于 0 的部分的导数值都大于0,并且不趋近于0,因而梯度下降速度较快。

Relu 函数在输出值小于 0 的部分的导数值都等于0,此时神经元就不会得到训练,能对网络产生稀疏性,降低过分拟合的概率。

但是也存在以下问题:

  1. 输出不是0均值
  2. Dead ReLU Problem:因梯度等于0导致失效的神经元不会再被激活

注:为了解决第二个问题,有人提出了Leaky ReLU激活函数: L e a k y    R e L U ( x ) = m a x ( 0.01 x , x ) Leaky \; ReLU(x) = max(0.01x, x) LeakyReLU(x)=max(0.01x,x),使得小于0的部分有些许梯度。

尽管ReLU存在这两个问题,ReLU目前仍是最常用的激活函数,在搭建模型的时候推荐优先尝试。

Relu函数求导

求导结果如下:
R e L U ( x ) ′ = { 0 , x ⩽ 0 1 , x > 0 ReLU(x)^{\prime}=\begin{cases}{0,} & {x \leqslant 0} \\ {1,} & {x>0}\end{cases} ReLU(x)={ 0,1,x0x>0
函数图像如下:

在这里插入图片描述

Softmax函数

Softmax函数介绍

对于多分类任务,常用的激活函数是 Softmax 激活函数。使用了Softmax函数的神经网络对应多个输出层神经元 ,如下图所示;

在这里插入图片描述

每个输出单元的数值代表该类别的概率 p i p_i pi,数值越大,说明属于该类别可能性越大。

具体而言,假设倒数第二层的输出值为:
z i = w i x + b i z_i = w_i x + b_i zi=wix+bi
假设有K个类别,Softmax函数定义如下:
S o f t m a x ( z i ) = e z i ∑ i = 1 K e z i ∀ i ∈ 1 … K Softmax(z_i)=\frac{e^{z_i}}{\sum_{i=1}^{K} e^{z_i}} \quad \forall i \in 1 \ldots K Softmax(zi)=i=1Keziezii1K
则在最后一层使用 Softmax 激活函数后的输出值为:
h w ( x ) = [ p 1 p 2 ⋮ p K ] = 1 ∑ i = 1 K e z i [ e z 1 e z 2 ⋮ e z K ] h_w(x) = \begin{bmatrix}p_1\\p_2 \\ \vdots \\p_{K} \end{bmatrix} = \frac{1}{\sum_{i=1}^K e^{z_i}} \begin{bmatrix}e^{z_1}\\e^{z_2 } \\ \vdots \\e^{z_K} \end{bmatrix} hw(x)=p1p2pK=i=1Kezi1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值