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

【漫话机器学习系列】114.逻辑 Sigmoid 函数

逻辑 Sigmoid 函数详解

1. 引言

逻辑回归(Logistic Regression)是机器学习中常用的分类算法,而 Sigmoid 函数 是逻辑回归的核心数学工具。Sigmoid 函数能够将任意实数映射到 (0,1) 之间,因此特别适用于概率估计。在这篇文章中,我们将深入探讨 Sigmoid 函数的数学公式、特性、导数、应用以及其在逻辑回归中的作用。


2. Sigmoid 函数的数学表达

Sigmoid 函数的数学表达式如下:

\sigma(x) = \frac{1}{1 + e^{-x}}

其中:

  • x 是输入变量,可以取任意实数值。
  • e 是自然对数的底数,约等于 2.718。
  • σ(x) 的输出范围是 (0,1),适合用作概率表示。

2.1 Sigmoid 函数的基本性质

  • 当 x → +∞,e^{-x} \to 0,因此 σ(x) → 1。
  • 当 x → −∞,e^{-x} \to +\infty,因此 σ(x) → 0。
  • 当 x = 0,\sigma(0) = \frac{1}{1 + e^0} = \frac{1}{2} = 0.5
  • Sigmoid 函数的形状是S 形曲线(如图所示),在 x 值较小时,函数值接近 0,较大时接近 1。

2.2 Sigmoid 函数的图像

从图像来看,Sigmoid 函数在 x 轴上呈现 对称性,在 x=0 处对称。它的变化最剧烈的区域在 x=0 附近,这表明 Sigmoid 对较小的输入值更敏感,而当 x 取值极端时,函数趋于平缓。


3. Sigmoid 函数的导数

Sigmoid 函数的导数在机器学习和深度学习中非常重要,特别是在梯度下降优化过程中。Sigmoid 的导数公式如下:

\sigma'(x) = \sigma(x) (1 - \sigma(x))

推导过程如下:

\sigma(x) = \frac{1}{1 + e^{-x}}

对 x 求导:

\sigma'(x) = \frac{d}{dx} \left( \frac{1}{1 + e^{-x}} \right)

使用链式法则:

\sigma'(x) = \frac{e^{-x}}{(1 + e^{-x})^2}

由于 \sigma(x) = \frac{1}{1 + e^{-x}}​,因此 e^{-x} = \frac{1 - \sigma(x)}{\sigma(x)}​,代入得:

\sigma'(x) = \sigma(x) (1 - \sigma(x))

3.1 Sigmoid 导数的性质

  • 最大值:当 σ(x)=0.5 时,导数达到最大值 0.25。
  • 最小值:当 σ(x) 接近 0 或 1 时,导数接近 0。这表明在极端区域(远离 0 的区域),Sigmoid 函数的梯度会消失(即梯度消失问题)。

4. Sigmoid 函数的应用

4.1 逻辑回归

逻辑回归是二分类问题中常用的模型,核心思想是:

  • 先计算线性变换:z = w_0 + w_1 x_1 + ... + w_n x_n​。
  • 通过 Sigmoid 函数计算概率:P(y=1 | x) = \sigma(z)
  • 根据设定的阈值(如 0.5),决定分类结果:
    • 如果 \sigma(z) \geq 0.5,预测为 1 类。
    • 如果 \sigma(z) < 0.5,预测为 0 类。

4.2 神经网络

在深度学习中,Sigmoid 函数常用于:

  • 输出层激活函数(尤其是二分类问题)。
  • 早期神经网络中的隐藏层激活函数(但因梯度消失问题,现多用 ReLU 代替)。

4.3 其他应用

  • 生物学:Sigmoid 函数用于描述生长曲线神经元激活
  • 经济学:用于建模市场饱和度边际收益递减

5. Sigmoid 函数的优缺点

5.1 优点

  1. 概率解释性:输出值位于 (0,1) 之间,可直接解释为概率。
  2. 平滑可微:Sigmoid 是一个连续、可微的函数,适用于梯度下降优化。
  3. 单调性:Sigmoid 函数是单调递增的,适合用于分类任务。

5.2 缺点

  1. 梯度消失问题
    • 在极端值(接近 0 或 1)时,梯度接近 0,导致深层神经网络难以训练。
    • 现代深度学习一般用 ReLU 代替 Sigmoid 作为隐藏层激活函数。
  2. 计算代价较高
    • 计算 e^{-x} 需要指数运算,比线性变换计算成本更高。
  3. 非零均值问题
    • Sigmoid 函数的输出范围是 (0,1),均值不是 0,可能导致权重更新不稳定。

6. 代码示例

6.1 计算 Sigmoid 值

import numpy as np
import matplotlib.pyplot as plt

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

x = np.linspace(-10, 10, 100)
y = sigmoid(x)

plt.plot(x, y, label="Sigmoid Function")
plt.xlabel("x")
plt.ylabel("σ(x)")
plt.legend()
plt.show()

6.2 计算 Sigmoid 的导数

import numpy as np
import matplotlib.pyplot as plt

def sigmoid(x):
    return 1 / (1 + np.exp(-x))

x = np.linspace(-10, 10, 100)
y = sigmoid(x)

def sigmoid_derivative(x):
    return sigmoid(x) * (1 - sigmoid(x))

y_derivative = sigmoid_derivative(x)

plt.plot(x, y_derivative, label="Sigmoid Derivative", color='red')
plt.xlabel("x")
plt.ylabel("σ'(x)")
plt.legend()
plt.show()


7. 结论

  • Sigmoid 函数是逻辑回归和神经网络的重要组成部分,用于将数值映射到 (0,1) 之间。
  • 具有 S 形曲线的特点,使其适用于概率估计和分类问题
  • 尽管存在梯度消失问题,在深度学习中仍有广泛应用,特别是用于二分类任务的输出层

理解 Sigmoid 函数对于掌握逻辑回归、神经网络和深度学习至关重要。希望这篇文章能帮助你更好地理解 Sigmoid 函数的原理和应用!


http://www.kler.cn/a/569716.html

相关文章:

  • golang 内存对齐和填充规则
  • Redis Desktop Manager(Redis可视化工具)安装及使用详细教程
  • GPU运维常用命令
  • 云原生监控篇——全链路可观测性与AIOps实战
  • centos 7 停更后如何升级kernel版本 —— 筑梦
  • JMeter 使用 CSV 及随机 ID 进行登录与增删改查示例
  • LeetCode 模拟章节 (持续更新中)
  • 从零开始用react + tailwindcss + express + mongodb实现一个聊天程序(五) 实现登录功能
  • 分类预测 | Matlab实现CPO-SVM冠豪猪算法优化支持向量机多特征分类预测
  • 深度学习之“雅可比矩阵与黑塞矩阵”
  • 【Word2Vec】Skip-gram 的直观理解(深入浅出)
  • 如何理解语言模型
  • 微服务学习(1):RabbitMQ的安装与简单应用
  • Ubuntu 下查看进程 PID 和终止进程方法
  • 【实战 ES】实战 Elasticsearch:快速上手与深度实践-1.3.1单节点安装(Docker与手动部署)
  • C#核心(20)密封函数和命名空间
  • DNS的解析流程
  • Ubuntu 22.04 安装Nvidia驱动加速deepseek
  • (下:补充——五个模型的理论基础)深度学习——图像分类篇章
  • 【C】链式二叉树算法题1 -- 单值二叉树