算法笔记(二)激活函数

前言

激活函数的作用

  1. 增加网络的非线性。
    数据分布大部分是非线性的,而神经网络的计算是线性的,因此需要引入激活函数,增加网络的非线性,以强化网络的学习能力。

  2. 可以做概率值的处理,例如Sigmoid和tanh,它们的特点是将输出限制在(0,1)和(-1,1)之间;

  3. Relu适合用于深层网络的训练,而Sigmoid和tanh会出现梯度消失。

人工神经网络中为什么ReLu要好过于tanh和sigmoid function?

  1. 节省计算量:sigmoid等函数在反向传播求误差梯度时,求导涉及除法和指数运算,计算量相对大,而采用Relu激活函数,整个过程的计算量节省很多。

  2. 对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0,模型权重难以更新),这种现象称为饱和,从而无法完成深层网络的训练。而ReLU就不会有饱和倾向,不会有特别小的梯度出现。

  3. Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。

1. sigmoid (0,1)

在这里插入图片描述

  • 公式:
    σ ( z ) = 1 1 + e − z \sigma(z)=\frac{1}{1+e^{-z}} σ(z)=1+ez1

  • 导数:
    σ ′ ( z ) = 0 − 1 ∗ ( − e − z ) ( 1 + e − z ) 2 = e − z ( 1 + e − z ) 2 = e − z ( 1 + e − z ) ∗ 1 ( 1 + e − z ) = 1 + e − z − 1 ( 1 + e − z ) ∗ σ ( z ) = ( 1 − σ ( z ) ) ∗ σ ( z ) \begin{aligned} \sigma'(z)&=\frac{0-1*(-e^{-z})}{(1+e^{-z})^2} \\ &=\frac{e^{-z}}{(1+e^{-z})^2} \\ &=\frac{e^{-z}}{(1+e^{-z})}*\frac{1}{(1+e^{-z})} \\ &=\frac{1+e^{-z}-1}{(1+e^{-z})}*\sigma(z)\\ &=(1-\sigma(z))*\sigma(z) \end{aligned} σ(z)=(1+ez)201(ez)=(1+ez)2ez=(1+ez)ez(1+ez)1=(1+ez)1+ez1σ(z)=(1σ(z))σ(z)

  • 优点:

    • 平滑、易于求导。
  • 缺点:

    • 激活函数计算量大(在正向传播和反向传播中都包含幂运算和除法);
    • 反向传播求误差梯度时,求导涉及除法;
    • Sigmoid导数取值范围是[0, 0.25],由于神经网络反向传播时的“链式反应”,很容易就会出现梯度消失的情况。例如对于一个10层的网络, 根据 0.2 5 10 0.25^{10} 0.2510近似 9.5 ∗ 1 0 − 7 9.5*10^{-7} 9.5107,第10层的误差相对第一层卷积的参数 W 1 W_1 W1的梯度将是一个非常小的值,这就是所谓的“梯度消失”。
    • Sigmoid的输出不是0均值(即zero-centered);这会导致后一层的神经元将得到上一层输出的非0均值的信号作为输入,随着网络的加深,会改变数据的原始分布。

2. softmax

用于处理分类问题,总概率和相加为1。
p i = e a i ∑ k = 1 N e a k p_i=\frac{e^{a_i}}{\sum_{k=1}^N e^{ak}} pi=k=1Neakeai
α p i α a j = { p i ( 1 − p j ) i f ( i = j ) − p j p i i f ( i ≠ j ) \frac{\alpha p_i}{\alpha a_j}= \begin{cases} p_i(1-p_j)&if(i=j)\\ -p_jp_i &if(i\not=j)\\ \end{cases} αajαpi={pi(1pj)pjpiif(i=j)if(i=j)
求导分为i=j和i≠j:
​​​​​ ​​​​​

softmax与sigmoid的区别

  1. 最后一层连接的神经元,sigmoid为1,softmax为2.
    • sigmoid只有目标/非目标的区分,即独立事件,可以用 1 − P ( 目 标 ) 1-P(目标) 1P() 得出 P ( 非 目 标 ) P(非目标) P().
    • softmax可以有多类.
  2. sigmoid为两点分布,即P与1-P;softmax为离散概率分布,所有维度概率之和=1,当二分类时为二项分布.
  3. 若有二维[-0.9419 1.944]经过sigmoid和softmax
    • softmax得出[0.2805 0.8748],会发现两者之和!=1,因为两者属于独立事件.
    • sigmoid得出[0.0529 0.9471],两者之和=1.

3. tanh (-1,1)

tanh为双曲正切函数,输出范围(-1,1),可以把 tanh 函数看做是 sigmoid 向下平移和拉伸后的结果。
在这里插入图片描述

  • 公式:
    t a n h ( x ) = e x − e − x e x + e − x − 1 = 2 1 + e − 2 x − 1 \begin{aligned} tanh(x)&=\frac{e^x-e^{-x}}{e^x+e^{-x}}-1 \\ &=\frac{2}{1+e^{-2x}}-1 \end{aligned} tanh(x)=ex+exexex1=1+e2x21

  • tanh的输出范围时(-1, 1),解决了Sigmoid函数的不是zero-centered输出问题;

  • 幂运算的问题仍然存在;

  • tanh导数范围在(0, 1)之间,相比sigmoid的(0, 0.25),梯度消失问题会得到缓解,但仍然还会存在。

4. relu (0,x)

在这里插入图片描述

  • 公式:
    r e l u ( x ) = m a x ( 0 , x ) relu(x)=max(0, x) relu(x)=max(0,x)

  • 不会出现梯度消失。

  • 可能出现梯度爆炸,因为导数为1,链式法则是累乘的过程。

  • 注意学习率不能设置太高,特别是当值小于0的时候,也就是relu在筛选噪声数据稀疏矩阵的时候,如果设置太高,大部分神经元处于‘dead’状态,导致模型无法学习到有效特征。

  • 运算速度快。

5. Leaky ReLU PReLU RReLU

为了防止模型的‘Dead’情况,后人将x<0部分并没有直接置为0,而是给了一个很小的负数梯度值 α \alpha α,即 x > = 0 x>=0 x>=0 y = x y=x y=x x < 0 x<0 x<0时, y = α x y=\alpha x y=αx

  1. Leaky ReLU中的 α \alpha α为常数,一般设置 0.01。这个函数通常比 Relu 激活函数效果要好,但是效果不是很稳定,所以在实际中 Leaky ReLu 使用的并不多。
  2. PRelu(Parametric Relu 参数化修正线性单元) 中的 α \alpha α作为一个可学习的参数,会在训练的过程中进行更新。
  3. RReLU(Random ReLU随机纠正线性单元)。在RReLU中, α \alpha α在训练中是随机的,在之后的测试中就变成了固定的了。RReLU的亮点在于,在训练环节中, α j i \alpha_{ji} αji是从一个均匀的分布 U ( I , u ) U(I,u) U(I,u)中随机抽取的数值。

ReLU及其变体图像:

Reference

https://zhuanlan.zhihu.com/p/73214810

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

nooobme

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

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

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

打赏作者

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

抵扣说明:

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

余额充值