Datawhale X 李宏毅苹果书 AI夏令营 学习笔记(二)

news2024/11/15 7:01:56

自适应学习率

我们梯度下降在参数更新上,公式是 W t = W t − 1 − η g t , η 是学习率, g t 是梯度 W_t=W_{t-1}-\eta g_t,\eta是学习率,g_t是梯度 Wt=Wt1ηgtη是学习率,gt是梯度

最简单的梯度下降算法,会出现类似下图的情况,损失下不去,梯度来回震荡,收敛缓慢。究其原因是学习率太大,导致参数变化太大,但下一次为了降低损失,得到了反方向的梯度,最终表现为梯度来来回回。
在这里插入图片描述

下面这张图更好的做了对比,这张图是误差平面,蓝色点表示当w、b为对应的值时,对应的loss。而蓝色点连成线,就像一条等高线,与等高线垂直的方向就是loss下降最快,即梯度最大的方向。而与等高线平行的方向,梯度变化很小,几乎平坦,这种也称为“凸的”误差平面(即一个轴的方向梯度变化大,另一个轴的方向梯度几乎不变)。
我们要从A点到达黄X。当学习率过大时,参数(看纵轴)来回变动,一会大于0一会小于0。而学习率过小时,虽然一开始能缓慢地根据梯度变化趋势下降,但在平坦的方向上就几乎不会动了。

因此我们得到结论,学习率不能固定为一个初设值(或者说梯度不能直接乘一个固定值),应该根据当前情况动态调整,即自适应。如果在某一个方向上,梯度的值很小,非常平坦,我们会希望学习率调大一点;如果在某一个方向上非常陡峭,坡度很大,我们会希望学习率可以设得小一点。
在这里插入图片描述

AdaGrad(Adaptive Gradient)

我们还是保留 η \eta η 这个固定不变的超参数,但是我们不能让 Δ W t = η g t \Delta W_t=\eta g_t ΔWt=ηgt,我们需要 Δ W t = η σ t i g t i \Delta W_t=\frac{\eta}{\sigma_t^i}g_t^i ΔWt=σtiηgti,其中 t 还是表示第 t 次迭代,i 表示对于第 i 个参数,因为自适应的学习率,在每次迭代、每个参数上都不一样。重点是 σ t i \sigma_t^i σti 必须在梯度大时大,梯度小时小,这样被 η \eta η一除,就能满足梯度大时 Δ W \Delta W ΔW 小,梯度小时 Δ W \Delta W ΔW 大。

在Ada中, σ 0 i = ( g 0 i ) 2 , σ 1 i = 1 2 [ ( g 0 i ) 2 + ( g 1 i ) 2 ] , σ 2 i = 1 3 [ ( g 0 i ) 2 + ( g 1 i ) 2 + ( g 2 i ) 2 ] \sigma^i_0=\sqrt {(g_0^i)^2},\sigma^i_1=\sqrt {\frac{1}{2}[(g_0^i)^2+(g_1^i)^2]},\sigma^i_2=\sqrt {\frac{1}{3}[(g_0^i)^2+(g_1^i)^2+(g_2^i)^2]} σ0i=(g0i)2 ,σ1i=21[(g0i)2+(g1i)2] ,σ2i=31[(g0i)2+(g1i)2+(g2i)2] ,依此类推。即是使用到了过去所有梯度的均方根。如果梯度 g t i g_t^i gti较小,由于取平均值导致 σ t i \sigma_t^i σti减少,进而导致了学习率的增加,加速通过平坦路况。

RMSProp(Root Mean Squared propagation)

对于Ada,由于使用了历史梯度平方,且每个历史梯度都没有权重,历史的较大值会产生长远的影响。
RMSProp将Ada的取平均改为权重(衰减因子)。 σ 0 i = ( g 0 i ) 2 , σ 1 i = α ( σ 0 i ) 2 + ( 1 − α ) ( g 1 i ) 2 , σ 2 i = α ( σ 1 i ) 2 + ( 1 − α ) ( g 2 i ) 2 \sigma^i_0=\sqrt {(g_0^i)^2},\sigma^i_1=\sqrt {\alpha (\sigma_0^i)^2+(1-\alpha)(g_1^i)^2},σ^i_2=\sqrt {\alpha(\sigma_1^i)^2+(1-\alpha)(g_2^i)^2} σ0i=(g0i)2 ,σ1i=α(σ0i)2+(1α)(g1i)2 ,σ2i=α(σ1i)2+(1α)(g2i)2 ,依此类推,注意历史梯度用到的是 σ t − 1 i 而不是 g t − 1 i \sigma_{t-1}^i而不是g_{t-1}^i σt1i而不是gt1i
通过设置较小的 α \alpha α,可以更看重最新算出的梯度。

Adam(Adaptive moment estimation)

最常用的优化器(optimizer),可以看作在RMSProp基础上,把梯度 g t i g_t^i gti换成动量 m t i m_t^i mti
注意,虽然在 η σ t i m t i 中, σ t i 和 m t i \frac{\eta}{\sigma_t^i}m_t^i中,\sigma_t^i和m_t^i σtiηmti中,σtimti都用到了历史梯度,但是前者只是标量,后者是向量,他们不会相互抵消。

学习率调度

上面的都是说让梯度乘上一个变化的值,但学习率还是固定的。而这里的新策略是学习率 η t \eta_t ηt 也是随时间变化的。

  • 学习率衰减:随着训练进行,逐步减少学习率,尽量防止震荡以加快收敛。
  • 预热:在训练初期使用较低的学习率,逐渐收集统计数据找到合理路径。之后逐渐增加以加快收敛。有一个Adam的预热版本RAdam。

分类问题

对于训练集,我们每个样本的y要表示该样本对应的类,我们可以使用one-hot编码,比如有n个类,当前样本类型是1,就用一个除第n维是1之外、其他维为0的n维向量表示。比如3个类,[0,1,0]表示该样本属于第二类。这个也可以看做一个概率分布,即这个样本属于第二类的概率为1。最后计算损失时,就可以用 y ^ \hat y y^和y计算相似度。

如果还是用回归的方式得到 y ^ \hat{y} y^,值很可能不是一个概率分布,n维每个值的和不等于1。所以这里需要用到归一化,我们使用softmax。 y i ′ = e x p ( y i ) ∑ j e x p ( y i ) , 其中, 0 < y i ′ < 1 , ∑ i y i ′ = 1 。 y'_i =\frac{exp(y_i)}{\sum_jexp(y_i)},其中,0<y'_i<1,\sum_i y'_i = 1。 yi=jexp(yi)exp(yi),其中,0<yi<1iyi=1效果如下,同时softmax还会让原本大的值跟小的值的差距更大。注意当只有两个类的时候,sigmoid 和 softmax 是等价的。
在这里插入图片描述
那么接下来就要计算损失了。比较常用的是最小化交叉熵,其实也是极大似然。
e = − ∑ i y i l n y i ′ e=-\sum_i y_i ln y_i' e=iyilnyi
相比于均方误差的好处还没细看。只关注到了一个结论,交叉熵能更容易的利用优化器优化。
改变损失函数可以改变优化的难度
在这里插入图片描述

图像分类例子

代码见 Datawhale/LeeDL-HW3-CNN

例子使用了pytorch搭建了一个CNN
重点大概是

  • 将图像加载为tensor,并对训练集进行数据增强
  • 定义了一个cnn,里面的卷积层使用卷积核对图像提取特征,通过批归一化层处理后,过一下Relu激活函数,最后池化操作是取2*2像素内的Max值。
  • 定义了一个全连接神经网络,对输入特征进行线性变换和Relu非线性变换。
  • 前向传播时先将样本传入cnn,再传入fc获得最终 y ′ y' y
  • 使用了交叉熵作为损失函数,并使用了Adam优化器

进一步的优化方向

因为我不是搞cv的就不详细了解了,看个大概,太多太多了,但是确实确实很有用!有些在其他方向也能用到!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

2024软件测试必问的常见面试题1000问!

01、您所熟悉的测试用例设计方法都有哪些&#xff1f;请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。 答&#xff1a;有黑盒和白盒两种测试种类&#xff0c;黑盒有等价类划分法&#xff0c;边界分析法&#xff0c;因果图法和错误猜测法。白盒有逻辑覆盖法&…

数据结构——链式二叉树的实现与分治编程思维(c语言实现)

目录 前言&#xff1a; 1.前置说明 2.链式二叉树的遍历 2.1 前序&#xff0c;中序及后续遍历 2.2 前序遍历实现 2.3 中序遍历实现 2.4 后续遍历实现 3.结点个数以及高度等 3.1 结点个数 3.2 结点高度 3.3 叶子结点的个数 前言&#xff1a; 在之前的学习中&…

从“云、边、端”的统一管理,为传统工厂数字化转型赋能的智慧地产开源了

智慧地产视觉监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒&#xff0c;省去繁琐重复的适配流程&#xff0c;实现芯片、算法、应用的全流程组合&#xff0c;从而大大减少企业级应用约95%的开发成本。 AI是新形势下数…

这些软件测试面试题一定要会,自动化测试面试题(含答案)

1、你会封装自动化测试框架吗&#xff1f; 自动化框架主要的核心框架就是分层PO模式&#xff1a;分别为&#xff1a;基础封装层BasePage&#xff0c;PO页面对象层&#xff0c;TestCase测试用例层。然后再加上日志处理模块&#xff0c;ini配置文件读取模块&#xff0c;unittest…

多模态大模型技术详解(图像分块、特征对齐)

多模态 多模态发展图像预处理自适应图像切割弥补语义损失 视觉编码器视觉文本特征对齐线性映射或MLPCross AttentionPerceiver ResamplerQ-Former&#xff08;Querying Transformer&#xff09;模型结构表示学习 大语言模型 这篇文档主要讲解目前比较流行的缝合式的多模态大模型…

设计模式—装饰者模式

一、什么是装饰者模式 装饰者模式是一种结构型设计模式&#xff0c;它允许你动态地向对象添加新的行为而不影响其原有的行为。它在运行时给对象动态地添加一些额外的职责&#xff0c;通常是在原有的行为基础上&#xff0c;通过装饰器进行一些修饰&#xff0c;实现了更加灵活的代…

【软考】流水线

目录 一、指令控制方式1.1 说明1.2 顺序方式1.3 重叠方式1.4 流水方式 二、流水线的种类三、流水的相关处理3.1 说明3.2 RISC 中采用的流水技术3.2.1 超流水线(Super Pipe Line)技术3.2.2 超标量(Super Scalar)技术3.2.3 超长指令字(Very Long Instruction Word&#xff0c;VLI…

阿一网络安全之log4j2漏洞CVE-2021-44228复现

漏洞简介 Apache Log4j 2 是对 Log4j 的升级&#xff0c;它⽐其前身 Log4j 1.x 提供了显 着改进&#xff0c;并提供了 Logback 中可⽤的许多改进&#xff0c;同时修复了 Logback 架构中的⼀些固有问题。 2021 年 12 ⽉&#xff0c;在 Apache Log4j2 中发现了⼀个 0-day 漏洞。 …

倒计时7天!MoonBit 游戏挑战赛即将开启!

基于 Wasm4 框架的 MoonBit 游戏开发指南 MoonBit 即将面向全国举办“编程创新挑战赛”&#xff0c;并包含游戏赛道。本教程将介绍本次比赛中使用的框架 Wasm4&#xff0c;以及如何使用 MoonBit 在 Wasm4 框架中编写游戏。相关赛事详情见文末。 如果你曾访问过 mooncakes 或我们…

这本大模型书太香了!全方位解析LLM-Agent 第一本给程序员看的AI Agent图书!

AI Agent火爆到什么程度&#xff1f; OpenAI创始人奥特曼预测&#xff0c;未来各行各业&#xff0c;每一个人都可以拥有一个AI Agent&#xff1b;比尔盖茨在2023年层预言&#xff1a;AI Agent将彻底改变人机交互方式&#xff0c;并颠覆整个软件行业&#xff1b;吴恩达教授在AI…

从0-1开发一个Vue3前端系统页面-10.博客页面优化及子菜单设计

注意&#xff1a; 本项目已将前端源码同步上传至Gitee&#xff0c;项目已开源&#xff0c; 仅供参考&#xff0c;不涉及商用&#xff0c;不得用其牟利&#xff0c;著作权归本人所有。 本系列后期只会对重要部分代码进行注释&#xff0c;难点会同步更新至专栏 开发遇到的问题_不…

linux df -h时没有查到root盘,root文件夹带着锁或者叉号的解决办法

文章目录 一、前言二、来龙去脉1、2、给root文件赋予权限3 、这个时候df -h 查看就可以看到root文件了 总结 一、前言 当时装的双系统&#xff0c;自认为会学习很多linux相关课程&#xff0c;买了个1T的固态&#xff0c;ubuntu上分了很多&#xff0c;结果显而易见&#xff0c;…

UE5学习笔记16-游戏模式中的一些事件,如何改变网格体和摄像头的碰撞

一、OnPostLogIn&#xff1a;此事件在玩家成功登录游戏后被调用 二、HandleStartingNuwplayer&#xff1a;在OnPostLogIn事件后被调用&#xff0c;可以用来定义新进入的玩家会发生什么 三、Spawn Default PawnAtTransform&#xff1a;这个事件触发游戏中实际的Pawn生成 四、…

bash: /home/xxx/anaconda3/bin/conda: No such file or directory

一背景 最近把conda 移动后&#xff0c;出现了一堆bug&#xff0c;目前pip不能使用&#xff0c;在此记录一下解决方案。 二报错信息 bash: /home/xxx/anaconda3/envs/yolov10/bin/pip3 /home/xxx/.conda/envs/yolov10/bin/python: bad interpreter: No such file or directo…

Leetcode 100.101.110.199 二叉树相同/对称/平衡 C++实现

Leetcode 100. 相同的树 问题&#xff1a;给你两棵二叉树的根节点 p 和 q &#xff0c;编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 /*** Definition for a binary tree node.* struct T…

多媒体技术(1.1)之图像分辨率

「分辨率」这个概念还有「解析度」等说法&#xff0c;所以能从字面上看出来&#xff0c;它描述的其实就是图像包含多少细节、有多「清晰」。但具体到怎么用数字来描述一个图像有多少细节&#xff0c;就有很多个描述的角度&#xff0c;于是「分辨率」有很多种意思。 相机的分辨…

代码随想录算法训练营day29 | 贪心算法 | 134.加油站、135.分发糖果、860.柠檬水找零、406.根据身高重建队列

文章目录 134.加油站思路小结 135.分发糖果思路拓展——环形分糖小结 860.柠檬水找零思路 406.根据身高重建队列思路小结 今天是贪心算法专题第三天&#xff0c;直接上题目 134.加油站 建议&#xff1a;本题有点难度&#xff0c;不太好想&#xff0c;推荐大家熟悉一下方法二 …

STM32基础篇:定时器 × 输入捕获

通道的概念 如下图右半部分&#xff0c;为定时器的总体结构框图&#xff1a; 可以看出&#xff0c;在时基单元下方&#xff0c;有四个长条形的结构&#xff0c;我们将其称之为&#xff1a;通道1~通道4&#xff1b;每一个通道都会连接一个IO引脚&#xff08;对应左半部分IO引脚…

OZON什么产品好卖丨OZON婴儿用具产品

Top1 摇铃 Деревянная стойка тренажер Монтессори для мобилей и игрушек для новорожденных / развивающая дуга 商品id&#xff1a;1557614414 月销量&#xff1a;707 OZON婴儿用具…

MSSQL 手工注入(第一关)

简介 SQL注入是一种安全漏洞&#xff0c;通过它可以执行意外的SQL命令或访问数据库中的信息。MSSQL注入通常发生在应用程序将用户输入作为SQL查询的一部分执行时&#xff0c;而没有对输入进行适当的验证或清理。 以下是MSSQL手工注入的流程&#xff1a; 一、打开靶场选择第一关…