模型优化—动量梯度下降

news2025/1/17 1:23:02
一、mini-batch

梯度下降(gradient descent):

SGD(stochastic GD)随机梯度下降:对一个样本做梯度下降

batch梯度下降:使用所有样本做梯度下降(做一次又叫epoch)

mini-batch梯度下降:用子训练集做梯度下降

epoch:对整个训练集做了一次梯度下降

iteration:做了一次梯度下降

二、如何为mini-batch选择合理的batch size

batch size 对网络的影响:

1、没有batch size(全训练集),梯度准确,只适用于小样本的数据

2、batch size = 1,随机梯度下降,梯度变来变去,非常不准确,网络很难收敛

3、batch size增大,梯度变准确(mini-batch)

4、batch size增大,梯度已经非常准确,再增大也没用。

随机梯度下降、batch梯度下降会使得梯度的准确度处于两个极端,而mini-batch处于两个极端之间。

batch size也是一个超参数,需要根据成本变化来调整。一般来说batch size选择为2的n次方,2、4、8…1024…,这样会使得计算机运算的快些。常见的batch size有:64、512。

mini-batch的不足:

在这里插入图片描述

batch梯度下降因为梯度准确,则成本变化较准确,成本下降曲线平滑。而mini-batch的梯度下降,会不断趋于准确,但整个过程中,会因为批次的变化(更换了样本),有抬升的地方,即震荡下行。

三、指数加权平均

又名指数加权移动平均,是一种常用的序列数据处理方式,本质是通过计算局部的平均值,来描述数值的变化趋势。可以用来绘制趋势曲线。

核心公式:Vt = k* V[t-1] + (1-k) * Wt,k是一个超参数,决定了v值应该受前面多少个(1 / (1-k) )数据的影响。k越大,则说明受影响前面数据的个数越多。 而计算结果vt则可以理解为前多少个的近似平均值(非真实平均值)

示例1:

当天人民币汇率趋势 = 0.9 * 前一天人民币汇率 + 0.1 * 当天人民币汇率。此时k = 0.9,表示受前面10天的影响。

示例2:当k=0.9时,求的结果为前100天的温度趋势:

v100 = 0.9*v99 + 0.1*w100

v99 = 0.9*v98 + 0.1*w99

v98 = 0.9*v97 + 0.1*w98

...

v1 = 0.9*v0 + 0.1*w1

把v99代入v100,则:

v100 = 0.9*(0.9*v98 + 0.1*w99) + 0.1*w100
=0.1*w100 + 0.1*0.9*w99 + 0.9*0.9*v98 
=0.1*w100 + 0.1*0.9*w99 + 0.9*0.9*(0.9*v97 + 0.1*w98) 
=0.1*w100 + 0.1*0.9*w99 + (0.9^3)*v97 + 0.1* (0.9^2)*w98 

v100 = 0.1w100 + 0.1*0.9*w99 + 0.1*(0.9)^2*w98 + 0.1*(0.9)^3*w97 +...
  • 可以看出,前100天温度由一小部分拼凑而成,越往前权重越小,也就是说越来越不受前面数据的影响。
  • 0.1 约等于 0.1乘0.9 约等于 0.1乘0.9平方…,而10个约等于加起来=1。所以v值相当于前10天的平均值。
  • 如果k = 0.98,那么要50个0.02才等于1,也就是说vt相当于前面50天平均值。

计算指数加权平均:

for i in range(t)

    v0 = 0

    v1 = 0.98v0 + 0.02w1

    v2 = 0.98v1 + 0.02w2

    ...
  • 修正算法:

在计算指数加权平均时,假设w1为40度,w2为40度,那么 v1 = 0.8,v2 = 0.98*0.8 + 0.8 = 1.584,说明前面的数值与实际值会相差很远。此时就需要修正。用公式 vt = vt / (1-k^t),此时v1 = 0.8 / (1-0.98^1) = 40。 后面随着t越来越大,分母越来越接近1,故vt就不需要修正了。 另外因为只是前面的会偏离一部分,故一般情况下也不会去修正。

四、动量梯度下降

标准梯度下降:

w = w - r*dw
b = b - r*db

因为加权指数移动平均,可以反应趋势,平均项越多,绘制的指数加权平均曲线变化更为缓慢。故我们可以用它来做梯度下降,从而减轻标准梯度下降跳来跳去找,找到损失最低点的性能浪费。(比如跳动过大,错过最低点。 以及在最小值左右来回跳动)故动量梯度下降时优于标准梯度下降的算法。

vdw = k *vdw + (1-k)*dw

vdb = k *vdb + (1-k)*db

等式左边的vdw、vdb为当前值,等式右边的为前一个值。故引出动量梯度下降:

w = w - r*vdw
b = b - r*vdb

其优点:

1、动量移动的更快

2、动量有机会逃脱局部极小值和高原区。

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

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

相关文章

人工智能算法工程师(高级)课程9-自然语言处理之词嵌入的介绍与代码详解

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(高级)课程9-自然语言处理之词嵌入的介绍与代码详解。 词嵌入是一种将文本中的词语转换为数值向量的技术,广泛应用于自然语言处理领域。它通过将词语映射到多维向量空间,使得相似意义的词语在向量空间中距离较近,从…

【无标题配置jdk环境和tomcat环境

一.接着昨天的发布vue项目 npm run serve 构建项目 npm run build ls ls dist/ vim dist/index.html [rootweb eleme_web]# cd /usr/local/nginx/conf/ [rootweb conf]# ls 将静态的项目移动到nginx中 [rootweb nginx]# cd conf.d/ [rootweb conf.d]# ls…

用Python打造精彩动画与视频,3.3 添加音频和简单效果

3.3 添加音频和简单效果 在本节中,我们将学习如何使用 MoviePy 库为视频添加音频和一些简单的效果。这些操作可以让你的视频更具吸引力和个性化。 准备工作 首先,确保你已经安装了 MoviePy 和 pydub 库。你可以通过以下命令安装: pip ins…

Qt 实战(2)搭建开发环境 | 2.4、查看 Qt 源码

文章目录 一、查看 Qt 源码1、获取 Qt 源码2、添加源码路径3、配置定位器4、查看源码 前言: Qt 是一个跨平台的 C 图形用户界面应用程序开发框架,广泛应用于开发 GUI 程序以及非 GUI 程序,如控制台工具和服务器。查看 Qt 的源码不仅可以帮助你…

故障案例:网络访问慢

现象描述 FW作为中间设备的场景下,用户访问网页慢,报文延时大等。 相关告警与日志 相关告警 无 相关日志 ARP/4/ARP_DUPLICATE_IPADDR 原因分析 图1 网络访问慢故障定位思路 丢包 报文在网络链路上传输时,可能会有部分报文在链路中被丢…

用深度学习改进乳腺癌MRI诊断| 文献速递--AI辅助的放射影像疾病诊断

Title 题目 Improving breast cancer diagnostics with deep learning for MRI 用深度学习改进乳腺癌MRI诊断 01 文献速递介绍 乳腺磁共振成像(MRI)是一种检测乳腺癌的高度敏感的方式,报告的敏感性超过80%。传统上,其在筛查…

【算法】动态规划-斐波那契数列模型

目录 1、第N个泰波那契数 1.1 算法原理讲解 1.1.1 状态表示 1.1.2 状态转移方程 1.1.3 初始化 1.1.4 填表顺序 1.1.5 返回值 1.2 代码实现 1.3 空间优化 2、三步问题 2.1 算法原理讲解 2.1.1 状态表示 2.1.2 状态转移方程 2.1.3 初始化 2.1.4 填表顺序 2.1.5 返…

(四十一)大数据实战——spark的yarn模式生产环境部署

前言 Spark 是一个开源的分布式计算系统。它提供了高效的数据处理能力,支持复杂的数据分析和处理任务,是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。Spark Core:实现了Spark的基本功能,包含任务调度、内存管理、错误…

上线前端系统

上线一个静态的前端系统(续) 在eleme服务器上 启动服务 启动rpcbind [rooteleme-static ~]# systemctl restart rpcbind 启动nfs [rooteleme-static ~]# systemctl restart nfs 重启服务 启动smb [rootstatic-server img]# systemctl start smb…

SQL数据库模糊查询指定的字符的表资料(CHARINDEX)

1.目的 MSG栏位里面有很多组合内容的字符信息,需要进行模糊查询。 2.问题 正常使用LIKE 语句可以通用大部分的查询需求,但是遇到部分的特殊字符,例如:[] 资料是存在数据资料中,但是查询反馈的结果是没有内容&#xf…

二刷代码随想录训练营Day 16|513.找树左下角的值、112.路径总和、106.从中序与后序遍历序列构造二叉树

1.找到左下角的值 513. 找树左下角的值 - 力扣(LeetCode)代码随想录 (programmercarl.com) 代码: class Solution { public:int maxDepth INT_MIN;int result;// 深度最大,确保是最后一行 先遍历左孩子再遍历右孩子 确保是左下…

进程地址空间,零基础最最最详解

目录 建议全文阅读!!! 建议全文阅读!!! 建议全文阅读!!! 一、什么是地址空间 1、概念 2、主要组成部分 3、特点和作用 (1)虚拟化&#xf…

Java并发—volatile关键字

在这篇文章Java并发—Java内存模型以及线程安全-CSDN博客多次提及volatile关键字,这是一个非常重要的概念,主要用于多线程编程中,它确保了变量的可见性和禁止指令重排序,但不保证原子性,下面详细解释volatile关键字的作…

未来3-5年,哪些工作会被AI取代

一篇由高盛经济学家约瑟夫布里格斯 (Joseph Briggs)和德维西科德纳尼 (Devesh Kodnani)撰写的报告指出,全球预计将有3亿个工作岗位被生成式AI取代。 报告称:“最近出现的生成式人工智能将降低劳动力成本和…

​宁德时代:续航还剩多少?

车企价格战打到供应商,连续增利不增收。 今天我们看宁德时代的增长电池续航还剩多少? 巨头长成,就要面临增长瓶颈。“宁王”24年中报公布,业绩喜忧参半。二季度营收869.96亿,同比下滑13.18%, 已经是宁德时…

冠军之选:奥运冠军青睐的游泳耳机款式大公开

在最新一届的夏季奥林匹克运动会中,泳池边的激烈竞争再次点燃了全球观众的热情。游泳运动员们,以惊人的速度和毅力,一次又一次地刷新纪录,向世人展示了人类极限的无限可能。而在这些运动员备战的过程中,有一个细节或许…

吴恩达老师机器学习-ex5

有借鉴网上部分博客 首先,我先使用该数据集,通过线性回归的方法,做了一个预测问题 import numpy as np import scipy.io as sio import matplotlib.pyplot as plt from scipy.optimize import minimize#读取数据 path "./ex5data1.ma…

Spine 核心功能入门

核心功能入门 本文主旨是整理我在入手学习 spine 时的流程,以及对于基本功能的理解和常规 2D 动画实现的思路。 意在整理出一个简要的入门 spine 的流程,以及对于一些高阶功能的应用的思考。 本文基于 https://zh.esotericsoftware.com/ 官网教程进行思…

2024.8.1 作业

使用两个线程完成两个文件的拷贝&#xff0c;分支线程1拷贝前一半&#xff0c;分支线程2拷贝后一半&#xff0c;主线程回收两个分支线程的资源 #include <myhead.h>struct Buf {const char *file1;const char *file2;int start;int size; };int get_len(const char *arr…

从线段中搜寻提取闭合轮廓(二)

接上篇文章从线段中搜寻闭合轮廓_多线段搜索区域集合 快速-CSDN博客 1. 前言 调试了上篇文章中参考代码修了一些问题&#xff0c;优化了显示&#xff0c;但是由于算法逻辑存在一些问题&#xff0c;有很多不必要的性能损耗&#xff0c;且逻辑不是最优的&#xff0c;于是博主找…