IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 组队学习李宏毅的深度学习-4 -> 正文阅读

[人工智能]组队学习李宏毅的深度学习-4

一、学习任务

?二、完成任务

Task03:误差和梯度下降

?Part1:任务综述

? ? ?通过2天观看视频5-8,主要学习了误差和梯度下降两个方面的内容。第一个方面了解了误差的来源,估测以及如何判断,关于模型的选择问题。另一方面的梯度下降,学习相关定义,关于Adagrad算法,以及其存在的矛盾,随机梯度下降法的理论基础,特征缩放,最后还有关于它的局限性。这次任务的学习内容繁重。

Part2: 主要内容笔记

  1. 误差从哪里来?

? ? ? ? Average error随着模型复杂增加呈指数上升趋势。更加复杂的模型并不能给测试集带来更好的效果,主要原因是bias和variance
Error = Bias + Variance

那么bias、variance、error是什么呢?-查阅于知乎

? ? ? ? ?举一个例子,一次打靶实验,目标是为了打到10环,但是实际上只打到了7环,那么这里面的Error就是3。具体分析打到7环的原因,可能有两方面:一是瞄准出了问题,比如实际上射击瞄准的是9环而不是10环;二是枪本身的稳定性有问题,虽然瞄准的是9环,但是只打到了7环。那么在上面一次射击实验中,Bias就是1,反应的是模型期望与真实目标的差距,而在这次试验中,由于Variance所带来的误差就是2,即虽然瞄准的是9环,但由于本身模型缺乏稳定性,造成了实际结果与模型期望之间的差距。

? ? ?在一个实际系统中,Bias与Variance往往是不能兼得的。如果要降低模型的Bias,就一定程度上会提高模型的Variance,反之亦然。造成这种现象的根本原因是,我们总是希望试图用有限训练样本去估计无限的真实数据。当我们更加相信这些数据的真实性,而忽视对模型的先验知识,就会尽量保证模型在训练样本上的准确度,这样可以减少模型的Bias。但是,这样学习到的模型,很可能会失去一定的泛化能力,从而造成过拟合,降低模型在真实数据上的表现,增加模型的不确定性。相反,如果更加相信我们对于模型的先验知识,在学习模型的过程中对模型增加更多的限制,就可以降低模型的variance,提高模型的稳定性,但也会使模型的Bias增大。Bias与Variance两者之间的trade-off是机器学习的基本主题之一,机会可以在各种机器模型中发现它的影子。

? ? ? 具体到K-fold Cross Validation的场景,其实是很好的理解的。首先看Variance的变化,还是举打靶的例子。假设我把抢瞄准在10环,虽然每一次射击都有偏差,但是这个偏差的方向是随机的,也就是有可能向上,也有可能向下。那么试验次数越多,应该上下的次数越接近,那么我们把所有射击的目标取一个平均值,也应该离中心更加接近。更加微观的分析,模型的预测值与期望产生较大偏差,在模型固定的情况下,原因还是出在数据上,比如说产生了某一些异常点。在最极端情况下,我们假设只有一个点是异常的,如果只训练一个模型,那么这个点会对整个模型带来影响,使得学习出的模型具有很大的variance。但是如果采用k-fold Cross Validation进行训练,只有1个模型会受到这个异常数据的影响,而其余k-1个模型都是正常的。在平均之后,这个异常数据的影响就大大减少了。相比之下,模型的bias是可以直接建模的,只需要保证模型在训练样本上训练误差最小就可以保证bias比较小,而要达到这个目的,就必须是用所有数据一起训练,才能达到模型的最优解。因此,k-fold Cross Validation的目标函数破坏了前面的情形,所以模型的Bias必然要会增大。

所以:来源一:bias(一般见于underfitting)
在训练集上loss就很大 —> model bias
来源二:variance(一般见于overfitting)
在训练集上可能表现很好loss很小(比如把输入特征很多,模型参数很多,将模型建得很复杂),在测试集上效果反而变差 —> overfitting

? ? ? ?简单的模型受到不同训练集的影响比较小,所以简单的模型一般Variance比较小,Bias比较大。复杂的模型对训练集敏感,Variance一般比较大,散布比较开。
如何判断是否Bias过大:如果模型没有很好的训练训练集,就是偏差过大,也就是欠拟合
如何判断是否Variance过大:如果模型很好的拟合训练集,即在训练集上得到很小的错误,但在测试集上得到大的错误,这意味着模型可能是方差比较大,也就是过拟合
如何解决Bias过大:
? ? 应重新设计模型,考虑更多的特征或者更多的参数、更复杂的模型
? ? ps:此时没必要找更多的训练数据
如何解决Variance过大:
? ?最直接的做法是收集更多的数据,但一般很难做到。
? ?可以对数据做数据增广,或者构造虚拟的数据。比如将图片旋转、平移
? ?融合多个模型,可以减小方差。
? ?多次实验,取average。

?2.模型的选择

?为什么会有很多模型呢?

? ? ? ?利用不同训练集训练得到的模型是不一样的。model的复杂程度不同,一次的五次的是不一样的。比较简单的模型,方差是比较小的(就像设计每次射击都设置集中在一个比较小的区域捏),偏差大,简单的模型受到训练集的影响也比较小;比较复杂的模型,方差就较大,偏差小。
分析
? ? ?欠拟合:模型没有得到很好的训练,偏差过大
? ? ?过拟合:模型训练过渡,训练集上得到很小的error,但是测试集上的error较大,也就是模型的方差可能比较大

? ? ?那么,如何选择一个好的模型呢?

? ? ? ?可以平衡bias和variance带来的error,使得总error最小:
? ? ? Not recommend:不推荐上面的做法!即根据已有的public的测试集上的表现去回调模型参数,因为private的测试集是没有的,这样可能会导致在真实的测试集中效果更差!
通过交叉验证选择模型,即从训练集中随机拆分一部分作为验证集。如果担心拆分的效果比较差,使用更effective的N折交叉验证。
K折交叉验证
? ? ? ?由于验证数据集不参与模型训练,当训练数据不够用 时,预留大量的验证数据过于奢侈。K折交叉验证中,把原始训练集分割成K个不重合的子数据集,然后做K次模型训练和验证。每一次只使用一个子数据集验证模型,并使用其他K-1个子数据集来训练模型。最后,我们对这K次训练误差和验证误差分别求平均。
?

n折交叉验证

?3.梯度下降

? ? ? ? 关于梯度下降,在前面的任务2中介绍Regression 回归:案例研究中有提到过。其中有个学习速率的概念。

η?叫做Learning rates(学习速率)

? ? ? lr是一个重要的超参数,lr太小,损失函数下降非常慢;lr太大,损失函数下降很快,但是很快就卡住不下降了。所以选择一个合适的学习率对于训练时间和效果都很重要。
因此可以通过一个自适应学习率来调整lr的大小。
通常刚开始,初始点会距离最低点比较远,所以使用大一点的学习率,update好几次参数之后呢,比较靠近最低点了,此时减少学习率。

?调整学习速率

?综上可以了解

  • 问题
    • 学习率太小 —> 参数调整太慢,时间过长;
    • 学习率太大 —> 在minima附近震荡,永远无法到达最低点
    • 学习率非常大 —> 损失函数发散

? ? ? ?那么我们知道恒定的学习率可能并不好,可以通过一些因子来调整学习率。刚开始可以使用大一点的学习率,比较靠近最低点时,减小学习率。
另一个问题:不同的参数更新快慢不同,每次只用一个学习率好吗?不同的参数用不同的学习率会不会更好?答案是肯定的

随机梯度下降法

? ? ? 普通的梯度下降法在每次更新参数的时候,是需要处理训练集的所有数据。而随机梯度下降法每次更新只需要随机选择某一个样本进行损失函数计算并update梯度,这样速度会大大提高。整体前进的方向是对的。

笔记总结:本次笔记是结合开源笔记,视频同步学习后的总结笔记。有些内容还没有很深入,有些知识点需要进一步扩充才能理解透彻。后继会从其他笔记中扩展。主要是跟着李宏毅老师的学习视频的进度。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-21 15:22:26  更:2021-08-21 15:23:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/1 12:34:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码