【深度学习笔记】动量梯度下降法

news2024/9/29 3:19:59

本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记,视频由网易云课堂与 deeplearning.ai 联合出品,主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习,视频的链接如下:

神经网络和深度学习 - 网易云课堂

也欢迎对神经网络与深度学习感兴趣的网友一起交流 ~

目录

1 指数加权平均

2 动量梯度下降法


1 指数加权平均

        在介绍更复杂的优化算法之前,你需要了解指数加权平均(Exponentially Weighted Average),在统计学中也叫做指数加权移动平均(Exponentially Weighted Moving Average)。

 

        这里有伦敦一年的温度数据,如果想知道这一年温度的变化趋势,或者说温度的局部平均值,可以使用 0.9 乘以前一天的平均值,加上 0.1 乘以这一天的温度值,作为新的平均值。

 

 

        如果把系数 0.9 替换为 β,0.1 替换为 1-β,就得到指数加权平均的公式。

v_t = \beta v_{t-1} + (1-\beta) \theta_t \, , 0 < \beta < 1 

vt 可以解释为 1/(1-β) 天的平均值,例如 β 取 0.9,1/(1-β) = 10,vt 近似等于 10 天的温度平均值。

        β 值越大,得到的曲线越平滑,例如上图中绿色的曲线(对应 β = 0.98)。因为前一天的温度权重为 0.98,当天的温度权重仅为 1 - 0.98 = 0.02,在温度变化时,平均值的变化越迟缓。

2 动量梯度下降法

 

        假设上图中,红点代表成本函数最小值的位置,在标准的梯度下降算法迭代过程中,梯度缓慢地摆动到最小值,上下波动的趋势减慢了梯度下降法的速度。使用更大的学习率,波动可能更大,但是减小学习率,迭代的过程也会变慢。

 

        使用动量梯度下降法(Momentum Gradient Descent),你需要做的是,计算梯度的指数加权平均值,然后用该值更新权重。

        与 α 一样,这里 β 也是梯度下降算法中的一个超参数,你需要尝试不同的 β 值,然后根据结果选择最优的一个。

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

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

相关文章

Asp.Net 6中使用Log4Net

Asp.Net 6中使用Log4Net 1. 先新建一个ASP.NET Core空项目 2. 通过Nuget包管理器安装下面两个包 log4net Microsoft.Extensions.Logging.Log4Net.AspNetCore 3. 在项目根目录下新建log4net的配置文件log4net.config&#xff0c;并将其设置为始终复制。 <?xml version&quo…

最新Ai创作源码ChatGPT商用运营源码/支持GPT4.0+支持ai绘画+支持Mind思维导图生成

本系统使用Nestjs和Vue3框架技术&#xff0c;持续集成AI能力到本系统&#xff01; 支持GPT3模型、GPT4模型Midjourney专业绘画&#xff08;全自定义调参&#xff09;、Midjourney以图生图、Dall-E2绘画Mind思维导图生成应用工作台&#xff08;Prompt&#xff09;AI绘画广场自定…

高效复用:RecyclerView Item中嵌套列表时的优化技巧

文章目录 背景实现思路方式一方式二方式三 性能对比总结 背景 如上面截图中的效果&#xff0c;首先这是一个多样式的滑动列表&#xff08;截图里只列举了其中的3 种样式&#xff09;&#xff0c;整体使用 RecyclerView 来实现毋庸置疑。接下来要探讨的是截图中第3个ItemView 中…

Linux系列---【CentOS 7通过MSTSC连接远程桌面】

安装对应的yum源 yum list lightdm xorgxrdp xrdp 可以看到这些软件都在epel中&#xff0c;如果没有的话&#xff0c;请先安装对应的yum源。命令如下&#xff1a; yum install -y epel-release 确认yum源没有问题之后&#xff0c;我们就可以进行安装了。 安装lightdm xorgxrdp…

QT【day1】

登录框&#xff1a; #include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent) {//窗口设置this->setFixedSize(600,600); //大小this->setWindowTitle("MUMU"); //文本内容this->setWindowOpacity(0.8); //透…

Java五大内存区域介绍与常见异常

jvm虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的区域。这些区域各自有各自的用途&#xff0c;以及创建和销毁的时间&#xff0c;有的区域随着虚拟机进程的启动而存在&#xff0c;有的区域则依赖用户进程的启动和结束而建立和销毁。 1、程序计数器 程序计…

《动手学深度学习》——2.6概率(模拟掷色子代码解析)

文章目录 完整代码代码解析结果展示 完整代码 %matplotlib inline !pip install d2l import torch from torch.distributions import multinomial from d2l import torch as d2l fair_probs torch.ones([6]) / 6 counts multinomial.Multinomial(10, fair_probs).sample((50…

redis中缓存雪崩,缓存穿透,缓存击穿的原因以及解决方案

一 redis的缓存雪崩 1.1 缓存雪崩 在redis中&#xff0c;新&#xff0c;旧数据交替时候&#xff0c;旧数据进行了删除&#xff0c;新数据没有更新过来&#xff0c;造成在高并发环境下&#xff0c;大量请求查询redis没有数据&#xff0c;直接查询mysql&#xff0c;造成mysql的…

图技术在 LLM 下的应用:知识图谱驱动的大语言模型 Llama Index

LLM 如火如荼地发展了大半年&#xff0c;各类大模型和相关框架也逐步成型&#xff0c;可被大家应用到业务实际中。在这个过程中&#xff0c;我们可能会遇到一类问题是&#xff1a;现有的哪些数据&#xff0c;如何更好地与 LLM 对接上。像是大家都在用的知识图谱&#xff0c;现在…

7.25作业

用fgetc与fputc函数实现 1、文件拷贝&#xff0c;例如将7.txt的内容拷贝到8.txt中 2、要求用fgets计算一个文件有多少字节 3、用fgetc计算一个文件有几行 #include<stdio.h> #include<string.h> #include<stdlib.h> int main(int argc, const char *argv…

FreeRTOS源码分析-6 多任务使用要点

目录 1 临界段应用 1.1临界段的作用 1.2临界段API 1.3临界段应用 2 临界段原理 2.1FreeRTOS中断管理实现 2.2关开中断实现 2.3临界段实现 3 任务栈大小确定 3.1确定 3.2MKD-htm文件分析 3.3堆栈检测API 4 栈溢出检测应用 4.1栈溢出检测方案一 4.2栈溢出检测方案…

各种id转换 kegg id kegg compound id 与HMDB转换

KEGG COMPOUND 数据库 - 简书 (jianshu.com) kegg id号转换为可读 的name &#xff1a;使用KEGGREST #-------------kegg id的entry和Name转换 https://zhuanlan.zhihu.com/p/545494092 #BiocManager::install("KEGGREST") #安装KEGGREST这个包 library(…

Android访问其他程序中的数据——以读取系统联系人为例

首先&#xff0c;需要保证通讯录里面有联系人存在&#xff0c;这里手动新增了两条数据。 activity_main.xml <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmln…

SpringBoot创建和使⽤

1.什么是Spring Boot&#xff1f;为什么要学Spring Boot&#xff1f; Spring 的诞⽣是为了简化 Java 程序的开发的&#xff0c;⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发 的。 Spring Boot 翻译⼀下就是 Spring 脚⼿架&#xff0c;什么是脚⼿架呢&#xff1f;如下图所…

函数(超详解)

函数 1.什么是函数2.C语言中函数的分类2.1 库函数2.1.1如何使用库函数 2.2自定义函数 3.函数的参数3.1实际参数&#xff08;实参&#xff09;3.2形式参数&#xff08;形参&#xff09; 4.函数的调用4.1 传值调用4.2 传址调用4.3 练习 5.函数的嵌套使用和链式访问5.1 嵌套调用5.…

第15章 呈现数据

默认情况下&#xff0c;大多数bash命令会将输出导向STDOUT文件描述符。 数据追加到某个文件用>> 符号来完成。 who命令生成的输出会被追加到test2文件中已有数据的后面。 只重定向错误STDERR文件描述符被设成2。可以选择只重定向错误消息&#xff0c;将该文件描述符值…

day02_springboot综合案例

day02_springboot综合案例 订单操作 查询所有订单 查询所有订单流程 查询订单&#xff0c;要把订单对应的产品也要查出来 Orders实体类 Data public class Orders {private String id;private String orderNum;DateTimeFormat(pattern"yyyy-MM-dd HH:mm")privat…

多线程面试题--线程安全

synchronized关键字的底层原理 基础版 当我们对代码就行反编译&#xff0c;会发现其实synchronized就是monitor Monitor 假如现在有一个线程过来了&#xff0c;要执行当前代码&#xff0c;会执行到synchronized (lock)&#xff0c;lock是一个对象锁。首先会让这个lock对象和m…

Clion开发stm32之微妙延迟(采用nop指令实现)

前言 需要借助逻辑分析仪动态调整参数此次测试的开发芯片为stm32f103vet6 延迟函数 声明 #define NOP_US_DELAY_MUL_CNT 5 /*nop 微妙延迟需要扩大的倍数(根据实际动态修改)*/ void bsp_us_delay_nop(uint32_t us);void bsp_ms_delay_nop(uint32_t ms);定义 void bsp_us_dela…

【深度学习】yolov5以及yolov8的微调后的模型精度对比

文章目录 前言1. 训练1.1 yolov5 的 yolov5m61.2 yolov5 的 yolov5l61.3 yolov8 的训练 结论&#xff1a; 前言 做了一个烟火识别&#xff0c;用了2W张图片&#xff0c;标注包括&#xff1a;fire&#xff0c;smoke 。在coco80类的模型上进行ft&#xff0c; 借此机会进行比较一…