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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 2021-07 李宏毅机器学习打卡Task03:误差来源、梯度下降 -> 正文阅读

[人工智能]2021-07 李宏毅机器学习打卡Task03:误差来源、梯度下降

Task03 误差来源、梯度下降

学习地址

误差error

误差来源

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

Bias v.s Variance

bias-variance

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

模型选择—tradeoff

模型选择

  • 如何选择一个好的模型,可以平衡bias和variance带来的error,使得总error最小:
    • Not recommend:不推荐上面的做法!即根据已有的public的测试集上的表现去回调模型参数,因为private的测试集是没有的,这样可能会导致在真实的测试集中效果更差!
    • 通过交叉验证选择模型,即从训练集中随机拆分一部分作为验证集
    • 如果担心拆分的效果比较差,使用更effective的N折交叉验证

N-fold 交叉验证

n折交叉验证
将训练集分成N份,每次取其中一份作为验证集,其余作为训练集,N次训练验证后,取验证集的AvgError作为依据回调模型参数。之后再用全量训练集训练选择好的模型,作为最终的模型。理论上训练集和测试集数据分布一致的话,效果会比较好。

梯度下降Tips

Tip1:调整学习速率

  • 问题
    • 学习率太小 —> 参数调整太慢,时间过长;
    • 学习率太大 —> 在minima附近震荡,永远无法到达最低点
    • 学习率非常大 —> 损失函数发散
  • 自适应学习率
    • 恒定的学习率可能并不好
    • 可以通过一些因子来调整学习率
    • 刚开始可以使用大一点的学习率,比较靠近最低点时,减小学习率
    • 比如 η t = η t t + 1 \eta^{t}=\frac{\eta^{t}}{\sqrt{t+1}} ηt=t+1 ?ηt? ,随着次数的增加,减小学习率
    • 另一个问题:不同的参数更新快慢不同,每次只用一个学习率好吗?不同的参数用不同的学习率会不会更好?答案是肯定的
  • Adagrad算法
    • (Vanilla)Gradient Descent:
      普通的梯度下降
    • Adagrad:
      Adagrad
    • Adagrad的例子:
      Adagrad例子
    • 简单解释:
      在跨参数的情况下,并不是梯度越大,更新的步伐就应该越大,最好的步伐其实是: ∣ F i r s t D e r i v a t i v e ∣ S e c o n d D e r i v a t i v e \frac{|First Derivative|}{Second Derivative} SecondDerivativeFirstDerivative?
    • 进一步解释:
      Adagrad的做法其实是在尽可能不增加过多运算的情况下,用一阶微分的历史平方和开根号模拟二次微分,因为一阶微分已经计算过,不再需要太多的计算量
      Adagrad解释
  • RMSprop算法:
    • 最近的梯度影响更大,过去的梯度影响更小
      RMSprop1
      RMSprop
  • 另外还有其他如Adam算法等等,梯度下降的数学理论基础来自于多变量的泰勒展开式

Tip2:随机梯度下降法

  • 普通的梯度下降法每次更新参数需要处理训练集的所有数据,随机梯度下降法(SGD)每次更新参数只需要随机选择某一个样本进行损失函数计算并update梯度,大大增加了速度,效果也不会太差,整体前进的方向是对的

Tip3:特征缩放

  • 特征很多,而且特征分布的范围差别很大,此时将输入进行范围缩放,让不同特征的范围一样,可以加快训练速度。
  • 常用的做法是Standardization:
    x i r ← x i r ? m i σ i x^{r}_{i}\leftarrow\frac{x^{r}_{i}-m_{i}}{\sigma_{i}} xir?σi?xir??mi??
    i i i 是特征维度, r r r 是第 r r r 个样本
  • 特征缩放

另附Datawhale组队学习—李宏毅机器学习任务安排

任务安排

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-17 11:54:48  更:2021-07-17 11:55:55 
 
开发: 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年12日历 -2024/12/22 10:55:49-

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