吴恩达week6 ~批量梯度下降 指数加权平均 动量梯度下降 学习率衰减 Adam

news2024/11/16 23:58:07

文章目录

  • 前言
  • 一、小批量梯度下降 mini-batch
    • 1、batch gradient descent
    • 2、stochastic gradient descent
    • 3、mini-batch gradient descent
  • 二、指数加权平均
    • 1.什么是指数加权平均
    • 2、理解指数加权平均
    • 3、与普通求平均值的区别
    • 4、指数加权平均的偏差修正
  • 三、gradient descent with momentum
  • 四、RMSprop
  • 五、适应性矩估计 Adam
  • 六、学习率衰减
  • 七、局部最优解问题。


前言

一、小批量梯度下降 mini-batch

如果一个数据集有500w个数据,那我们迭代一次花费的时间就太久,且对所有训练集遍历一次也只是梯度逼近一步,但如果我们采用小批量梯度下降,大小为1000,那我们每迭代一次在1000个数据上就能逼近w一步,迭代完所有数据就梯度逼近5000步,能够提高效率。

在这里插入图片描述
向前传播 损失函数的计算 向后传播都要相应改变。

1、batch gradient descent

如果 mini-batch size=m
则就相当于普通的梯度下降了。
如果数据集不大的情况下,这是一种好的算法。一般而言<2000

2、stochastic gradient descent

随机梯度下降
如果 mini-batch size=1
这时候我们便失去了矢量化使计算加速的优点了
因为每次只有一个样本。

3、mini-batch gradient descent

如果 1<mini-batch size<m
我们一般取2的n次方,与计算机存储有关,一般取64-512
这样的好处是:既可以使用矢量计算的好处
又可以不必每次在所有数据遍历完一遍之后在梯度逼近

二、指数加权平均

exponentially weighted averages

1.什么是指数加权平均

这里以温度为例

在这里插入图片描述
Vt 为加权后的温度,
theta t:是当天的真实温度
β:是系数,也相当于一个超参数,一般取0.9
当β=0.9时,我们说取的近似是10的平均温度。
1/1-β。
在这里插入图片描述
红色是β=0.9
绿色是β=0.98
我们可以看出β=0.98时,绿色线向右移动,
通过公式我们可以看出,那是因为之前的权重变大了而当天的权重减小了。

2、理解指数加权平均

在这里插入图片描述对于V100 我们可以一步一步拆解开来,可以看到对于每天的温度都有不同的权重。
0.9的10次方≈1/e 约等于最大值的三分之一
即当10天之后的温度会下降到最大权重的三分之一,可以忽略。
即就相当于β=0.9时,我们相当于计算的是10天的平均气温。

3、与普通求平均值的区别

①普通求平均值我们都是相当于一样的权值,比如语文100,数学99,英语98。那么三科平均值就是99.
但是对于指数平均我们相当于给了不同的值不同的权重,例如温度,我们肯定是离今天近的权重大,离今天太远的,我们可以忽略。
②代码简单,且需要的存储空间小。
比如想要求n天的平均值,那么我们只要有前n-1天的值和当天的值即可,
若是普通求平均值,则需要把n天的值都存储起来。

4、指数加权平均的偏差修正

在这里插入图片描述
当β=0.98时,我们实际得到的是紫色这条线
刚开始V0=0
V1=βV0+(1-β)θ1 =0.02θ1
V2=0.98
0.02*θ1+0.02θ2
因为前面的系数太小,所以导致V1,V2这些得到的并不是前几天的平均值。
比平均值小。
但是当往后时,迭代次数增多之后,紫色与绿色线几乎重合。
所以在批量梯度下降时,由于迭代次数多,所以几乎可以不用偏差修正。
在这里插入图片描述
我们可以采用第一个公式进行偏差修正,当t很大时,βt≈0,此时紫色与绿色线又几乎重合。


三、gradient descent with momentum

在这里插入图片描述
一般的 对于我们的梯度下降算法来说,如果我们的学习率太小,迭代一次效率就会过低,但是如果学习率太大,就会造成我们的损失函数并没有朝着 减小的方向前进。
我们既希望在水平方向上朝着最小值前进,又希望在垂直方向上不要太过跌宕。

动量梯度下降
我们采用了指数加权平均的方法
如果我们的学习率过大,我们在垂直方向上可能如图:
在这里插入图片描述
虽然水平方向上一直还是沿着最小值,但是水平方向可能太过跌宕,如下图绿色线。
在这里插入图片描述

画的太丑 可以忽略。不过我觉得这个更直观
红色的是我们希望的 水平方向沿着最小值前进 且垂直方向不会太跌宕
采用了指数加权平均后,我们在垂直方向上的平均值就会平缓许多,平且在水平方向上还是沿着最小值方向前进。

在这里插入图片描述

吴老师这个公式我觉得不太对…公式右边为什么还是Vdw呢?那移到左边不是可以抵消了吗?心存疑惑…希望知道的可以解答一下~~

四、RMSprop

root mean square prop
在这里插入图片描述
我们希望在垂直方向上数值不要太大,水平方向上数值不要太小。
在垂直方向上 的值会过大,db也就会大,相对而言水平方向的值小。
除以之后就会变化,w会大,b会小。
rmsprop 和动量梯度一样可以降低我们梯度下降中的震荡,同时使我们可以以一个大的学习率α,从而提高算法的效率。

五、适应性矩估计 Adam

在这里插入图片描述
Adam结合了动量梯度下降和RMSprop的好处。
Adam一般都需要偏差修正!!!
超参数:
在这里插入图片描述

六、学习率衰减

learning rate decay
在这里插入图片描述
蓝色:是我们学习率固定时,由于学习率固定,在最后阶段我们在最小值周围绕,且这个范围较大。
此时,如我们采取学习率衰减,刚开始仍能以较大的步长梯度下降,最后我们可以以小的步长来接近最小值。如绿色。
学习率衰减的公式:
在这里插入图片描述
dacay-rate是一个超参数。
其他公式:
在这里插入图片描述

t是批处理中 批处理的t,每一次遍历中学习率α都随t的变化而变化,并且每次遍历都与之前遍历的α相同。就导致如左下图的学习率。

七、局部最优解问题。

在这里插入图片描述

比如左边图,这是一个低维图,我们很容易可以看出这个图有很多局部最优,而不是全局最优。
但是对于高维图,这种局部最优是很难的,它需要每一个方向上都是凹函数,对于一个200维的,这种局部最优概率是1/2的200平方。
所以对于高维图,是很难出现多个局部最优的,出现的大多都是右图这种,叫做鞍点。
每个方向的凹凸不一定都一致,这不是局部最优点。

对于高维我们要解决的不是多个局部最优的问题,更应该解决的是停滞区的问题,梯度逼近太慢。
但是通过adam和动量梯度下降可以解决这个问题。
在这里插入图片描述

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

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

相关文章

Allegro批量替换过孔类型操作指导

Allegro批量替换过孔类型操作指导 Allegro支持批量替换过孔类型,具体操作如下 例如需要把这些VIA10的过孔全部替换成VIA8的过孔 选择菜单上面的Tool-padstack-Group edit 右击选择temp Group 选中需要替换的过孔 选完之后右击选择complete 弹出Padstack Map窗口,modify…

java中多线程、并发、并行、线程与进程、线程调度、创建线程的方式

多线程&#xff1a; 多线程比单线程快&#xff0c;前面简单介绍过&#xff1a;集合如果是不安全的&#xff0c;那么它就是多线程的&#xff0c;了解多线程之前&#xff0c;先了解什么是并发和并行。 并发&#xff1a;指两个或多个事件在同一个时间段内发生。 并行&#xff1…

高通平台开发系列讲解(AtCoP篇)AtCoP架构简介

文章目录 一、ATCoP简介二、ATCoP架构三、流程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇讲介绍高通ATCoP的架构。 一、ATCoP简介 ATCoP(AT Command Processor)是高通平台对于AT命令处理的模块,通过它,我们可以实现对AT命令的修改和新增。ATCoP接收从串口…

[附源码]Python计算机毕业设计公司办公自动化系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

跟大佬展开激励讨论String的不可变性

目录 大佬证明&#xff1a; 我的证明&#xff1a; 后续 什么是不可变&#xff1f; String为什么不可变 为什么要设计成为不可变的呢&#xff1f; 1.首先我们最先可以想到的Java主要做的就是安全 2.其次是字符串常量池的需要 String真的不可变吗&#xff1f; ps&#…

平淡无奇,2022年终总结

1前言 一年又一年&#xff0c;时间过得太快啦&#xff01; 最近总是想着2022年的点点滴滴&#xff0c;一年时光不得写点什么不一样的&#xff0c;可是思前想后觉得这一年也没什么不一样的啊。所以呢&#xff0c;2022年终总结标题就取名为平淡无奇。 人一生最重要的是什么&#…

Java Servlet + H2数据库之集成环境配置

在 EclipseMavenTomcat 集成开发环境配置 搭建了一个Servlet的开发环境&#xff0c;整合Tomcat 作为Web容器。如何要加入数据库开发要怎么处理呢&#xff1f; 在实际开发中&#xff0c;一般会选择MySQL&#xff0c;Oracle 等数据库&#xff0c; 但是如果只是学习和演示&#x…

DPDK源码分析之网络基础知识

字节对齐 attribute ((aligned (1))); 在设计不同CPU下的通信协议时&#xff0c;或者编写硬件驱动程序时寄存器的结构这两个地方都需要按一字节对齐。即使看起来本来就自然对齐的也要使其对齐&#xff0c;以免不同的编译器生成的代码不一样. 如果跨越了4字节边界存储&#xff…

java之JVM的位置和体系结构

JVM的概念&#xff1a; JVM 即 Java Virtual Machine&#xff0c;中文名为 Java虚拟机&#xff0c;一般情况下&#xff0c;对于C/C 程序&#xff0c;编译成二进制文件后&#xff0c;就可以直接执行了&#xff0c;但Java 需要使用 javac 编译成 .class 文件&#xff0c;还需要使…

【LSTM回归预测】基于matlab主成分分析结合BiLSTM数据回归预测【含Matlab源码 2276期】

一、LSTM和BiLSTM神经网络结构及原理介绍 长短期记忆网络(Long short-term memory, LSTM)实质上可以理解为一种特殊的RNN,主要是为了解决RNN网络在长序列训练过程中发生梯度消失和梯度爆炸的问题。相比于RNN,LSTM主要是引入了细胞形态(cell state)用于保存长期状态&#xff0c…

世界杯决赛倒计时,你最看好谁

一、期待终极决赛 C站肯定有许多看球的朋友吧。明天即将迎来2022年世界杯终极对决&#xff0c;阿根廷队对战法国。来赶个晚集&#xff0c;也来聊聊世界杯&#xff0c;下一个四年就是2026&#xff0c;会不会还有这种精神呢。先来回顾一下本轮世界杯比赛中的对阵吧。 本轮世界杯中…

Win11+RTX3060+Anconda+CUDA11.3+cuDNN8.2+Pytorch1.10一条龙服务2

Win11RTX3060AncondaCUDA11.3cuDNN8.2Pytorch1.10一条龙服务 &#xff08;1&#xff09;查看安装了哪些包 conda list&#xff08;2)查看当前存在哪些虚拟环境 conda env list &#xff08;3&#xff09;创建虚拟环境&#xff0c;你可以创建好几个虚拟环境&#xff0c;虚拟环…

Flex布局小练--博文列表item布局实现

文章目录前言元素组成实现html部分布局总结前言 今天划一个水先&#xff0c;没办法&#xff0c;作孽没写完&#xff0c;什么这不是作孽的一部分嘛&#xff1f;&#xff01;听不见&#xff0c;听不见。 来先看一下我们要做的一个效果&#xff1a; 首先是这个页面下面的&#xf…

如何基于Jetbrains IDEA DataBase从数据库表中生成对应的Java Bean

在日常的项目开发过程中&#xff0c;大部分人可能都会遇到过想从表自动生成带有注释的Java Bean&#xff0c;在Jetbrains IDEA中通过DataBase工具也是可以生成的。Jetbrains IDEA的Database借助一个名称为Generate POJOs.groovy的groovy模板文件&#xff0c;可以帮我们做代码生…

Python工程师Java之路(t)SpringBoot部署步骤 java -jar

文章目录步骤1、开发环境2、新建工程3、新建controller4、开发环境试运行和测试5、打包运行命令补充步骤 1、开发环境 WIN10IDEA2021Maven3.6.3JDK1.8 2、新建工程 选择Spring和Java版本 添加依赖 3、新建controller package com.example.demo.controller;import org.spr…

macOS Ventura 13.1 (22C65) Boot ISO 原版可引导镜像

本站下载的 macOS Ventura 软件包&#xff0c;既可以拖拽到 Applications&#xff08;应用程序&#xff09;下直接安装&#xff0c;也可以制作启动 U 盘安装&#xff0c;或者在虚拟机中启动安装。 2022 年 12 月 13 日&#xff0c;macOS Ventura 13.1 推出了“无边记”&#x…

基于python的PatchMatchStereo立体匹配算法实现

文章目录前言一、PatchMatchStereo是什么&#xff1f;1.随机初始化2.迭代传播2.1空间传播2.2视图传播2.3帧间传播2.4平面细化二、PatchMatchStereo立体匹配算法实现前言 PatchMatchStereo是Michael Bleyer等在2011年发表于British Machine Vision Conference&#xff08;BMVC&a…

机器学习 鸢尾花数据集划分 训练集和测试集

目录 一&#xff1a;加载数据 二&#xff1a;数据集整理 三&#xff1a;数据集划分 一&#xff1a;加载数据 加载数据&#xff0c;并创建一个DataFrame&#xff0c;便于数据分析 from sklearn.datasets import load_iris import pandas as pd import numpy as np from skle…

大数据:计算学生成绩

文章目录一、提出任务二、任务进行&#xff08;一&#xff09;准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录&#xff08;二&#xff09;实现步骤1、创建Maven项目2、添加相关依赖3、创建日志属性文件4、创建成绩映射器类5、创建成绩驱动器类6、启动成绩驱动器类…

【JavaSE】类和对象(三)——内部类

目录 1. 何为内部类 2. 内部类的分类 2.1 静态内部类 2.1.1 如何实例化静态内部类的对象&#xff1f; 2.1.2 外部类与静态内部类如何相互访问&#xff1f; 2.2 非静态内部类/实例内部类 2.2.1 非静态内部类不能定义静态的成员变量以及方法 2.2.2 非静态内部类的实例化 2.2.…