问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

神经网络中的激活函数:类型、特点与应用场景

创作时间:
作者:
@小白创作中心

神经网络中的激活函数:类型、特点与应用场景

引用
CSDN
1.
https://blog.csdn.net/u011145873/article/details/145022474

在神经网络模型中,激活函数扮演着至关重要的角色。它们不仅为网络引入了非线性特性,增强了模型的学习能力,还在很大程度上影响着模型的性能和训练效率。本文将详细介绍12种常见的激活函数,帮助读者理解它们的定义、特点以及适用场景。

神经网络中的激活函数

神经网络通常由三种类型的层组成:输入层、隐藏层和输出层。输入层仅用于保存输入数据,不执行任何计算,因此不需要激活函数。在隐藏层中,非线性激活函数的使用至关重要,因为它们为网络引入了非线性,使得模型能够学习复杂的模式。如果缺少非线性激活函数,即使拥有多个隐藏层的神经网络也等同于一个巨大的线性回归模型,无法有效处理现实世界中的复杂数据。

输出层的激活函数选择则取决于具体任务类型。接下来,我们将详细探讨各种常用的激活函数。

线性与非线性函数

大多数激活函数是非线性的,但在线性激活函数也有其应用场景,特别是在解决回归问题时。

  • 线性函数:接受输入z并返回输出cz(c为常数),在数学上表示为f(z) = cz。当c=1时,函数直接返回输入值,不作任何改变。二维空间中,线性函数的图像是一条直线。

  • 非线性函数:任何不符合上述线性定义的函数都可归类为非线性函数。它们的图像不是直线,可以是复杂的曲线或多个线性组件的组合。

常见激活函数详解

1. Sigmoid函数

  • 特点

  • 是逻辑回归模型中常用的逻辑函数

  • 函数图像呈S形

  • 是一个非线性函数

  • 将输入转换为0到1之间的概率值

  • 大的负值被转换为0,大的正值被转换为1

  • 输入为0时返回0.5,这个值可以作为阈值来区分两类

  • 应用场景

  • 早期在MLP、CNN和RNN的隐藏层中使用

  • 目前在RNN中仍有应用

  • 在二元分类器的输出层中使用,将输出解释为类标签的概率值

  • 在多标签分类模型中,每个类都有两个可能的结果

  • 缺点

  • 存在梯度消失问题

  • 收敛速度慢

  • 输出不是以零为中心,优化过程更困难

  • 包含e^z项,计算成本高

2. Tanh函数

  • 特点

  • 输出范围在-1到+1之间

  • 同样具有S形曲线

  • 是一个非线性函数

  • 以零为中心,优化过程更简单

  • 梯度比Sigmoid函数更陡

  • 应用场景

  • 目前在MLP、CNN和RNN的隐藏层中使用

  • 在RNN中使用

  • 不在输出层使用

  • 缺点

  • 存在梯度消失问题

  • 包含e^z项,计算成本高

3. ReLU函数

  • 特点

  • 是Sigmoid和Tanh函数的理想替代品

  • 深度学习领域的重要突破

  • 不存在梯度消失问题

  • 计算成本低,收敛速度比Sigmoid和Tanh快6倍

  • 输入大于0时输出原值,小于0时输出0

  • 由两个线性分量组成,是一个分段线性函数

  • 输出范围从0到正无穷

  • 收敛速度快,因为一个线性分量有固定导数,另一个为零

  • 函数中不含指数项,计算更快

  • 应用场景

  • 是MLP和CNN隐藏层的默认选择

  • 不在RNN的隐藏层使用,通常使用Sigmoid或Tanh

  • 不在输出层使用

  • 缺点

  • 存在"死亡ReLU"问题,即梯度过大导致权重更新后为负,经ReLU后变为0,不再更新

4. Leaky ReLU函数

  • 特点

  • 是ReLU函数的改进版本

  • 不存在梯度消失问题

  • 输入大于0时输出原值,小于0时输出一个小负值(αz,α通常为0.01)

  • 没有零导数的线性分量,避免了"死亡ReLU"问题

  • 学习过程比标准ReLU更快

  • 应用场景

  • 与ReLU函数的使用场景相同

5. 参数ReLU (PReLU)函数

  • 特点
  • ReLU函数的另一种变体
  • 类似于Leaky ReLU,但α值是可学习的参数
  • 每个神经元都有自己的α值

6. ReLU6函数

  • 特点
  • 与ReLU的主要区别在于正侧值的限制
  • 任何大于6的输入值都会被限制为6
  • 由三个线性分量组成,是一个非线性函数

7. Softmax函数

  • 特点

  • 非线性激活函数

  • 计算K个不同事件(类)的概率值

  • 所有概率之和为1,表示事件互斥

  • 应用场景

  • 必须在多类分类问题的输出层使用

  • 不在隐藏层使用

8. 二元阶梯函数

  • 特点

  • 也称为阈值激活函数

  • 输入大于阈值时输出1,否则输出0

  • 输出二进制值0或1

  • 由两个线性分量组成,是非线性函数但不平滑

  • 应用场景

  • 不在现代神经网络中使用

  • 用于理论概念的解释,如神经元激发机制

9. 恒等激活函数

  • 特点

  • 也称为线性激活函数

  • 直接输出输入值,不做任何改变

  • 应用场景

  • 仅在解决回归问题的输出层使用

  • 不在隐藏层使用

10. Swish函数

  • 特点

  • 通过将sigmoid函数与输入z相乘构成

  • 非线性函数

  • 曲线与ReLU相似但更平滑

  • 训练时容易收敛

  • 应用场景

  • 仅在隐藏层使用

  • 不在输出层使用

  • 缺点

  • 计算量大,包含e^z项

11. Hard Swish函数

  • 特点

  • 曲线与Swish相似

  • 通过用线性模拟代替sigmoid函数,计算成本更低

  • 应用场景

  • 与Swish函数类似

总结

选择合适的激活函数是神经网络设计中的关键环节,可以将其视为一种超参数调整。以下是一些实用建议:

  • 输入层不需要激活函数
  • 输出层的激活函数选择取决于任务类型:回归问题使用线性函数,二元分类使用Sigmoid,多类分类使用Softmax,多标签分类使用Sigmoid
  • 隐藏层通常使用非线性激活函数,可以从ReLU开始尝试,如果遇到"死亡ReLU"问题,可以考虑Leaky ReLU
  • MLP和CNN的隐藏层默认使用ReLU
  • RNN的隐藏层通常使用Sigmoid或Tanh,其中Tanh性能更优
  • 只有恒等函数是线性的,其他都是非线性函数
  • 避免在隐藏层使用Softmax和恒等函数,推荐使用Tanh、ReLU及其变体、Swish和Hard Swish
  • Hard Swish是最新研究成果,值得尝试

通过理解这些激活函数的特点和应用场景,可以更好地优化神经网络模型的性能和训练效率。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号