深度学习:SGD的缺点

news2024/11/30 9:33:48

首先看下述函数:
在这里插入图片描述最小值为x=0,y=0处
先了解下它的梯度特征。了理解其梯度特征,我们需要计算其梯度向量。
梯度向量 ∇f 是函数 f 在每个变量方向上的偏导数组成的向量。具体来说:
∇f=(∂f/∂x,∂f∂/y)
首先,我们计算 f 对 x 的偏导数:
∂f/∂x=10/x​
接着,我们计算 ff对 yy的偏导数:
∂f/∂y=2y
因此,梯度向量 ∇f为:
∇f=(x/10,2y)

从梯度向量的表达式可以看出:
在 x轴方向上,梯度分量是 x/10,这意味着梯度在 x轴方向上的变化相对较小,因为 x的系数是 1/10​,这是一个较小的数。
在 y 轴方向上,梯度分量是 2y,这意味着梯度在 y轴方向上的变化相对较大,因为 y的系数是 2,这是一个较大的数。

因此,这个函数的梯度特征是:在 y轴方向上变化较大,而在 x轴方向上变化较小。换句话说,函数 f在 y轴方向上的变化比在 x轴方向上的变化更为显著。
梯度图如下图所示:
在这里插入图片描述我们应用随机梯度下降(SGD)方法,从初始点 (x,y)=(−7.0,2.0)开始搜索,SGD会呈“之”字形移动,是一个相当低效的路径,如下图所示:
在这里插入图片描述是由于以下几个原因:
1.梯度方向的变化:
在给定的函数 f=120(x2)+y2f=201​(x2)+y2 中,梯度向量 ∇f=(x/10,2y)) 在不同点的方向是不同的。
初始点 (−7.0,2.0)处的梯度向量为 (−7.0/10,2⋅2.0)=(−0.7,4.0)
这意味着在初始点,梯度在 y轴方向上的分量(4.0)远大于在 x 轴方向上的分量(-0.7)。
2. 学习率的影响:
学习率(步长)的选择会影响搜索路径。如果学习率过大,可能会导致在 yy 轴方向上过度移动,而在 xx 轴方向上移动不足,从而形成之字形路径。
如果学习率过小,虽然可以避免之字形路径,但收敛速度会变慢。
3.局部最小值和鞍点:
在某些情况下,函数可能存在局部最小值或鞍点,这些点可能会导致SGD在搜索过程中来回摆动,形成之字形路径。
4. 随机性:
SGD方法中包含了随机性,每次迭代时只使用部分数据(或单个数据点)来计算梯度,这可能导致梯度估计的不稳定性,从而形成之字形路径。

为了更具体地理解为什么会出现之字形移动,我们可以考虑以下步骤:
初始点 (−7.0,2.0)
梯度向量 (−0.7,4.0)
如果学习率 ηη 较大,更新后的点可能为 (−7.0−η⋅(−0.7),2.0−η⋅4.0),即 (−7.0+0.7η,2.0−4η)
更新后的点:
如果 η 较大,y轴方向上的移动会显著大于x 轴方向上的移动,导致点在 y轴方向上大幅移动,而在 x 轴方向上移动较小。
这种不平衡的移动可能导致点在 y 轴方向上来回摆动,形成之字形路径。
综上所述,SGD方法在从 (−7.0,2.0)处开始搜索时,由于梯度方向的变化、学习率的影响以及随机性等因素,可能会呈现出之字形移动。

因此,SGD的缺点是,如果函数的形状非均向,比如呈延伸状,搜索的路径就会非常低效。因此,我们需要比单纯朝梯度方向前进的SGD更聪明的方法。SGD低效的根本原因是,梯度的方向并没有指向最小值的方向(在复杂的非凸优化问题中,函数可能存在多个局部最小值和鞍点。SGD可能会陷入这些不良点,导致优化过程停滞不前)。

改进SGD的方法

为了克服SGD的低效性,研究者们提出了许多改进方法,包括:
动量(Momentum):通过引入动量项,减少梯度噪声的影响,加速收敛。
自适应学习率方法:如AdaGrad、RMSprop、Adam等,根据参数的历史梯度自动调整学习率。
二阶优化方法:如牛顿法、拟牛顿法等,利用二阶导数信息加速收敛。
正则化技术:如L1、L2正则化,防止过拟合,提高模型的泛化能力。
批量归一化(Batch Normalization):通过归一化输入数据,加速训练过程。

动量(Momentum):在此例中应用Momentum方法,虽然x轴方向上受到的力非常小,但是一直在同一方向上受力,所以朝同一个方向会有一定的加速。反过来,虽然y轴方向上受到的力很大,但是因为交互地受到正方向和反方向的力,它们会互相抵消,所以y轴方向上的速度不稳定。因此,和SGD时的情形相比,可以更快地朝x轴方向靠近,减弱“之”字形的变动程度。如下图所示:
在这里插入图片描述AdaGrad:AdaGrad会为参数的每个元素适当地调整学习率。参数的元素中变动较大(被大幅更新)的元素的学习率将变小。也就是说,可以按参数的元素进行学习率衰减,使变动大的参数的学习率逐渐减小。如下图所示:
在这里插入图片描述函数的取值高效地向着最小值移动。由于y轴方向上的梯度较大,因此刚开始变动较大,但是后面会根据这个较大的变动按比例进行调整,减小更新的步伐。因此,y轴方向上的更新程度被减弱,“之”字形的变动程度有所衰减。

**Adam:**融合了Momentum和AdaGrad的方法。通过组合前面两个方法的优点,有望实现参数空间的高效搜索。此外,进行超参数的“偏置校正”也是Adam的特征。如下图所示:
在这里插入图片描述

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

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

相关文章

时间序列预测(十五)——有关Python项目框架的实例分析

#1024程序员节|征文# 在之前的学习中,已经对时间序列预测的相关内容有了大致的了解。为了进一步加深理解,并能够将所学知识应用于实际中,我决定找一个完整的Python框架来进行深入学习。经过寻找,我终于找到了一篇非常具…

电脑技巧:如何进行磁盘测速?

磁盘测速是指通过专业工具或系统自带功能,测量硬盘的读写速度。这一过程能够帮助用户了解磁盘的性能瓶颈,并为硬件升级或系统优化提供数据依据。特别是在处理大量数据或运行高负载应用时,磁盘速度是决定系统性能的关键因素。 影响磁盘速度的因…

Web 核心指标优化之 INP 篇

这篇文章是我在公司做 INP 优化经验分享的演讲稿。 大家好,今天我要做的分享是关于 INP 的一些优化经验。 概念 首先,什么叫 INP 呢。 INP 的全称叫 Interaction to Next Pain ,翻译过来就是从交互到下一次绘制的延迟。这是 Google 提出来的…

C#与C++互操作时的数据类型对应

C#和C在互操作时,会涉及到数据类型对应的问题,如果数据类型用得不对,就会得不到想要的结果,严重的情况下,可能还会导致程序崩溃。这里做一下相关知识点的总结。 说明: 1. 表格第一列是Visual C中的数据类型…

【Docker大揭秘】

Docker 调试一天的血与泪的教训:设备条件:对应的build preparation相应的报错以及修改 作为记录 构建FASTLIO2启动docker获取镜像列出镜像运行containerdocker中实现宿主机与container中的文件互传 调试一天的血与泪的教训: 在DOCKER中跑通F…

numpy——数学运算

一、标量——矢量 import numpy as npa 3.14 b np.array([[9, 5], [2, 7]])print(a) print(b)# ---------- 四则运算 ---------- print(a b) # np.add print(a - b) # np.subtract print(a * b) # np.multiply print(a / b) # np.divide 二、矢量——矢量 import nump…

Claude Financial Data Analyst:基于Claude的金融数据分析工具!免费开源!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工…

MPC模型预测控制与RL强化学习的差异性

模型预测控制(Model Predict Control,MPC) 模型预测控制与强化学习的差异性调研 概述 MPC 是一种使用数学模型在有限时间内实时优化控制系统的技术,自二十世纪六七十年代问世以来,已广泛应用于化学工程、炼油、先进…

Java:String类(超详解!)

一.常用方法 🥏1.字符串构造 字符串构造有三种方法: 📌注意: 1. String是引用类型,内部并不存储字符串本身 如果String是一个引用那么s1和s3应该指向同一个内容,s1和s2是相等的,应该输出两…

《深度学习》模型的部署、web框架 服务端及客户端案例

目录 一、模型的部署 1、模型部署的定义与目的 1)定义 2)目的 2、模型部署的步骤 1)导出模型 2) 部署模型 3)测试模型 4)监控模型 3、模型部署的方式 1)云端部署 2)嵌入…

autMan奥特曼机器人-对接Docker版本NTQQ详细教程

准备 1、准备一台服务器,amd64/arm64都可以,配置最好还是2核保底吧。 2、准备一个VNC软件。1Remote:点此下载 3、准备手机登陆机器人QQ号,扫码 NTQQ相关 NTQQ一键脚本(适用于小白支持autMan/无界) 复制以…

linux标准 I/O

FILE 指针标准输入、标准输出和标准错误检查或复位状态I/O 缓冲控制文件 I/O 内核缓冲的标志直接 I/O:绕过内核缓冲stdio 缓冲 FILE 指针 FILE 是一个结构体数据类型,它包含了标准 I/O 库函数为管理文件所需要的所有信息,包括用于实际I/O 的…

基于Spring Boot的宿舍管理系统设计与实现(源码+定制+开发)宿舍信息管理平台、智能宿舍系统开发、学生宿舍管理平台设计、宿舍入住与信息管理

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

单节点kubernetes-1.20二进制部署

文章目录 一, 集群拓扑二,架构图三,前置准备1.环境准备1.1操作系统初始化配置(1)关闭防火墙(2)关闭selinux(3)关闭swap(4)根据规划设置主机名(5&a…

[简易版] 自动化脚本

前言 uniapp cli项目中没办法自动化打开微信开发者工具,需要手动打开比较繁琐,故此自动化脚本就诞生啦~ 实现 const spawn require("cross-spawn"); const chalk require("picocolors"); const dayjs require("dayjs&quo…

实战教程:利用Docker容器化技术部署Szurubooru图像分享平台

实战教程:利用Docker容器化技术部署Szurubooru图像分享平台 一、Szurubooru介绍1.1 Szurubooru简介1.2 主要特点1.3 主要使用场景 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker comp…

numpy——索引切片

一、索引和切片 import numpy as npx np.arange(48).reshape(6, 8) print(x)# 选取第二行 print(x[1]) #从0开始,取得第2行# 选取第二行, 第二列 print(x[1][1])# 选取第三行到最后一行, 第一列到最后一列 print(x[2:,2:])# 花式索引 (1, 1) 和 (4, 4) print(&quo…

MPP音视频总结

基础篇 1.常用图像格式介绍 常用图像像素格式 RGB 和 YUV。 1.1RGB RGB分类通常指的是将图像或颜色按照RGB(红、绿、蓝)颜色空间进行分组或分类。RGB图像格式通常包括RGB24(RGB888)、RGB32、RGBA、RGB565等。 RGB24是一种常用…

【CSS】入门详解

你是否曾经浏览网页时,被一些网站精美的布局、炫酷的动画和赏心悦目的色彩所吸引?这背后神奇的力量就是 CSS(层叠样式表)。CSS 就像网页的化妆师,它负责网页的样式和布局,让原本枯燥的 HTML 结构变得生动有…

AttributeError: module ‘pandas‘ has no attribute ‘datetime‘

今天在进行时间序列问题处理时候,发生如下报错: AttributeError: module pandas has no attribute datetime 因为在新的pands版本中pandas已不再支持datetime模块。 from datetime import datetime 需要导入datetime库。 原代码: impor…