news 2026/6/10 11:47:06

从数值微分到梯度下降:深度学习的基石

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从数值微分到梯度下降:深度学习的基石

从数值微分到梯度下降:深度学习的基石

在深度学习的世界里,梯度下降算法是训练神经网络的基石。而要理解梯度下降,首先要掌握数值微分这个关键概念。

导数:变化的瞬间捕捉

想象你正在跑马拉松,前10分钟跑了2千米。你的平均速度是0.2千米/分,但真正的速度是瞬间变化量,这就是导数的本质。

数学上,导数定义为:
df(x)dx=lim⁡h→0f(x+h)−f(x)h \frac{df(x)}{dx} = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}dxdf(x)=h0limhf(x+h)f(x)

数值微分的实现陷阱

初学者可能会这样实现:

# 不好的实现示例defnumerical_diff(f,x):h=10e-50return(f(x+h)-f(x))/h

这里有两个问题:

  1. 舍入误差:h太小会导致计算机精度问题
  2. 前向差分不准确:不是真正的切线斜率

改进方案:中心差分法

defnumerical_diff(f,x):h=1e-4# 0.0001,避免舍入误差return(f(x+h)-f(x-h))/(2*h)# 中心差分,更准确

图4-5展示了真导数(蓝色切线)与数值微分(红色近似线)的区别:

  • 前向差分:计算(x+h)和x之间的斜率
  • 中心差分:以x为中心,计算左右两侧的平均斜率,误差更小

实战示例:简单函数的数值微分

考虑二次函数:
y=0.01x2+0.1x y = 0.01x^2 + 0.1xy=0.01x2+0.1x

Python实现:

deffunction_1(x):return0.01*x**2+0.1*x# 计算在x=5处的数值微分print(numerical_diff(function_1,5))# 输出:0.1999999999990898

解析解为dydx=0.02x+0.1\frac{dy}{dx} = 0.02x + 0.1dxdy=0.02x+0.1,在x=5处真导数为0.2。我们的数值微分结果0.1999999999990898误差极小!

图4-7展示了用数值微分计算的切线:在x=5和x=10处,红色切线完美贴合蓝色曲线。

多变量函数:偏导数的挑战

当函数有多个变量时,如:
f(x0,x1)=x02+x12 f(x_0, x_1) = x_0^2 + x_1^2f(x0,x1)=x02+x12

我们需要计算偏导数:只对一个变量求导,其他变量视为常数。

计算x0=3,x1=4x_0=3, x_1=4x0=3,x1=4时关于x0x_0x0的偏导数:

# 固定x1=4,创建单变量函数deffunction_tmp1(x0):returnx0*x0+4.0**2.0print(numerical_diff(function_tmp1,3.0))# 输出:6.00000000000378

解析解 vs 数值解

  • 解析求导:基于数学公式推导,如ddxx2=2x\frac{d}{dx}x^2 = 2xdxdx2=2x
  • 数值微分:基于微小差分近似,有计算误差但通用性强

为什么这对深度学习重要?

  1. 神经网络训练:梯度下降需要计算损失函数对每个参数的偏导数
  2. 反向传播:核心是链式法则求导,数值微分可用于验证
  3. 无法解析求导时:某些复杂函数没有简单导数公式,数值微分是唯一选择

关键要点

  1. 数值微分用有限差分近似导数
  2. 中心差分比前向差分更准确
  3. 偏导数是多变量函数沿特定方向的变化率
  4. h的选择很关键:太小有舍入误差,太大近似不准确
  5. 数值微分是理解梯度的第一步,为优化算法奠定基础

掌握数值微分不仅帮助你理解数学原理,更是打开深度学习大门的钥匙。在下篇文章中,我们将探讨如何从数值微分扩展到梯度下降算法,敬请期待!


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 18:02:47

1.1 揭秘AI大模型:普通人如何抓住这波技术红利?

1.1 揭秘AI大模型:普通人如何抓住这波技术红利? 引言:我们正处在AI变革的时代 如果你经常刷社交媒体,一定看到过各种关于AI的新闻:某某公司发布了新的大模型,某位网红用AI生成了惊人的作品,或者某个工作岗位因为AI而面临挑战。那么,什么是大模型?它真的会改变我们的…

作者头像 李华
网站建设 2026/6/8 19:25:32

自监督学习医疗数据标注效率翻倍

📝 博客主页:Jax的CSDN主页 自监督学习:医疗数据标注效率翻倍的破局之道目录自监督学习:医疗数据标注效率翻倍的破局之道 目录 引言:医疗AI的“数据瓶颈” 第一部分:医疗数据标注的痛点与自监督学习的机遇 …

作者头像 李华
网站建设 2026/5/16 21:54:05

深度学习毕设选题推荐:基于python-CNN卷积神经网络对大白菜是否腐烂识别基于python 对大白菜是否腐烂识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/5/11 12:43:46

MySQL `binlog_row_metadata` 参数说明与变更评估

目录标题MySQL binlog_row_metadata 参数说明与变更评估1. 文档目的2. 参数基本信息3. 取值说明3.1 MINIMAL(默认)3.2 FULL4. 官方设计目的(Why FULL Exists)5. 性能与资源影响分析(核心)5.1 binlog 体积影…

作者头像 李华
网站建设 2026/6/5 4:52:51

CPACC认证对软件测试工程师的核心价值

认证背景 国际无障碍协会(IAAP)颁发的CPACC(Certified Professional in Accessibility Core Competencies) 是全球认可的无障碍领域基础认证。对测试人员而言,其价值体现在: 掌握ISO 29138、WCAG 2.2等国际标准的技术实施要点 构建系统性认知障碍分类体…

作者头像 李华
网站建设 2026/6/1 18:03:51

Java ssm基于web的汽车销售管理系统车辆采购出入库(源码+文档+运行视频+讲解视频)

文章目录 系列文章目录目的前言一、详细视频演示二、项目部分实现截图三、技术栈 后端框架SSM前端框架vueSSM框架详细介绍系统测试 四、代码参考 源码获取 目的 摘要:本文聚焦于Java SSM框架下基于Web的汽车销售管理系统中的车辆采购出入库模块。该模块是汽车销售…

作者头像 李华