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 李宏毅机器学习打卡Task05:网络设计的技巧 -> 正文阅读

[人工智能]2021-07 李宏毅机器学习打卡Task05:网络设计的技巧

Task05 网络设计的技巧

学习地址

网络设计的技巧(解决神经网络训练问题)

(一)局部最小值(local minima)与鞍点(saddle point)

  • loss不下降的一个可能原因:卡在了critical point
    critical point 即梯度接近0的点,包括local minima和saddle point
    critical point
  • How to do with critical point?
    • if meeting local minima: no way;
    • if meeting saddle point: escape
      How to escape the saddle point?
      理论上,可以通过算出Hessian矩阵的特征值,朝着负特征值对应的特征向量的方向更新即可以escape the saddle point and decrease the loss.

how to do with critical point

  • 如何判断是local minima还是saddle point?
    提示:用到了Taylor 级数近似,此时一阶近似项为0,考虑二阶近似项,最终转化为计算Hessian矩阵,计算其特征值从而判断是否正定
    如何判断1
    如何判断2
  • Saddle point v.s. Local minima
    • local minima 在更高的维度上来看可能就变成 saddle point了
    • 经验上来看,local minima 并没有那么常见
      例子

(二)批次(batch)与动量(momentum)

  • Optimization with Batch

    • 看完每个Batch,计算一次梯度并update参数
    • 如果batchsize=N(full batch),则一个epoch只update一次参数
      optim with batch
  • Small Batch v.s. Large Batch
    Batch
    experiment

  • large batch size 泛化性能差的一个可能解释:
    large batch 更有可能走到一个比较狭窄的峡谷 local minima里面,这样在测试时,如果测试分布与训练分布有偏移,就会导致大的offset
    LB泛化差原因

  • Momentum

    • 类似物理上给物体一个动量,以防止其卡在local minima 或者saddle point.
    • 具体在gradient descent 时,每次更新参数的方向不仅仅取决于梯度的反方向,还要加上上一步的方向.
  • Gradinet Descent + Momentum
    GD+Momentum
    实际上,movement就是历史梯度的加权和:
    计算momentum

  • GD + Momentum 的一个直观例子
    可以看到,当到达第一个local minima时,虽然梯度为0,但凭借上一步的movement影响(即动量),仍然会有向右的移动方向
    例子

(三)自动调整学习率(learning rate)

  • Training stuck ≠ \neq ?= Small Gradient
    训练loss停滞不一定就是走到了 critical point,也有可能是发生了振荡,可以通过查看梯度的大小进行验证
    振荡
  • 固定的学习率通常会使training很困难
    • 太大:振荡,到达不了minima(即使是凸函数)
    • 太小:在 minima 附近停滞,慢得难以忍受
    • 如何解决:考虑为不同的参数定制不同的学习率以及自适应调整学习率,简单的直觉上来看,loss function 陡峭的地方学习率应该设置小一点,平的地方学习率应该设置大一点,当然还有其他策略
      固定学习率
  • 学习率优化总结
    • 改进1:Momentum
    • 改进2:Adaptive learning rate
    • 改进3:Learning rate scheduling
      优化总结
  • Adaptive learning rate(即根据梯度大小自适应调整学习率大小)
    • 方法1:Adagrad(Root Mean Square)

      • 存在问题:没有考虑同一个参数需要的学习率随时间改变的情况,而仅取决于梯度
      • 该版本被后续取代
        Adagrad
    • 方法2:RMSProp

      • Adagrad 的改进版本,考虑了时间因素,离当前步越近的梯度给与更大的影响权重
        RMSProp
    • 方法3:Adam

      • RMSProp + Momentum
      • 今天最常用的optimizer
      • 论文链接:https://arxiv.org/pdf/1412.6980.pdf
  • Learning rate scheduling
    • 策略1:Learning rate decay
    • 策略2:Warm up (在resnet 和 transformer 里面也有用到)
      Scheduling

(四)损失函数(loss)的影响

  • Classification v.s. Regression
    • Regression: loss 一般取MSE
    • Classification: loss 一般取Cross-entropy
      • ps: 分类问题一般在网络最后一层加上 softmax层
      • pytorch 中,CrossEntropy 自带 softmax 函数,二者是绑定在一起的!无需再在网络中加上 softmax 层
      • 对于二分类而言,softmax 与 sigmoid 是等价的
      • Minimizing cross-entropy 与 maximizing likelihood 是一个东西的两种说法
        loss of classification
  • Soft-max
    • 为什么 classification 最后要加 softmax? 从 logistic model 推过来…,简单的解释是要把任意取值的 y Normalize 到 [0, 1]的范围 (骗小孩的说法,具体解释见往年录像)
    • softmax 会让大的值跟小的值差距更大
    • softmax 的输入我们一般叫作 logit
      Softmax
  • 为什么对于 classification 而言选 cross-entropy 更合适?
    • 不同的 loss function 会改变训练的难度
    • mse 更难训练
      对比

(五)批次标准化(Batch Normalization)

  • Feature Normalization
    见之前文章:2021-07 李宏毅机器学习打卡Task03:误差来源、梯度下降
  • Considering Deep Learning
    • 之前只是对输入层进行scaling,但其实通过中间的权重矩阵相乘后,隐藏层的输入范围也有很大不同,也有必要进行scaling
    • 在激活函数之前还是之后做Normalization 更好?
      • 二者没太大区别
      • 如果是 sigmoid 激活函数,比较推荐在之前做 Normalization ,因为 sigmoid 在0附近梯度比较大
        scaling
  • Batch Normalization - Training
    • 如果每次都使用所有的输入examples进行normalization,将会是一个large network,所以考虑 a batch 是自然而然的 — Batch Normalization
    • 适用于 batchsize 比较大的时候
    • BN 会使 error surface 更平滑,所以使用 BN 可以适当加大学习率
    • gamma和beta作为超参数被学习
      BN
  • Batch Normalization - Testing
    • 在训练阶段计算 μ 和 σ 的移动平均值,测试时直接拿来用
    • pytorch 上已自动设置
      BNtesting
  • other normalization…
    other normalization

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

任务安排

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

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