吴恩达深度学习笔记:优化算法 (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.xdnf.cn/news/1425121.html

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

相关文章

React 第三十七章 Scheduler 最小堆算法

在 Scheduler 中&#xff0c;使用最小堆的数据结构在对任务进行排序。 // 两个任务队列 var taskQueue: Array<Task> []; var timerQueue: Array<Task> [];push(timerQueue, newTask); // 像数组中推入一个任务 pop(timerQueue); // 从数组中弹出一个任务 time…

通过 Apple Vision Pro 释放创造力:深入研究空间计算

Apple 最新进军空间计算领域的 Apple Vision Pro,标志着重新定义我们与技术交互方式的重大飞跃。空间计算超越了传统界限,允许用户以无缝集成到物理世界的方式参与 2D 和 3D 内容。 我们可以关注两种类型的体验: 在空间中渲染 2D 内容。这涉及将现有设备窗口投影到空间领域…

QT:QML与C++交互

目录 一.介绍 二.pro文件添加模块 三.h文件 四.cpp文件 五.注册 六.调用 七.展示效果 八.代码 1.qmlandc.h 2.qmlandc.cpp 3.main.cpp 4.qml 一.介绍 在 Qt 中&#xff0c;QML 与 C 交互是非常重要的&#xff0c;因为它允许开发人员充分利用 QML 和 C 各自的优势&…

OpenAI GPT-4o:开启人工智能交互新纪元

引言 在人工智能领域&#xff0c;OpenAI一直是创新的代名词。2024年5月14日&#xff0c;OpenAI再次以GPT-4o模型震撼了科技界&#xff0c;这款全新的旗舰生成模型不仅免费向公众开放&#xff0c;更以其革命性的多模态交互能力&#xff0c;引领我们进入了一个全新的科幻时代。 …

位图和布隆过滤器:位图

在《unordered_map 和 unordered_set》 中提到过&#xff1a; 哈希是一种思想&#xff0c;通过哈希函数将数据转化为一个或多个整型 —— 映射关系&#xff1b;通过这种映射关系&#xff0c;可以做到以 O(1) 的时间复杂度查找数据。 本文即将介绍的 位图 和 布隆过滤器 就是两个…

亚马逊Prime Day旺季备货遭遇美国海关查验高峰,应对策略全攻略!

随着全球化贸易的日益繁荣&#xff0c;跨境电商企业在旺季备货时面临着巨大的挑战&#xff0c;尤其是当遇到美国海关查验潮时&#xff0c;如何应对成为众多商家关注的焦点。本文将从分析美国海关查验的原因入手&#xff0c;为商家提供一系列应对策略和建议。 一、美国海关查验潮…

​学者观察 | 从区块链应用创新看长安链发展——CCF区块链专委会荣誉主任斯雪明

导语 2024年1月27日&#xff0c;斯雪明教授在长安链发布三周年庆暨生态年会上发表演讲&#xff0c;认为在区块链发展过程中&#xff0c;不仅需要技术创新&#xff0c;同时需要有价值、有特色、有示范意义的应用创新。斯雪明教授介绍了国内区块链技术与应用发展的现状、趋势与挑…

SVN切换账号

SVN切换账号 有这么一种情况&#xff0c;对于一个新项目&#xff0c;项目紧急的情况下&#xff0c;大家会使用一个svn账号下载代码&#xff0c;开始提前熟悉业务。那么当正式开发的时候&#xff0c;每个人的svn账号也已经下发下来了&#xff0c;这个时候大家就需要切换成自己的…

C# .Net8 switch 的用法

在 .net 8中&#xff0c;switch 不需要再和传统的写法一样了&#xff0c;会更加的方便 创建一个 .net 8 控制台项目 switch 的写法没必要和以前一样 namespace SwitchTest {internal class Program{static void Main(string[] args){int day 3;var week day switch{1 > &…

AIGC文生视频:Sora模型报告总结

作为世界模拟器的视频生成模型 我们探索视频数据生成模型的大规模训练。具体来说&#xff0c;我们在可变持续时间、分辨率和宽高比的视频和图像上联合训练文本条件扩散模型。我们利用对视频和图像潜在代码的时空补丁进行操作的变压器架构。我们最大的模型 Sora 能够生成一分钟…

继承的奥秘:面向对象编程中的血脉传承与智慧抉择

1. 概述 在面向对象编程&#xff08;OOP&#xff09;中&#xff0c;继承是构建复杂软件系统的基石之一。它允许我们定义一个类&#xff08;称为父类或基类&#xff09;作为其他类&#xff08;称为子类或派生类&#xff09;的基础&#xff0c;子类能够自动获得父类的属性和方法…

Stable Diffusion超详细教程!本地部署 Stable Diffusion

前言 目前市面上比较权威&#xff0c;并能用于工作中的AI绘画软件其实就两款&#xff1a; Midjourney&#xff08;MJ&#xff09;Stable-Diffusion&#xff08;SD&#xff09; MJ需要付费使用&#xff0c;而SD开源免费&#xff0c;但是上手难度和学习成本略大&#xff0c;并…

抖店商品详情API接口(店铺|标题|主图|价格|SKU属性等)

抖店商品详情API接口(店铺|标题|主图|价格|SKU属性等) 抖店商品详情API接口是指通过调用抖音开放平台提供的接口&#xff0c;获取抖店上商品的详细信息的方法。 抖店开放平台提供了一系列的接口&#xff0c;可以用于获取商品的基本信息、价格、库存、销量、评价等各种信息。以…

【前段】开发五子棋小游戏全流程

使用前端技术开发五子棋小游戏 在这篇博文中&#xff0c;我们将详细介绍如何使用HTML、CSS和JavaScript开发一个简单的五子棋小游戏。我们将展示如何初始化棋盘、处理用户交互以及实现胜负判定。特别是&#xff0c;我们将着重介绍胜负判定的逻辑实现。 完整代码我放在了这里&a…

AI应用案例:吸烟打电话行为识别推理

使用百度PaddlePaddle&#xff08;现更名为PaddlePaddle-GPU或PaddlePaddle-CPU&#xff09;框架来构建精准的人员抽烟、打电话动作识别模型&#xff0c;并将其应用于加油站监控场景&#xff0c;你可以遵循以下步骤&#xff1a; 数据准备&#xff1a; 收集抽烟和打电话行为的图…

【Linux网络编程】传输层中的TCP和UDP(UDP篇)

【Linux网络编程】传输层中的TCP和UDP&#xff08;UDP篇&#xff09; 目录 【Linux网络编程】传输层中的TCP和UDP&#xff08;UDP篇&#xff09;传输层再谈端口端口号范围划分认识知名端口号netstatiostatpidofxargs UDP协议UDP协议端格式UDP的特点面向数据报UDP的缓冲数据UDP使…

基于springboot实现大学生就业需求分析系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现大学生就业需求分析系统演示 摘要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲…

linux系统查看服务器硬件信息

1、查看服务器型号、序列号 # dmidecode|grep "System Information" -A9 | egrep "Manufacturer|Product|Serial" 2、查看主板型号 # dmidecode |grep -A16 "System Information$" 或 dmidecode -t1 3、查看BIOS信息 # dmidecode -t bios 4、…

绘唐2跟绘唐3有什么区别

绘唐2跟绘唐3有什么区别 这款产品的最大亮点在于其高度精准的语音克隆能力&#xff0c;利用先进的模型&#xff0c;能够捕捉到用户独特的音调、音高和调制方式&#xff0c;使用户能够以前所未有的方式复制和利用自己的声音。仅需10秒钟的录制时间&#xff0c;即可实现声音的克…

c语言中数字字符串和数字互转

#include <getopt.h> #include <stdio.h> #include <stdlib.h>#define MAX_PATH 256 char filename[MAX_PATH 5]; int main(int argc, char** argv) {//数字字符串转数字const char* kk "689";int zhi atoi(kk) 8;//数字字符串转doubledoub…