Gradient Optimization

Gradient Descent

  • Batch Gradient Descent
  • Mini-Batch Gradient Descent
  • Stochastic Gradient Descent

Mini-Batch Gradient Descent

  • 参数

    • Mini-Batch Size: 一个Batch样本所含的样本数
  • 参数效果
    • 通过设置Mini-Batch Size可以将Mini-Batch转为Stochastic Gradient Descent和Bath Gradient Descent
    • 当Mini-Batch Size == m时, Mini-Batch Gradient Descent为Batch Gradient Descent; 当Mini-Batch Size == 1时, Mini-Batch Gradient Descent为Stochastic Gradient Descent; 一般Mini-Batch Size的大小为2的幂次方, 主要考虑到与计算机内存对齐, 一般Mini-Batch Size设置在64-512
  • 特点对比
    • Batch Gradient Descent: 当数据量大的时候程序运行很慢
    • Stochastic Gradient Descent: 一般不采用此方法, 因为此Gradient Descent方法每迭代一个样本就会更新参数\(W\)和\(b\), 在梯度下降的时候有很多噪音; 但是它可以应用到在线学习上
    • Mini-Batch Gradient Descent: 当数据量较大的时候可以加快收敛速度, 但是当在梯度下降的时候, 容易产生震荡(oscillate), 如图

    • 其中, +表示\(J_{min}\), 在使用Mini-Batch Gradient Descent的时候, 容易在数值方向产生震荡, 我们期望的是缩小竖直方向上的震荡, 在水平方向上加快收敛的速率, 对于这个问题, 解决方案是在Update Parameters的时候, 采用Momentum, RMSProp或者Adam的方法更新参数\(W\)和\(b\), 在下面就会提到

处理震荡

  • 指数权重均值(Exponentially Weighted Average, 简称EMA), 后面的Momentum, RMSProp和Adam都需要EMA

    • 以一年的中所有天数的温度为例, 如图

    • 由上图可知, \(\theta\)为气温, \(t\)为天数, 总体来说中间时刻气温低一点, 两侧高一点
    • 定义
      • \(v_t=\beta{v_{t-1}}+(1-\beta)\theta_t\), 其中\(\beta\)为EMA中的一个参数, 一般他的取值范围在\(0.9\le \beta \le 0.99\); \(v_t\)表示的就是EMA; \(\theta_t\)为第\(t\)天的气温; \(\beta{v_t}\)表示的是前\(t\)天的关注度, 后面的\((1-\beta)\theta_t\)是对当前天气温的关注度, 最左侧的\(v_t\)才是我们对当前天的EMA; EMA公式有递归的感觉
  • Momentum

    • 公式

      • \(v_{dW^{[l]}}=\beta{v_{dW^{[l]}}}+(1-\beta)dW^{[l]}\), 其中, \(dW^{[l]}\)是第\(l\)层的梯度矩阵, 其他与EMA中的是一样的
      • 返现与EMA中不同的是这里的\(\beta{v_{dW^{[l]}}}\)不是\(\beta{v_{dW^{[l-1]}}}\), 因为我们在实现该算法的时候采用先默认赋予0值, 再在每一次迭代时累加, 下面的RMSProp和Adam也是如此
    • 更新参数
      • \(W^{[l]}=W^{[l]}-\alpha{v_{dW^{[l]}}}\)
  • RMSProp

    • 公式

      • \(s_{dW^{[l]}}=\beta{v_{dW^{[l]}}}+(1-\beta)(dW^{[l]})^2\), 其中, 与Momentum不同的就是此处\((dW^{[l]})^2\)
    • 更新参数
      • \(W^{[l]}=W^{[l]}-\alpha{dW^{[l]}\over{\sqrt{s_{dW^{[l]}}+\epsilon}}}\), 其中\(\epsilon \approx 10^{-8}\)
  • Adam

    • Adam算法是Momentum与RMSProp的结合
    • 公式
      • \(v_{dW^{[l]}}=\beta_1{v_{dW^{[l]}}}+(1-\beta_1)dW^{[l]}\)
      • \(v^{correct}_{dW^{[l]}}={v_{dW^{[l]}}\over{1-(\beta_1)^t}}\), 其中t表示深度学习算法迭代到第t次, 这一步是\(v_{dW^{[l]}}\)的修正, 在后面即使使用\(v^{correct}_{dW^{[l]}}\)
      • \(s_{dW^{[l]}}=\beta_2{v_dW^{[l]}}+(1-\beta_1)(dW^{[l]})^2\)
      • \(s^{correct}_{dW^{[l]}}={s_{dW^{[l]}}}\over{1-(\beta_2)^t}\),其中t表示深度学习算法迭代到第t次, 这一步是\(s_{dW^{[l]}}\)的修正, 在后面即使使用\(s^{correct}_{dW^{[l]}}\)
    • Adam结合了之前的Momentum与RMSProp算法, 同时增加了校正EMA的步骤, 因为在Momentum和RMSProp算法都有\(\beta\)和\(s\), 所有在这里为了区分, 使用了\(v\)与\(s\), \(\beta_1\)与\(\beta_2\)
    • 更新参数
      • \(W^{[l]}=W^{[l]}-\alpha{v_{dW^{[l]}}^{[l]}\over{\sqrt{s_{dW^{[l]}}+\epsilon}}}\), 其中\(\epsilon \approx 10^{-8}\)

使用代码实现的大致思路

  • 选择Mini-Batch Gradient Descent
  • Shuffle原始数据
  • 选择Mini-Batch Size进行Gradient Descent
  • 在迭代Update Parameters时, 先为Momentum, RMSProp或者Adam需要的\(v\), \(s\)变量赋予0值, 维度与对应的\(dW\)一致
  • 迭代即可

学习率\(\alpha\)的衰减

  • 一般来说我们只需要直接固定\(\alpha\)的值, 随后根据结果进行调整, 但是在数据量很大的时候就会比较浪费时间, 于是使用到了\(alpha\)的衰减
  • 定义
    • \(\alpha={1\over{1+decay\_rate\times{epoch}}}\alpha_0\)

Gradient Optimization的更多相关文章

  1. ( 转) Awesome Image Captioning

    Awesome Image Captioning 2018-12-03 19:19:56 From: https://github.com/zhjohnchan/awesome-image-capti ...

  2. ICCV 2017论文分析(文本分析)标题词频分析 这算不算大数据 第一步:数据清洗(删除作者和无用的页码)

    IEEE International Conference on Computer Vision, ICCV 2017, Venice, Italy, October 22-29, 2017. IEE ...

  3. 近年Recsys论文

    2015年~2017年SIGIR,SIGKDD,ICML三大会议的Recsys论文: [转载请注明出处:https://www.cnblogs.com/shenxiaolin/p/8321722.ht ...

  4. SciPy和Numpy处理能力

    1.SciPy和Numpy的处理能力: numpy的处理能力包括: a powerful N-dimensional array object N维数组: advanced array slicing ...

  5. [CS231n-CNN] Training Neural Networks Part 1 : activation functions, weight initialization, gradient flow, batch normalization | babysitting the learning process, hyperparameter optimization

    课程主页:http://cs231n.stanford.edu/   Introduction to neural networks -Training Neural Network ________ ...

  6. (转) An overview of gradient descent optimization algorithms

    An overview of gradient descent optimization algorithms Table of contents: Gradient descent variants ...

  7. An overview of gradient descent optimization algorithms

    原文地址:An overview of gradient descent optimization algorithms An overview of gradient descent optimiz ...

  8. 【论文翻译】An overiview of gradient descent optimization algorithms

    这篇论文最早是一篇2016年1月16日发表在Sebastian Ruder的博客.本文主要工作是对这篇论文与李宏毅课程相关的核心部分进行翻译. 论文全文翻译: An overview of gradi ...

  9. [CS231n-CNN] Linear classification II, Higher-level representations, image features, Optimization, stochastic gradient descent

    课程主页:http://cs231n.stanford.edu/ loss function: -Multiclass SVM loss: 表示实际应该属于的类别的score.因此,可以发现,如果实际 ...

随机推荐

  1. 利用input event 实时监听input输入的内容

    <div id="addNumber"> <p>How many people would you like to invite?</p> &l ...

  2. Python 单元测试 增强系统健壮性

    问题背景交代 注意,JulyNovel只爬取免费小说,所有vip章节全部导航至起点网站,遵循robots协议,所有数据仅供学习用途,侵删 通过编写单元测试,提高JulyNovel系统可靠性 首先我们知 ...

  3. NOS服务监控实践

    本文来自网易云社区 作者:王健 一.  背景 此处所说的服务监控程序,是通过模拟用户的请求,对一个系统的服务质量进行监控的程序.服务监控程序的主要目的是,从用户的角度出发,通过发送端到端的请求,确认系 ...

  4. OCP最新题库052考题解析及答案-第37题

    37.USER1 grants SELECT, INSERT, and UPDATE privileges on USER1. EMP to USER2. SYS executes this comm ...

  5. Echart自定义y轴刻度信息1

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. 洛谷P5050 【模板】多项式多点求值

    传送门 人傻常数大.jpg 因为求逆的时候没清零结果调了几个小时-- 前置芝士 多项式除法,多项式求逆 什么?你不会?左转你谷模板区,包教包会 题解 首先我们要知道一个结论\[f(x_0)\equiv ...

  7. 求二叉树第K层的节点个数+求二叉树叶子节点的个数

    size_t _FindLeafSize(Node* root)     //求二叉树叶子节点的个数    {        //static size_t count = 0;        if ...

  8. mycat 1.6.6.1安装以及配置docker 安装mysql 5.7.24 双主多从读写分离主主切换

    mycat和mysql的高可用参考如下两个图 简介:应用程序仅需要连接HAproxy或者mycat,后端服务器的读写分离由mycat进行控制,后端服务器数据的同步由MySQL主从同步进行控制. 服务器 ...

  9. codis__数据迁移和伸缩容

    数据迁移命令 注意点:是迁移到某个 redis-group 而不是某个redis-servers  实例 伸缩容用法 redis 内存等不够用时 增容 : 增加redis-group, 然后迁移使用上 ...

  10. 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

    一.实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报 ...