【笔记】激活函数SiLU和Swish

简介: 激活函数 SiLU 和 Swish 都是 深度学习 中用于神经网络中的非线性激活函数,旨在增强模型的表达能力和训练性能。实际上,SiLU(Sigmoid Linear Unit)和 Swish 本质上是同一个激活函数的两种不同名称。
  1. SiLU 与 Swish

SiLU(Sigmoid Linear Unit)最早是由 Google 的研究人员提出的,它是 Sigmoid 和 线性 函数的组合。SiLU 的数学表达式为:SiLU(x)=x⋅σ(x)其中,σ(x) 是 Sigmoid 函数:σ(x)=11+e−x
Swish 是 SiLU 的另一个名字,尤其是在 Google 提出的论文中被称为 Swish 函数。Swish 与 SiLU 完全相同,表达式一样,只是在不同文献中用不同的名字。
Swish 的定义也是:
Swish(x)=x⋅σ(x)因此,SiLU 和 Swish 实际上是同一个激活函数,不同的名称反映了不同的背景和应用场景。

  1. SiLU / Swish 函数的数学表达式

SiLU 或 Swish 激活函数的形式可以写成:Swish(x)=x⋅σ(x)=x1+e−x

这里的 Sigmoid 函数 σ(x) 使得 SiLU 函数具有非线性特性,而 x 则是输入值。SiLU 函数将输入值 x 与 Sigmoid 函数的输出相乘,从而对其进行变换,得到了一个平滑的激活函数。

  1. SiLU / Swish 的特性

平滑性:SiLU 比 ReLU 更平滑,因为它不会像 ReLU 那样在负值域直接“消失”或变成零。SiLU 在负输入时仍然有非零输出,并且梯度是平滑的。
非线性:SiLU 是非线性的,它结合了 Sigmoid 和线性部分,因此它能够学习复杂的特征。这使得 SiLU 在深层神经网络中比 ReLU 更加有效。
避免死神经元问题:ReLU 的一个问题是它会在输入值小于零时输出零,这可能导致一些神经元在训练过程中变成“死神经元”,即不再更新。SiLU 不会这样,因为它的输出是平滑的,负值输入仍会输出较小的值,而不是零。
无上限:SiLU 和 ReLU 一样,当输入值大时,输出会随着输入值增大而增大,因此没有上限,适合处理大规模的数据。

  1. SiLU / Swish 与其他激活函数的比较

与 ReLU 比较:
ReLU:ReLU(x)=max⁡(0,x)
ReLU 会在负输入时输出零,可能导致“死神经元”问题。
在深层网络中,ReLU 的平滑性较差,容易导致梯度消失。
SiLU / Swish:SiLU 是平滑的,避免了 ReLU 的死神经元问题,并且能够提供更稳定的训练过程。
与 Sigmoid 比较:
Sigmoid:σ(x)=11+e−x
Sigmoid 输出范围在 [0,1],适用于二分类问题,但可能会导致梯度消失,尤其在深度网络中不太有效。
SiLU / Swish:与 Sigmoid 相比,SiLU 的输出范围没有上限,并且 SiLU 的计算方式使得它对梯度消失问题的容忍度更高。
与 Tanh 比较:
Tanh:Tanh(x)=ex−e−xex+e−x
Tanh 的输出范围是 [−1,1],也是一种常见的非线性激活函数,但它也容易导致梯度消失,特别是在深层网络中。
SiLU / Swish:SiLU 是平滑的,避免了梯度消失问题,同时它的计算比 Tanh 更简单,因为没有指数项。

  1. SiLU / Swish 的优点

训练过程稳定:SiLU 提供了平滑的梯度,帮助网络避免梯度消失的问题,因此可以加速训练过程。
增强了模型的表达能力:SiLU 是非线性的,能够捕捉复杂的模式,比传统的 ReLU 更具有表达能力。
解决死神经元问题:在 ReLU 中,输入小于零的神经元会“死掉”,即不再更新,但 SiLU 不会出现这种问题,因为它在负输入时仍会输出小的非零值。
支持深度网络:SiLU 的平滑性使得它在深层神经网络中表现得更好,特别是对于非常深的网络和复杂的任务。

  1. SiLU / Swish 在深度学习中的应用

图像分类:SiLU / Swish 激活函数被广泛应用于图像分类任务,尤其是在像 ResNet、DenseNet 这样的网络结构中,可以提高训练的稳定性。
自然语言处理:在 NLP 任务中,SiLU / Swish 也显示出很好的效果,例如在 BERT 等预训练模型中,使用 SiLU 激活函数能够提高模型的性能。
生成模型:在 GAN(生成对抗网络)和其他生成模型中,SiLU 由于其平滑的特性,能够帮助模型更好地生成高质量的样本。

  1. 在 PyTorch 和 TensorFlow 中使用 SiLU

PyTorch 中使用 SiLU:
PyTorch 提供了一个内置的 SiLU 激活函数,使用起来非常简单:import torch import torch.nn as nn silu = nn.SiLU() # 定义 SiLU 激活函数 x = torch.randn(5) # 输入张量 output = silu(x) # 应用 SiLU 激活 print(output)
TensorFlow 中使用 SiLU:
TensorFlow 也提供了 SiLU 激活函数,可以通过 tf.keras.activations.silu 来使用:import tensorflow as tf x = tf.random.normal([5]) # 输入张量 output = tf.keras.activations.silu(x) # 应用 SiLU 激活 print(output)

  1. 总结

SiLU(Swish) 是一种结合了 Sigmoid 和线性函数的平滑激活函数,相较于 ReLU 和 Sigmoid,它具有更好的平滑性、表达能力和训练稳定性。
它可以有效避免死神经元问题,减少梯度消失,并且在深层神经网络中提供更稳定的训练过程。
SiLU 在许多深度学习任务中,特别是在图像分类、NLP 和生成模型中,表现出了优秀的性能。
如果你在深度学习中遇到训练不稳定的问题,可以尝试使用 SiLU 激活函数,它可能会提升模型的效果。https://www.52runoob.com/archives/4734

目录
相关文章
|
4月前
|
机器学习/深度学习 PyTorch TensorFlow
SiLU函数
SiLU(Sigmoid Linear Unit)函数,也称为 Swish 函数,是一种常用于深度学习中的激活函数。它是由 Google 的研究人员提出的,旨在解决 ReLU(Rectified Linear Unit)函数的一些缺点,尤其是在深度网络的训练过程中。
387 0
ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略
ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略
ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略
|
9月前
|
编解码 异构计算
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
2402 7
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
|
10月前
|
搜索推荐 前端开发 API
构建智能导购助手:百炼大模型的实践与探索
智能导购助手利用百炼大模型的Multi-Agent架构,实现精准的商品推荐和主动式对话,解决购物时商品选择困难、需求沟通成本高、推荐缺乏个性化等问题。通过详细的部署实践和技术架构解析,本文带你深入了解如何打造一个高效、个性化的智能导购系统,提升购物体验与满意度。
942 6
构建智能导购助手:百炼大模型的实践与探索
|
自然语言处理 算法 数据挖掘
【数据挖掘】十大算法之PageRank连接分析算法
文章介绍了PageRank算法的基本概念和数学模型,包括如何通过一阶马尔科夫链定义随机游走模型以及如何计算网页的重要性评分,并提供了PageRank迭代算法的具体步骤。
531 0
|
9月前
|
机器学习/深度学习 缓存 负载均衡
Qwen MoE关键细节:通过全局负载均衡提升模型性能和专家的特异化程度
Qwen MoE关键细节:通过全局负载均衡提升模型性能和专家的特异化程度
|
机器学习/深度学习 计算机视觉 异构计算
YOLOv8优改系列一:YOLOv8融合BiFPN网络,实现网络快速涨点
本文介绍了将BiFPN网络应用于YOLOv8以增强网络性能的方法。通过双向跨尺度连接和加权特征融合,BiFPN能有效捕获多尺度特征,提高目标检测效果。文章还提供了详细的代码修改步骤,包括修改配置文件、创建模块文件、修改训练代码等,以实现YOLOv8与BiFPN的融合。
1994 0
YOLOv8优改系列一:YOLOv8融合BiFPN网络,实现网络快速涨点
|
11月前
|
人工智能 搜索推荐 算法
婚恋交友系统UI/UX设计优化 婚恋交友系统用户界面友好性提升 婚恋交友系统用户行为分析与优化 婚恋交友系统用户反馈收集与处理
针对婚恋交友系统的UI/UX设计优化,本文提出多项策略:简化用户界面、提升交互体验、个性化推荐算法;增强用户界面友好性,包括适应性、无障碍及情感化设计;通过数据收集与分析优化用户行为路径;建立多渠道反馈机制,分类处理并及时告知结果。这些措施旨在提高用户体验和满意度,促进平台健康发展。[点击查看完整演示和免费源码](https://gitee.com/duoke-official-open-source/hunlianjiaoyou)
495 6
|
机器学习/深度学习 人工智能 自然语言处理
【图像生成技术】人工智能在医疗健康领域的应用实例:图像生成技术的革新实践
在当今医疗健康的前沿阵地,人工智能(AI)技术正以前所未有的速度重塑着医疗服务的面貌,其中图像生成技术尤其在提升诊断精度、优化治疗策略及增强医疗教育方面展现出了巨大潜力。以下将通过一个简化的示例,展示如何利用深度学习模型,特别是生成对抗网络(GANs),来生成医学图像,并讨论其在实际医疗场景中的应用价值。
484 6