吴恩达深度学习笔记:优化算法 (Optimization algorithms)2.8

目录

  • 第二门课: 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)
    • 第二周:优化算法 (Optimization algorithms)
      • 2.8 Adam 优化算法(Adam optimization algorithm)

第二门课: 改善深层神经网络:超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)

第二周:优化算法 (Optimization algorithms)

2.8 Adam 优化算法(Adam optimization algorithm)

在深度学习的历史上,包括许多知名研究者在内,提出了优化算法,并很好地解决了一些问题,但随后这些优化算法被指出并不能一般化,并不适用于多种神经网络,时间久了,深度学习圈子里的人开始多少有些质疑全新的优化算法,很多人都觉得动量(Momentum)梯度下降法很好用,很难再想出更好的优化算法。所以 RMSprop 以及 Adam 优化算法(Adam优化算法也是本视频的内容),就是少有的经受住人们考验的两种算法,已被证明适用于不同的深度学习结构,这个算法我会毫不犹豫地推荐给你,因为很多人都试过,并且用它很好地解决了许多问题。

Adam 优化算法基本上就是将 Momentum 和 RMSprop 结合在一起,那么来看看如何使用 Adam 算法。

在这里插入图片描述

使用 Adam 算法,首先你要初始化, v d W v_{dW} vdW = 0, S d W S_{dW} SdW = 0, v d b v_db vdb = 0, S d b S_db Sdb = 0,在第𝑡次迭代中,你要计算微分,用当前的 mini-batch 计算 d W dW dW d b db db,一般你会用 mini-batch 梯度下降法。接下来计算 Momentum 指数加权平均数,所以 v d W = β 1 v d W + ( 1 − β 1 ) d W v_{dW} = \beta_1 v_{dW} + (1 − \beta_1)dW vdW=β1vdW+(1β1)dW(使用 β 1 \beta_1 β1,这样就不会跟超参数 β 2 \beta_2 β2混淆,因为后面 RMSprop 要用到 β 2 \beta_2 β2),使用 Momentum 时我们肯定会用这个公式,但现在不叫它𝛽,而叫它 β 1 \beta_1 β1。同样 v d b = β 1 v d b + ( 1 − β 1 ) d b v_{db} = \beta_1v_{db} + (1 − \beta_1)db vdb=β1vdb+(1β1)db

接着你用 RMSprop 进行更新,即用不同的超参数 β 2 \beta_2 β2 S d W = β 2 S d W + ( 1 − β 2 ) ( d W ) 2 S_{dW} = \beta_2 S_{dW} + (1 − \beta_2)(dW)^2 SdW=β2SdW+(1β2)(dW)2,再说一次,这里是对整个微分 d W dW dW进行平方处理, S d b = β 2 S d b + ( 1 − β 2 ) ( d b ) 2 S_db = \beta_2 S_db + (1 − \beta_2)(db)^2 Sdb=β2Sdb+(1β2)(db)2

相当于 Momentum 更新了超参数 β 1 \beta_1 β1,RMSprop 更新了超参数 β 2 \beta_2 β2。一般使用 Adam 算法的时候,要计算偏差修正,

v d W c o r r e c t e d v_{dW}^{corrected} vdWcorrected,修正也就是在偏差修正之后, v d W c o r r e c t e d = v d W 1 − β 1 t v_{dW}^{corrected} =\frac{v_{dW}}{1−\beta_1^t} vdWcorrected=1β1tvdW,同样 v d b c o r r e c t e d = v d b 1 − β 1 t v_{db}^{corrected}=\frac{v_{db}}{1−\beta_1^t} vdbcorrected=1β1tvdb,𝑆也使用偏差修正,也就是 S d W c o r r e c t e d = S d W 1 − β 2 t S_{dW}^{corrected} =\frac{S_{dW}}{1−\beta_2^t} SdWcorrected=1β2tSdW S d b c o r r e c t e d = S d b 1 − β 2 t S_{db}^{corrected} =\frac{S_{db}}{1−\beta_2^t} Sdbcorrected=1β2tSdb

最后更新权重,所以𝑊更新后:
W : = W − α v d W c o r r e c t e d S d W c o r r e c t e d + ϵ W: = W − \alpha \frac{v_{dW}^{corrected}}{\sqrt{S_{dW}^{corrected} + \epsilon }} W:=WαSdWcorrected+ϵ vdWcorrected
(如果你只是用 Momentum,使用𝑣𝑑𝑊或者修正后的𝑣𝑑𝑊,但现在我们加入了 RMSprop 的部分,所以我们要除以修正后𝑆𝑑𝑊的平方根加上𝜀)。

根据类似的公式更新𝑏值:
b : = b − α v d b c o r r e c t e d S d b c o r r e c t e d + ϵ b:=b −\alpha \frac{v_{db}^{corrected}}{\sqrt{S_{db}^{corrected} + \epsilon }} b:=bαSdbcorrected+ϵ vdbcorrected

所以 Adam 算法结合了 Momentum 和 RMSprop 梯度下降法,并且是一种极其常用的学习算法,被证明能有效适用于不同神经网络,适用于广泛的结构。

在这里插入图片描述

本算法中有很多超参数,超参数学习率 α \alpha α很重要,也经常需要调试,你可以尝试一系列值,然后看哪个有效。 β 1 \beta_1 β1常用的缺省值为 0.9,这是 d W dW dW 的移动平均数,也就是 d W dW dW的加权平均数,这是 Momentum 涉及的项。至于超参数 β 2 \beta_2 β2,Adam 论文作者,也就是 Adam 算法的发明者,推荐使用 0.999,这是在计算 ( d W ) 2 (dW)^2 (dW)2以及 ( d b ) 2 (db)^2 (db)2的移动加权平均值,关于 ϵ \epsilon ϵ 的选择其实没那么重要,Adam 论文的作者建议 ϵ \epsilon ϵ 1 0 − 8 10^{−8} 108,但你并不需要设置它,因为它并不会影响算法表现。但是在使用 Adam 的时候,人们往往使用缺省值即可, β 1 \beta_1 β1 β 2 \beta_2 β2 ϵ \epsilon ϵ都是如此,我觉得没人会去调整𝜀,然后尝试不同的 α \alpha α值,看看哪个效果最好。你也可以调整 β 1 \beta_1 β1 β 2 \beta_2 β2,但我认识的业内人士很少这么干。

为什么这个算法叫做 Adam?Adam 代表的是 Adaptive Moment Estimation, β 1 \beta_1 β1用于计算这个微分( d W dW dW),叫做第一矩, β 2 \beta_2 β2用来计算平方数的指数加权平均数(( d W dW dW)^2),叫做第二矩,所以 Adam 的名字由此而来,但是大家都简称 Adam 权威算法。

顺便提一下,我有一个老朋友兼合作伙伴叫做 Adam Coates。据我所知,他跟 Adam 算法没有任何关系,不过我觉得他偶尔会用到这个算法,不过有时有人会问我这个问题,我想你可能也有相同的疑惑。

这就是关于 Adam 优化算法的全部内容,有了它,你可以更加快速地训练神经网络,在结束本周课程之前,我们还要讲一下超参数调整,以及更好地理解神经网络的优化问题有哪些。下个视频中,我们将讲讲学习率衰减。

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

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

相关文章

短视频批量剪辑,智能素材文案生成,多账号授权私信回复与矩阵发布素材功能合集系统,短视频矩阵助手源码搭建部署源码开源部署方案。

目录 一、短视频矩阵助手系统是什么? 二、短视频矩阵助手系统可以为企业解决什么问题? 短视频矩阵助手可以解决哪些问题? 三、短视频矩阵助手系统功能有哪些? 四、总结 一、短视频矩阵助手系统是什么? 短视频矩阵…

环保科普馆如何互动化加深观众环保认知?

如今,多媒体技术的广泛应用,已经为环保、天文、生物等各类主题展厅注入了新的活力,在这些展馆中,它凭借独特的互动体验,以及深入浅出的教育方式,赢得了广大观众的热烈追捧。今天,我们就一同探讨…

阿里巴巴发布最新财报,营收重回增长轨道

KlipC报道:5月14日,阿里巴巴集团发布2024财年及第四财季最新财报,财报显示第四财季收入2218.74亿元,同比增长7%,超出市场预期。2024财年收入同比增长8%,达9411.68亿元。 第四财季净利润244.2亿元人民币&am…

【设计模式】JAVA Design Patterns——Aggregator Microservices(聚合器微服务模式)

🔍目的 用户对聚合器服务进行一次调用,然后聚合器将调用每个相关的微服务。 🔍解释 真实世界例子 网络市场需要有关产品及其当前库存的信息。 它调用聚合服务,聚合服务依次调用产品信息微服务和产品库存微服务,返回组合…

制作coco类型数据集

COCO格式数据集简介 COCO数据集是一个大型的、丰富的物体检测,分割和字幕数据集。这个数据集以scene understanding(场景理解)为目标,主要从复杂的日常场景中截取,图像中的目标通过精确的segmentation(分…

不懂技术可以当项目经理吗?看完这篇你就知道了

项目经理作为项目的核心负责人,主要负责项目的规划、组织、协调和控制。 如果你不懂技术,但具备出色的项目管理技能,你仍然可以成功地管理项目。你可以通过与技术团队建立紧密的合作关系,明确项目需求,并依赖技术团队…

IntelliJ IDEA - 查看项目工程代码量统计

首先安装一个统计插件——Statistic 接着在左下角可以看到 Statistic Logo 插件,点击即可看到统计面板

正则表达式和sed

一、正则表达式 主要用来匹配字符串(命令结果,文本内容), 通配符匹配文件(而且是已存在的文件) 基本正则表达式 扩展正则表达式 1.元字符 . 匹配任意单个字符,可以是一个汉字 […

第 8 章 机器人底盘Arduino端PID控制(自学二刷笔记)

重要参考: 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 8.4.5 底盘实现_04Arduino端PID控制 上一节最后测试时,电机可能会出现抖动、顿挫的现象&#xff…

ubuntu下安装pwndbg

安装pwndbg 如果可以科学上网 首先安装git apt install git 然后拉取git库 git clone GitHub - pwndbg/pwndbg: Exploit Development and Reverse Engineering with GDB Made Easy 进入到pwngdb的文件夹中 cd pwngdb 执行 ./setup.sh 而后输入gdb 出现红色pwndgb就是安装成功…

解决springboot+vue静态资源刷新后无法访问的问题

一、背景 原项目是有前后端分离设计,测试环境是centos系统,采用nginx代理和转发,项目正常运行。 项目近期上线到正式环境,结果更换了系统环境,需要放到一台windows系统中,前后端打成一个jar包,…

Python重复文件清理小工具

针对电脑长期使用产生的重复文件,尤其是微信电脑版每转发一次生成一个重复文件的问题,用python写了一个批量清理重复文件的小工具,记录备用。 import shutil import tkinter from tkinter import filedialog import os import threading imp…

美港通正规股票交易市场人民币突然拉升,市场开启“大风车”模式?

查查配今天上午,市场又开启了“大风车”模式,多个热点轮番拉升。 一则关于地产行业利好的小作文流出,地产产业链上午爆发,租售同权、房地产服务、房地产开发等板块大涨,光大嘉宝、天地源等个股涨停。万科A涨超4%。 美港通证券以其专业的服务和较低的管理费用在市场中受到不少…

如何在Sui智能合约中验证是否为多签地址

通过多签合约实现多个用户可访问的安全账户。多签(multi-sig)钱包和账户通过允许多个用户在预定义条件下访问共享资产,或让单个用户实施额外的安全措施,从而增强密钥管理。例如,多签钱包可以用于管理去中心化自治组织&…

智慧教育平台:选课系统的Spring Boot实现

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

Verilog基础语法——条件语句if-else与case

Verilog基础语法——条件语句case、if-else 写在前面一、if-else语句二、case语句2.1 case语句2.2 casez语句2.3 casex语句 写在后面 写在前面 在Verilog语法中,常用的条件语句有if-else语句和case语句,用于判断条件是否为真,并执行判断条件后…

第 N 个泰波那契数

题目链接 第 N 个泰波那契数 题目描述 注意点 0 < n < 37答案保证是一个 32 位整数 解答思路 动态规划根据前三个数字推出新的泰波那契数 代码 class Solution {public int tribonacci(int n) {if (n 0) {return 0;}if (n 1 || n 2) {return 1;}int x 0;int x…

JSON格式化输出html——数组+对象+JSON字符串+汉字——基础积累——@pgrabovets/json-view

昨天写了一篇关于JSON格式化输出到页面上——数组对象JSON字符串汉字——基础积累的文章&#xff0c;效果是可以实现的 但是如果要实现右侧部分的展开/折叠&#xff0c;则可以使用到下面的插件了pgrabovets/json-view github链接&#xff1a;https://github.com/pgrabovets/j…

软考笔记随记

原码:(0正1负) 原码是最直观的编码方式,符号位用0表示正数,用1表示负数,其余位表示数值的大小。 例如,+7的原码为00000111,-7的原码为10000111。 原码虽然直观,但直接用于加减运算会导致计算复杂,且0有两种表示(+0和-0),不唯一。 反码: 反码是在原码的基础上得…

如何在VS Code中安装插件并进行中文化。

相关文章推荐: 如何下载和安装Visual Studio Code&#xff08;VSCode&#xff09; 在使用Visual Studio Code&#xff08;简称VS Code&#xff09;进行开发时&#xff0c;安装插件可以极大地提升开发效率和使用体验。而将VS Code插件界面进行中文化&#xff0c;则能更好地满足中…