【NLP 39、激活函数 ⑤ Swish激活函数】
我的孤独原本是座荒岛,直到你称成潮汐,原来爱是让个体失序的永恒运动
——25.2.25
Swish激活函数是一种近年来在深度学习中广泛应用的激活函数,由Google Brain团队在2017年提出。其核心设计结合了Sigmoid门控机制和线性输入的乘积,通过引入平滑性和非单调性来提升模型性能。
一、数学定义与变体
1.基础形式
Swish的标准表达式为:Swish(x)=x ⋅ σ(βx)
其中:
σ(x) 是Sigmoid函数:![]()
β 是可学习参数或固定值(通常默认设为1)
2.变体形式
SILU(Sigmoid-Weighted Linear Unit):当β=1时,Swish退化为SILU
自适应Swish:通过训练学习 β 的值,允许激活函数根据任务动态调整形状
二、关键特性与优势
-
平滑性与非单调性
- 平滑梯度:Swish在全局连续可导(C∞),避免了ReLU在x=0处的梯度突变,缓解梯度消失问题
- 非单调性:当x<0时,Swish允许部分负值传递(类似Leaky ReLU),增强模型对复杂模式的表达能力
-
近似ReLU与自适应过渡
- 当β→+∞时,Swish逼近ReLU;当β→0时,近似线性函数
- 这种特性使其能灵活适应不同网络深度的需求。梯度稳定性
-
导数公式为:Swish′(x)=σ(βx)+βx⋅σ(βx)⋅(1−σ(βx))
在正负输入区间均保持非零梯度,避免神经元死亡
三、与其他激活函数的对比
| 激活函数 | 优势 | 劣势 |
|---|---|---|
| ReLU | 计算高效,缓解梯度消失 | 负区间梯度为0,易导致神经元死亡 |
| Leaky ReLU | 解决ReLU的死亡问题 | 需人工设定斜率参数α |
| Swish | 平滑梯度,自适应参数,非单调性 | 计算复杂度较高(涉及Sigmoid运算) 6 7 |
| Sigmoid | 输出概率化,适合二分类 | 梯度消失严重,输出非零中心化 |
四、应用场景与实验表现
-
图像分类
- 在ResNet、EfficientNet等模型中,Swish相比ReLU可提升Top-1准确率约0.5%-1%
- 示例:MobileNetV3采用Swish作为隐藏层激活函数,优化了轻量级模型的表达能力
-
自然语言处理
- 在Transformer架构中,SwiGLU(Swish-Gated Linear Unit)结合Swish和GLU,显著提升机器翻译任务的BLEU分数
-
强化学习
- Swish的非单调性使其在策略梯度方法中表现优异,能够处理更复杂的动作空间
五、实现与优化建议
-
代码实现(PyTorch示例)
import torch import torch.nn as nnclass Swish(nn.Module):def __init__(self, beta=1.0, trainable=False):super().__init__()self.beta = nn.Parameter(torch.tensor(beta)) if trainable else betadef forward(self, x):return x * torch.sigmoid(self.beta * x) -
训练调参技巧
- 初始化β:建议从β=1开始,若训练不稳定可尝试固定为1
- 混合精度训练:使用FP16或BF16减少Sigmoid计算的开销
六、局限性及改进方向
-
计算成本
Swish的Sigmoid运算比ReLU多约30%的计算量,可通过算子融合优化(如NVIDIA的cuDNN加速) -
任务依赖性
在简单任务(如MNIST分类)中,Swish可能无明显优势,需根据任务复杂度选择激活函数
相关文章:
【NLP 39、激活函数 ⑤ Swish激活函数】
我的孤独原本是座荒岛,直到你称成潮汐,原来爱是让个体失序的永恒运动 ——25.2.25 Swish激活函数是一种近年来在深度学习中广泛应用的激活函数,由Google Brain团队在2017年提出。其核心设计结合了Sigmoid门控机制和线性输入的乘积,…...
C语言经典案例-菜鸟经典案例
1.输入某年某月某日,判断这一天是这一年的第几天? //输入某年某月某日,判断这一天是这一年的第几天? #include <stdio.h>int isLeapYear(int year) {// 闰年的判断规则:能被4整除且(不能被100整除或…...
南开提出1Prompt1Story,无需训练,可通过单个连接提示实现一致的文本到图像生成。
(1Prompt1Story)是一种无训练的文本到图像生成方法,通过整合多个提示为一个长句子,并结合奇异值重加权(SVR)和身份保持交叉注意力(IPCA)技术,解决了生成图像中身份不一致…...
STM32驱动OLED屏幕全解析:从原理到温度显示实战(上) | 零基础入门STM32第五十三步
主题内容教学目的/扩展视频OLED显示屏重点课程电路原理,手册分析,驱动程序。初始化,清屏,ASCII字库,显示分区。调用显示函数。做带有加入图形和汉字显示的RTC时钟界面。讲字库的设计原理。 师从洋桃电子,杜…...
MySQL语法总结
本篇博客说明: !!!.注意此系列都用的是MySQL语句,和SQLServer,PostgreSQL有些细节上的差别!!! 1.每个操作都是先展示出语法格式 2.然后是具体例子 3.本篇注脚与文本顺讯息…...
从预测到控制:电力RK3568边缘计算机在电网调度中的全面应用
在智能电网的快速发展中,电力Ubuntu工控机(简称“电力工控机”)作为核心设备,扮演着不可或缺的角色。特别是在智能电网调度场景中,电力工控机的高效、稳定和智能化特性,为电网的稳定运行和高效管理提供了强…...
Spring Batch 概览
Spring Batch 是什么? Spring Batch 是 Spring 生态系统中的一个轻量级批处理框架,专门用于处理大规模数据任务。它特别适合企业级应用中需要批量处理数据的场景,比如数据迁移、报表生成、ETL(Extract-Transform-Load)…...
day-106 统计放置房子的方式数
思路 动态规划:因为中间有街道隔开,所以只需计算一边街道的排列方式,最后计算平方即可 解题过程 动态转换方程:f[i]f[i-1]f[i-2] Code class Solution {int num 1000000007;public int countHousePlacements(int n) {int arr[…...
PostgreSQL安装和mcp PostgreSQL
文章目录 一. 安装之后修改权限并登录1. 确保当前用户具有sudo权限2. 修改/etc/postgresql/<版本号>/main/pg_hba.conf配置文件为trust,可以免密登录3. 进行免密登录4. 添加root用户和修改postgres用户密码1. postgres用户密码2. 添加root用户3. 为root用户设…...
解决电脑问题(10)——桌面问题
电脑桌面出现问题的情况多样,以下是一些常见问题及解决方法: 桌面图标问题 图标显示异常:如果图标模糊、失真或显示为未知图标,可能是图标缓存出现问题。在 Windows 系统中,可通过在任务管理器中重启 “Windows 资源管…...
LPZero: Language Model Zero-cost Proxy Search from Zero(未更新完预览版本)
LPZero代码 摘要 神经架构搜索 (NAS) 有助于自动执行有效的神经网络搜索,同时需要大量的计算资源,尤其是对于语言模型。零样本 NAS 利用零成本 (ZC) 代理来估计模型性能,从而显着降低计算需求。然而,现有的 ZC 代理严重依赖于深…...
字典树运用
字典树运用 字典树LC208 创建字典树0-1字典树 字典树 字典树又叫 前缀树, 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补全和拼写检查。 LC208 创建字典树 这是一个字符串字典树…...
RReadWriteLock读写锁应用场景
背景 操作涉及一批数据,如订单,可能存在多个场景下操作,先使用读锁,从redis缓存中获取操作中数据 比如 关闭账单, 发起调账, 线下结算, 合并支付 先判断当前操作的数据,是否在…...
26.卷1的答案
1.已知2010年小明的生日在8月28日——周六 ,从2011到2020,有几次生日在周末? 做法:一个一个算下去,注意,平年365天,闰年366天,一共2次。 2.前序:ABDGKEHCFIJ,中序&…...
0087.springboot325基于Java的企业OA管理系统的设计与实现+论文
一、系统说明 基于springbootvue的企业OA管理系统,系统功能齐全, 代码简洁易懂,适合小白学编程。 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数…...
Spring Boot 3 整合 MinIO 实现分布式文件存储
引言 文件存储已成为一个做任何应用都不可回避的需求。传统的单机文件存储方案在面对大规模数据和高并发访问时往往力不从心,而分布式文件存储系统则提供了更好的解决方案。本篇文章我将基于Spring Boot 3 为大家讲解如何基于MinIO来实现分布式文件存储。 分布式存…...
Redis|集群 Cluster
文章目录 是什么能干嘛集群算法-分片-槽位slotredis集群的槽位slotredis集群的分片分片槽位的优势slot槽位映射——业界的3种解决方案小厂:哈希取余分区中厂:一致性哈希算法分区大厂:哈希槽分区 面试题:为什么 Redis 集群的最大槽…...
【定制开发】碰一碰发视频系统定制开发,支持OEM
在短视频营销爆发的2025年,"碰一碰发视频"技术已成为实体商家引流标配。某连锁餐饮品牌通过定制化开发,单月视频发布量突破10万条,获客成本降低80%!本文将深入解析该系统的技术架构与开发要点,助你快速搭建高…...
【redis】布隆过滤器的Java实现
在Java中,要实现布隆过滤器(Bloom Filter)的方式有很多种,除了上一节中通过jedis包调用安装了布隆过滤器的redis外,还有以下几种常见的实现方式: 手写布隆过滤器 基于guava包实现 通过redis的bitmaps实现…...
【JAVA架构师成长之路】【电商系统实战】第12集:秒杀系统性能优化实战(CAN + Nginx + Sentinel)
30分钟课程:秒杀系统性能优化实战(CDN Nginx Sentinel) 课程目标 掌握静态资源 CDN 加速的配置与优化策略。通过 Nginx 实现负载均衡,提升系统横向扩展能力。使用 Sentinel 实现服务降级,保障核心链路稳定性。 课程…...
MySQL安装过程,创建数据库
window操作系统安装 存在两种安装方式: 1.安装包方式 2.压缩包方式 安装包方式 下载安装包 官网下载对应的安装包,根据需要下载对应的版本即可: 8.0:https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-installer-comm…...
Linux上位机开发(开篇)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 传统的上位机开发,一般都是默认pc软件开发。既然是pc软件,一般来说都是基于windows平台开发。开放的框架,无非是…...
算法005——有效三角形个数
力扣——有效三角形个数点击链接跳转 判断三条边是否能组成三角形,大家第一时间想到的就是两边之和大于第三边 但是运用这个方法,我们需要判断三次,有一个更简单的方法,只需要判断一次 因为 C 已经是三边之中最大的了ÿ…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_cycle_modules
声明在 src/core/ngx_module.h ngx_int_t ngx_cycle_modules(ngx_cycle_t *cycle);实现在 src/core/ngx_module.c ngx_int_t ngx_cycle_modules(ngx_cycle_t *cycle) {/** create a list of modules to be used for this cycle,* copy static modules to it*/cycle->modul…...
大彩串口屏开发 —— MODBUS通信
目 录 Modbus通信方式 1 使用变量与协议设置方式 2 使用LUA脚本方式 3 两者结合 Modbus通信 大彩串口屏可以采用三种方式实现与其它设备进行modbus通信和逻辑处理。 方式 1 使用变量与协议设置 步骤1 在协议设置里进行设置,包括开启modbus协议,屏做为主…...
React-异步队列执行方法useSyncQueue
1. 完整代码 import React, { useEffect, useRef } from react; import { useDebounceFn } from "ahooks"; // 队列任务类型 interface QueueTask {id: number | string;execute: () > PromiseLike<any>; } // 异步队列执行方法 function useSyncQueue(par…...
【STM32】江科大STM32学习笔记汇总(已完结)
00. 目录 文章目录 00. 目录01. STM32学习笔记汇总02. 相关资料下载03. 打赏04. 附录 01. STM32学习笔记汇总 【STM32】STM32学习笔记-课程简介(01) 【STM32】STM32学习笔记-STM32简介(02) 【STM32】STM32学习笔记-软件安装(03) 【STM32】STM32学习笔记-新建工程(04) 【ST…...
【Python编程】高性能Python Web服务部署架构解析
一、FastAPI 与 Uvicorn/Gunicorn 的协同 1. 开发环境:Uvicorn 直接驱动 作用:Uvicorn 作为 ASGI 服务器,原生支持 FastAPI 的异步特性,提供热重载(--reload)和高效异步请求处理。 启动命令: u…...
OSPF的各种LSA类型,多区域及特殊区域
一、OSPF的LSA类型 OSPF(开放最短路径优先)协议使用多种LSA(链路状态通告)类型来交换网络拓扑信息。以下是主要LSA类型的详细分类及其作用: 1. Type 1 LSA(路由器LSA) 生成者:每个…...
CentOS 9 系统安装 Docker
CentOS 9 系统安装 Docker 容器化技术如 Docker 已成为提升应用部署效率和管理便捷性的关键利器。你是否曾在使用 Docker 时遭遇安装繁琐、配置复杂的困扰?或者对如何在 CentOS 9 系统上标准化安装 Docker 充满好奇?今天,就让我们一同深入探索…...
