当前位置: 首页 > news >正文

深度学习——激活函数

一、什么是激活函数?

在​​深度学习​​中,​​激活函数(Activation Function)​​ 是神经网络中每个神经元上应用的一个非线性函数,它决定了该神经元是否应该被“激活”,即是否将输入信号传递到下一层。

​数学表示:​

如果一个神经元的输入是 z(通常是加权求和加上偏置:z=w⋅x+b),那么经过激活函数 σ后的输出为:

​​​​​​​        

二、为什么要用激活函数?

神经网络的核心能力在于​​学习复杂的非线性映射关系​​,而如果只使用线性运算(如矩阵乘法加偏置),无论多少层网络叠加,其整体依然是一个线性模型:

这本质上还是​​线性变换​​,无法表达复杂的函数关系,比如异或(XOR)、图像、语音等。

👉 ​​激活函数的引入,打破了线性性,使神经网络具有表达非线性函数的能力,是深度学习模型能够学习复杂模式的关键。​


三、激活函数的分类

激活函数大致可以分为以下几类:


1. ​​线性激活函数(Linear Activation)​

​​​​​​​        
  • 特点:输出等于输入,无任何非线性。
  • 缺点:整个网络仍然是线性的,无法学习复杂特征。
  • 使用场景:仅在回归问题的输出层,或者特殊情况下使用。

2. ​​非线性激活函数(Non-linear Activation)​

这是深度学习中最常用的激活函数类型,常见的有:


(1)​​Sigmoid 函数​

✅ ​​优点:​

  • 输出在 0 到 1 之间,可用于表示概率。
  • 平滑、处处可导。

❌ ​​缺点:​

  • 容易导致​​梯度消失​​(在输入很大或很小时,梯度接近0)。
  • 输出不是以 0 为中心,影响优化效率。

📌 ​​适用场景:​​ 二分类问题的输出层(输出概率)。


(2)​​Tanh 函数(双曲正切)​

✅ ​​优点:​

  • 输出以 0 为中心,比 Sigmoid 更好。
  • •平滑可导。

❌ ​​缺点:​

  • 仍然存在​​梯度消失​​问题。

📌 ​​适用场景:​​ 隐藏层(比 Sigmoid 效果略好)。


(3)​​ReLU 函数(Rectified Linear Unit,修正线性单元)​

✅ ​​优点:​

  • 计算简单,速度快。
  • 在正区间不会饱和,缓解了梯度消失问题。
  • 实践中表现非常好,是当前最常用的激活函数之一。

❌ ​​缺点:​

  • ​神经元死亡问题​​:某些神经元可能永远不被激活(输出恒为 0)。

📌 ​​适用场景:​​ 隐藏层(最常用!)


(4)​​Leaky ReLU​

✅ ​​优点:​

  • 解决了 ReLU 的“神经元死亡”问题,负区间有小的梯度。
  • 通常比 ReLU 效果更好。

📌 ​​适用场景:​​ 当你担心某些神经元不激活时使用。


(5)​​Parametric ReLU (PReLU)​
  • Leaky ReLU 的升级版,其中 α是一个​​可学习参数​​,不是固定的。

(6)​​ELU(Exponential Linear Unit)​

✅ ​​优点:​

  • 负值区域有非零输出,有助于让输出均值接近零,加速收敛。
  • 比 ReLU 更平滑。

📌 ​​适用场景:​​ 深层网络,对训练稳定性要求较高的场景。


(7)​​Softmax 函数​

✅ ​​特点:​

  • •将一组数值转化为概率分布,所有输出之和为 1。
  • •常用于​​多分类问题的输出层​​。

📌 ​​适用场景:​​ 多分类任务的输出层。


四、激活函数的选择指南

任务/层类型

推荐激活函数

原因说明

​隐藏层(一般情况)​

​ReLU​​、​​Leaky ReLU​

训练快,效果好,不容易梯度消失

​隐藏层(深层网络)​

​ReLU / ELU / Leaky ReLU​

更稳定,缓解梯度问题

​二分类输出层​

​Sigmoid​

输出概率,范围 (0,1)

​多分类输出层​

​Softmax​

输出类别概率分布

​回归问题输出层​

​线性(无激活函数)​​ 或根据需求选择

输出连续值

​避免神经元死亡​

​Leaky ReLU / PReLU / ELU​

负区间有梯度


五、激活函数的发展趋势

随着深度学习的发展,研究者提出了许多改进的激活函数,目标是:

  • 缓解梯度消失 / 梯度爆炸
  • 加速网络收敛
  • 提高模型泛化能力
  • 避免神经元死亡

例如:

  • ​Swish​​(Google 提出):f(x)=x⋅σ(βx),一个自门控的激活函数,表现有时优于 ReLU。
  • ​GELU(高斯误差线性单元)​​:被用于 Transformer 模型(如 BERT),结合了 ReLU 和 Dropout 的思想。
  • ​Mish​​:f(x)=x⋅tanh(ln(1+ex)),近年来在一些任务中表现优异。

但这些高级激活函数一般在特定任务或模型中表现更好,ReLU 及其变种仍是最常用、最通用的选择。

六、激活函数总结表(PyTorch版)

激活函数

PyTorch类

PyTorch函数

是否常用

适用位置

ReLU

nn.ReLU()

F.relu()

✅✅✅

隐藏层

LeakyReLU

nn.LeakyReLU()

F.leaky_relu()

✅✅

隐藏层(防死亡)

Sigmoid

nn.Sigmoid()

F.sigmoid()

二分类输出层

Tanh

nn.Tanh()

F.tanh()

隐藏层(效果不如 ReLU)

Softmax

nn.Softmax(dim=-1)

F.softmax(x, dim=-1)

多分类输出层

LogSoftmax

nn.LogSoftmax(dim=-1)

F.log_softmax(x, dim=-1)

分类 + NLLLoss

ELU

nn.ELU()

F.elu()

隐藏层(平滑负值)

GELU

nn.GELU()

F.gelu()

✅(如BERT)

隐藏层(Transformer类模型)

SELU

nn.SELU()

F.selu()

✅(自归一化网络)

隐藏层

Swish

无(可用 x * torch.sigmoid(x)或 F.silu(x)

F.silu(x)

✅(Google提出)

隐藏层

🔥 ​​推荐默认选择:​

  • 隐藏层:ReLU、LeakyReLU、GELU、ELU​
  • ​输出层:​
    • 二分类 → ​​Sigmoid​
    • 多分类 → ​​Softmax​
    • 回归 → ​​无激活函数(或线性)​

七、总结

项目

说明

​定义​

激活函数给神经元引入非线性,是神经网络能够学习复杂模式的关键

​为什么重要​

没有激活函数,神经网络等效于线性模型,无法处理复杂任务

​常用激活函数​

Sigmoid、Tanh、ReLU、Leaky ReLU、ELU、Softmax 等

​如何选择​

根据任务类型(分类/回归)、网络深度、训练效果等决定

​当前主流​

​ReLU 及其变种(Leaky ReLU、ELU等)在隐藏层最常用;Softmax 用于多分类输出;Sigmoid 用于二分类输出​

http://www.dtcms.com/a/352721.html

相关文章:

  • 碳化硅衬底 TTV 厚度不均匀性测量的特殊采样策略
  • Redis哨兵机制:高可用架构的守护神!⚔️ 主从秒级切换实战指南
  • 力扣LCP 46. 志愿者调配随笔
  • 基于Spring Boot+Vue的生活用品购物平台/在线购物系统/生活用户在线销售系统/基于javaweb的在线商城系统
  • 微生产力革命:AI解决生活小任务分享会
  • AI 解决生活小事 2——用 AI 做一回新闻播客
  • 解决mac brew4.0安装速度慢的问题
  • 卫星轨道动力学基本理论
  • 精品短剧《奔腾的心》正式开机,以匠心描绘新时代西藏故事
  • 深入解析达梦数据库:模式分类、状态管理与实操指南
  • 21款m1 max升级到macOS 13——Ventura
  • ModuleNotFoundError: No module named ‘dbgpt_app‘
  • 【开源工具】基于Flask与Socket.IO的跨平台屏幕监控系统实战(附完整源码)
  • 宠物智能手机PetPhone技术解析:AI交互与健康监测的系统级创新
  • 设计模式与设计原则简介——及其设计模式学习方法
  • 【Java】异常处理:从入门到精通
  • `open()` 系统调用详解
  • Day7--HOT100--54. 螺旋矩阵,48. 旋转图像,240. 搜索二维矩阵 II
  • LeetCode 32. 最长有效括号
  • 安卓接入通义千问AI的实现记录
  • 基于Springboot学生社区管理系统源码
  • uniapp H5禁止微信浏览器长按出菜单,只针对图片
  • 迅睿CMS自定义网站表单:HTML方式调用Select下拉选项数据指南
  • HTML(面试)
  • 【开题答辩全过程】以 微信小程序的医院挂号预约系统为例,包含答辩的问题和答案
  • 【开题答辩全过程】以 微信小程序的老年活动中心为例,包含答辩的问题和答案
  • 本地windows电脑部署html网页到互联网:html+node.js+ngrok/natapp
  • 腾讯位置商业授权微信小程序路线规划
  • 基于微信小程序的化妆品成分查询系统源码
  • Android Glide最佳实践:高效图片加载完全指南