吴恩达深度学习——优化神经网络

本文来自https://www.bilibili.com/video/BV1FT4y1E74V,仅为本人学习所用。

文章目录

  • 优化样本大小
    • mini-batch
  • 优化梯度下降法
    • 动量梯度下降法
      • 指数加权平均
        • 概念
        • 偏差纠正
      • 动量梯度下降法
    • RMSprop
    • Adam优化算法
  • 优化学习率
  • 局部最优问题(了解)

优化样本大小

mini-batch

假设训练集有百万的数据,为了加快训练的速度,将百万数据的样本分割成小批(Mini - batch)的样本来计算梯度,减少了计算梯度的时间和内存开销。
在这里插入图片描述
使用符号 x ( i ) x^{(i)} x(i)表示第 i i i个样本,使用符号使用符号 z [ l ] z^{[l]} z[l]表示第 l l l层神经网络,使用符号 X { t } X^{\{t\}} X{t}表示第 t t t个不同的mini-batch。

损失函数变化如下,左图是批量梯度下降计算损失函数,右图使用mini-batch计算损失函数。mini-batch梯度下降每次使用一个小批量数据计算梯度,不同小批量中的样本存在差异,每次计算的梯度方向和大小会有波动。比如某个小批量数据可能恰好包含一些特征明显的样本,使得计算出的梯度导致损失下降较多;而另一个小批量可能包含一些异常样本,使梯度计算出现偏差,导致损失短暂上升。但整体上应该是下降的。

在这里插入图片描述

设整个样本大小为 m m m。如果mini-batch的大小设置为 m m m,相当于没有划分,是经典的批量梯度下降法(图中蓝色部分);如果mini-batch的大小设置为 1 1 1,相当于每一个样本是一个mini-batch,随机梯度下降过程中会受到噪音的影响,在最小值周围波动(图中紫色部分);如果mini-batch的大小合适,mini-batch梯度下降法就可以得到大量的向量化的同时,不需要等待整个样本被处理完就可以后续的工作,相比于随机梯度下降效果更好(图中绿色部分)。但是仍有可能导致在最小值周围徘徊,这时候需要减少学习率。

在这里插入图片描述

优化梯度下降法

动量梯度下降法

指数加权平均

概念

指数加权平均(指数移动平均)是在机器学习等领域广泛应用的统计方法,用于平滑数据、估计趋势和减少噪声的影响。通过对历史数据赋予不同的权重来计算平均值,越近的数据被赋予的权重越大,越远的数据被赋予的权重呈指数级衰减。能够快速反映数据的最新变化,同时又能保留历史数据的信息,使得计算得到的平均值能够较好地跟踪数据的趋势。

举例:一些温度情况如下,需要计算其温度的局部平均值。设计算公式为 { v t = β v t − 1 + ( 1 − β ) θ t v 0 = 0 \begin{cases} v_t=\beta v_{t-1}+(1-\beta)\theta_t \\ v_0=0 \end{cases} {vt=βvt1+(1β)θtv0=0这里取 β = 0.9 \beta=0.9 β=0.9。使用 1 1 − β \frac{1}{1 - \beta} 1β1近似计算 β \beta β与天数的关系。当 β = 0.9 \beta = 0.9 β=0.9时,大约是过去10天(包含当日)的温度的平均值(红线);当 β = 0.98 \beta = 0.98 β=0.98时,是过去 1 1 − 0.98 = 50 \frac{1}{1 - 0.98}=50 10.981=50天的温度的平均值(绿线)。
在这里插入图片描述

偏差纠正

在这里插入图片描述
实际上,该计算方法在前期的时候明显偏低(紫线),因此需要修正 v t = β v t − 1 + ( 1 − β ) θ t v_t=\beta v_{t - 1}+(1 - \beta)\theta_t vt=βvt1+(1β)θt更新 v t v_t vt v t : = v t 1 − β t v_t:=\frac{v_t}{1 - \beta^t} vt:=1βtvt

动量梯度下降法

在这里插入图片描述
之前的梯度下降法如批量梯度下降和mini-batch梯度下降存在的问题是每次梯度下降过程中需要计算很多次步骤(蓝线),若学习率太大,梯度下降就会超过函数的作用域(紫线)。使用指数加权平均可以减少计算步骤,更快地达到最小值(红线)。

梯度下降计算更新为在这里插入图片描述

RMSprop

和动量梯度下降法类似,RMSprop(绿线)也是减少梯度下降计算过程中的步骤。

在这里插入图片描述

在第 t t t 次迭代中,针对当前小批量(mini - batch)数据计算权重的梯度 d w dw dw 和偏置的梯度 d b db db
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)dw2 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)db2 β 2 \beta_2 β2 是平滑系数,控制着历史梯度平方信息的衰减。
w = w − α d w S d w + ϵ w = w-\alpha\frac{dw}{\sqrt{S_{dw}}+\epsilon} w=wαSdw +ϵdw b = b − α d b S d b + ϵ b = b-\alpha\frac{db}{\sqrt{S_{db}}+\epsilon} b=bαSdb +ϵdb其中 α \alpha α 是学习率, ϵ \epsilon ϵ是一个很小的正数,防止分母为0 。

Adam优化算法

结合了动量和RMSProp算法,计算过程如下

初始化: 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
计算梯度:在第 t t t次迭代中,对mini - batch数据计算权重的梯度 d w dw dw和偏置的梯度 d b db db。有 V d w = β 1 V d w + ( 1 − β 1 ) d w V d b = β 1 V d b + ( 1 − β 1 ) d b V_{dw}=\beta_1V_{dw}+(1 - \beta_1)dw\ V_{db}=\beta_1V_{db}+(1 - \beta_1)db Vdw=β1Vdw+(1β1)dw Vdb=β1Vdb+(1β1)db S d w = β 2 S d w + ( 1 − β 2 ) d w 2 S d b = β 2 S d b + ( 1 − β 2 ) d b 2 S_{dw}=\beta_2S_{dw}+(1 - \beta_2)dw^2\ S_{db}=\beta_2S_{db}+(1 - \beta_2)db^2 Sdw=β2Sdw+(1β2)dw2 Sdb=β2Sdb+(1β2)db2
偏差校正:
V d w c o r r e c t e d = V d w 1 − β 1 t V d b c o r r e c t e d = V d b 1 − β 1 t V_{dw}^{corrected}=\frac{V_{dw}}{1 - \beta_1^t}\ V_{db}^{corrected}=\frac{V_{db}}{1 - \beta_1^t} Vdwcorrected=1β1tVdw Vdbcorrected=1β1tVdb S d w c o r r e c t e d = S d w 1 − β 2 t S d b c o r r e c t e d = S d b 1 − β 2 t S_{dw}^{corrected}=\frac{S_{dw}}{1 - \beta_2^t}\ S_{db}^{corrected}=\frac{S_{db}}{1 - \beta_2^t} Sdwcorrected=1β2tSdw 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 + ϵ 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 + ϵ w = w-\alpha\frac{V_{dw}^{corrected}}{\sqrt{S_{dw}^{corrected}}+\epsilon}\ b = b-\alpha\frac{V_{db}^{corrected}}{\sqrt{S_{db}^{corrected}}+\epsilon} w=wαSdwcorrected +ϵVdwcorrected b=bαSdbcorrected +ϵVdbcorrected
β 1 \beta_1 β1的值默认为0.9, β 2 \beta_2 β2的值默认为0.999,学习率 α \alpha α需要尝试哪一个合适, ϵ \epsilon ϵ默认为 1 0 − 8 10^{-8} 108。这些参数一般使用默认值即可。

优化学习率

学习率衰减是随着训练的进行,按照一定的规则逐渐减小学习率的值。在训练初期,参数离最优解较远,较大的学习率能让参数快速移动,加快收敛速度,迅速接近最优解所在区域。随着训练推进,参数逐渐接近最优解,此时较大的学习率可能导致参数在最优解附近来回震荡,无法精确收敛,甚至可能越过最优解,需要减小学习率,使参数更新更加精确。

比如 α = 1 1 + d e c a y _ r a t e × e p o c h _ n u m α 0 \alpha=\frac{1}{1+decay\_rate\times epoch\_num}\alpha_0 α=1+decay_rate×epoch_num1α0其中,decay_rate是衰减率,一个超参数,epoch_num是训练轮数, α 0 \alpha_0 α0是初始学习率。该公式是一个逆时间衰减。还有其他的方式如步长衰减、指数衰减、自适应衰减。

局部最优问题(了解)

在这里插入图片描述
在使用梯度下降等优化算法训练神经网络时,算法沿着梯度方向更新参数以最小化损失函数。当抵达局部最优解时,该点处梯度为 0,算法会认为找到了最优值而停止更新,但这不一定是全局最优解。从图像上看,损失函数曲面在局部最优解处形成 “谷底”,在其周围小区域内函数值都比它大。

早期认为深度学习训练易陷入局部最优,影响模型性能。但研究发现,实际神经网络尤其是大模型,参数众多,损失函数在高维空间复杂,遇到梯度为 0 的点大概率不是局部最优点,而是鞍点(部分维度为凸函数,部分维度为凹函数的点,梯度也为 0 )。在高维空间中,要达到局部最优需所有维度都是凹函数,概率极低。

因此,使用更好的算法如Adam算法更快地走出鞍点和局部最优附近的平稳段。

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

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

相关文章

Shell篇-字符串处理

目录 1.变量引用 2.获取字符串长度 3.字符串截取 4.删除子字符串 5.字符串替换 总结: Bash(Shell 脚本)中的字符串处理语法。以下是对其的介绍和总结:Bash 变量可以使用不同的语法来获取、修改和删除字符串的内容。图片中列…

CMake项目编译与开源项目目录结构

Cmake 使用简单方便,可以跨平台构建项目编译环境,尤其比直接写makefile简单,可以通过简单的Cmake生成负责的Makefile文件。 如果没有使用cmake进行编译,需要如下命令:(以muduo库echo服务器为例)…

书生大模型实战营7

文章目录 L1——基础岛提示词工程实践什么是Prompt(提示词)什么是提示工程提示设计框架CRISPECO-STAR LangGPT结构化提示词LangGPT结构编写技巧构建全局思维链保持上下文语义一致性有机结合其他 Prompt 技巧 常用的提示词模块 浦语提示词工程实践(LangGPT版)自动化生成LangGPT提…

Shadow DOM举例

这东西具有隔离效果&#xff0c;对于一些插件需要append一些div倒是不错的选择 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"utf-8"> <title>演示例子</title> </head> <body> <style&g…

SQLAlchemy 2.0的简单使用教程

SQLAlchemy 2.0相比1.x进行了很大的更新&#xff0c;目前网上的教程不多&#xff0c;以下以链接mysql为例介绍一下基本的使用方法 环境及依赖 Python:3.8 mysql:8.3 Flask:3.0.3 SQLAlchemy:2.0.37 PyMySQL:1.1.1使用步骤 1、创建引擎&#xff0c;链接到mysql engine crea…

《LLM大语言模型+RAG实战+Langchain+ChatGLM-4+Transformer》

文章目录 Langchain的定义Langchain的组成三个核心组件实现整个核心组成部分 为什么要使用LangchainLangchain的底层原理Langchain实战操作LangSmithLangChain调用LLM安装openAI库-国内镜像源代码运行结果小结 使用Langchain的提示模板部署Langchain程序安装langserve代码请求格…

某网盘工具,限速下载上传!

聊一聊 某度盘对于个人和未开通会员的情况下&#xff0c;容量还是有点小。最近自己的盘满了&#xff0c;还有很多东西放不进去。转眼发现正在下载的寻雷&#xff0c;就点进去看看寻雷盘有多大&#xff0c;一看&#xff0c;还好&#xff0c;比某度盘容量大。 但一想&#xff0…

【后端开发】字节跳动青训营Cloudwego脚手架

Cloudwego脚手架使用 cwgo脚手架 cwgo脚手架 安装的命令&#xff1a; GOPROXYhttps://goproxy.cn/,direct go install github.com/cloudwego/cwgolatest依赖thriftgo的安装&#xff1a; go install github.com/cloudwego/thriftgolatest编辑echo.thrift文件用于生成项目&…

LabVIEW纤维集合体微电流测试仪

LabVIEW开发纤维集合体微电流测试仪。该设备精确测量纤维材料在特定电压下的电流变化&#xff0c;以分析纤维的结构、老化及回潮率等属性&#xff0c;对于纤维材料的科学研究及质量控制具有重要意义。 ​ 项目背景 在纤维材料的研究与应用中&#xff0c;电学性能是评估其性能…

Python 深拷贝与浅拷贝:数据复制的奥秘及回溯算法中的应用

引言 在 Python 编程领域&#xff0c;数据复制是极为常见的操作。而深拷贝和浅拷贝这两个概念&#xff0c;如同紧密关联却又各具特色的双子星&#xff0c;在数据处理过程中扮演着重要角色。深入理解它们&#xff0c;不仅有助于编写出高效、准确的代码&#xff0c;还能避免许多…

《基于Scapy的综合性网络扫描与通信工具集解析》

在网络管理和安全评估中&#xff0c;网络扫描和通信是两个至关重要的环节。Python 的 Scapy 库因其强大的网络数据包处理能力&#xff0c;成为开发和实现这些功能的理想工具。本文将介绍一个基于 Scapy 编写的 Python 脚本&#xff0c;该脚本集成了 ARP 扫描、端口扫描以及 TCP…

GEE | 计算Sentinel-2的改进型土壤调整植被指数MSAVI

同学们好&#xff01;今天和大家分享的是 “改进型土壤调整植被指数MSAVI”&#xff0c;它能够更准确地反映植被生长状态&#xff0c;且广泛应用于植被覆盖监测、生态环境评估等领域。 1. MSAVI 改进型土壤调整植被指数&#xff08;MSAVI&#xff09;是一种针对植被覆盖区域土…

[c语言日寄]C语言类型转换规则详解

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…

进阶数据结构——双向循环链表

目录 前言一、定义与结构二、特点与优势三、基本操作四、应用场景五、实现复杂度六、动态图解七、代码模版&#xff08;c&#xff09;八、经典例题九、总结结语 前言 这一期我们学习双向循环链表。双向循环链表不同于单链表&#xff0c;双向循环链表是一种特殊的数据结构&…

稀疏混合专家架构语言模型(MoE)

注&#xff1a;本文为 “稀疏混合专家架构语言模型&#xff08;MoE&#xff09;” 相关文章合辑。 手把手教你&#xff0c;从零开始实现一个稀疏混合专家架构语言模型&#xff08;MoE&#xff09; 机器之心 2024年02月11日 12:21 河南 选自huggingface 机器之心编译 机器之心…

PVE 中 Debian 虚拟机崩溃后,硬盘数据怎么恢复

问题 在 PVE 中给 Debian 虚拟机新分配硬盘后&#xff0c;通过 Debian 虚拟机开启 Samba 共享该硬盘。如果这个 Debian 虚拟机崩溃后&#xff0c;怎么恢复 Samba 共享硬盘数据。 方法 开启 Samba 共享相关知识&#xff1a;挂载硬盘和开启Samba共享。 新建一个虚拟机&#xf…

Baklib如何改变内容管理平台的未来推动创新与效率提升

内容概要 在信息爆炸的时代&#xff0c;内容管理平台成为了企业和个人不可或缺的工具。它通过高效组织、存储和发布内容&#xff0c;帮助用户有效地管理信息流。随着技术的发展&#xff0c;传统的内容管理平台逐渐暴露出灵活性不足、易用性差等局限性&#xff0c;这促使市场需…

想品客老师的第天:类

类是一个优化js面向对象的工具 类的声明 //1、class User{}console.log(typeof User)//function//2、let Hdclass{}//其实跟1差不多class Stu{show(){}//注意这里不用加逗号&#xff0c;对象才加逗号get(){console.log(后盾人)}}let hdnew Stu()hd.get()//后盾人 类的原理 类…

Java 大视界 -- Java 大数据在自动驾驶中的数据处理与决策支持(68)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…

基于springboot私房菜定制上门服务系统设计与实现(源码+数据库+文档)

私房菜定制上门服务系统目录 目录 基于springbootvue私房菜定制上门服务系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员功能实现 &#xff08;1&#xff09;菜品管理 &#xff08;2&#xff09;公告管理 &#xff08;3&#xff09; 厨师管理 2、用…