深度模型中的优化 - 基本算法篇

序言

在深度学习中,模型优化是提升模型性能与训练效率的关键环节。深度模型通过优化算法不断调整其内部参数,以最小化损失函数,从而实现对复杂数据的有效拟合与预测。本篇章将简要概述深度模型中的几种基本优化算法,包括梯度下降法及其变种,这些算法在推动深度学习领域的发展中起到了至关重要的作用。

概述

梯度下降法(Gradient Descent, GD)

作为最基础的优化算法,梯度下降法通过计算损失函数关于模型参数的梯度,并沿着梯度的反方向更新参数,从而逐步逼近损失函数的最小值。然而,标准梯度下降法需要计算整个数据集的梯度,计算量大且不适合大数据集。

随机梯度下降法(Stochastic Gradient Descent, SGD)

为了克服标准梯度下降法的缺点,SGD每次随机选取一个样本计算梯度并更新参数,显著提高了计算效率。但SGD的梯度估计存在噪声,可能导致收敛过程震荡。

小批量梯度下降法(Mini-batch Gradient Descent)

作为GD与SGD的折中方案,小批量梯度下降法每次选取一小批样本计算梯度并更新参数,既保持了计算效率,又相对稳定了梯度估计。

动量法(Momentum)

在SGD基础上引入动量项,利用历史梯度信息加速收敛并减少震荡。

自适应学习率算法(如Adam)

结合了动量法和 RMSprop \text{RMSprop} RMSprop算法的优点,通过维护梯度的一阶矩和二阶矩估计来动态调整学习率,具有较快的收敛速度和较强的适应性。

基本算法

  • 之前我们已经介绍了梯度下降(基于梯度的优化方法),即沿着整个训练集梯度下降的方向。这可以使用随机梯度下降很大程度地加速,沿着随机挑选的 minibatch \text{minibatch} minibatch数据的梯度下降方向,请参阅随机梯度下降算法篇和批算法和 minibatch \text{minibatch} minibatch算法

随机梯度下降

  • 随机梯度下降( SGD \text{SGD} SGD)及其变种很可能是一般机器学习中用得最多的优化算法,特别是在深度学习中。如批算法和 minibatch \text{minibatch} minibatch算法中讨论,通过计算独立同分布地从数据生成分布中抽取的 m m m minibatch \text{minibatch} minibatch样本的梯度均值,我们可以得到梯度的无偏估计。

  • 算法1:展示了如何使用这个下降梯度的估计。


    算法1描述:随机梯度下降( SGD \text{SGD} SGD)在第 k k k个训练迭代的更新


    伪代码
    R e q u i r e \bold{Require} Require: 学习速率 ϵ k \epsilon_k ϵk
    R e q u i r e \bold{Require} Require: 初始参数 θ \boldsymbol{\theta} θ
    w h i l e \quad\bold{while} while 没有达到停止准则 d o \bold{do} do
    \qquad 从训练集中采包含 m m m个样本 { x ( i ) , … , x ( m ) } \{\boldsymbol{x}^{(i)},\dots,\boldsymbol{x}^{(m)}\} {x(i),,x(m)} minibatch \text{minibatch} minibatch,对应目标为 y ( i ) \boldsymbol{y}^{(i)} y(i)
    \qquad 计算梯度估计: g ^ ← + 1 m ∇ θ ∑ i L ( f ( x ( i ) ; θ ) , y ( i ) ) \hat{\boldsymbol{g}}\gets +\frac{1}{m}\nabla_\theta\sum_i L(f(\boldsymbol{x}^{(i)};\boldsymbol{\theta}),\boldsymbol{y}^{(i)}) g^+m1θiL(f(x(i);θ),y(i))
    \qquad 应用更新: θ ← θ − ϵ g ^ \boldsymbol{\theta}\gets\boldsymbol{\theta}-\epsilon\hat{\boldsymbol{g}} θθϵg^
    e n d \quad\bold{end} end w h i l e \bold{while} while


  • SGD \text{SGD} SGD算法中的一个关键参数是学习速率。之前,我们介绍的 SGD \text{SGD} SGD使用固定的学习速率。在实践中,有必要随着时间的推移逐渐降低学习速率,因此我们将第 k k k步迭代的学习速率记作 ϵ k \epsilon_k ϵk

  • 这是因为 SGD \text{SGD} SGD梯度估计引入的噪源( m m m个训练样本的随机采样)并不会在极小值处消失。相比之下,当我们使用 batch \text{batch} batch梯度下降到达极小值时,整个代价函数的真实梯度会变得很小,甚至为 0 0 0,因此 batch \text{batch} batch梯度下降可以使用固定的学习速率。保证 SGD \text{SGD} SGD收敛的一个充分条件是:
    ∑ k = 1 ∞ ϵ k = ∞ \sum\limits_{k=1}^\infty \epsilon_k=\infty k=1ϵk= — 公式1 \quad\textbf{---\footnotesize{公式1}} 公式1

    ∑ k = 1 ∞ ϵ k 2 < ∞ \sum\limits_{k=1}^\infty \epsilon_k^2<\infty k=1ϵk2< — 公式2 \quad\textbf{---\footnotesize{公式2}} 公式2

  • 实践中,一般会线性衰减学习速率到第 τ \tau τ 次迭代:
    ϵ k = ( 1 − α ) ϵ 0 + α ϵ τ \epsilon_k=(1-\alpha)\epsilon_0+\alpha\epsilon_\tau ϵk=(1α)ϵ0+αϵτ — 公式3 \quad\textbf{---\footnotesize{公式3}} 公式3

    • 其中 α = k τ \alpha=\displaystyle\frac{k}{\tau} α=τk
    • τ \tau τ步迭代之后,一般使 ϵ \epsilon ϵ保持常数
  • 学习速率可通过试验和误差来选取,通常最好的选择方法是画出目标函数值随时间变化的学习曲线。

    • 与其说是科学,这更是一门艺术,关于这个问题的大多数指导都应该被怀疑地看待。
    • 使用线性时间表时,参数选择为 ϵ 0 \epsilon_0 ϵ0 ϵ τ \epsilon_\tau ϵτ τ \tau τ
    • 通常 τ \tau τ被设为需要反复遍历训练样本几百次的迭代次数。
    • 通常 ϵ τ \epsilon_\tau ϵτ应设为大约 1 % 1\% 1% ϵ 0 \epsilon_0 ϵ0
    • 主要问题是如何设置 ϵ 0 \epsilon_0 ϵ0
    • ϵ 0 \epsilon_0 ϵ0太大,学习曲线将会剧烈振荡,代价函数值通常会明显增加。
    • 温和的振荡是良好的,特别是训练于随机代价函数上,例如由信号丢失引起的代价函数。
    • 如果学习速率太慢,那么学习进程会缓慢。
    • 如果初始学习速率太低,那么学习可能会卡在一个相当高的损失值。
    • 通常,就总训练时间和最终损失值而言,最优初始学习速率会高于大约迭代 100 100 100步后输出最好效果的学习速率。
    • 因此,通常最好是检测最早的几轮迭代,使用一个高于此时效果最佳学习速率的学习速率,但又不能太高以致严重的不稳定性。
  • SGD \text{SGD} SGD和相关的 minibatch \text{minibatch} minibatch或在线基于梯度的优化的最重要的性质是每一步更新的计算时间不会随着训练样本数目而增加。

    • 即使训练样本数目非常大时,这也能收敛。
    • 对于足够大的数据集, SGD \text{SGD} SGD可能会在处理整个训练集之前就收敛到最终测试集误差的某个固定容差范围内。
  • 研究优化算法的收敛率,一般会衡量额外误差(excess error) J ( θ ) − min ⁡ θ J ( θ ) J(\boldsymbol{\theta}) − \min_{\boldsymbol{\theta}} J(\boldsymbol{\theta}) J(θ)minθJ(θ),即当前代价函数超出最低可能损失的量。

    • SGD \text{SGD} SGD应用于凸问题时, k k k步迭代后的额外误差量级是 O ( 1 k ) \Omicron(\displaystyle\frac{1}{\sqrt{k}}) O(k 1),在强凸情况下是 O ( 1 k ) \Omicron(\displaystyle\frac{1}{k}) O(k1)
    • 除非假定额外的条件,否则这些界限不能进一步改进。
    • batch \text{batch} batch梯度下降在理论上比随机梯度下降有更好的收敛率。
    • 然而,Cramér-Rao界限 (Cramér, 1946; Rao, 1945) 指出,泛化误差的下降速度不会快于 O ( 1 k ) \Omicron(\displaystyle\frac{1}{k}) O(k1)
    • Bottou and Bousquet (2008b) 由此认为对于机器学习任务,不值得探寻收敛快于 O ( 1 k ) \Omicron(\displaystyle\frac{1}{k}) O(k1)的优化算法—更快的收敛可能对应着过拟合。
    • 此外,渐近分析掩盖随机梯度下降在少量更新步之后的很多优点。
    • 对于大数据集, SGD \text{SGD} SGD初始快速更新只需非常少量样本计算梯度的能力远远超过了其缓慢的渐近收敛。
    • 本篇章剩余部分介绍的大多数算法都实现了实践中有用的好处,但是丢失了常数倍 O ( 1 k ) \Omicron(\displaystyle\frac{1}{k}) O(k1)的渐近分析。
    • 我们也可以权衡batch梯度下降和随机梯度下降两者的优点,在学习过程中逐渐增大 minibatch \text{minibatch} minibatch的大小。

动量

Nesterov动量

总结

深度模型中的优化算法是提升模型性能的重要工具。从基础的梯度下降法到先进的自适应学习率算法,这些算法在不断演进中解决了计算效率、收敛速度及稳定性等问题。
未来,随着深度学习应用的不断拓展,优化算法的研究将继续深入,为更高效的模型训练提供有力支持。

往期内容回顾

应用数学与机器学习基础 - 随机梯度下降算法篇
应用数学与机器学习基础 - 数值计算之梯度之上Jacobian和Hessian矩阵篇
深度网络现代实践 - 深度前馈网络之基于梯度的学习篇
梯度下降算法之随机梯度下降

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3266396.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

I2C framework

/dev/i2cX是i2c总线设备驱动文件。I2C总线是一种字符设备。 先来看驱动drivers/i2c/i2c-core-base.c 驱动drivers/i2c/i2c-core-base.c注册了i2c总线类i2c_bus_type&#xff0c;我们说的i2c0等具体的i2c总线需要注册到这个i2c_bus_type.

传知代码-智慧医疗:纹理特征VS卷积特征(论文复现)

代码以及视频讲解 本文所涉及所有资源均在传知代码平台可获取 论文链接&#xff1a;https://www.sciencedirect.com/science/article/abs/pii/S1076633223003537?__cf_chl_rt_tkJ9Aipfxyk5d.leu48P20ePFNd4B2aunaSmzVpXCg.7g-1721292386-0.0.1.1-6249 论文概述 今天我们把视线…

idea启动项目报:the command line via JAR manifest or via a classpath file and rerun.

解决方案 1.打开Edit Configurations&#xff0c;进去编辑&#xff0c;如下&#xff1a; 笔记配置 2.选择Modfiy options,点击Shorten command line 3.在新增的Shorten command line选项中选择JAR manifest或classpath file 4.点击保存后即可

建立两个基于域名访问的网站

题目 1、配置web服务器&#xff0c;当访问网站www.haha.com时显示&#xff1a;haha 2、配置web服务器&#xff0c;当访问网站www.xixi.com/secret/显示&#xff1a;this is secret 一、 ① # 恢复快照&#xff0c;关闭安全软件 # 安装所需软件 [rootserver ~] # yum install …

mac怎样清理photoshop垃圾的方法 ps清理缓存和垃圾 苹果电脑暂存盘已满怎么清理

很多使用过ps&#xff0c;尤其是Adobe全家桶的小伙伴会发现&#xff0c;这些软件占用缓存很多&#xff0c;而且随着使用时间的增长&#xff0c;缓存也会越多&#xff0c;并不会自动清理。那么mac系统怎么清理ps暂存盘呢&#xff1f;mac又该怎么最高效清理磁盘空间呢&#xff1f…

删除的视频怎样才能恢复?详尽指南

在日常生活中&#xff0c;我们有时会不小心删除一些重要的视频文件&#xff0c;或者在整理存储空间时不慎丢失了珍贵的记忆片段。这时候&#xff0c;我们可以通过一些数据恢复工具和技巧&#xff0c;找回这些被删除的视频。本文将详细介绍几种常见且有效的视频恢复方法&#xf…

【数据结构】顺序表(杨辉三角、简单的洗牌算法)

&#x1f387;&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳&#xff0c;欢迎大佬指点&#xff01; 欢迎志同道合的朋友一起加油喔 &#x1f4aa;&#x1f4aa;&#x1f4aa; 谢谢你这么帅…

纬创软件赞助 | 两岸曲艺青年汇在台湾会馆举办

7月6日下午&#xff0c;北京台湾会馆处处洋溢着掌声、笑声、欢呼声。由中国曲艺家协会、北京市台联主办&#xff0c;北京国际和平文化基金会、相声天团、吴兆南相声剧艺社、北京德云社文化传播有限公司等协办的“艺道同欢”两岸曲艺青年汇在这里隆重举办。纬创软件赞助了本次活…

生成式人工智能代理 AI Agent:从思维到行动的技术飞跃

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

利用换元法计算积分的常见题型(考研高数复习)

考研中常见的几种换元法积分计算题 (1)被积式仅包含一个根式&#xff1a;根号下为有 a a a 和 x x x 的平方和/平方差 此种类型的积分题型&#xff0c;可以通过构造单个锐角大小为 t t t 的直角三角形&#xff0c;利用勾股定理和三角函数进行代换。 平方和的情况 形如 ∫…

opencascade AIS_ManipulatorOwner AIS_MediaPlayer源码学习

前言 AIS_ManipulatorOwner是OpenCascade中的一个类&#xff0c;主要用于操纵对象的交互控制。AIS_ManipulatorOwner结合AIS_Manipulator类&#xff0c;允许用户通过可视化工具&#xff08;如旋转、平移、缩放等&#xff09;来操纵几何对象。 以下是AIS_ManipulatorOwner的基…

32单片机开发bootloader程序

一&#xff0c;单片机为什么要使用bootloader 1、使用bootloader的好处 1) 程序隔离&#xff1a;可以同时存在多个程序&#xff0c;只要flash空间够大&#xff0c;或者通过外挂flash&#xff0c;可以实现多个程序共存&#xff0c;在多个程序之间切换使用。 2&#xff09;方便程…

JavaWeb学习——请求响应、分层解耦

目录 一、请求响应学习 1、请求 简单参数 实体参数 数组集合参数 日期参数 Json参数 路径参数 总结 2、响应 ResponseBody&统一响应结果 二、分层解耦 1、三层架构 三层架构含义 架构划分 2、分层解耦 引入概念 容器认识 3、IOC&DI入门 4、IOC详解 …

STM32-寄存器DMA配置指南

配置步骤 在STM32F0xx中文参考手册中的DMA部分在开头给出了配置步骤 每个通道都可以在外设寄存器固定地址和存储器地址之间执行 DMA 传输。DMA 传输的数据 量是可编程的&#xff0c;最大达到 65535。每次传输之后相应的计数寄存器都做一次递减操作&#xff0c;直到 计数为&am…

PHP基础语法-Part1

脚本格式 PHP脚本以<?php开头&#xff0c;以?>结尾&#xff1b; PHP语句以分号结尾&#xff08;;&#xff09; PHP是解释型语言&#xff1b; 输入和输出 获取用户的输入&#xff1a; $input readline("input:"); echo $input; echo "input:";…

MySQL作业五

1. 创建表goods&#xff0c;orders 2. 向商品表中插入商品记录 3. 触发器操作 3.1 建立触发器&#xff0c;订单表中增加订单数量后&#xff0c;商品表商品数量同步减少对应的商品订单出数量,并测试 3.2 建立触发器&#xff0c;实现功能:客户取消订单&#xff0c;恢复商品表对应…

物联网精密空调监控指标解读:佳力图(MEAUO702M)

监控易作为一款功能强大的IT和物联网设备监控软件&#xff0c;能够实时监控各类IT资源和物联网设备的运行状态&#xff0c;为用户提供准确、及时的监控数据&#xff0c;确保系统的稳定运行。在物联网精密空调领域&#xff0c;监控易对佳力图(MEAUO702M)精密空调进行了全面的监控…

【中项】系统集成项目管理工程师-第5章 软件工程-5.3软件设计

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB

前言 首届YashanDB「迁移体验官」开放后&#xff0c;陆续收到「体验官」们的投稿&#xff0c;小崖在此把优秀的投稿文章分享给大家~今天分享的用户文章是《崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB》&#xff08;作者&#xff1a;小草&#xff09;&#xff0c;满满…

深度解读大语言模型中的Transformer架构

一、Transformer的诞生背景 传统的循环神经网络&#xff08;RNN&#xff09;和长短期记忆网络&#xff08;LSTM&#xff09;在处理自然语言时存在诸多局限性。RNN 由于其递归的结构&#xff0c;在处理长序列时容易出现梯度消失和梯度爆炸的问题。这导致模型难以捕捉长距离的依…