深度学习日常学习记录——激活函数

深度学习日常学习记录——激活函数



前言

真实世界中的万物是由复杂数学公式来表征的,由光学、电学、物理学、化学、生物学等众多学科组成。深度神经网络层之间为线性连接,增加网络的广度和深度都无法增加网络非线性计算能力。因此,为了让神经网络更好的理解世界,需要设计激活函数来拟合复杂公式

一、激活函数的作用?

  • 非线性表达
  • 防止梯度消失
  • 加速模型收敛

二、激活函数分类

序号激活函数公式优点缺点
1sigmoid函数 σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1+e^{-x}} σ(x)=1+ex1梯度消失,产生饱和神经元;非零中心,收敛缓慢、无法体现个体神经元收敛
2tanh函数 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以零为中心,加速收敛梯度消失,产生饱和神经元
3RELU函数 f ( x ) = { x if x > 0 0 if x ≤ 0 f(x)=\begin{cases} x & \text{if} x >0 \\ 0 & \text{if} x \leq 0 \end{cases} f(x)={x0ifx>0ifx0计算高效,缓解梯度消失dead神经元,不以零为中心,给后一层神经元产生偏移
4Leaky RELU函数 f ( x ) = { x if x > 0 γ x if x ≤ 0 f(x)=\begin{cases} x & \text{if} x > 0 \\ \gamma x & \text{if} x \leq 0 \end{cases} f(x)={xγxifx>0ifx0缓解dead 神经元问题
5ELU函数 f ( x ) = { x if x > 0 α ( e x − 1 ) if x ≤ 0 f(x)=\begin{cases} x & \text{if} x > 0 \\ \alpha (e^{x} - 1 ) & \text{if} x \leq 0 \end{cases} f(x)={xα(ex1)ifx>0ifx0没有dead 神经元问题,正负平均,以零为中心,有饱和域计算量大
6SeLU函数 f ( x ) = γ { x if x > 0 α ( e x − 1 ) if x ≤ 0 f(x)= \gamma \begin{cases} x & \text{if} x > 0 \\ \alpha (e^{x} - 1 ) & \text{if} x \leq 0 \end{cases} f(x)=γ{xα(ex1)ifx>0ifx0放大input的变化
7Swish函数 σ ( x ) = x × s i g m o i d ( β x ) \sigma(x)=x \times sigmoid(\beta x) σ(x)=x×sigmoid(βx)自门控激活函数
8Maxout函数三维求取最大输出
9Softplus函数

三、激活函数使用

激活函数LaTeX 公式PyTorch 调用方式特性说明
Sigmoid σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1nn.Sigmoid()输出范围 (0,1),适合概率输出
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+exexexnn.Tanh()输出范围 (-1,1),零中心化
ReLU ReLU ( x ) = max ⁡ ( 0 , x ) \text{ReLU}(x) = \max(0, x) ReLU(x)=max(0,x)nn.ReLU()简单高效,但负区梯度为 0
LeakyReLU LeakyReLU ( x ) = { x x ≥ 0 α x x < 0 \text{LeakyReLU}(x) = \begin{cases} x & x \geq 0 \\ \alpha x & x < 0 \end{cases} LeakyReLU(x)={xαxx0x<0nn.LeakyReLU(alpha=0.01)缓解神经元死亡,需调参 alpha
ELU ELU ( x ) = { x x ≥ 0 α ( e x − 1 ) x < 0 \text{ELU}(x) = \begin{cases} x & x \geq 0 \\ \alpha (e^x - 1) & x < 0 \end{cases} ELU(x)={xα(ex1)x0x<0nn.ELU(alpha=1.0)平滑负区,缓解梯度消失
SELU SELU ( x ) = λ { x x ≥ 0 α ( e x − 1 ) x < 0 \text{SELU}(x) = \lambda \begin{cases} x & x \geq 0 \\ \alpha (e^x - 1) & x < 0 \end{cases} SELU(x)=λ{xα(ex1)x0x<0
λ ≈ 1.0507 \lambda \approx 1.0507 λ1.0507, α ≈ 1.6733 \alpha \approx 1.6733 α1.6733
nn.SELU()自归一化网络专用,需特定初始化
Swish Swish ( x ) = x ⋅ σ ( β x ) \text{Swish}(x) = x \cdot \sigma(\beta x) Swish(x)=xσ(βx)手动实现:x * torch.sigmoid(beta * x)平滑非单调,实验表现优
Maxout Maxout ( x ) = max ⁡ i ∈ [ 1 , k ] ( w i T x + b i ) \text{Maxout}(x) = \max_{i \in [1,k]}(w_i^T x + b_i) Maxout(x)=i[1,k]max(wiTx+bi)自定义实现(无内置)拟合能力强,但参数量大
Softplus Softplus ( x ) = 1 β log ⁡ ( 1 + e β x ) \text{Softplus}(x) = \frac{1}{\beta} \log(1 + e^{\beta x}) Softplus(x)=β1log(1+eβx)nn.Softplus(beta=1)平滑 ReLU,处处可导
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值