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

news/2024/11/19 0:49:58/文章来源:https://www.cnblogs.com/CuckooAI/p/18387902

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

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

二.自适应学习率
临界点其实不一定是在训练一个网络的时候会遇到的最大的障碍。一般在训练一个网络的时候,损失原来很大,随着参数不断的更新,损失会越来越小,最后就卡住了,损失不再下降。当我们走到临界点的时候,意味着梯度非常小,但损失不再下降的时候,梯度并没有真的变得很小。随着迭代次数增多,虽然损失不再下降,但是梯度的范数并没有真的变得很小。梯度在山谷的两个谷壁间,不断地来回“震荡”,这个时候损失不会再下降,它不是真的卡到了临界点,卡到了鞍点或局部最小值。但它的梯度仍然很大,只是损失不一定再减小了。所以训练一个网络,训练到后来发现损失不再下降的时候,有时候不是卡在局部最小值或鞍点,只是单纯的损失无法再下降。
假如训练一个网络,训练到现在参数在临界点附近,再根据特征值的正负号判断该临界点是鞍点还是局部最小值。实际上在训练的时候,要走到鞍点或局部最小值,是一件困难的事情。一般的梯度下降,其实是做不到的。用一般的梯度下降训练,往往会在梯度还很大的时候,损失就已经降了下去,这个是需要特别方法训练的。要走到一个临界点其实是比较困难的,多数时候训练在还没有走到临界点的时候就已经停止了。
最原始的梯度下降连简单的误差表面都做不好,因此需要更好的梯度下降的版本。在梯度下降里面,所有的参数都是设同样的学习率,这显然是不够的,应该要为每一个参数定制化学习率,即引入自适应学习率(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.hqwc.cn/news/789451.html

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

相关文章

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…

erphpdown 美化 个人中心美化 v17.1 版本 加入工单系统

美化内容: 1 个人资料修改页面 头像 密码 邮箱等, 2 用户升级和购买充值... 3 新增工单系统 安装:解压文件到主题根目录, 将erphpdown的后台禁用,前端链接设置好,加入用户中心页面链接至头部菜单,ok! 面板截图:文末 面板说明: a.基于新版erphpdown 17.1 美化 适配手机端…

读软件开发安全之道:概念、设计与实施13Web安全

web安全1. Web安全 1.1. 当蜘蛛网中出现文字时,所有人都说这是个奇迹。但是没有人指出蜘蛛网本身就是一个奇迹1.1.1. E.B.怀特1.2. 万维网的巨大成功在很大程度上归因于一个明显的事实​:无数人对它的原理一无所知,但经常使用它1.2.1. 网络的易用性促使它的用户持续增长1.2.…

WPF 记一个特别简单的点集滤波平滑方法

本文记录我想要解决自己从窗口接收 WM_Pointer 消息时,获取到的触摸点不平滑的问题而使用的特别简单且性能垃圾的点集滤波平滑方法我的本质错误是使用 WM_POINTER 消息的 ptPixelLocationRaw 字段而不是 ptHimetricLocationRaw 字段 由于后面在 walterlv 的帮助之下修复了触摸…

dotnet C# 如何在顶级语句定义属性

随着 dotnet 6 开始,现在的 C# dotnet 可以使用顶级语句非常方便创建一个小型项目,包含的代码也特别少。本文将和大家介绍如何在顶级语句里面定义属性如以下代码是传统的控制台应用程序的代码 using System;namespace Application {class Program{static void Main(string[] …