深度学习优化入门:Momentum、RMSProp 和 Adam

目录

深度学习优化入门:Momentum、RMSProp 和 Adam

病态曲率

1牛顿法

2 Momentum:动量

3Adam


深度学习优化入门:Momentum、RMSProp 和 Adam

 

本文,我们讨论一个困扰神经网络训练的问题,病态曲率。

虽然局部极小值和鞍点会阻碍我们的训练,但病态曲率会减慢训练的速度,以至于从事机器学习的人可能会认为搜索已经收敛到一个次优的极小值。让我们深入了解什么是病态曲率。

「病态曲率」

考虑以下损失曲线图。

 

病态曲率

如你所知,我们在进入一个以蓝色为标志的像沟一样的区域之前是随机的。这些颜色实际上代表了在特定点上的损失函数的值,红色代表最高的值,蓝色代表最低的值。

我们想要下降到最低点,因此,需要穿过峡谷。这个区域就是所谓的病态曲率。为了了解为何将其称为病态曲率,让我们再深入研究。放大了看,病态曲率就像这样...

要知道这里发生的事情并不难。梯度下降沿着峡谷的山脊反弹,向最小的方向移动的速度非常慢。这是因为山脊的曲线在 W1 方向上弯曲的更陡。

考虑山脊表面的 A 点。我们看到,梯度在这点可以分解为两个分量,一个沿着 W1 方向,另外一个沿着 W2 方向。如果 f 显著下降的唯一方向是低曲率的,那么优化可能会变得太慢而不切实际,甚至看起来完全停止,造成局部最小值的假象。

 

正常情况下,我们使用一个较慢的学习率来解决这种山脊间反弹的问题,正如上一篇关于梯度下降的文章所述。然而,这却产生了麻烦。

当我们接近最小值时,慢下来是有意义的,我们想要收敛于它。但是考虑一下梯度下降进入病态曲率的区域,以及到最小值的绝对距离。如果我们使用较慢的学习率,可能需要花费更多的时间才能到达极小值点。事实上,有研究论文报道过使用足够小的学习率来阻值山脊间的反弹可能导致参与者以为损失根本没有改善,从而放弃训练。

如果 f 显著下降的唯一方向是低曲率的,那么优化可能会变得太慢而不切实际,甚至看起来完全停止,造成局部最小值的假象。

也许我们想要的是能让我们慢慢进入病态曲率底部的平坦区域,然后在最小值的方向上加速。二阶导数可以帮助我们做到这一点。

1牛顿法

梯度下降是一阶优化方法。它只考虑损失函数的一阶导数,而不考虑更高阶的导数。这基本上意味着它不知道损失函数的曲率。它只能说明损失是否下降以及下降的速度,而不能区分曲线是平坦的,向上的,还是向下的。

 

之所以会发生这种现象,是因为梯度下降只关心梯度,就好像上图中红色的点,三个曲线在这一点上的梯度是相同的。如何解决?使用二阶导数,或者考虑梯度变化的速率

一个非常流行的可以使用二阶导数的技术,可以解决我们的问题,这个方法称为牛顿法。 如果表面变得不那么陡峭,那么学习步骤就会减少。

牛顿法可以提供一个理想的步长,在梯度方向上移动。由于我们现在有了关于损失表面曲率的信息,所以可以选择步长,而不是用病态曲率来超过该区域的极限。

牛顿法通过计算 Hessian 矩阵来实现,Hessian 矩阵是损失函数的二阶导数组成的权值组合。我所说的权值组合,如下所示。

 

Hessian 矩阵在一个大矩阵中计算所有这些梯度。

 

Hessian 矩阵给出了一个点的损失曲面曲率的估计。一个损失的表面可以有一个正曲率,这意味着当我们移动时,表面会迅速变得不那么陡峭。如果我们有一个负曲率,这意味着当我们移动时,曲面变得越来越陡。

 

注意,如果这一步是负的,那就意味着我们可以使用任意的步骤。换句话说,我们可以切换回原来的算法。这对应于下面的情况,梯度变得越来越陡。

然而,如果梯度变得不那么陡峭,我们可能会走向一个处于病态曲率底部的区域。在这里,牛顿法给了我们一个修正的学习步骤,正如你所看到的,它与曲率成反比,或者曲面变得越来越小。

如果表面变得不那么陡峭,那么学习步骤就会减少。

2 Momentum:动量

与 SDG 结合使用的一种常用方法叫做 Momentum。Momentum 不仅会使用当前梯度,还会积累之前的梯度以确定走向。梯度下降方程修改如下。

图片

第一个式子有两项。第一项是上一次迭代的梯度,乘上一个被称为「Momentum 系数」的值,可以理解为取上次梯度的比例。

图片

我们设 v 的初始为 0,动量系数为 0.9,那么迭代过程如下:

图片

我们可以看到之前的梯度会一直存在后面的迭代过程中,只是越靠前的梯度其权重越小。(说的数学一点,我们取的是这些梯度步长的指数平均)。

这对我们的例子有什么帮助呢?观察下图,注意到大部分的梯度更新呈锯齿状。我们也注意到,每一步的梯度更新方向可以被进一步分解为 w1 和 w2 分量。如果我们单独的将这些向量求和,沿 w1 方向的的分量将抵消,沿 w2 方向的分量将得到加强。

3Adam

到目前为止,我们已经对比了 RMSProp 和 Momentum 两种方法。尽管 Momentum 加速了我们对极小值方向的搜索,但 RMSProp 阻碍了我们在振荡方向上的搜索。

Adam 或 Adaptive Moment Optimization:自适应力矩优化. 算法将 Momentum 和 RMSProp 两种算法结合了起来。这里是迭代方程。

图片

我们计算了每个梯度分量的指数平均和梯度平方指数平均(方程 1、方程 2)。为了确定迭代步长我们在方程 3 中用梯度的指数平均乘学习率(如 Momentum 的情况)并除以根号下的平方指数平均(如 Momentum 的情况),然后方程 4 执行更新步骤。

超参数 beta1 一般取 0.9 左右,beta_2 取 0.99。Epsilon 一般取1e-10。

「结论」

在这篇文章中,我们介绍了 3 种基于梯度下降法来解决病态曲率同时加快搜索速度的方法。这些方法通常称为「自适应方法」,因为学习步骤会根据等高线拓扑进行调整。

在上面的三种方法中,尽管 Adam 算法在论文中被认为是最有前景的算法,但是 Momentum 方法貌似更主流一些。实践结果表明,在给定损失函数的情况下,三种算法都能收敛到不同的局部最优极小值。但是用带 Momentum 的 SGD 算法比 Adam 算法找到的极小值更加平坦,而自适应方法往往会收敛到更加尖锐的极小值点。平坦的极小值通常好于尖锐的极小值。

图片

尽管自适应算法有助于我们在复杂的损失函数上找到极小值点,但这还不够,特别是在当前网络越来越来越深的背景下。除了研究更好的优化方法之外,还有一些研究致力于构建产生更平滑损失函数的网络架构。Batch-Normalization 和残差连接是其中的解决方法,我们也会尽快在博客上发布有关的详细介绍。欢迎随时在评论中提问。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SELinux 入门 pt.2

哈喽大家好,我是咸鱼 在《SELinux 入门 pt.1》中,咸鱼向各位小伙伴介绍了 SELinux 所使用的 MAC 模型、以及几个重要的概念(主体、目标、策略、安全上下文) 我们还讲到: 对于受 SELinux 管制的进程,会先…

深度学习:Sigmoid函数与Sigmoid层区别

深度学习:Sigmoid函数与Sigmoid层 1. Sigmoid神经网络层 vs. Sigmoid激活函数 在深度学习和神经网络中,“Sigmoid” 是一个常见的术语,通常用来表示两个相关但不同的概念:Sigmoid激活函数和Sigmoid神经网络层。这两者在神经网络…

java八股文面试[JVM]——元空间

JAVA8为什么要增加元空间 为什么要移除永久代? 知识来源: 【2023年面试】JVM8为什么要增加元空间_哔哩哔哩_bilibili

nginx 中新增url请求参数

1、nginx中新增配置: set $args "$args&参数名参数值"; 示例: set $args "$args&demo1cn_yaojin&demo2123123&myip$remote_addr"; location / {add_header Access-Control-Allow-Origin *;add_header Access-Contro…

「MySQL-00」MySQL在Linux上的安装、登录与删除

目录 一、安装MySQL 0. 安装前请先执行一遍删除操作,把预装或残留的MySQL删除掉 1. 安装yum源 (解决了在哪里找MySQL的问题) 2. 安装哪个版本的MySQL 二、启动和登录MySQL 三、删除MySQL / MariaDB 安装与卸载前,建议先将用户切换…

查看IIS管理器网站的日志和简要分析

一、查看IIS管理器网站的日志 1.1、查看网站的日志 1.2、IIS的4种日志文件格式 《1》 IIS日志文件格式 使用 Microsoft IIS 日志文件格式来记录有关站点的信息。这种格式由 HTTP.sys 进行处理,并且是固定的基于 ASCII 文本的格式,这意味着无法自定义记录的字段。字段由逗号…

Win10下CCS v5.2.1编译错误Fatal error: could not open source file问题记录

Win10下CCS v5.2.1编译错误Fatal error: could not open source file问题记录 1.问题现象 作者在Win 10系统中使用CCS v5.2.1进行DSP C6678开发,由于更换了新的电脑,所以重新配置了开发环境,但是编译出现错误。输出如下: **** …

【HTML】HTML面试知识梳理

目录 DOCTYPE(文章类型)head标签浏览器乱码的原因及解决常用的meta标签与SEOscript标签中defer和async的区别src&href区别HTML5有哪些更新语义化标签媒体标签表单进度条、度量器DOM查询Web存储Canvas和SVG拖放 (HTML5 drag API&#xff0…

springboot定时任务:同时使用定时任务和websocket报错

背景 项目使用了websocket,实现了消息的实时推送。后来项目需要一个定时任务,使用org.springframework.scheduling.annotation的EnableScheduling注解来实现,启动项目之后报错 Bean com.alibaba.cloud.sentinel.custom.SentinelAutoConfiguration of t…

Lucky player —— Java 项目(Spring Boot)

一、项目介绍 项目名称:lucky player 项目的主要功能:本系统主要功能为构建了一个用户分享音乐的平台,普通用户不进行登录即可收听其他用户已经发布的专辑中的音乐。 作为博主则可以在该平台上传音频,以及在线音频录制上传。音频上…

(五)k8s实战-配置管理

一、ConfigMap 使用 kubectl create configmap -h 查看示例&#xff0c;构建 configmap 对象 1) 基于文件夹&#xff0c;加载文件夹下所有配置文件&#xff0c;创建 kubectl create configmap <configmapName> --from-file<dirPath>2) 指定配置文件&#xff0c;创…

4 多层感知机

多层感知机是一组前向结构的人工神经网络&#xff0c;映射一组输入向量到一组输出向量。除了输入节点&#xff0c;每一个节点都是一个带有非线性激活函数的神经元。多层感知机在输入层和输出层之间添加了一个或者多个隐藏层&#xff0c;并通过激活函数转换隐藏层输出。以下介绍…

基于亚马逊云科技无服务器服务快速搭建电商平台——部署篇

受疫情影响消费者习惯发生改变&#xff0c;刺激了全球电商行业的快速发展。除了依托第三方电商平台将产品销售给消费者之外&#xff0c;企业通过品牌官网或者自有电商平台销售商品也是近几年电商领域快速发展的商业模式。独立站电商模式可以进行多方面、全渠道的互联网市场拓展…

[系统] 电脑突然变卡 / 电脑突然** / 各种突发情况解决思路

今天来公司办公&#xff0c;开机之后发现电脑出现各种问题&#xff0c;死机、卡顿、点什么都加载&#xff0c;甚至开一个文件夹要1分钟才能打开&#xff0c;花了2个小时才解决&#xff0c;走了很多弯路&#xff0c;其实早点想通&#xff0c;5分钟就能解决问题&#xff0c;所以打…

【深度学习_TensorFlow】过拟合

写在前面 过拟合与欠拟合 欠拟合&#xff1a; 是指在模型学习能力较弱&#xff0c;而数据复杂度较高的情况下&#xff0c;模型无法学习到数据集中的“一般规律”&#xff0c;因而导致泛化能力弱。此时&#xff0c;算法在训练集上表现一般&#xff0c;但在测试集上表现较差&…

PyCharm下安装配置PySide6开发环境(Qt Designer(打开,编辑)、PyUIC和PyRCC)

一.准备工作 1.安装python和pycharm并配置好环境变量 python安装路径 pycharm安装路径&#xff1a; python系统变量&#xff1a; pycharm环境变量&#xff1a; 注意&#xff1a;正常安装&#xff0c;并勾选ADD PATH一般会自动配好 2.在pycharm创建一个新的python的虚拟环境 …

FFmpeg<第一篇>:环境配置

1、官网地址 http://ffmpeg.org/download.html2、linux下载ffmpeg 下载&#xff1a; wget https://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2解压&#xff1a; tar xvf ffmpeg-snapshot.tar.bz23、FFmpeg ./configure编译参数汇总 解压 ffmpeg-snapshot.tar.bz2 之后&…

【SQL中DDL DML DQL DCL所包含的命令】

SQL中DDL DML DQL DCL所包含的命令 关于DDL、DML、DQL、DCL的定义和适用范围如下&#xff1a; 数据定义语言&#xff08;Data Definition Language&#xff0c;DDL&#xff09;&#xff1a; DDL用于创建、修改和删除数据库中的表、视图、索引等对象。它的主要命令包括CREATE、A…

springcloud3 GateWay章节-Nacos+gateway动态路由负载均衡4

一 工程结构 1.1 工程 1.2 搭建gatewayapi工程 1.pom文件 <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!--gateway--&g…

【keepalived双机热备与 lvs(DR)】

目录 一、概述 1.简介 2.原理 3.作用 二、安装 1.配置文件 2.配置项 三、功能模块 1.core 2.vrrp 3.check 四、配置双机热备 1.master 2.backup 五、验证 1.ping验证 2.服务验证 六、双机热备的脑裂现象 七、keepalivedlvs&#xff08;DR&#xff09; 1.作…