李宏毅 机器学习与深度学习【2022版】 02

news2024/11/14 13:58:18

文章目录

  • 一、机器学习任务攻略
  • 二、优化失败
    • 1、梯度很小的情况
    • 2、Batch and Momentum
  • 三、自适应学习率 Adaptive Learning Rate
  • 四、分类问题简述
  • 五、重温神奇宝贝和数码宝贝分类器
  • 六、深度学习的优化

一、机器学习任务攻略

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
因为在训练集中,56层的network一定至少和20层的一样好,所以在测试集中,56层network比20层表现差,也不是过拟合。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
更多的训练数据可以限制函数的freestyle,但是往往获取训练数据并不容易,所以可以采用data augmentation,将已有训练数据变化,如翻转、旋转,来获得新的数据。但注意不要做无意义的变化,如图片识别中的倒置。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


不建议根据测试集的表现,来选择模型:
在这里插入图片描述


在这里插入图片描述


可以用交叉验证的方法,去寻找合适的模型:
在这里插入图片描述


在这里插入图片描述


mismatch 是因为训练数据和测试数据分布不一致导致的。据收集增多,也不会解决该问题。

在这里插入图片描述


二、优化失败

1、梯度很小的情况

critical point:梯度为零的点
critical point 有两种,极值点和鞍点saddle point

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


举例:有一笔训练数据 (1,1),模型为 y = w 1 w 2 x y=w_1w_2x y=w1w2x


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
由于海森矩阵计算量比较大,所以一般不用改方法。


在低纬度是局部最小值点,但是在高纬度有可能是鞍点。

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


2、Batch and Momentum

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
因为每个batch算出的loss都略有不同,上一个batch算的梯度为0时,下一个batch有可能不是0,从而可以继续训练。
此外,就算在训练时,大的和小的batch都训练的性能差不多,而在测试时,小的batch也往往表现更好。


在这里插入图片描述
可能的解释是,小的batch,参数更新时,由于有噪声,梯度方向有一定的随机性,而狭窄的局部最小值点区域困不住它。


在这里插入图片描述


Momentum:

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


三、自适应学习率 Adaptive Learning Rate

在这里插入图片描述


在这里插入图片描述
学习率设置较大,在梯度大的地方,参数更新步幅会较大,遇到峡谷会两边震荡。
学习率设置较小,在梯度小的地方,参数更新步幅又很小,就会训练不动。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
error surface中的同一个方向,即同一个参数,它的梯度也是有变化的,我们也希望学习率可以动态调整。


在这里插入图片描述
.


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
使用warm up效果更好的一个可能的解释是: σ \sigma σ是基于统计数据计算得到的,刚开始数据比较少,所以不精准,开始的参数更新步幅小一些,然后随着统计数据多了,再慢慢增大参数更新步幅,效果可能更好一些。


在这里插入图片描述


四、分类问题简述

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
softmax不仅可以使输出值变为0~1之间,还可以拉大输出大、小值之间的差距。


在这里插入图片描述
二分类问题往往直接套用sigmoid函数,而不是用softmax,实际上二者是等价的。


在这里插入图片描述


在这里插入图片描述

五、重温神奇宝贝和数码宝贝分类器

在这里插入图片描述
模型未知数取值的可能性数量,叫做模型的复杂度。


在这里插入图片描述


请添加图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


以下的讨论是一般化的原理,和模型没有关系,对数据的分布也没有假设,适用于任何 loss 函数。
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


往往我们不容易使N变大,即让训练数据变多,H变得太小也会使最好的h不在H中。

在这里插入图片描述

六、深度学习的优化

在这里插入图片描述
这些背景知识不会可以以后再补。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
这里我们重点关注 off-line 的情况。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


为解决训练时,SGD卡在梯度为零的地方,可以采用Adam算法。
在这里插入图片描述
m ^ t \widehat m_t m t的分母作用是去偏de-biasing,这样在开始的几个time step中,它的值也不会很小,和其他time step的大小保持差不多。
v ^ t \widehat v_t v t的分母作用同上。
ε \varepsilon ε的作用是防止分母为零。


Adagrad、RMSProp、Adam算法是自适应学习率adaptibe learning rate
在这里插入图片描述


在这里插入图片描述


请添加图片描述


请添加图片描述


在这里插入图片描述
该方法主要解决的是梯度普遍比较小的时候,学习率较大的情况。但该方法会造成学习率单调减少,可能会使训练卡住不动。


在这里插入图片描述


在这里插入图片描述
AdaBound是解决梯度太大,从而学习率太小的问题。
Clip函数为梯度裁剪函数,输入的张量x的各值如果超出上下限,则输出上下限对应的值,没超出,则输出x的原值。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
和Cyclical LR方法大同小异


在这里插入图片描述


Adam也需要warm-up,因为经验显示,前10个time step的梯度比较乱,学习率也会忽大忽小。


在这里插入图片描述


在这里插入图片描述
这里的 r t r_t rt和梯度没有关系,是因为我们假设梯度来自某个分布,所以 r t r_t rt只与 t 有关系。梯度的方差越大, v t v_t vt的方差就越大, 1 v t \frac 1 {v_t} vt1的方差也就越大,进而 r t r_t rt也就越小。梯度的方差越小,即越稳定, r t r_t rt也就越大。所以 r t r_t rt可以直接乘到学习率上面,去调整学习率。
ρ ≤ 4 \rho \le 4 ρ4,使用SGDM,当 ρ > 4 \rho \gt 4 ρ>4,可以将 r t r_t rt(warm-up learning rate)乘到学习率上。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
这张图改成从小球从右往左走,来看。


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


在这里插入图片描述
γ θ t − 1 \gamma \theta_{t-1} γθt1项叫做weight decay 项。
在计算 m t m_t mt v t v_t vt时,有weight decay 项,叫做weight decay。
在计算 m t m_t mt v t v_t vt时,没有weight decay 项,叫做L2 regularuzation
通常使用weight decay算法,效果比较好。

本篇博文,最重要的优化算法是AdamW,做NLP时经常使用。


一些帮助优化的方法
①增加模型随机性的方法:
shuffling: 每个epoch的data打乱顺序,重新划分mini-batch,这样计算的梯度可能方向不同。

Dropout: 鼓励每个神经元都去学到有意义的信息。在训练过程中,有一些神经元会被随机丢掉,来减少网络对特定神经元的依赖。

Gradient noise: 算完梯度后,加个高斯噪声。随着t增大,噪音变小。
   g t , i = g t , i + N ( 0 , σ t 2 ) g_{t,i}=g_{t,i}+N(0,\sigma_t^2) gt,i=gt,i+N(0,σt2)
   σ t = c ( 1 + t ) γ \sigma_t=\frac c {(1+t)^{\gamma}} σt=(1+t)γc

增加随机性,可以在训练时,让模型有更多的探索,进而有可能得到更好的表现。


②和学习率调整有关的方法:
warm-up: 一开始学习率比较小,等到训练稳定再调大。

curriculem learning: 先用容易的数据,例如没有噪音的数据、或者接近均值的数据,去训练模型。再用困难的数据去训练。这样可能会提高泛化能力。因为开始的数据可能会决定整个模型大的走向,后面会在某个极值附近移动。

fine-tuning: 用一些预训练模型,站在巨人的肩膀上训练。


③其他方法:
在这里插入图片描述


总结:
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

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

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

相关文章

等保测评(三级)服务器和终端-测评项及整改措施(详细)

本文按照三级等保标准进行测评,可参考进行加固。 等保测评是信息安全等级保护工作的基本制度、基本策略和基本方法。 等保测评是信息安全等级保护工作的基本制度、基本策略和基本方法。信息系统运营、使用单位应选择符合国家要求的测评机构,依据《信息…

Java中常用的API

具体的例子就不再列出了 自己尝试 // 注意第三个方法 1.如果数据源数组和目的地数组都是基本数据类型,那么两者的类型必须保持一致,否则会报错 2.如果数据源数组和目的地数组都是引用数据类型,那么子类类型可以赋值给父类类型 public cl…

并发服务器---IO多路复用

单循环服务器:同一时刻只能处理一个客户端任务 并发服务器: 同一时刻,只能处理多个客户端的任务 实现方法:多进程 多线程 IO多路复用 IO多路复用: 1.阻塞io(fgets scanf recv getchar read&#x…

【python计算机视觉编程——1.基本的图像操作和处理】

python计算机视觉编程——1.基本的图像操作和处理 1.基本的图像操作和处理1.1 PIL:Python图像处理类库1.1.1 转换图像格式1.1.2 创建缩略图1.1.3 复制和粘贴图像区域1.1.4 调整尺寸和旋转 1.2 Matplotlib1.2.1绘制图像、点和线1.2.2 图像轮廓和直方图 1.3 Numpy1.3.1 图像数组表…

【STM32】DMA

描述 大部分图片来源:正点原子HAL库课程 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 0 概述 1 原理(用于个人理解的,非常重要!) 1.1 DMA请求 1.2 循环模式与DMA请求的关系 1.3 …

以科研为本 创新突破的品牌理念 朵拉朵尚荣获2023年度影响力品牌奖

以科研为本 创新突破的品牌理念 朵拉朵尚荣获2023年度影响力品牌奖 随着国内美妆行业经过数十年的快速发展,已经形成了数千亿规模的产业链,在产业集聚、行业新技术不断涌现、产业链持续优化等背景下,美妆行业该如何通过科技创新,…

流量太炸裂了!一键AI替换视频人物,几分钟极速制作爆款视频!

目录 一、案例分析 二、制作教程 1.1、通义千问APP——角色扮演 1.2、Motionshop 1.3、Wonder Studio 1.4、Viggle 三、结束语 最近网上火了一种新玩法:用AI技术,一键就能把视频里的人物换成机器人或者任何你想要的角色。就像之前那些视频&#x…

二叉树高频题目-上-不含树型dp

二叉树高频题目-上-不含树型dp 题目1 : 二叉树的层序遍历 测试链接 : https://leetcode.cn/problems/binary-tree-level-order-traversal/ 思路 自己使用数组实现队列, 在队列中进行广度优先遍历先将根结点进队, 如果队列里还有东西, 按照队列大小进行循环, 让队列里的结点进…

创建一个最简单的FastAPI

如何生成一个最简单的 FastAPI 文件? FastAPI官方文档:https://fastapi.tiangolo.com/zh/tutorial/first-steps/ # -*- coding: utf-8 -*-""" file: main.py author: CSDN-北极的三哈 time: 2024/8/27 22:11 email:flymeawei163.com so…

【自动驾驶】控制算法(六)前馈控制与航向误差

写在前面: 🌟 欢迎光临 清流君 的博客小天地,这里是我分享技术与心得的温馨角落。📝 个人主页:清流君_CSDN博客,期待与您一同探索 移动机器人 领域的无限可能。 🔍 本文系 清流君 原创之作&…

Python爬虫使用实例_1

Python爬虫使用实例 —— 续 IDE: Pycharm or Jupyter Notebook 6. 网易云歌榜 🥝 获取地址 记得把#/去掉就好,一定要记得,否则没用。 热歌榜的url是 https://music.163.com/discover/toplist?id3778678 ,同理可得其他榜的ur…

Java设计模式之单例模式详细讲解和案例示范

单例模式(Singleton Pattern)是Java设计模式中最简单但却非常实用的一种。它确保一个类只有一个实例,并提供一个全局的访问点。本文将通过电商交易系统为例,详细探讨单例模式的使用场景、常见问题及解决方案。 1. 单例模式简介 …

【LeetCode Cookbook(C++ 描述)】平衡二叉树

目录 平衡二叉树基础不同插入节点方式的不同旋转LL 型失衡RR 型失衡LR 型失衡RL 型失衡 删除操作删除节点为二叉树的叶子节点删除的节点只有左子树或者右子树删除的节点既有左子树又有右子树 LeetCode #110:Balanced Binary Tree 平衡二叉树递归法(自底向…

[C++番外] 抛异常

一、C语言的时候我们怎么判断错误的呢? C语言的错误处理机制: 终止程序,如assert,缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序。返回错误码,缺陷:需要程序员自己去查…

字典序排数

题目链接 字典序排数 题目描述 注意点 1 < n < 5 * 10^4 解答思路 参照题解使用dfs完成本题&#xff0c;需要注意的是结果不包含0&#xff0c;所以先遍历第一层&#xff08;1~9&#xff09;&#xff0c;再根据每个节点继续深搜&#xff0c;将访问到的节点按顺序添加…

测试开发面试题目汇总

之前因为面临换工作&#xff0c;所以通过一些渠道汇总了一些面试题目&#xff0c;然后加入了部分自己面试过程中遇到的问题&#xff0c;因此记录下来。文末有惊喜。 1. 项目经验 2. 测试的过程 3. 京东登录页面怎么测&#xff1f; 4. 如果一个普通用户&#xff0c;他的百度首…

EasyExcel动态映射Excel数据到任意实体类教程

在使用EasyExcel进行Excel导入时&#xff0c;我们经常需要将Excel中的数据映射到Java实体类中。如果Excel的列名是固定的&#xff0c;我们可以通过ExcelProperty("列名")注解直接在实体类中指定列名。但如果Excel的列名不固定&#xff0c;或者我们希望根据Excel的第一…

NS2582 同步升压双节锂电池充电管理 IC

1 特性  最大 2A 输出同步开关型升压充电器  升压效率可高达 90% 以上  内置电池短路 / 涓流 / 恒流 / 恒压模式  0.5% 电池恒压模式电压精度  支持 LED 充电状态指示  支持充电电流外部可调  支持输入适配器 DPM 功能  外置 EN 使能…

SQL语法:create、insert、update、

1.create创建表 创建表时&#xff0c;通常会有如下设置&#xff1a;主键、非空、取值唯一、使用自动增长等。 根据如图创建表名为userinfo的数据表&#xff1a; create table userinfo(id int not null primary key auto_increment,username varchar(50) not null unique,cre…

java框架第二课(Reflection反射机制)

一.关于反射 (1)使用场景介绍 平常我们写代码时&#xff0c;都是已知类名&#xff0c;类的属性&#xff0c;构造方法&#xff0c;其他方法等信息&#xff0c;然后根据类名new对象&#xff0c;这个过程称为正向操作(例如&#xff1a;有一个管理员类&#xff0c;有账号和密码属…