news 2026/4/18 0:58:50

深度学习优化算法与实践 :深度学习中的优化算法与挑战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深度学习优化算法与实践 :深度学习中的优化算法与挑战

优化和深度学习

学习目标

本课程将讨论优化与深度学习之间的关系以及在深度学习中使用优化的挑战。对于深度学习问题,通常会先定义损失函数。一旦有了损失函数,就可以使用优化算法来尝试最小化损失。在优化中,损失函数通常被称为优化问题的目标函数。按照传统惯例,大多数优化算法都关注的是最小化。如果需要最大化目标,那么有一个简单的解决方案:在目标函数前加负号即可。

相关知识点

  • 优化和深度学习

学习内容

1 优化和深度学习

尽管优化提供了一种最大限度地减少深度学习损失函数的方法,但本质上,优化和深度学习的目标是根本不同的。前者主要关注的是最小化目标,后者则关注在给定有限数据量的情况下寻找合适的模型。例如,训练误差和泛化误差通常不同:由于优化算法的目标函数通常是基于训练数据集的损失函数,因此优化的目标是减少训练误差。但是,深度学习的目标是减少泛化误差。为了实现后者,除了使用优化算法来减少训练误差之外,还需要注意过拟合。

%pip install d2l
%matplotlib inlineimportnumpyasnpimporttorchfrommpl_toolkitsimportmplot3dfromd2limporttorchasd2l

为了说明上述不同的目标,引入两个概念风险经验风险。经验风险是训练数据集的平均损失,而风险则是整个数据群的预期损失。下面定义了两个函数:风险函数f和经验风险函数g。假设只有有限的训练数据。因此,这里的g不如f平滑。

deff(x):returnx*torch.cos(np.pi*x)defg(x):returnf(x)+0.2*torch.cos(5*np.pi*x)

下图说明,训练数据集的最低经验风险可能与最低风险(泛化误差)不同。

defannotate(text,xy,xytext):#@saved2l.plt.gca().annotate(text,xy=xy,xytext=xytext,arrowprops=dict(arrowstyle='->'))x=torch.arange(0.5,1.5,0.01)d2l.set_figsize((4.5,2.5))d2l.plot(x,[f(x),g(x)],'x','risk')annotate('min of\nempirical risk',(1.0,-1.2),(0.5,-1.1))annotate('min of risk',(1.1,-1.05),(0.95,-0.5))


本课程将关注优化算法在最小化目标函数方面的性能,而不是模型的泛化误差。在深度学习中,大多数目标函数都很复杂,没有解析解。相反,必须使用数值优化算法。本课程中的优化算法都属于此类别。

深度学习优化存在许多挑战。其中最令人烦恼的是局部最小值、鞍点和梯度消失。

1.1 局部最小值

对于任何目标函数(f(x)(f(x)(f(x),如果在xxx处对应的f(x)f(x)f(x)值小于在xxx附近任意其他点的f(x)f(x)f(x)值,那么f(x)f(x)f(x)可能是局部最小值。如果f(x)f(x)f(x)xxx处的值是整个域中目标函数的最小值,那么f(x)f(x)f(x)是全局最小值。

例如,给定函数
f(x)=x⋅cos(πx) for −1.0≤x≤2.0 f(x) = x \cdot \text{cos}(\pi x) \text{ for } -1.0 \leq x \leq 2.0f(x)=xcos(πx)for1.0x2.0

可以近似该函数的局部最小值和全局最小值。

x=torch.arange(-1.0,2.0,0.01)d2l.plot(x,[f(x),],'x','f(x)')annotate('local minimum',(-0.3,-0.25),(-0.77,-1.0))annotate('global minimum',(1.1,-0.95),(0.6,0.8))


深度学习模型的目标函数通常有许多局部最优解。当优化问题的数值解接近局部最优值时,随着目标函数解的梯度接近或变为零,通过最终迭代获得的数值解可能仅使目标函数局部最优,而不是全局最优。只有一定程度的噪声可能会使参数跳出局部最小值。事实上,这是小批量随机梯度下降的有利特性之一。在这种情况下,小批量上梯度的自然变化能够将参数从局部极小值中跳出。

1.2 鞍点

除了局部最小值之外,鞍点是梯度消失的另一个原因。鞍点(saddle point)是指函数的所有梯度都消失但既不是全局最小值也不是局部最小值的任何位置。考虑这个函数f(x)=x3f(x) = x^3f(x)=x3。它的一阶和二阶导数在x=0x=0x=0时消失。这时优化可能会停止,尽管它不是最小值。

x=torch.arange(-2.0,2.0,0.01)d2l.plot(x,[x**3],'x','f(x)')annotate('saddle point',(0,-0.2),(-0.52,-5.0))


如下例所示,较高维度的鞍点甚至更加隐蔽。考虑这个函数f(x,y)=x2−y2f(x, y) = x^2 - y^2f(x,y)=x2y2。它的鞍点为(0,0)(0, 0)(0,0)。这是关于yyy的最大值,也是关于xxx的最小值。此外,它看起来像个马鞍,这就是鞍点的名字由来。

x,y=torch.meshgrid(torch.linspace(-1.0,1.0,101),torch.linspace(-1.0,1.0,101))z=x**2-y**2ax=d2l.plt.figure().add_subplot(111,projection='3d')ax.plot_wireframe(x,y,z,**{'rstride':10,'cstride':10})ax.plot([0],[0],[0],'rx')ticks=[-1,0,1]d2l.plt.xticks(ticks)d2l.plt.yticks(ticks)ax.set_zticks(ticks)d2l.plt.xlabel('x')d2l.plt.ylabel('y');


假设函数的输入是kkk维向量,其输出是标量,因此其Hessian矩阵(也称黑塞矩阵)将有kkk个特征值。函数的解可能是局部最小值、局部最大值或函数梯度为零位置处的鞍点:

  • 当函数在零梯度位置处的Hessian矩阵的特征值全部为正值时,有该函数的局部最小值;
  • 当函数在零梯度位置处的Hessian矩阵的特征值全部为负值时,有该函数的局部最大值;
  • 当函数在零梯度位置处的Hessian矩阵的特征值为负值和正值时,有该函数的一个鞍点。

对于高维度问题,至少部分特征值为负的可能性相当高。这使得鞍点比局部最小值更有可能出现。简而言之,凸函数是Hessian函数的特征值永远不为负值的函数。不幸的是,大多数深度学习问题并不属于这一类。尽管如此,它还是研究优化算法的一个很好的工具。

1.3 梯度消失

可能遇到的最隐蔽问题是梯度消失。例如,假设想最小化函数f(x)=tanh⁡(x)f(x) = \tanh(x)f(x)=tanh(x),然后恰好从x=4x = 4x=4开始。正如所看到的那样,fff的梯度接近零。更具体地说,f′(x)=1−tanh⁡2(x)f'(x) = 1 - \tanh^2(x)f(x)=1tanh2(x),因此是f′(4)=0.0013f'(4) = 0.0013f(4)=0.0013。因此,在取得进展之前,优化将会停滞很长一段时间。事实证明,这是在引入ReLU激活函数之前训练深度学习模型相当棘手的原因之一。

x=torch.arange(-2.0,5.0,0.01)d2l.plot(x,[torch.tanh(x)],'x','f(x)')annotate('vanishing gradient',(4,1),(2,0.0))


正如所看到的那样,深度学习的优化充满挑战。幸运的是,有一系列强大的算法表现良好,即使对于初学者也很容易使用。此外,没有必要找到最优解。局部最优解或其近似解仍然非常有用。

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

Flutter艺术探索-Flutter性能优化基础:const与const构造函数

Flutter 性能优化基础:深入理解 const 与 const 构造函数 引言:为什么我们应该关心 const? 在 Flutter 开发中,咱们可能都遇到过这样的场景:界面稍微复杂一点,滚动起来就感觉不那么跟手,或者频繁…

作者头像 李华
网站建设 2026/4/18 8:56:39

在3D设计课上,国产CAD兼顾入门与实战

我在职校教3D设计课,真的很头疼用哪个牌子的软件。有些孩子基础很差,对电脑操作很不敏感,不能用过于复杂的软件作为教学工具,但用的软件太简单又不能很好的衔接企业实际岗位标准,课就白上了。要选一款既要贴合学生的认…

作者头像 李华
网站建设 2026/4/18 6:38:27

React Vue 如何让 Cookie 逻辑“秒变优雅”?

你是否还在为 document.cookie 的手动操作头疼?设置一个登录 token,还得手动处理编码、路径、过期时间,一不小心就触发跨域错误或 XSS 风险?更糟的是,每次写代码都像在玩“cookie 拼图”——要么漏了 HttpOnly&#xf…

作者头像 李华
网站建设 2026/4/18 1:34:38

深度剖析eBPF技术原理及其在微服务网关性能优化中的实践应用

【精选优质专栏推荐】 《AI 技术前沿》 —— 紧跟 AI 最新趋势与应用《网络安全新手快速入门(附漏洞挖掘案例)》 —— 零基础安全入门必看《BurpSuite 入门教程(附实战图文)》 —— 渗透测试必备工具详解《网安渗透工具使用教程(全)》 —— 一站式工具手册《CTF 新手入门实战教…

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

三菱FX5U实现4层电梯升降控制:PLC与触摸屏程序全解析

三菱FX5U控制的4层电梯升降,系统为FX5UFX5-40SSC-S简单运控模块。 包含一个PLC程序和触摸屏程序。 程序有详细的注释。一、引言 在自动化控制领域,电梯控制是一个经典且应用广泛的场景。本文将介绍如何使用三菱FX5U系列PLC搭配FX5 - 40SSC - S简单运控模…

作者头像 李华