Python深度学习入门:Sigmoid、Tanh、ReLU与Softmax激活函数详解

洛溪
洛溪
发布时间:2026-10-14| 4人浏览过
原创

本文系统梳理Python深度学习中的四种核心激活函数:Sigmoid、Tanh、ReLU和SoftMax。通过数学公式、Python代码实现及函数图像,详细解析各函数的值域、梯度特性及适用场景,重点对比Sigmoid与Tanh的梯度消失问题,以及ReLU在收敛速度上的优势,并探讨SoftMax在多分类概率转化中的应用与数值稳定性处理。

Python深度学习中的四种激活函数概览

本文旨在整理深度学习入门阶段涉及的四种主要激活函数,将从数学公式、Python代码实现以及可视化图像三个维度进行详细阐述。首先明确这四种函数分别为:

  • Sigmoid函数
  • Tanh函数
  • ReLu函数
  • SoftMax函数

激活函数的核心作用

理解激活函数的核心作用

观察图像A,这是一个典型的线性可分问题。对于蓝点和绿点这两类数据,仅通过一条直线即可实现完全分类。

图像A代表了最理想且最简单的二分类场景。然而,现实世界中的问题往往更为复杂,存在大量线性不可分的情况。例如图像B中,无法找到任何一条直线将蓝点和绿点完全分开,必须借助封闭曲线才能完成分类。

激活函数正是用于“绘制”这种非线性封闭曲线的关键工具。引入激活函数后,算法的处理能力显著增强,从而能够有效解决线性不可分问题。

Sigmoid函数:原理、特性与局限

Sigmoid函数

在介绍逻辑回归时曾提及Sigmoid函数,其数学表达式为:

其中e为自然对数的底数(纳皮尔常数),数值约为2.7182... 该函数的图像表现如下:

从图像中可以观察到以下显著特征:

  • 曲线的值域严格限制在(0,1)之间
  • 当输入x等于0时,Sigmoid函数的输出值为0.5
  • 随着x值不断增大,Sigmoid函数值无限趋近于1
  • 随着x值不断减小,Sigmoid函数值无限趋近于0

在梯度下降法中,信息更新主要依赖梯度。Sigmoid函数的一个显著缺陷是:当函数值极度接近0或1时,由于曲线趋于平缓,梯度几乎为0。这导致权重更新极其缓慢,极易造成模型无法收敛。

Sigmoid函数的Python代码如下:


import numpy as np
def tanh(x):
 return (exp(x)-exp(-x))/(exp(x)+exp(-x))

Tanh函数:与Sigmoid的异同

Tanh函数

Tanh函数即双曲正切函数,其数学表达式为:

Tanh函数与Sigmoid函数在形态上高度相似,这一点从图像中可见一斑:

两者的共同点在于:当输入x极大或极小时,输出y值趋于饱和且相近,同样存在梯度极小、不利于权重更新的缺点。不同之处在于:Tanh函数的值域为(-1,1),且当x=0时,输出值为0。

Tanh函数的Python代码如下:


import numpy as np
def tanh(x):
 return (exp(x)-exp(-x))/(exp(x)+exp(-x))

ReLu函数:优势与广泛应用

ReLu函数

ReLu(Rectified Linear Unit)即线性整流函数,又称修正线性单元,其数学表达式为:

Tanh是一个分段函数,其图像如下:

图像直观易懂:若输入x小于0,则输出为0;若输入x大于0,则直接输出x值。需注意,ReLu函数在x=0处不连续(不可导),但这并不影响其作为激活函数的使用。

与Sigmoid和Tanh函数相比,ReLu函数的一个显著优点是在应用梯度下降法时收敛速度更快。当输入值为整数时,不会出现梯度饱和问题,因为大于0的部分呈现线性关系。这一优势使ReLu成为目前应用最为广泛的激活函数之一。

ReLu函数的Python代码如下:


import numpy as np
def relu(x):
 return np.maximum(0,x)

SoftMax函数:多分类与数值稳定性

SoftMax函数

分类问题可分为二分类和多分类两类。Sigmoid函数适用于二分类,而SoftMax函数更适合多分类场景。 SoftMax函数的数学表达式为:

其中Vi表示分类器的输出,i表示类别索引,C为总类别数,Si表示当前元素指数与所有元素指数和的比值。简而言之,SoftMax函数将多分类的输出值按比例转化为相对概率,使输出结果更易于理解和比较。

为防止SoftMax计算时出现上溢出或下溢出,通常对V进行数值预处理:每个Vi减去V中的最大值。假设D=max(V),则SoftMax函数的数学表达式调整为:

由于SoftMax计算的是概率分布,难以用传统图像直观展示,其Python代码如下:


import numpy as np
def softmax(x):
 D = np.max(x)
 exp_x = np.exp(x-D)
 return exp_x / np.sum(exp_x)

以上即为Python深度学习中四种激活函数的详细内容,更多关于Python激活函数的资料请关注本站其他相关文章!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。