深度学习-激活函数

深度学习-激活函数目录

  • 前言
  • 激活函数
    • 什么是激活函数
    • 激活函数的作用
    • 激活函数的种类
      • identity
      • step
      • sigmoid
      • tanh
      • ReLU
      • LReLU
      • PReLU
      • RReLU
      • ELU
      • SELU
      • softsign
      • softplus
      • softmax
      • swish
      • hswish
    • 激活函数的选择
    • 激活函数相关问题


前言

本深度学习系列是根据paddle飞浆所简单整理的,需要可自行跳转学习。本节是关于深度学习-激活函数的相关内容。这是只简单记录部分知识,目的是方便以后复习。


激活函数

什么是激活函数

  1. 激活函数是人工神经网络的一个极其重要的特征
  2. 激活函数决定一个神经元是否被激活
  3. 激活函数对输入信息进行非线性变换,然后将变换后的输出信息作为输入信息传给下一个神经元。

激活函数的作用

作用:使线性组合变成非线性组合, 激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数。

激活函数的种类

identity

函数定义:f(x) = x
导数: f ’ (x)=1

monotonic:单调性
continuity:连续性
identity at origin:源头
symmetry:对称性
anti-symmetrical:反对称、斜对称
asymmetrical: 不对称
saturation:饱和,当网络的输入非常大或非常小时神经元的梯度接近于0(斜率几乎为零),往往与vanishing gradient是同时出现。
dead neurons: 死亡神经元,导数为0
深度学习-激活函数_第1张图片
优点:适合于潜在行为是线性(与线性回归相似)的任务。

缺点:无法提供非线性映射,当多层网络使用identity激活函数时,整个网络就相当于一个单层模型。

step

函数定义:

导数:
深度学习-激活函数_第2张图片

优点:激活函数 Step 更倾向于理论而不是实际,它模仿了生物神经元要么全有要么全无的属性。

缺点:它无法应用于神经网络因为其导数是 0(除了零点导数无定义以外),这意味着基于梯度的优化方法并不可行

sigmoid

函数定义:

导数:
深度学习-激活函数_第3张图片

优点:

sigmoid 函数的输出映射在 (0,1) 之间,单调连续,输出范围有限,优化稳定,可以用作输出层;

求导容易;

缺点:

由于其软饱和性,一旦落入饱和区梯度就会接近于0,根据反向传播的链式法则,容易产生梯度消失,导致训练出现问题;

Sigmoid函数的输出恒大于0。非零中心化的输出会使得其后一层的神经元的输入发生偏置偏移(Bias Shift),并进一步使得梯度下降的收敛速度变慢;
原因:https://www.cnblogs.com/alan-W/p/13756947.html

计算时,由于具有幂运算,计算复杂度较高,运算速度较慢。

tanh

函数定义:
导数:
深度学习-激活函数_第4张图片
优点:

tanh 比 sigmoid 函数收敛速度更快;

相比 sigmoid 函数,tanh 是以 0 为中心的;

缺点:

与 sigmoid 函数相同,由于饱和性容易产生的梯度消失;

与 sigmoid 函数相同,由于具有幂运算,计算复杂度较高,运算速度较慢。

ReLU

深度学习-激活函数_第5张图片

优点:

收敛速度快;

相较于 sigmoid 和 tanh 中涉及了幂运算,导致计算复杂度高, ReLU​可以更加简单的实现;

当输入 x>=0 时,ReLU​ 的导数为常数,这样可有效缓解梯度消失问题;

当 x<0 时,ReLU​ 的梯度总是 0,提供了神经网络的稀疏表达能力;

缺点:

ReLU​ 的输出不是以 0 为中心的;

神经元坏死现象,某些神经元可能永远不会被激活,导致相应参数永远不会被更新;

不能避免梯度爆炸问题;

LReLU

PReLU

RReLU

ELU

SELU

softsign

softplus

softmax

用于多分类问题上求概率

swish

hswish

激活函数的选择

  1. 浅层网络使用sigmoid及其组合通常效果更好
  2. 由于梯度消失问题,有时需要避免使用sigmoid和tanh函数
  3. relu是一个通用函数,在大多数情况下都可以使用
  4. 如果神经网络中出现死神经元,那么 prelu 函数就是最好的选择
  5. relu 函数只能在隐藏层中使用
  6. 通常,可以从 relu 函数开始,如果 relu 函数没有提供最优结果,再尝试其他激活函数

激活函数相关问题

  1. 为什么 relu 不是全程可微/可导也能用于基于梯度的学习?
  2. 为什么 tanh 的收敛速度比 sigmoid 快?
  3. sigmoid 和 softmax 有什么区别?

你可能感兴趣的:(#,深度学习基础篇,深度学习,人工智能,机器学习)