Datawhale X 李宏毅苹果书AI夏令营深度学习进阶(二)

news/2024/10/7 0:19:51

一.动量法
在上一个博客中,我们提到了动量法,现在继续补充

如图所示,红色表示负梯度方向,蓝色虚线表示前一步的方向,蓝色实线表示真实的移动量。一开始没有前一次更新的方向,完全按照梯度给指示往右移动参数。负梯度方向跟前一步移动的方向加起来,得到往右走的方向。一般梯度下降走到一个局部最小值或鞍点时,就被困住了。但有动量还是有办法继续走下去,因为动量不是只看梯度,还看前一步的方向。即使梯度方向往左走,但如果前一步的影响力比梯度要大,球还是有可能继续往右走,甚至翻过一个小丘,也许可以走到更好的局部最小值,这就是动量有可能带来的好处 。

二.自适应学习率
临界点其实不一定是在训练一个网络的时候会遇到的最大的障碍。一般在训练一个网络的时候,损失原来很大,随着参数不断的更新,损失会越来越小,最后就卡住了,损失不再下降。当我们走到临界点的时候,意味着梯度非常小,但损失不再下降的时候,梯度并没有真的变得很小。随着迭代次数增多,虽然损失不再下降,但是梯度的范数并没有真的变得很小。梯度在山谷的两个谷壁间,不断地来回“震荡”,这个时候损失不会再下降,它不是真的卡到了临界点,卡到了鞍点或局部最小值。但它的梯度仍然很大,只是损失不一定再减小了。所以训练一个网络,训练到后来发现损失不再下降的时候,有时候不是卡在局部最小值或鞍点,只是单纯的损失无法再下降。
假如训练一个网络,训练到现在参数在临界点附近,再根据特征值的正负号判断该临界点是鞍点还是局部最小值。实际上在训练的时候,要走到鞍点或局部最小值,是一件困难的事情。一般的梯度下降,其实是做不到的。用一般的梯度下降训练,往往会在梯度还很大的时候,损失就已经降了下去,这个是需要特别方法训练的。要走到一个临界点其实是比较困难的,多数时候训练在还没有走到临界点的时候就已经停止了。
最原始的梯度下降连简单的误差表面都做不好,因此需要更好的梯度下降的版本。在梯度下降里面,所有的参数都是设同样的学习率,这显然是不够的,应该要为每一个参数定制化学习率,即引入自适应学习率(adaptive learning rate)的方法,给每一个参数不同的学习率。
接下来介绍几个简单的相关概念:
AdaGrad
AdaGrad(Adaptive Gradient)是典型的自适应学习率方法,其能够根据梯度大小自动调整学习率。AdaGrad 可以做到梯度比较大的时候,学习率就减小,梯度比较小的时候,学习率就放大。
RMSProp
同一个参数需要的学习率,也会随着时间而改变。在某种误差表面中,如果考虑横轴方向,绿色箭头处坡度比较陡峭,需要较小的学习率,但是走到红色箭头处,坡度变得平坦了起来,需要较大的学习率。因此同一个参数的同个方向,学习率也是需要动态调整的,于是就有了一个新的方法———RMSprop(Root Mean Squared propagation)。
Adam
最常用的优化的策略或者优化器(optimizer)是Adam(Adaptive moment estimation)[7]。Adam 可以看作 RMSprop 加上动量,其使用动量作为参数更新方向,并且能够自适应调整学习率。PyTorch 里面已经写好了 Adam 优化器,这个优化器里面有一些超参数需要人为决定,但是往往用 PyTorch 预设的参数就足够好了。

三.学习率调度
之前的学习率调整方法中 η 是一个固定的值,而在学习率调度中 η 跟时间有关。学习率调度中最常见的策略是学习率衰减(learning rate decay),也称为学习率退火(learning rateannealing)。随着参数的不断更新,让 η 越来越小。除了学习率下降以外,还有另外一个经典的学习率调度的方式———预热。预热的方法是让学习率先变大后变小,至于变到多大、变大的速度、变小的速度是超参数。残差网络里面是有预热的,在残差网络里面,学习率先设置成 0.01,再设置成 0.1,特别的,一开始用 0.1 反而训练不好。除了残差网络,BERT 和 Transformer 的训练也都使用了预热,使用预热的原因是当我们使用 Adam、RMSprop 或 AdaGrad 时,需要计算 σ。而 σ 是一个统计的结果。从 σ 可知某一个方向的陡峭程度。统计的结果需要足够多的数据才精准,一开始统计结果 σ 是不精准的。一开始学习率比较小是用来探索收集一些有关误差表面的情报,先收集有关 σ 的统计数据,等 σ 统计得比较精准以后,再让学习率慢慢爬升。如果读者想要学更多有关预热的东西可参考 Adam 的进阶版———RAdam。

四.分类
(一)分类与回归的关系
回归是输入一个向量 x,输出 yˆ,我们希望 yˆ 跟某一个标签 y 越接近越好,y 是要学习的目标。而分类可当作回归来看,输入 x 后,输出仍然是一个标量 yˆ,要让它跟正确答案的那个类越接近越好。yˆ 是一个数字,我们可以把类也变成数字。如果有三个类,标签 y 就是一个三维的向量,如果目标 y 是一个向量,比如 y 是有三个元素的向量,网络也要输出三个数字才行。

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

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

相关文章

LCA 最近公共祖先

概念 最近公共祖先简称 LCA(Lowest Common Ancestor)。两个节点的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个。 感觉其实看个图就懂了吧图中例子 \(lca(u,v)=x\) 这个问题理解概念不难,主要是学会如何快速求来,下面介绍三种方法。 方法 1.暴力法 2. 倍增法…

ChatGPT学习之旅 (10) 系统全球化小助手

本篇我们一起来了解下如何基于ChatGPT中来帮助我们解决一些系统开发中的多语言/全球化/本地化的任务,通过给到清晰的提示词,让这些任务的解决时间缩短一半以上。大家好,我是Edison。 上一篇我们写了一个运维小助手的prompt,它帮我们写一些我们开发者不太愿意做的一些运维小…

信奥一本通题陈老师解题:1086:角谷猜想

​ 【题目描述】谓角谷猜想,是指对于任意一个正整数,如果是奇数,则乘3加1,如果是偶数,则除以2,得到的结果再按照上述规则重复处理,最终总能够得到1。如,假定初始整数为55,计算过程分别为16、8、4、2、1。程序要求输入一个整数,将经过处理得到11的过程输出来。【输入】…

信奥一本通题陈老师解题:1032:大象喝水查

​ 【题目描述】一只大象口渴了,要喝20升水才能解渴,但现在只有一个深h厘米,底面半径为r厘米的小圆桶(h和r都是整数)。问大象至少要喝多少桶水才会解渴。【输入】输入有一行:包行两个整数,以一个空格分开,分别表示小圆桶的深h和底面半径r,单位都是厘米。【输出】输出一行…

Veeam ONE v12.2 发布下载 - 监控和分析

Veeam ONE v12.2 发布下载 - 监控和分析Veeam ONE v12.2 发布下载 - 监控和分析 Veeam Data Platform | 面向混合云和多云的 备份和恢复 监控和分析 恢复编排 请访问原文链接:https://sysin.org/blog/veeam-one-12/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.…

Veeam Recovery Orchestrator v7.1 发布下载 - 恢复编排

Veeam Recovery Orchestrator v7.1 发布下载 - 恢复编排Veeam Recovery Orchestrator v7.1 发布下载 - 恢复编排 Veeam Data Platform | 面向混合云和多云的 备份和恢复 监控和分析 恢复编排 请访问原文链接:https://sysin.org/blog/veeam-recovery-orchestrator-7/,查看最新…

Adobe Media Encoder 2024 v24.6 (macOS, Windows) - 格式转换

Adobe Media Encoder 2024 v24.6 (macOS, Windows) - 格式转换Adobe Media Encoder 2024 v24.6 (macOS, Windows) - 格式转换 Acrobat、After Effects、Animate、Audition、Bridge、Character Animator、Dimension、Dreamweaver、Illustrator、InCopy、InDesign、Lightroom C…

Windows Server 2008 R2 OVF, updated Aug 2024 (sysin) - VMware 虚拟机模板

Windows Server 2008 R2 OVF, updated Aug 2024 (sysin) - VMware 虚拟机模板Windows Server 2008 R2 OVF, updated Aug 2024 (sysin) - VMware 虚拟机模板 Windows Server 2008 R2 简体中文版 OVF, 2024 年 8 月更新 请访问原文链接:https://sysin.org/blog/windows-server-2…