ML基本知识(十四)激活函数

激活函数本质

增加神经网络的非线性型,具体而言为提升神经网络的拟合能力。

各类激活函数

relu

在这里插入图片描述

求导

f ′ ( x ) = { 1      i f   x > 0 0      i f   x ⩽ 0 f'(x)=\left\{\begin{matrix} 1 \ \ \ \ if \ x > 0 \\ 0 \ \ \ \ if \ x \leqslant 0 \end{matrix}\right. f(x)={1    if x>00    if x0

优点

  1. 收敛速度快很多。
  2. 简单,实现比较容易。

缺点

  1. 容易梯度消失,如下情况网络参数W的梯度会消失:W初始化为一个很小的正值,与正值x相乘后得到y(正值),之后y经过relu得到z,根据链式法则对W进行梯度计算得 ∂ L ∂ W = ∂ L ∂ z ∂ z ∂ y ∂ y ∂ W = ∂ L ∂ z ⋅ 1 ⋅ x \frac{\partial L}{\partial W}=\frac{\partial L}{\partial z}\frac{\partial z}{\partial y}\frac{\partial y}{\partial W}=\frac{\partial L}{\partial z}\cdot 1 \cdot x WL=zLyzWy=zL1x,当 ∂ L ∂ z \frac{\partial L}{\partial z} zL>0且较大时,W更新后的取值 W = W − α ∂ L ∂ z ⋅ 1 ⋅ x W=W-\alpha \frac{\partial L}{\partial z}\cdot 1 \cdot x W=WαzL1x < 0,而当下一轮正值x与负值W相乘后得到y(负值),根据relu计算公式得到 ∂ z ∂ y \frac{\partial z}{\partial y} yz为0,直接导致W的梯度 ∂ L ∂ W = ∂ L ∂ z ∂ z ∂ y ∂ y ∂ W \frac{\partial L}{\partial W}=\frac{\partial L}{\partial z}\frac{\partial z}{\partial y}\frac{\partial y}{\partial W} WL=zLyzWy为0,进而W的取值得不到更新,进而形成梯度消失的现象。
  2. relu不会对数据做幅度压缩,所以如果数据的幅度不断扩张,那么模型的层数越深,幅度的扩张也会越厉害,最终会影响模型的表现。
  3. 在0点不可导,造成推导结果不稳定。

leaky relu

在这里插入图片描述
f ( x ) = { x      i f   x > 0          . α x     i f   x ⩽ 0 , α > 0 f(x)=\left\{\begin{matrix} x \ \ \ \ if \ x > 0 \ \ \ \ \ \ \ \ .\\ \alpha x \ \ \ if \ x\leqslant 0, \alpha > 0 \end{matrix}\right. f(x)={x    if x>0        .αx   if x0,α>0

求导

f ( x ) = { 1      i f   x > 0          . α     i f   x ⩽ 0 , α > 0 f(x)=\left\{\begin{matrix} 1 \ \ \ \ if \ x > 0 \ \ \ \ \ \ \ \ .\\ \alpha \ \ \ if \ x\leqslant 0, \alpha > 0 \end{matrix}\right. f(x)={1    if x>0        .α   if x0,α>0

优点

  1. 能够有效避免relu造成的梯度消失问题。

prelu

f ( x ) = { x i  if  x i > 0 a i x i  if  x ⩽ 0 f(x) =\begin{cases} x_i & \text{ if } x_i>0 \\ a_i x_i & \text{ if } x\leqslant 0 \end{cases} f(x)={xiaixi if xi>0 if x0

优点

  1. 多了一个参数,非线性变换的效果更好。
  2. 参数更新时采用的是momentum更新, Δ a i : = μ Δ a i + ϵ ∂ ε ∂ a i \Delta a_i := \mu\Delta a_i + \epsilon \frac{\partial \varepsilon }{\partial a_i} Δai:=μΔai+ϵaiε
  3. 更新 a i a_i ai时不添加L2正则化,这样会将 a i a_i ai直接干到0附近。

sigmoid

在这里插入图片描述

求导

f ′ ( x ) = e − x 1 + e − x ⋅ 1 1 + e − x = ( 1 − f ( x ) ) ⋅ f ( x ) f'(x)=\frac{e^{-x}}{1+e^{-x}}\cdot \frac{1}{1+e^{-x}} = (1 - f(x))\cdot f(x) f(x)=1+exex1+ex1=(1f(x))f(x)

优点

  1. 把实数压缩到[0,1]范围内,实现了真正意义上的激活。

缺点

  1. 容易饱和,输入过大或者过小的时候都会使得梯度变为0,因而导致更新很慢。
  2. 幂计算相对耗时。

tanh

在这里插入图片描述
f ( x ) = e x − e − x e x + e − x f(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}} f(x)=ex+exexex

求导

f ′ ( x ) = 1 − f 2 ( x ) f'(x)=1-f^2(x) f(x)=1f2(x)

优点

  1. 和sigmoid类似,实现数据的压缩。

缺点

  1. 依然面临sigmoid的缺点,输入过大或者过小的时候都会使得梯度变为0,因而导致更新很慢。

参考链接

  1. 神经网络常用的12种激活函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值