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

Swish激活函数:深度学习中的自适应门控激活机制

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!

1 Swish激活函数概述

Swish是一种自适应激活函数,由Google Research团队在2017年提出,其基本形式定义为f(x) = x · σ(x),其中σ表示sigmoid函数。Swish的设计受到了长短期记忆网络(LSTM)高速公路网络(highway network) 中使用sigmoid函数进行门控的启发。作为一种自门控激活函数,Swish使用相同的标量输入进行门控计算,简化了门控机制的同时保持了强大的表达能力。

Swish激活函数具有光滑性非单调性无上界有下界的特点。与传统的ReLU激活函数相比,Swish在所有点都是平滑可导的,这有助于优化过程的稳定性。当输入为负值时,Swish会产生小幅负输出而不是像ReLU那样直接截断为零,这种特性可能有助于保持信息的流动。

大量实验表明,Swish在深度神经网络中表现出色,在ImageNet数据集上,Swish为Mobile NASNet-A带来了0.9% 的top-1准确率提升,为Inception-ResNet-v2带来了0.6% 的提升。Swish的简单性和与ReLU的相似性使其能够轻松替换现有网络中的激活函数,无需改变模型的隐藏容量或参数数量。

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!

往期文章推荐:

  • 20.康威生命游戏:零玩家游戏的元胞自动机奇迹
  • 19.梯度范数:概念、性质、应用与算法实现
  • 18.LSTM:长短期记忆网络的原理、演进与应用
  • 17.古德-杰弗里斯悖论:贝叶斯统计中的先验选择难题
  • 16.BRLESC计算机:美国弹道研究实验室的科学计算先驱
  • 15.磁带记录仪:从磁带到数字的数据存储之旅
  • 14.振荡器:从基础原理到大模型计算的时钟心脏
  • 13.SuperGLUE:自然语言理解的挑战与进步
  • 12.奇异值:数据科学的数学基石与应用核心
  • 11.GLUE:自然语言理解评估的黄金基准
  • 10.MMLU:衡量大语言模型多任务理解能力的黄金基准
  • 9.低秩矩阵:揭示高维数据中的简约之美
  • 8.低秩分解技术:从理论到应用的全方位解读
  • 7.DROP:挑战机器离散推理能力的阅读 comprehension 基准
  • 6.Frank-Wolfe算法:深入解析与前沿应用
  • 5.SQuAD:机器阅读理解领域的里程碑数据集
  • 4.图灵完备性:计算理论的基石与无限可能
  • 3.CrowS-Pairs:衡量掩码语言模型中社会偏见的挑战数据集
  • 2.Pairwise排序损失:让机器学会排序的艺术
  • 1.Winogender:衡量NLP模型性别偏见的基准数据集

2 历史背景与发展历程

Swish激活函数的发展经历了几个重要阶段。它最初作为Sigmoid-weighted Linear Unit (SiLU) 在2016年的GELU论文中被提出。2017年,该函数在强化学习领域被重新提出为Sigmoid-weighted Linear Unit (SiL)。2017年末,Google Research团队的Prajit Ramachandran、Barret Zoph和Quoc V. Le通过自动搜索技术重新发现了这一激活函数,并将其命名为Swish。

Google团队使用自动机器学习技术搜索最佳激活函数,通过结合穷尽搜索强化学习方法,发现了多个表现优异的激活函数。研究结果表明,复杂的激活函数性能通常不如简单的激活函数,最佳激活函数可以用1或2个核心单元表示。优秀的激活函数通常具有共同结构:使用原始预激活x作为最终二进制函数的输入,即b(x, g(x))。

Swish与其他激活函数的关系十分有趣。当Swish中的参数β=1时,Swish等价于SiLU激活函数。当β=0时,Swish退化为线性函数f(x) = x/2。当β→∞时,Swish趋近于ReLU函数。这种灵活性使Swish能够平滑地在线性函数和ReLU函数之间进行插值。

表:Swish发展历程主要事件

年份事件贡献者名称
2016首次提出Hendrycks等SiLU
2017强化学习应用Elfwing等SiL
2017自动搜索发现Google ResearchSwish

3 Swish的核心概念

3.1 数学定义

Swish激活函数的数学定义为:

f(x) = x · σ(x)

其中σ(x)是sigmoid函数,定义为:

σ(x) = 1 / (1 + e⁻ˣ)

Swish也可以定义为参数化版本,引入可调节的参数β:

f(x) = x · σ(βx)

参数β控制着函数的形状:当β=0时,函数变为线性函数f(x) = x/2;当β=1时,函数变为标准Swish/SiLU;当β→∞时,函数趋近于ReLU。

3.2 导数计算

Swish的导数计算如下:

f’(x) = σ(βx) + βx · σ(βx)(1 - σ(βx))

对于最常用的SiLU(β=1的情况),导数公式简化为:

f’(x) = σ(x)(1 + x(1 - σ(x)))

Swish的导数具有几个重要特性:在x=0处的值为1/2;在某些区域可以大于1,这使得梯度在反向传播时可能被放大;导数是平滑的,有助于优化过程的稳定性。

3.3 门控机制解释

Swish的设计受到门控机制的启发。在LSTM和高速公路网络中,sigmoid函数用于控制信息流动的量。Swish采用自门控机制,使用相同的标量输入进行门控,而不是像传统门控那样需要多个标量输入。这种自门控特性使Swish能够轻松替换以单个标量作为输入的激活函数(如ReLU),而无需改变隐藏容量或参数数量。

4 Swish的特性与优势分析

4.1 平滑性与非单调性

Swish是一个平滑函数,在所有点都是连续可导的。这与ReLU不同,ReLU在x=0处不可导。平滑性有助于优化过程的稳定性,使训练更加顺畅。

Swish还是一个非单调函数,当x<0时,函数曲线先下降后上升,这与大多数传统激活函数不同。非单调性可能是Swish表现优异的一个重要原因,尽管这一特性的确切影响尚不完全清楚。

4.2 无界性与有界性

Swish无上界但有下界。当x→∞时,Swish→∞;当x→-∞时,Swish→0。无界性有利于防止在训练缓慢时梯度逐渐趋于0,造成饱和问题。同时,有下界的特性提供了较强的正则化效果,较大的负输入会被化解。

4.3 与ReLU的对比

与ReLU相比,Swish有几个重要区别:

  • 平滑性:Swish在所有点都是平滑的,而ReLU在x=0处不可导
  • 负值区域:Swish允许少量负值通过,这可能有助于信息流动
  • 有界性:当x→-∞时,Swish趋近于0,而不是像ReLU那样直接截断

这些特性使Swish在多数情况下能够比ReLU取得更好的性能,尤其是在深层网络中。

4.4 与GELU的对比

GELU(Gaussian Error Linear Units)是另一种与Swish相似的激活函数,定义为GELU(x) = x · Φ(x),其中Φ(x)是标准正态分布的累积分布函数。

Swish和GELU有一些共同点:

  • 都是平滑函数
  • 都可以看作是输入值被某个概率函数加权的结果
  • 在实际应用中性能相近

主要区别包括:

  • 计算复杂度:Swish的计算相对更简单
  • 概率解释:GELU使用高斯分布,而Swish使用Sigmoid函数
  • 参数化:Swish引入了可学习参数β

表:Swish与其他激活函数特性比较

特性SwishReLUGELUSigmoid
平滑性
单调性
无上界
有下界
计算复杂度中等中等

5 Swish的应用实践

5.1 计算机视觉中的应用

Swish在计算机视觉任务中表现出色。在ImageNet数据集上,Swish为Mobile NASNet-A带来了0.9% 的top-1准确率提升,为Inception-ResNet-v2带来了0.6% 的提升。Swish特别适合与局部响应归一化结合使用,并且在40层以上的全连接网络中,Swish的效果远优于其他激活函数。

研究表明,Swish在更深的神经网络中优势更加明显。在40层全连接网络之内,Swish与其他激活函数的性能差距不明显,但在更深层的网络中,Swish表现出显著优势。

5.2 自然语言处理中的应用

自然语言处理领域,Swish也取得了成功应用。Swish的变体SwishGLU成为了LLaMA系列模型FFN层的首选激活函数。SwishGLU结合了Swish激活函数和门控线性单元(GLU),定义为:

SwishGLU(x) = Swish(xW + b) ⊙ (xV + c)

其中⊙表示元素级乘法,W和V是权重矩阵。

5.3 实现方式

在大多数深度学习框架中,Swish的实现非常简单。在TensorFlow中,Swish可以通过一行代码实现:

# TensorFlow 实现
import tensorflow as tf
def swish(x):return x * tf.sigmoid(x)

或者直接使用内置函数:

# 使用TensorFlow内置Swish
tf.nn.silu(features, beta=1.0) # Silu是Swish的别名

在PyTorch中,Swish的实现也很简单:

# PyTorch 实现
import torch
def swish(x):return x * torch.sigmoid(x)

5.4 使用技巧

在使用Swish时,有几个实用技巧值得注意:

  • 如果使用BatchNorm,应设置缩放参数(scale parameter)。由于ReLU是分段线性函数,一些高级库默认关闭缩放参数,但这种设置不适用于Swish
  • 在训练Swish网络时,稍微降低用于训练ReLU网络的学习率效果很好
  • 参数β可以作为可训练参数,让网络自动学习最佳值

本文由「大千AI助手」原创发布,专注用真话讲AI,回归技术本质。拒绝神话或妖魔化。搜索「大千AI助手」关注我,一起撕掉过度包装,学习真实的AI技术!

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

相关文章:

  • 网站seo如何做好优化网站制作工作室哪家比较好
  • 网站分析对比主页网址
  • 广东食品安全员食品销售考试难度怎么样
  • 一个做网页的网站如何微信做演讲视频网站
  • dw做网站设计营销的手段和方法
  • 怎么做空包网站seo网络推广专员
  • 免费代理服务器ip地址惠州seo外包费用
  • php 网站出现乱码杨浦区公司网站建设
  • 哪个网站教做饭做的好wordpress网易云课堂
  • 外贸网站推广 sitphp手机网站源码下载
  • 9.26 字典树|双指针
  • 彩票网站做任务拿佣金企业网站备案流程
  • Java hashCodeequals的关系
  • 个人建什么样的网站好wordpress qq登录免费
  • 一个网站的优势有哪些安装文件出现乱码
  • 做网站的时候表格怎么去掉最近网站改版文章突然不收录
  • 网站怎么做才有收录租用服务器建设网站费用
  • 数学物理公式
  • 谁能给个网站谢谢wordpress目录内容分页显示
  • 网站建设及维护业务服务合同佛山seo整站优化
  • 做网站的软件高中 通用技术虚拟主机管理怎么做网站
  • 新增支持优化
  • 第7篇 c#推理自己训练的yolov5 onnx模型文件
  • 新网站不被收录的原因网页大图素材
  • 工程建设云网站深圳企业企业网站建设
  • 私募基金网站开发流程巫山做网站哪家强
  • 2、深入理解 C++ 引用、指针、内联函数与效率对比 —— 实战讲解与代码分析
  • 现在哪个招聘网站做的比较好敬请期待还是说尽情期待
  • 广东网站设计与建设上海第五届中国国际进口博览会直播
  • Java 浅复制与深复制