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

Sigmoid函数导数推导详解

Sigmoid函数导数推导详解

  • 在逻辑回归中,Sigmoid函数的导数推导是一个关键步骤,它使得梯度下降算法能够高效地计算。

1. Sigmoid函数定义

首先回顾Sigmoid函数的定义:

g ( z ) = 1 1 + e − z g(z) = \frac{1}{1 + e^{-z}} g(z)=1+ez1

2. 导数推导过程

  1. 从Sigmoid函数出发:
    g ( z ) = 1 1 + e − z g(z) = \frac{1}{1 + e^{-z}} g(z)=1+ez1

  2. u = 1 + e − z u = 1 + e^{-z} u=1+ez,则 g ( z ) = u − 1 g(z) = u^{-1} g(z)=u1

  3. 使用链式法则:
    d g d z = d g d u ⋅ d u d z = − u − 2 ⋅ ( − e − z ) = e − z ( 1 + e − z ) 2 \frac{dg}{dz} = \frac{dg}{du} \cdot \frac{du}{dz} = -u^{-2} \cdot (-e^{-z}) = \frac{e^{-z}}{(1 + e^{-z})^2} dzdg=dudgdzdu=u2(ez)=(1+ez)2ez

  4. 现在,我们将其表示为 g ( z ) g(z) g(z)的函数:
    e − z 1 + e − z = 1 − 1 1 + e − z = 1 − g ( z ) \frac{e^{-z}}{1 + e^{-z}} = 1 - \frac{1}{1 + e^{-z}} = 1 - g(z) 1+ezez=11+ez1=1g(z)

  5. 因此:
    g ′ ( z ) = 1 1 + e − z ⋅ e − z 1 + e − z = g ( z ) ⋅ ( 1 − g ( z ) ) g'(z) = \frac{1}{1 + e^{-z}} \cdot \frac{e^{-z}}{1 + e^{-z}} = g(z) \cdot (1 - g(z)) g(z)=1+ez11+ezez=g(z)(1g(z))

3. 代码实现

import numpy as np
import matplotlib.pyplot as pltdef sigmoid(z):return 1 / (1 + np.exp(-z))def sigmoid_derivative(z):return sigmoid(z) * (1 - sigmoid(z))z = np.linspace(-10, 10, 100)
plt.figure(figsize=(10, 6))
plt.plot(z, sigmoid(z), label="Sigmoid function")
plt.plot(z, sigmoid_derivative(z), label="Sigmoid derivative")
plt.xlabel("z")
plt.ylabel("g(z)")
plt.title("Sigmoid Function and its Derivative")
plt.legend()
plt.grid(True)
plt.show()

在这里插入图片描述

4. 导数性质分析

  1. 最大值:当 g ( z ) = 0.5 g(z) = 0.5 g(z)=0.5时,导数达到最大值 0.25 0.25 0.25
  2. 对称性:导数在 z = 0 z=0 z=0时最大,随着 ∣ z ∣ |z| z增大而迅速减小
  3. 非负性:导数始终非负,因为 0 < g ( z ) < 1 0 < g(z) < 1 0<g(z)<1

5. 导数形式的重要型

  • 在逻辑回归的梯度下降中,需要计算损失函数对参数的导数。由于损失函数中包含Sigmoid函数,这个导数形式使得计算变得非常简洁:

∂ ∂ θ j J ( θ ) = 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial}{\partial \theta_j}J(\theta) = \frac{1}{m}\sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)})x_j^{(i)} θjJ(θ)=m1i=1m(hθ(x(i))y(i))xj(i)

  • 其中 h θ ( x ) = g ( θ T x ) h_\theta(x) = g(\theta^T x) hθ(x)=g(θTx)。如果没有这个简洁的导数形式,梯度计算会复杂得多。

  • 推导损失函数对 θ j \theta_j θj的偏导数:
    ∂ ∂ θ j J ( θ ) = − 1 m ∑ i = 1 m ( y i 1 h θ ( x i ) − ( 1 − y i ) 1 1 − h θ ( x i ) ) ∂ ∂ θ j h θ ( x i ) = − 1 m ∑ i = 1 m ( y i 1 g ( θ T x i ) − ( 1 − y i ) 1 1 − g ( θ T x i ) ) g ( θ T x i ) ( 1 − g ( θ T x i ) ) x i j = − 1 m ∑ i = 1 m ( y i ( 1 − g ( θ T x i ) ) − ( 1 − y i ) g ( θ T x i ) ) x i j = 1 m ∑ i = 1 m ( h θ ( x i ) − y i ) x i j \begin{align*} \frac{\partial}{\partial \theta_j} J(\theta) &= -\frac{1}{m}\sum_{i=1}^m \left(y_i \frac{1}{h_\theta(x_i)} - (1-y_i)\frac{1}{1-h_\theta(x_i)}\right) \frac{\partial}{\partial \theta_j} h_\theta(x_i) \\ &= -\frac{1}{m}\sum_{i=1}^m \left(y_i \frac{1}{g(\theta^T x_i)} - (1-y_i)\frac{1}{1-g(\theta^T x_i)}\right) g(\theta^T x_i)(1-g(\theta^T x_i)) x_i^j \\ &= -\frac{1}{m}\sum_{i=1}^m \left(y_i(1-g(\theta^T x_i)) - (1-y_i)g(\theta^T x_i)\right) x_i^j \\ &= \frac{1}{m}\sum_{i=1}^m (h_\theta(x_i) - y_i) x_i^j \end{align*} θjJ(θ)=m1i=1m(yihθ(xi)1(1yi)1hθ(xi)1)θjhθ(xi)=m1i=1m(yig(θTxi)1(1yi)1g(θTxi)1)g(θTxi)(1g(θTxi))xij=m1i=1m(yi(1g(θTxi))(1yi)g(θTxi))xij=m1i=1m(hθ(xi)yi)xij
http://www.xdnf.cn/news/242155.html

相关文章:

  • CSS学习笔记14——移动端相关知识(rem,媒体查询,less)
  • 奇偶ASCII值判断
  • 对计网考研中的信道、传输时延、传播时延的理解
  • python2反编译部分
  • POI从入门到上手(三)-轻松完成EasyExcel使用,完成Excel导入导出.
  • 第 11 届蓝桥杯 C++ 青少组中 / 高级组省赛 2020 年真题,选择题详细解释
  • WPF使用SQLSugar和Nlog
  • 精品推荐-湖仓一体电商数据分析平台实践教程合集(视频教程+设计文档+完整项目代码)
  • OpenHarmony全局资源调度管控子系统之内存管理部件
  • 【STM32单片机】#12 SPI通信(软件读写)
  • IRF2.0IRF3.1
  • 小白dockerfile
  • Linux安全清理删除目录bash脚本
  • 使用scipy求解优化问题
  • Three.js在vue中的使用(一)-基础
  • 报错:函数或变量 ‘calcmie‘ 无法识别。
  • 【网络服务器】——回声服务器(echo)
  • 【C++】类和对象【中下】
  • 【中间件】bthread_基础_TaskControl
  • PyTorch 与 TensorFlow:深度学习框架的深度剖析与实战对比
  • 怎么查看数据库容量
  • REST API、FastAPI与Flask API的对比分析
  • cdn服务器连接异常怎么办?cdn连接失败解决方法有哪些?
  • 深入解析 Python 应用日志监控:ELK、Graylog 的实战指南
  • WPF采集欧姆龙PLC、基恩士PLC、西门子PLC、汇川PLC、台达PLC数据
  • 从请求到响应:初探spring web
  • PCA主成分分析法(最大投影方差,最小重构距离,SVD角度)
  • AI数字人系统开发:技术架构、应用场景与未来趋势
  • 【进阶】--函数栈帧的创建和销毁详解
  • TDA4VM SDK J721E (RTOS/Linux) bootloaders梳理笔记