SiLU函数

简介: SiLU(Sigmoid Linear Unit)函数,也称为 Swish 函数,是一种常用于深度学习中的激活函数。它是由 Google 的研究人员提出的,旨在解决 ReLU(Rectified Linear Unit)函数的一些缺点,尤其是在深度网络的训练过程中。

SiLU 函数的定义

SiLU 函数的数学表达式如下:SiLU(x)=x⋅σ(x)

其中:

x 是输入值。
σ(x) 是 Sigmoid 函数,定义为:
σ(x)=11+e−x

SiLU 的特性

平滑性:SiLU 函数比 ReLU 更平滑,因此可以在训练过程中提供更平稳的梯度,避免了 ReLU 函数的死神经元问题(ReLU 函数在输入小于零时梯度为零,这可能导致某些神经元的更新停止)。
非线性:像 Sigmoid 和 Tanh 函数一样,SiLU 是非线性的,这使得它能够处理更复杂的模式。
输出范围:SiLU 的输出是非负的,并且随着输入的增大,输出逐渐增大。SiLU 输出的范围在 [0,+∞)之间,这与 ReLU 类似,但 SiLU 的增长方式比 ReLU 更平滑。
可微性:SiLU 函数在所有点都是可微的,这意味着它不会出现梯度消失问题,能够为深度神经网络提供更加稳定的训练。
SiLU vs ReLU vs Sigmoid

ReLU(Rectified Linear Unit):ReLU(x)=max⁡(0,x)
只对正输入有激活作用,负输入的梯度为 0,可能会导致神经元“死亡”。
Sigmoid:σ(x)=11+e−x
输出范围是 [0,1],通常用于二分类问题的输出层,但在深度神经网络中可能会出现梯度消失问题,导致学习效率较低。
SiLU:SiLU(x)=x⋅σ(x)
结合了 Sigmoid 和线性函数的特性,在深度学习中常被认为是对 ReLU 和 Sigmoid 的改进,能够避免梯度消失,并且在训练深层网络时有更好的性能。
SiLU 的优势

避免死神经元问题:
ReLU 的问题是当输入为负时,输出为零,且无法通过梯度更新,这可能导致“死神经元”现象,即某些神经元在训练过程中不再更新权重。而 SiLU 在负输入时也有非零的输出,使得所有神经元都可以参与训练,避免了这一问题。
平滑的梯度:
SiLU 的导数是平滑的,这意味着它提供了更连续的梯度,可以帮助更好地传播误差,尤其在深层神经网络中训练时,比 ReLU 和 Sigmoid 更稳定。
增加网络的表达能力:
与 ReLU 相比,SiLU 具有更多的非线性,使得它能够学习更复杂的特征。
SiLU 的导数

SiLU 的导数可以通过链式法则求得。首先,SiLU 函数的表达式是:SiLU(x)=x⋅σ(x)

然后,使用乘积的导数公式来求导:ddxSiLU(x)=ddx(x⋅σ(x))

应用乘积法则得到:ddxSiLU(x)=σ(x)+x⋅σ(x)⋅(1−σ(x))

因此,SiLU 的导数为:SiLU′(x)=σ(x)+x⋅σ(x)⋅(1−σ(x))

SiLU 函数的图形

SiLU 函数的图像比 ReLU 更为平滑,且对于负数输入也有非零输出。随着输入的增加,SiLU 的输出会逐渐增大,类似于线性增长。

SiLU 函数的应用

SiLU 函数已经在许多深度学习任务中取得了良好的表现,尤其是在一些复杂的任务(如图像分类、自然语言处理等)中,能够帮助神经网络更好地训练。许多现代的神经网络架构,如 BERT 和 ResNet 等,都采用了类似的激活函数。

在 PyTorch 中使用 SiLU

如果你使用 PyTorch,可以通过 torch.nn.SiLU() 或者直接使用 torch.sigmoid(x) * x 来实现 SiLU 激活函数。

import torch
import torch.nn as nn

定义 SiLU 激活函数

silu = nn.SiLU()

输入张量

x = torch.randn(5)

应用 SiLU 激活

output = silu(x)
print(output)
php
139 Bytes
© 菜鸟-创作你的创作
在 TensorFlow 中使用 SiLU

在 TensorFlow 中,SiLU 函数也可以通过 tf.keras.activations.silu() 来使用:

import tensorflow as tf

输入张量

x = tf.random.normal([5])

应用 SiLU 激活

output = tf.keras.activations.silu(x)
print(output)
php
123 Bytes
© 菜鸟-创作你的创作
总结

SiLU(Swish)是一个平滑且非线性的激活函数,结合了 Sigmoid 和 线性 的优点。它不仅避免了 ReLU 的死神经元问题,还能够提供更平滑的梯度传播,尤其适用于深度神经网络。随着深度学习模型的不断发展,SiLU 已经被越来越多的研究和工程实践所采用。
https://www.52runoob.com/archives/4732

目录
相关文章
|
机器学习/深度学习 测试技术 Python
【激活函数】基础回顾:带你认识神经网络中常见的激活函数
【激活函数】基础回顾:带你认识神经网络中常见的激活函数
2014 0
【激活函数】基础回顾:带你认识神经网络中常见的激活函数
|
机器学习/深度学习 自然语言处理 PyTorch
【笔记】激活函数SiLU和Swish
激活函数 SiLU 和 Swish 都是 深度学习 中用于神经网络中的非线性激活函数,旨在增强模型的表达能力和训练性能。实际上,SiLU(Sigmoid Linear Unit)和 Swish 本质上是同一个激活函数的两种不同名称。
896 0
|
4月前
|
人工智能 自然语言处理 测试技术
DeepSeek V4:百万上下文,万亿参数,以及重新泛起涟漪的开源池塘
DeepSeek V4发布Pro(1.6T参数/49B激活)与Flash(284B/13B)双模型,均支持1M上下文、thinking模式及Agent能力。全栈开源(权重+技术报告+API+定价),采用混合注意力架构显著降本,中文长文本与推理能力突出,是当前少有的万亿级开源系统级发布
2957 4
DeepSeek V4:百万上下文,万亿参数,以及重新泛起涟漪的开源池塘
|
机器学习/深度学习
YOLOv11改进策略【损失函数篇】| 替换激活函数为Mish、PReLU、Hardswish、LeakyReLU、ReLU6
YOLOv11改进策略【损失函数篇】| 替换激活函数为Mish、PReLU、Hardswish、LeakyReLU、ReLU6
3495 4
|
10月前
|
机器学习/深度学习 自然语言处理 数据可视化
22_注意力机制详解:从基础到2025年最新进展
在深度学习的发展历程中,注意力机制(Attention Mechanism)扮演着越来越重要的角色,特别是在自然语言处理(NLP)、计算机视觉(CV)和语音识别等领域。注意力机制的核心思想是模拟人类视觉系统的聚焦能力,让模型能够在处理复杂数据时,选择性地关注输入的不同部分,从而提高模型的性能和可解释性。
1865 0
|
机器学习/深度学习 PyTorch 算法框架/工具
CNN中的注意力机制综合指南:从理论到Pytorch代码实现
注意力机制已成为深度学习模型的关键组件,尤其在卷积神经网络(CNN)中发挥了重要作用。通过使模型关注输入数据中最相关的部分,注意力机制显著提升了CNN在图像分类、目标检测和语义分割等任务中的表现。本文将详细介绍CNN中的注意力机制,包括其基本概念、不同类型(如通道注意力、空间注意力和混合注意力)以及实际实现方法。此外,还将探讨注意力机制在多个计算机视觉任务中的应用效果及其面临的挑战。无论是图像分类还是医学图像分析,注意力机制都能显著提升模型性能,并在不断发展的深度学习领域中扮演重要角色。
1140 10
|
机器学习/深度学习 自然语言处理 PyTorch
深入剖析Transformer架构中的多头注意力机制
多头注意力机制(Multi-Head Attention)是Transformer模型中的核心组件,通过并行运行多个独立的注意力机制,捕捉输入序列中不同子空间的语义关联。每个“头”独立处理Query、Key和Value矩阵,经过缩放点积注意力运算后,所有头的输出被拼接并通过线性层融合,最终生成更全面的表示。多头注意力不仅增强了模型对复杂依赖关系的理解,还在自然语言处理任务如机器翻译和阅读理解中表现出色。通过多头自注意力机制,模型在同一序列内部进行多角度的注意力计算,进一步提升了表达能力和泛化性能。
11286 48
|
机器学习/深度学习 编解码 测试技术
RT-DETR改进策略【注意力机制篇】| WACV-2024 D-LKA 可变形的大核注意 针对大尺度、不规则的目标图像
RT-DETR改进策略【注意力机制篇】| WACV-2024 D-LKA 可变形的大核注意 针对大尺度、不规则的目标图像
488 2
RT-DETR改进策略【注意力机制篇】| WACV-2024 D-LKA 可变形的大核注意 针对大尺度、不规则的目标图像
|
机器学习/深度学习 自然语言处理 算法
《深度解析:全连接层—卷积神经网络中的关键纽带》
全连接层在卷积神经网络(CNN)中起着桥梁作用,将卷积层和池化层提取的局部特征整合为全局特征,实现分类或回归任务。每个神经元与前一层所有神经元相连,通过权重和偏置进行特征转换,并引入激活函数以增强非线性建模能力。尽管参数量大易导致过拟合,但可通过正则化、Dropout和批标准化等技术有效应对,从而提升模型性能。
1638 8
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
5797 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现

热门文章

最新文章