【自学深度学习梳理2】深度学习基础

一、优化方法

上一篇说到,使用梯度下降进行优化模型参数,可能会卡在局部最小值,或优化方法不合适永远找不到具有最优参数的函数。

1、局部最小值

梯度下降如何工作?
梯度下降是一种优化算法,用于最小化损失函数,即寻找一组模型参数,使得损失函数的值最小(局部最小值)。
具体做法:梯度下降通过迭代地更新参数来实现,每次更新都沿着损失函数关于参数的梯度的反方向进行,因为梯度的反方向是函数值下降最快的方向。
反向传播用于计算损失函数关于每个参数的梯度。

从经验上看,局部最小值并不常见,大多数时候,训练网络到一个梯度很小的地方,参数不再更新,往往只是遇到了 鞍点(梯度为0,且不是极值点)。
在这里插入图片描述

逃离鞍点:在低维空间中没有路可以走,在更高维度其实有路可走。
解决方法:批量(BGD/SGD)、动量。

2、批量与动量——对抗鞍点/局部最小值

反向传播计算损失L梯度时,将所有数据分成一批一批(批量batch)来。
数据分批时,往往会进行随机打乱(shuffle)。
一个回合(epoch)的过程是遍历完所有批次。

2.1 批量的分类

批量梯度下降法BGD:使用全批量(full batch)的数据来更新参数的方法。模型必须把所有数据看完后,才能计算损失和梯度,参数才能更新一次。在数据集较小、需要全局最优解的情况下,BGD可能是更好的选择。

随机梯度下降法SGD(增量梯度下降法):批量大小等于1,每次随机取出1笔数据(一个样本)即可计算损失函数的梯度,更新一次参数。
随机梯度下降SGD的梯度上引入了随机噪声(noisy),因此在 非凸优化问题(目标函数不是凸函数,或者约束条件定义的区域不是凸集的情况,可能存在多个局部最优解或鞍点)中,其相比批量梯度下降BGD更容易逃离局部最小值
为什么会引入噪声?
SGD每个批次结束更新参数,导致下个批次的损失函数L不同。

存在一种折中的方法,即小批量梯度下降法MBGD(Mini-Batch Gradient Descent),它结合了BGD和SGD的优点,每次挑一个批量计算损失进行梯度更新,以平衡计算效率和收敛稳定性

2.2 动量法

动量(momentum)法是另一个可以对抗鞍点或局部最小值的方法。

假设误差表面是真正的斜坡,参数是一个球,把球从斜坡上滚下来,如果使用梯度下降,球走到局部最小值或鞍点就停住了。但是在物理世界里,一个球如果从高处滚下来,如果球的动量足够大,就算滚到鞍点或局部最小值,因为惯性的原因,它还是会继续往前走,并不一定会被鞍点或局部最小值卡住。将其应用在梯度下降中,这就是动量。
在这里插入图片描述
引入动量后,每次在移动参数的时候,不是只往梯度的反方向来移动参数,而是根据梯度的反方向加上前一步移动的方向决定移动方向。

可以从两个角度来理解动量法,一个角度是动量是 梯度的负反方向( − ∂ L ∂ w -\frac{\partial L}{\partial w} wL) 加上前一次移动的方向;另一个角度是当加上动量的时候不是只考虑现在的梯度,而是考虑过去所有梯度的总和。

在这里插入图片描述

在这里插入图片描述

一般梯度下降走到一个局部最小值或鞍点时,就被困住了。但有动量还是有办法继续走下去,因为动量不是只看梯度,还看前一步的方向。即使梯度方向往左走,但如果前一步的影响力比梯度要大,球还是有可能继续往右走,甚至翻过一个小丘,也许可以走到更好的局部最小值,这就是动量有可能带来的好处 。

在这里插入图片描述

3、自适应学习率——优化器

学习率不是始终固定一个值。同一个参数不同时间不同的学习率,给每个参数不同的学习率。梯度大,学习率调小;梯度小,学习率调大。

3.1 AdaGrad

根据梯度大小自动调整学习率。可以做到梯度比较大的时候,学习率就减小,梯度比较小的时候,学习率就放大。

梯度下降更新某个参数 θ t i \theta^i_t θti的过程为:
θ t + 1 i ← θ t i − η g t i \theta^i_{t+1}←\theta^i_t-\eta g_t^i θt+1iθtiηgti
梯度计算:
g t i = ∂ L ∂ θ i ∣ θ = θ t g_t^i=\frac{\partial L}{\partial \theta^i}|_{\theta=\theta_t} gti=θiLθ=θt
把学习率 η \eta η变成 η σ t i \frac{\eta}{\sigma_t^i} σtiη σ t i \sigma_t^i σti上标为 i i i,代表参数 σ \sigma σ i i i相关,不同的参数的 σ \sigma σ不同;下标为 t t t,代表参数 σ \sigma σ与迭代相关,不同的迭代会有不同的 σ \sigma σ。学习率变得参数相关:
θ t + 1 i ← θ t i − η σ t i g t i \theta^i_{t+1}←\theta^i_t-\frac{\eta}{\sigma_t^i} g_t^i θt+1i

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

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

相关文章

【JavaSE-线程安全问题-死锁详解】

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 🌈…

医疗器械网络安全 | 第三方组件安全检测怎么做?

医疗器械软件安全中的第三方组件安全检测是确保医疗器械软件整体安全性的重要环节。以下是如何进行第三方组件安全检测的详细步骤: 一、明确检测目标 首先,需要明确检测的目标和范围,即确定哪些第三方组件需要进行安全检测。这通常包括操作系…

【C#】 使用GDI+获取两个多边形区域相交、非相交区域

一、使用GDI获取两个多边形区域相交、非相交区域 在 C# 中使用 GDI(Graphics Device Interface Plus)处理图形时,你可以使用 System.Drawing 和 System.Drawing.Drawing2D 命名空间中的类来操作区域(Region)。下面是一…

JS中如何对数组或者数组对象中所有的元素进行快速判断(every、some)

every是判断数组中所有元素均满足某个条件,some是判断数组中任意一个元素满足条件 举个栗子: const arr1 [{name:谭,},{name:谭},{name:高}]; const arr2 [{name:谭,},{name:谭},{name:谭}];const result1 arr1.every(item > item.name 谭);cons…

7月29(信息差)

🌍最强模型 Llama 3.1 如期而至!扎克伯格最新访谈:Llama 会成为 AI 界的 Linux 🎄谷歌AlphaProof攻克国际奥赛数学题 https://www.51cto.com/article/793632.html ✨SearchGPT第一波评测来了!响应速度超快还没广告&…

基于bert的自动对对联系统

目录 概述 演示效果 核心逻辑 使用方式 1.裁剪数据集 根据自己的需要选择 2.用couplet数据集训练模型 模型存储在model文件夹中 3.将模型转换为ONNX格式 4.打开index.html就可以在前端使用此自动对对联系统了。 本文所涉及所有资源均在传知代码平台可获取。 概述 这个生成器利用…

学习c语言第十八天(指针笔试题)

一维数组 字符数组 char*p"abcdef" p里面放的是a元素的地址 二维数组 指针笔试题 第一题 2 5 第二题 第三题 第四题 第五题 第六题 10 5 第七题 at 第八题 POINT ER ST EW

迪文屏使用记录

项目中要使用到迪文屏,奈何该屏资料太琐碎,找的人头皮发麻,遂进行相关整理。 屏幕:2.4寸电容屏 型号:DWG32240C024_03WTC 软件:DGUS_V7.647 1.竖屏横显 打开软件左下方的配置文件生成工具&#…

AI绘画【stable diffusion 1.5 Lora模型】摄影级真人写真,逼真大片!唯美!看完被震撼了!

前言 今天是鲜花摄像方面推荐的第四款SD 1.5 Lora模型,也是近日鲜花方面最后一款推荐的模型——**NAL_花海与车_摄影系列。**该款模型灵感来自于一张坐在车里的艺术照,lora主要作用于添加了花植物之类的填充效果,还有车内的坐姿,…

网络安全等级保护:上下文中的API安全性

网络安全等级保护:什么是API安全? 上下文中的API安全性 应用程序编程接口安全性位于多个安全学科的交叉点,如图所示。其中最重要的是以下三个领域: 1.信息安全(InfoSec)涉及在信息的整个生命周期中保护信…

智能城市管理系统设计思路详解:集成InfluxDB、Grafana和MQTTx协议(代码示例)

引言 随着城市化进程的加快,城市管理面临越来越多的挑战。智能城市管理系统的出现,为城市的基础设施管理、资源优化和数据分析提供了现代化的解决方案。本文将详细介绍一个基于开源技术的智能城市管理系统,涵盖系统功能、技术实现、环境搭建…

【C++】选择结构- 嵌套if语句

嵌套if语句的语法格式&#xff1a; if(条件1) { if(条件1满足后判断是否满足此条件) {条件2满足后执行的操作} else {条件2不满足执行的操作} } 下面是一个实例 #include<iostream> using namespace std;int main4() {/*提示用户输入一个高考分数&#xff0c;根据分…

市面上的开放式耳机为什么很少?开放式耳机推荐分享

市面上开放式耳机少是有不少原因的。 首先&#xff0c;开放式耳机在隔音和防漏音方面存在挑战。对于很多用户来说&#xff0c;在公共场合使用耳机时&#xff0c;不希望声音外泄影响他人&#xff0c;也不希望外界声音过多干扰自己。而开放式耳机在这两点上较难做到平衡&#xf…

基于Spring boot + Vue的加油站系统

项目名称&#xff1a;加油站系统 作者的B站地址&#xff1a;程序员云翼的个人空间-程序员云翼个人主页-哔哩哔哩视频 csdn地址&#xff1a;程序员云翼-CSDN博客 1.项目技术栈&#xff1a; 前后端分离的项目 后端&#xff1a;Springboot MybatisPlus 前端&#xff1a;Vue…

【网络协议】HTTP协议详解

文章目录 一、概念 二、简史 三、特点 四、工作流程 五、使用Wireshark抓TCP、http包 六、头域 6.1、请求信息&#xff1a; 6.2、请求方法 6.3、响应消息 6.4、响应头域 6.5、HTTP常见的请求头 6.6、HTTP常见的响应头 七、解决HTTP无状态的问题 7.1、通过Cookies保存状态信息 7…

Redis 缓存中间件

目录 概念 安装redis redis基本命令 给redis添加密码 基础数据类型 string类型 list列表类型 set创建&#xff08;一个键对应一个值&#xff09; set 创建数据 get 获取数据 keys * 展示所有的键 exists 判断键值是否存在 type 查看数据的类型 del 删除键 rename…

springboot集团门户网站--论文源码调试讲解

第2章 开发环境与技术 开发集团门户网站需要搭建编程的环境&#xff0c;也需要通过调查&#xff0c;对各个相关技术进行分析&#xff0c;选取适合本系统开发的技术与工具。 2.1 MySQL数据库 MySQL是一种具有安全系数、安全系数、混合开发性、高效化等特征的轻量关联数据库智…

sqli-labs(6-10)关通关讲解

sqli-labs(6-10)关通关讲解 Less-6 方法一&#xff1a;手工注入 1.判断闭合 http://localhost/sqli-labs/Less-6/?id1" //报错 http://localhost/sqli-labs/Less-6/?id1" -- //正常 http://localhost/sqli-labs/Less-6/?id1" and 11 -- http://localhos…

Python批量移除Word文档水印

Word文档被广泛用于各种正式与非正式的沟通场合。有时候这些文档中可能包含着不再需要的水印&#xff0c;比如早期的草稿标记、保密声明或是仅供预览的信息等。这些水印的存在可能会干扰文档的阅读体验&#xff0c;甚至在某些情况下导致信息传达的不准确或产生误解。移除Word文…

Canva收购Leonardo.ai,增强生成式AI技术能力

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…