优化算法

随机梯度下降法

在机器学习中,优化问题的目标函数通常可以表示成

      其中 θ\thetaθ 是待优化的模型参数, xxx 是模型输入, f(x,θ)f(x,\theta)f(x,θ) 是模型的实际输出, yyy 是模型的目标输出,函数 LLL 刻画了模型在数据 (x,y)(x,y)(x,y) 上的损失, PdataP_{data}Pdata​ 表示数据的分布, EEE 表示期望。因此, L(θ)L(\theta)L(θ) 刻画了当参数为 θ\thetaθ时,模型在所有数据上的平均损失。
      我们希望能够找到平均损失最小的模型参数,也就是求解优化问题
θ∗=argminL(θ)\theta^*=arg min L(\theta)θ∗=argminL(θ)
      经典的梯度下降法采用所有训练数据的平均损失来近似目标函数,即

其中 MMM 为训练样本的个数。模型参数的更新公式为
θt+1=θt−α▽L(θt)\theta_{t+1}=\theta_t-\alpha ▽L(\theta_t)θt+1​=θt​−α▽L(θt​)
      因此,经典的梯度下降法在每次对模型参数进行更新时,需要遍历所有的训练数据。当 MMM 很大时,这需要很大的计算量,耗费很长的计算时间,在实际应用中基本不可行。
      为了解决这个问题,随机梯度下降法(Stochastic Gradient Descent,SGD)用单个训练样本的损失来近似平均损失,即

      因此,随机梯度下降法用单个训练数据即可对模型参数进行一次更新,大大加快了收敛速率。该方法也非常适用于源源不断到来的在线更新场景。
      为了降低随机梯度的方差,从而使得迭代算法更加稳定,也为了充分利用高度优化的矩阵运算操作,在实际应用中我们会同时处理若干训练数据,该方法被称为小批量梯度下降法(Mini-Batch Gradinet Descent)。假设需要同时处理 mmm 个训练数据{(xi1,yi1),...,(xim,yim)(x_{i_{1}},y_{i_{1}}),...,(x_{i_{m}},y_{i_{m}})(xi1​​,yi1​​),...,(xim​​,yim​​)},则目标函数及其梯度为

      对于小批量梯度下降法的使用,有以下三点需要注意:
      (1)如何选取参数 mmm。在不同应用中,最优的 mmm 通常会不一样,需要通过调参选取。一般 mmm 取为2的幂次时能充分利用矩阵运算操作,如选取32、64、128等。
      (2)如何挑选 mmm 个训练数据。为了避免数据的特定顺序给算法收敛带来影响,一般会在每次遍历训练数据之前,先对所有的数据进行随机排序,然后在每次迭代时按顺序挑选 mmm 个训练数据直至遍历完所有的数据。
      (3)如何选取学习率 α\alphaα。为了加快收敛速率,同时提高求解精度,通常会采用衰减学习率的方案:一开始算法采用较大的学习率,当误差曲线进入平台期后,减小学习速率做更精细的调整。最优的学习速率方案也通常需要调参才能得到。
      综上,通常采用小批量梯度下降法解决训练数据量过大的问题。每次更新模型参数时,只需要处理 mmm 个训练数据即可,其中 mmm 是一个远小于总数据量 MMM 的常数,这样能够大大加快训练过程。

机器学习系列手记(七):优化算法之随机梯度下降法相关推荐

  1. PyTorch(13)---优化器_随机梯度下降法

    优化器:随机梯度下降法 反向传播-梯度下降 import torch import torchvision from torch import nn from torch.nn import Conv ...

  2. 机器学习、深度学习中常用的优化算法详解——梯度下降法、牛顿法、共轭梯度法

    一.梯度下降法 1.总述: 在机器学习中,基于基本的梯度下降法发展了三种梯度下降方法,分别为随机梯度下降法,批量梯度下降法以及小批量梯度下降法. (1)批量梯度下降法(Batch Gradient D ...

  3. ubuntu之路——day8.1 深度学习优化算法之mini-batch梯度下降法

    所谓Mini-batch梯度下降法就是划分训练集和测试集为等分的数个子集,比如原来有500W个样本,将其划分为5000个baby batch,每个子集中有1000个样本,然后每次对一个mini-bat ...

  4. 机器学习 (十) 优化算法利器之梯度下降(Gradient Descend)

    理解:机器学习各种算法的求解最终出来的几乎都是求解最优模型参数的优化问题. 前言 在优化问题领域有些很多优秀思想和算法,从约束条件分类 分为无约束条件的优化和有约束条件的优化问题,有约束条件优化分支里 ...

  5. 机器学习中常用的优化算法:

    http://blog.csdn.net/losteng/article/details/50993911 有知识点和代码的实现过程. 机器学习中常用的优化算法: 1.梯度下降法 2.牛顿法和拟牛顿法 ...

  6. 随机梯度下降matlab,matlab随机梯度下降法

    %是否使用梯度下降法进行局部搜索的控制参数 IfLocalSearch=0; %... 经过 10000 次训练后,traningdm 网络的输出误差与 traningd 训练算法的结果差不多, -9 ...

  7. 机器学习笔记(10)——逻辑回归算法优化之随机梯度下降法

    在上一篇文章<机器学习笔记(9)--深入理解逻辑回归算法及其Python实现>中,详细学习了逻辑回归算法的分类原理和使用梯度下降法来最小化损失函数的数学推导过程,从而拟合出分类函数的参数θ ...

  8. 机器学习-算法背后的理论与优化(part7)--随机梯度下降法概述

    学习笔记,仅供参考,有错必究 随机梯度下降法概述 机器学习场景 算法模型和损失函数 一个有监督学习算法或模型实质上是在拟合一个预测函数侧或者称为假设函数,其形式固定但参数 w ∈ R d w \in ...

  9. 机器学习笔记一——常用优化算法—GD、BGD、SCD、MBGD

    优化算法1 1.梯度下降(Gradient Descent,GD) 2. 批量梯度下降(Batch Gradient Descent,BGD) 3. 随机梯度下降(Stochastic Gradien ...

最新文章

  1. 【每日一算法】杨辉三角 II
  2. 用神经网络逼近一个无穷级数
  3. Codeforces 671E Organizing a Race (贪心、线段树)
  4. python数据分析实战:数据可视化的一些基本操作
  5. 经典永不过时!重温设计模式
  6. 【Servlet】JSP学习-概念和运行原理
  7. IDEA配置Struts框架
  8. MFC通过对话框窗口句柄获得对话框对象指针
  9. 开发10年,全记在这本Java进阶宝典里了!
  10. WordPress百度快速提交插件-加速百度爬虫和收录
  11. L3-1 森森旅游 (30 分)
  12. 鼠标在某个控件上按下,然后离开后弹起,如何捕获这个鼠标弹起事件
  13. jquery中的attr函数attr(name)、attr(key,value)、attr(properties)、attr(key,fn)、removeAttr
  14. junit注释_JUnit注释
  15. xcode-instrument
  16. HTML中Form表单的使用
  17. python中squeeze函数_详解pytorch中squeeze()和unsqueeze()函数介绍
  18. 陀螺仪mpu6050的使用(附带HAL的使用)
  19. 渗透测试面试问题集合(转载自己看,链接在开头)
  20. Gensim训练维基百科词向量模型(含代码)

热门文章

  1. 苹果M1 Max跑分即“封神”,完胜酷睿i7、i9
  2. 青龙面板每日签到-DailyCheckIn版本【图文教程】
  3. 【task01】组队学习——新闻推荐
  4. 导出Excle表的样式调整!!!
  5. JavaScript数组合并的几种方式
  6. matlab如何定义一个序列,EXCEL中如何创建自定义序列 看完你就知道了
  7. 平面设计转影视后期怎么样,影视后期那个行业会比较好?
  8. ffmpeg之封装格式之aac
  9. cad2020 开始_CAD2020这些功能增强,需要软件学习的朋友进来领
  10. pdf提取矢量图,插入visio 或者 word中,保持矢量图特性;编辑pdf图片