当前位置: 首页 > article >正文

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

本文来自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算法更快地走出鞍点和局部最优附近的平稳段。

相关文章:

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

本文来自https://www.bilibili.com/video/BV1FT4y1E74V,仅为本人学习所用。 文章目录 优化样本大小mini-batch 优化梯度下降法动量梯度下降法指数加权平均概念偏差纠正 动量梯度下降法 RMSpropAdam优化算法 优化学习率局部最优问题(了解) 优…...

揭秘算法 课程导读

目录 一、老师介绍 二、课程目标 三、课程安排 一、老师介绍 学问小小谢 我是一个热爱分享知识的人,我深信知识的力量能够启迪思考,丰富生活。 欢迎每一位对知识有渴望的朋友,如果你对我的创作感兴趣,或者我们有着共同的兴趣点&…...

17.[前端开发]Day17-形变-动画-vertical-align

1 transform CSS属性 - transform transform的用法 表示一个或者多个 不用记住全部的函数&#xff0c;只用掌握这四个常用的函数即可 位移 - translate <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta ht…...

【单层神经网络】基于MXNet库简化实现线性回归

写在前面 同最开始的两篇文章 完整程序及注释 导入使用的库# 基本 from mxnet import autograd, nd, gluon # 模型、网络 from mxnet.gluon import nn from mxnet import init # 学习 from mxnet.gluon import loss as gloss # 数据集 from mxnet.gluon…...

第1节课:算法初印象—开启算法世界的大门

目录 一、算法是什么&#xff08;一&#xff09;官方定义&#xff08;二&#xff09;算法的五大特性&#xff08;三&#xff09;算法与程序的关系 二、算法在生活中的奇妙体现&#xff08;一&#xff09;日常出行中的算法&#xff08;二&#xff09;购物消费中的算法&#xff0…...

[C语言日寄] <stdio.h> 头文件功能介绍

在C语言的世界里&#xff0c;<stdio.h> 是一个极其重要的头文件&#xff0c;它提供了标准输入输出功能&#xff0c;是C语言程序与用户交互的核心工具。今天&#xff0c;我们就来深入探讨 <stdio.h> 的功能、使用注意事项以及它的拓展应用。 功能介绍 <stdio.h…...

Python的那些事第五篇:数据结构的艺术与应用

新月人物传记&#xff1a;人物传记之新月篇-CSDN博客 目录 一、列表&#xff08;List&#xff09;&#xff1a;动态的容器 二、元组&#xff08;Tuple&#xff09;&#xff1a;不可变的序列 三、字典&#xff08;Dict&#xff09;&#xff1a;键值对的集合 四、集合&#xf…...

Linux:线程池和单例模式

一、普通线程池 1.1 线程池概念 线程池&#xff1a;一种线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价&…...

【算法-位运算】位运算遍历 LogTick 算法

文章目录 1. 引入2. LogTick 优化遍历过程3. 题目3.1 LeetCode3097 或值至少为 K 的最短子数组 II3.2 LeetCode2411 按位或最大的最小子数组长度3.3 LeetCode3209 子数组按位与值为 K 的数目3.4 LeetCode3171 找到按位或最接近 K 的子数组3.5 LeetCode1521 找到最接近目标值的函…...

【memgpt】letta 课程4:基于latta框架构建MemGpt代理并与之交互

Lab 3: Building Agents with memory 基于latta框架构建MemGpt代理并与之交互理解代理状态,例如作为系统提示符、工具和agent的内存查看和编辑代理存档内存MemGPT 代理是有状态的 agents的设计思路 每个步骤都要定义代理行为 Letta agents persist information over time and…...

Python的那些事第九篇:从单继承到多继承的奇妙之旅

Python 继承&#xff1a;从单继承到多继承的奇妙之旅 目录 Python 继承&#xff1a;从单继承到多继承的奇妙之旅 一、引言 二、继承的概念与语法 三、单继承 四、多继承 五、综合代码示例 六、总结 一、引言 在编程的世界里&#xff0c;继承就像是一场神奇的魔法&#…...

Excel to form ?一键导入微软表单

一句话痛点 “你的Excel越强大&#xff0c;手动复制到Forms就越痛苦。” 合并单元格崩溃成乱码、下拉菜单变纯文本、条件逻辑消失无踪——这些不是技术问题&#xff0c;而是低效工作模式的死刑判决书。 直击解决方案&#xff1a;3分钟&#xff0c;3步&#xff0c;300%效率 1…...

pandas(三)Series使用

一、Series基础使用 import pandasd {x:100,y:200,z:300} s1 pandas.Series(d) #将dict转化为Series print(s1)print("") l1 [1, 2, 3] l2 [a, b, c] s2 pandas.Series(l1, indexl2) #list转为Series print(s2)print("") s3 pandas.Series([11…...

Windows电脑本地部署运行DeepSeek R1大模型(基于Ollama和Chatbox)

文章目录 一、环境准备二、安装Ollama2.1 访问Ollama官方网站2.2 下载适用于Windows的安装包2.3 安装Ollama安装包2.4 指定Ollama安装目录2.5 指定Ollama的大模型的存储目录 三、选择DeepSeek R1模型四、下载并运行DeepSeek R1模型五、使用Chatbox进行交互5.1 下载Chatbox安装包…...

从零开始学 HTML:构建网页的基本框架与技巧

系列文章目录 01-从零开始学 HTML&#xff1a;构建网页的基本框架与技巧 文章目录 系列文章目录前言一、HTML 文档的基本框架1.1 <!DOCTYPE html>、<html>、<head>、<body> 标签解析1.1.1 <!DOCTYPE html> 标签1.1.2 <html> 标签1.1.3 &l…...

如何用微信小程序写春联

​ 生活没有模板,只需心灯一盏。 如果笑能让你释然,那就开怀一笑;如果哭能让你减压,那就让泪水流下来。如果沉默是金,那就不用解释;如果放下能更好地前行,就别再扛着。 一、引入 Vant UI 1、通过 npm 安装 npm i @vant/weapp -S --production​​ 2、修改 app.json …...

2025最新在线模型转换工具onnx转换ncnn,mnn,tengine等

文章目录 引言最新网址地点一、模型转换1. 框架转换全景图2. 安全的模型转换3. 网站全景图 二、转换说明三、模型转换流程图四、感谢 引言 在yolov5&#xff0c;yolov8&#xff0c;yolov11等等模型转换的领域中&#xff0c;时间成本常常是开发者头疼的问题。最近发现一个超棒的…...

算法每日双题精讲 —— 前缀和(【模板】一维前缀和,【模板】二维前缀和)

在算法竞赛与日常编程中&#xff0c;前缀和是一种极为实用的预处理技巧&#xff0c;能显著提升处理区间和问题的效率。今天&#xff0c;我们就来深入剖析一维前缀和与二维前缀和这两个经典模板。 一、【模板】一维前缀和 题目描述 给定一个长度为 n n n 的整数数组 a a a&…...

C++泛型编程指南03-CTAD

文章目录 C17 自定义类型推断指引&#xff08;CTAD&#xff09;深度解析一、基础概念1. 核心作用2. 工作原理 二、标准库中的 CTAD 应用1. 容器类型推导2. 智能指针推导3. 元组类型推导 三、自定义推导指引语法1. 基本语法结构2. 典型应用场景 四、推导指引设计模式1. 迭代器范…...

记8(高级API实现手写数字识别

目录 1、Keras&#xff1a;2、Sequential模型&#xff1a;2.1、建立Sequential模型&#xff1a;modeltf.keras.Sequential()2.2、添加层&#xff1a;model.add(tf.keras.layers.层)2.3、查看摘要&#xff1a;model.summary()2.4、配置训练方法&#xff1a;model.compile(loss,o…...

88.[4]攻防世界 web php_rce

之前做过&#xff0c;回顾&#xff08;看了眼之前的wp,跟没做过一样&#xff09; 属于远程命令执行漏洞 在 PHP 里&#xff0c;system()、exec()、shell_exec()、反引号&#xff08;&#xff09;等都可用于执行系统命令。 直接访问index.php没效果 index.php?sindex/think\a…...

23.Word:小王-制作公司战略规划文档❗【5】

目录 NO1.2.3.4 NO5.6​ NO7.8.9​ NO10.11​ NO12​ NO13.14 NO1.2.3.4 布局→页面设置对话框→纸张&#xff1a;纸张大小&#xff1a;宽度/高度→页边距&#xff1a;上下左右→版式&#xff1a;页眉页脚→文档网格&#xff1a;勾选只指定行网格✔→ 每页&#xff1a;…...

在Arm芯片苹果Mac系统上通过homebrew安装多版本mysql并解决各种报错,感谢deepseek帮助解决部分问题

背景&#xff1a; 1.苹果设备上安装mysql&#xff0c;随着苹果芯片的推出&#xff0c;很多地方都变得不一样了。 2.很多时候为了老项目能运行&#xff0c;我们需要能安装mysql5.7或者mysql8.0或者mysql8.2.虽然本文编写时最新的默认mysql已经是9.2版本。 安装步骤 1.执行hom…...

C++【iostream】数据库的部分函数功能介绍

在 C 编程世界中&#xff0c;iostream 库扮演着举足轻重的角色&#xff0c;它是 C 标准库的核心组成部分&#xff0c;为程序提供了强大的输入输出功能。无论是简单的控制台交互&#xff0c;还是复杂的文件操作&#xff0c;iostream 库都能提供便捷高效的解决方案。本文将深入剖…...

数据结构 树1

目录 前言 一&#xff0c;树的引论 二&#xff0c;二叉树 三&#xff0c;二叉树的详细理解 四&#xff0c;二叉搜索树 五&#xff0c;二分法与二叉搜索树的效率 六&#xff0c;二叉搜索树的实现 七&#xff0c;查找最大值和最小值 指针传递 vs 传引用 为什么指针按值传递不会修…...

【实战篇章】深入探讨:服务器如何响应前端请求及后端如何查看前端提交的数据

文章目录 深入探讨&#xff1a;服务器如何响应前端请求及后端如何查看前端提交的数据一、服务器如何响应前端请求HTTP 请求生命周期全解析1.前端发起 HTTP 请求&#xff08;关键细节强化版&#xff09;2. 服务器接收请求&#xff08;深度优化版&#xff09; 二、后端如何查看前…...

玩转ChatGPT:DeepSeek测评(科研思路梳理)

一、写在前面 DeepSeek-R1出圈了&#xff0c;把OpenAI的o3-mini模型都提前逼上线了&#xff08;还免费使用&#xff09;。 都号称擅长深度推理&#xff0c;那么对于科研牛马的帮助有多大呢&#xff1f; 我连夜试一试。 二、科研思路梳理 有时候我们牛马们做了一堆结果以后&…...

python学opencv|读取图像(五十三)原理探索:使用cv.matchTemplate()函数实现最佳图像匹配

【1】引言 前序学习进程中&#xff0c;已经探索了使用cv.matchTemplate()函数实现最佳图像匹配的技巧&#xff0c;并且成功对两个目标进行了匹配。 相关文章链接为&#xff1a;python学opencv|读取图像&#xff08;五十二&#xff09;使用cv.matchTemplate()函数实现最佳图像…...

AJAX RSS Reader:技术解析与应用场景

AJAX RSS Reader:技术解析与应用场景 引言 随着互联网的快速发展,信息量呈爆炸式增长。为了方便用户快速获取感兴趣的信息,RSS(Really Simple Syndication)技术应运而生。AJAX RSS Reader作为一种基于AJAX技术的信息读取工具,在用户体验和信息获取方面具有显著优势。本…...

Linux环境下的Java项目部署技巧:安装 Mysql

查看 myslq 是否安装&#xff1a; rpm -qa|grep mysql 如果已经安装&#xff0c;可执行命令来删除软件包&#xff1a; rpm -e --nodeps 包名 下载 repo 源&#xff1a; http://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm 执行命令安装 rpm 源(根据下载的…...