文章目录

  • 一、深度学习步骤回顾
  • 二、常规指导
  • 三、训练过程中Loss很大
    • 3.1 原因1:模型过于简单
    • 3.2 原因2:优化得不好
    • 3.3 原因1 or 原因2 ?
  • 四、训练过程Loss小。测试过程Loss大
    • 4.1 原因1:过拟合 Overfitting
    • 4.2 原因2:Mismatch
  • 五、N折交叉验证
  • 六、When gradient is small ...
    • 6.1 Batch
    • 6.2 Momentum
  • 七、Adaptive Learning Rate
  • 八、为什么用了交叉验证有时还是会过拟合?
  • 九、Batch Normalization

一、深度学习步骤回顾


二、常规指导


三、训练过程中Loss很大

3.1 原因1:模型过于简单

原因分析

如果你的设计的模型(函数表达式)过于简单,可能会拟合不出复杂的函数,导致预测误差较高

解决方案

解决方法也很简单,就是增加模型的复杂度。如上一节课(【深度学习】李宏毅2021/2022春深度学习课程笔记 - Deep Learning Introduction)所讲的,我们可以将原本简单的线性表达式转化为复杂的非线性表达式,这样就可以拟合出更多复杂的函数,从而为减小误差提供可能。

3.2 原因2:优化得不好

原因分析

以当前模型确实存在一组参数使得Loss较低,但是由于优化算法的效果不好,没办法找到可以使得Loss较低的参数

解决方案

更换效果更好的优化算法

3.3 原因1 or 原因2 ?

这一节会讲述,我们应该怎么判断到底是原因1导致的训练过程Loss过高,还是原因2导致的

尝试不同的模型,对比不同模型下,训练过程的Loss。如下图所示,56层的模型的Loss反而比20层的模型还要大,说明应该是原因2导致的训练过程Loss过高


四、训练过程Loss小。测试过程Loss大

4.1 原因1:过拟合 Overfitting

原因分析

在大部分情况下,训练数据只是数据全集的一小部分,甚至有可能存在部分噪声数据,所以如果模型对训练数据学习得过于深入,有可能学到噪声,导致模型的泛化性变差

解决方案

  • 使用更多的训练数据(当然更多,也要是正确的训练数据多才行噢),减少噪声的影响,增加训练数据的全面性,让模型可以更好地拟合真实函数

其他解决方案

  • 使用更少参数的模型
  • 使用更少的特征数量
  • 提早停止 Early Stopping
  • 正则化
  • Dropout

4.2 原因2:Mismatch

还是看上一节课讲的案例,2/26是星期五,按照以往的规律,星期五一般学习Deep Learning的人数都是比较少的,所以模型也认为2/26日播放量应该比较少,然而事实是,2/26反而是播放量最多的一天。

这是一种反常的现象,称之为 mismatch。即机器遇到了反常的现象,即测试数据体现出的规律和训练资料体现出的规律有很大不同

下面例子,体现了Mismatch的产生原因,训练数据和测试数据体现的规律有很大不同


五、N折交叉验证

为了判断当前模型是否出现过拟合现象,我们需要从原始训练数据中,分出一部分作为验证集,然后选出在验证集上Loss最小的模型作为最终模型


六、When gradient is small …

下面只讨论,当Optimization失败时,怎么把梯度下降做得更好

人们对于Optimization失败时,有如下图所示的猜想,认为模型被优化到了一个使得梯度非常接近0的点,导致优化无法继续。这一类点通常是局部最小值点或者鞍点。


那么,如果卡在局部最小值或者鞍点时,应该怎么办呢?下面会介绍解决这个问题的办法。

6.1 Batch

Batch 指的是每次更新参数时,只用训练数据中的一小批数据进行参数更新

如下图所示,一般来说,较小的 Batch Size 可能会得到更好的结果

6.2 Momentum

在介绍 Momentum 之前,先来回顾一下,传统的梯度下降是怎么更新参数的。如下图所示,每到一个点,就按照梯度的反方向更新参数

接下来看看,加上 Momentum 之后的参数更新是什么样的。如下图所示,所谓 Momentum 就是考虑了上一步移动的方向,相当于给参数的更新加上了惯性,让参数的更新不止是根据梯度,还要根据上一步移动的方向进行更新参数,这样有利于跳出局部最优点和鞍点


七、Adaptive Learning Rate

下图展示了固定学习率的缺点。如果学习率太大,会导致最终模型可能在最优解附近来回震荡,但始终无法收敛至最优点。如果学习率太小,又会导致模型需要迭代很多次,收敛速度很慢

针对上面提到的,采用固定学习率带来的缺点,我们认为,可以给不同的参数设置不同的参数更新权重,且这个权重是随着迭代进行自适应变化的,进而提高模型迭代的效率与质量

下面给出了 Learing rate 的更新方法,参数更新权重是根据历史梯度计算的

以上,还不是关于学习率优化的最终版本。我们还希望,对于同一个参数的学习率,它对于不同时期的历史梯度信息的权重应该是不一样的,于是就有了 RMSProp , 它用 α 来控制当前梯度和历史梯度的权重

综上所述,就有了很强的优化器, Adam !

让我们来看看用了自适应学习率之后的寻优路线,如下图所示。我们可以看到,在接近最优点的时候,在竖直方向上发生了较大幅度的震荡,这是由于自适应学习率是考虑了历史上所有梯度的,而最开始时竖直方向的梯度较大,所以导致其会发生竖直震荡

为了解决上面的震荡问题,我们可以采用 根据迭代次数而自适应变化的学习率,称之为 Learning Rate Scheduling

下面采用了 学习率随迭代次数递减的策略,可以看到,震荡现象就消失了

除了学习率递减策略,还有一个常用策略是 Warm Up 策略 , 学习率先逐渐上升,然后到一个阈值后,再逐渐下降到一个阈值


八、为什么用了交叉验证有时还是会过拟合?

让我们来回顾一下验证集是怎么用的。

如下图所示,我们会把原始训练资料分为训练集和验证集,其中假设验证集占原始训练资料的三分之一,那么就可以进行三折交叉验证,根据将原始训练数据分为三个不同的验证集和训练集,可以训练出三个模型,我们最终会选择这三个模型中,在验证集上Loss最小的作为最终模型。

其实不难联想到,其实根据验证集Loss最低的原则选择模型的策略,是不是就类似于 根据验证集去训练网络呢?答案是肯定的,所以,使用交叉验证的时候,有时也会出现过拟合,这是因为模型在验证集上过拟合了!所以,同理,如果交叉验证的折数越多,代表模型越有可能在验证集上出现过拟合现象,所以在实际训练中,我们一般不会采取较多折的交叉验证,通常为3折、5折、10折。


九、Batch Normalization

当输入数据的量纲差别很大时,就会导致不同维度方向上的梯度相差很大,这样不利于梯度下降的进行。要想解决这个问题,很容易想到的解决方案就是:统一输入数据的量纲。
这个方法也叫做 Feature Normalization 。

如下图所示,我们可以对输入数据进行 Z-Score 标准化后,再传给神经网络进行学习

一般来说,标准化步骤放在激活函数之前,但实际上,在激活函数之前和之后没有太大差别

在实际神经网络训练的时候,我们并不会一次性将所有数据丢给神经网络,而是一个一个Batch地给,因此,在标准化的时候,也是一个一个Batch地进行标准化,称之为 Batch Normalization

还有很多其他标准化地方法如下

【深度学习】李宏毅2021/2022春深度学习课程笔记 - Deep Learning Task Tips相关推荐

  1. 【深度学习】李宏毅2021/2022春深度学习课程笔记 - Convolutional Neural NetWork(CNN)

    文章目录 一.图片分类问题 二.观察图片分类问题的特性 2.1 观察1 2.2 简化1:卷积 2.3 观察2 2.4 简化2:共享参数 - 卷积核 2.5 观察3 2.6 简化3:池化 2.6.1 M ...

  2. 【深度学习】李宏毅2021/2022春深度学习课程笔记 - Auto Encoder 自编码器 + PyTorch实战

    文章目录 一.Basic Idea of Auto Encoder 1.1 Auto Encoder 结构 1.2 Auto Encoder 降维 1.3 Why Auto Encoder 1.4 D ...

  3. 【深度学习】李宏毅2021/2022春深度学习课程笔记 - 机器学习的可解释性

    文章目录 一.为什么我们需要可解释性的机器学习 二.可解释性的 vs 强大的(Powerful) 三.可解释性机器学习的目标 四.可解释性的机器学习 4.1 Local Explanation 局部的 ...

  4. 李宏毅2021/2022春机器学习课程(机器学习基本概念简介)

    (强推)李宏毅2021/2022春机器学习课程_哔哩哔哩_bilibili 目录 1.机器学习是什么? 2.机器学习任务 2.1 regression回归问题 2.2 classification分类 ...

  5. 深度学习-LeCun、Bengio和Hinton的联合综述-Deep Learning一篇nature综述论文

    深度学习-LeCun.Bengio和Hinton的联合综述 原文摘要:深度学习可以让那些拥有多个处理层的计算模型来学习具有多层次抽象的数据的表示.这些方法在许多方面都带来了显著的改善,包括最先进的语音 ...

  6. 深度学习论文笔记-Deep Learning Face Representation from Predicting 10,000 Classes

    来自:CVPR 2014   作者:Yi Sun ,Xiaogang Wang,Xiaoao Tang 题目:Deep Learning Face Representation from Predic ...

  7. 《神经网络与深度学习》(Michael Nielsen)Neural Networks and Deep Learning习题解答汇总

    <神经网络与深度学习>(Michael Nielsen)1.6节完整程序解析 第二章改进神经网络的学习方法 <神经网络与深度学习>Neural Networks and Dee ...

  8. 深度学习在三维点云上的应用(Deep Learning for 3D Point Clouds: A Survey)

    深度学习在三维点云上的应用 摘要 最近,点云由于在计算机视觉.自动驾驶和机器人技术等许多领域的广泛应用而受到越来越多的关注.深度学习作为一种主要的人工智能技术,已经成功地用于解决各种二维视觉问题.由于 ...

  9. 关于深度学习在生物学领域的应用分析Applications of Deep Learning in Biomedicine

    申明:本文来源于对论文"Applications of Deep Learning in Biomedicine"的理解. 深度学习研究及其在生物医药领域的潜在应用 深度学习已经在 ...

最新文章

  1. ITAA在线试学用户使用说明
  2. RTP:实时应用程序传输协议
  3. insertAdajcentHTML
  4. java关闭inputstream_关闭Java InputStreams
  5. stl中unordered_map 和 map的区别 ?
  6. 开源 程序员清单_2015开源夏季阅读清单
  7. 7.python实现高效端口扫描器之nmap模块
  8. 在IntelliJ IDEA里配置Go开发环境
  9. 别在最吃苦的年龄选择了潇洒
  10. python打开pcap文件_python读取pcap文件
  11. x64位call代码注入器1.0版
  12. 时隔三月,再次向你推荐这款公文排版插件
  13. 在html怎么使用jq插件,jQuery标签输入插件
  14. 浏览器弹出“www.osint.com”并且导航到毒霸问题解决
  15. 利用ES实现酒店搜索功能
  16. 美女图片在网站上的应用
  17. iar软件中C语言跳出for循环,关于 IAR一些C语言扩展
  18. python如何使用最简单的方式将PDF转换成Word?
  19. 51单片机PWM(电机调速)这个可以用在智能小车的调试
  20. Excel VBA高效办公应用-第十七章-用户权限管理系统

热门文章

  1. C++与字符集、字符编码
  2. 生成对应的二维码下载app
  3. 【我的方案】酒店wifi营销广告软件认证系统快速设置方案
  4. 互联网运营面试题_运营十问 | 总结运营面试可能遇到的问题
  5. linux外接NetApp存储,实战RH Linux下配置百兆网卡iSCSI 访问NetApp
  6. 【Informatica Powercenter】关于log4j
  7. Restful风格的五种基本操作
  8. 锐龙R7 4800U 参数 相当于什么水平
  9. vivo x70pro和vivo x70proplus 的区别 vivo x70pro和vivo x70proplus哪个好
  10. maya 替换名称_Maya Reshift 代理物体 替换简模 切换显示工具脚本插件下载!