论文阅读--On optimization methods for deep learning

深度学习的优化方法研究

论文信息:Le Q V, Ngiam J, Coates A, et al. On optimization methods for deep learning[C]//Proceedings of the 28th International Conference on Machine Learning, ICML 2011, Bellevue, Washington, USA, June 28 - July 2, 2011. DBLP, 2012.
本文提出时间较早,GPU和集群运算的并行计算还暂不普及
创新点:

  • 作者基于当前SGD的局限性和LBFGS和CG方法的优势,对各种常见优化算法进行了比较,找到不同任务的理论上最适应的优化算法极其适应的原因。
  • L-BFGS对于低维问题,尤其是卷积模型,L-BFGS具有很强的竞争力,有时甚至优于SGDs/CG。
  • 对于高维问题,CG更具竞争力,通常优于L-BFGS和SGDs。
  • SGDs使用大型小批处理和行搜索可以提高性能。

Abstract && Introduction

SGD 特点
优点:实现简单,当训练样本足够多时优化速度非常快。
缺点:
1.需要人为调整很多参数,比如学习率,收敛准则等。如果一个人不知道手头的任务,很难找到一个好的学习率或一个好的收敛准则。
2.它是序列的方法,不利于GPU并行或分布式处理。
3.针对SGD的局限性,目前现有的有限内存BFG(L-BFGS)和共轭梯度(CG)线搜索方法,可以极大简化和加快预训练深算法的过程

批处理方法,如有限内存BFG(L-BFGS)或共轭梯度(CG),具有线搜索过程的存在,通常训练起来更稳定,并且更容易检查收敛性。这些方法还通过在GPU上计算梯度和/或跨机器分布计算来享受并行性。

L-BFGS和CG需要计算整个数据集的梯度来进行更新,在数据集的一小部分上计算梯度的小批量训练很好地解决了这一弱点。当数据集较大时,小批量L-BFGS/CG速度很快。

本文分别在自编码器和稀疏自编码器训练上实证研究现成的重点比较L-BFGS、CG和SGDs优化算法的利弊。

概念介绍

  • SGD 随机梯度下降
    批量梯度下降(Batch Gradient Descent):它是指在每一次迭代时使用所有样本来进行梯度的更新
    随机梯度下降(Stochastic Gradient Descent):随机梯度下降是在每次迭代时使用一个样本来对参数进行更新
    小批量梯度下降(Mini-Batch Gradient Descent):使用一个以上而又不是全部的训练样本。
      梯度下降法的计算过程就是沿梯度下降的方向求解极小值,也可以沿梯度上升方向求解最大值。 假设模型参数为 θ \theta θ ,损失函数为 J ( θ ) J\left(\theta\right) J(θ) ,损失函数 J ( θ ) J\left(\theta\right) J(θ)关于参数 θ \theta θ 的偏导数,也就是梯度为 ▽ θ J ( θ ) \triangledown _{\theta}J\left ( \theta \right ) θJ(θ) ,学习率为 α \alpha α ,则使用梯度下降法更新参数为:
    θ t + 1 = θ t − α ⋅ ∇ θ J ( θ ) \theta_{t+1}=\theta_t-\alpha \cdot \nabla_\theta J(\theta) θt+1=θtαθJ(θ)

  • L-BFGS 有限内存BFGS
      L-BFGS由牛顿法发展而来,是为了提高计算效率而提出的近似计算方法,在施行牛顿法的过程中需要计算海森矩阵 H H H的逆 H − 1 H^{-1} H1,计算矩阵逆工作量巨大,所以采用符合拟牛顿条件的矩阵代替或进行计算,这种方法称为拟牛顿法,其代表性方法有DFP算法和BFGS算法,L-BFGS在BFGS的基础上进一步在有限的内存下进行近似而提高效率的算法。BFGS算法可以只使用 B 0 B_0 B0表达,那么L-BFGS在这个基础上,再一次进行近似,就是只用有限的内存来保存近m个向量的值来进行计算。

  • CG 共轭梯度
      使用梯度信息来获得共轭的搜索方向。而这种通过梯度信息来实现共轭方向法的算法被我们称为共轭梯度法(conjugate gradient method)
    最优化方法复习笔记–共轭梯度法

  • Autoencoders 自编码器
      Auto-Encoder,中文称作自编码器,是一种无监督式学习模型。它基于反向传播算法与最优化方法(如梯度下降法),利用输入数据
    X X X 本身作为监督,来指导神经网络尝试学习一个映射关系,从而得到一个重构输出 X R X^R XR
      Auto-Encoder可以学习到输入数据的隐含特征,这称为编码(coding),同时用学习到的新特征可以重构出原始输入数据,称之为解码(decoding)。从直观上来看,自动编码器可以用于特征降维,类似主成分分析PCA,但是其相比PCA其性能更强,这是由于神经网络模型可以提取更有效的新特征。
    自编码器
    在这里插入图片描述

  • Map-Reduce
    Map阶段:Map阶段的主要作用是"分",即把复杂的任务分解为若干个"简单的任务"来并行处理。Map阶段的这些任务可以并行计算,彼此间没有依赖关系。
    Reduce阶段:Reduce阶段的主要作用是"合",即对map阶段的结果进行全局汇总。

  • MNIST数据集(Mixed National Institute of Standards and Technology database)是美国国家标准与技术研究院收集整理的大型手写数字数据集,包含了60,000个样本的训练集以及10,000个样本的测试集。

结论

  作者通过实验得出的结论是:不同的优化算法有不同的优缺点,适合不同的场合,比如LBFGS算法在参数的维度比较低(一般指小于10000维)时的效果要比SGD(随机梯度下降)和CG(共轭梯度下降)效果好,特别是带有convolution的模型。

  而针对高维的参数问题,CG的效果要比另2种好。也就是说一般情况下,SGD的效果要差一些,这种情况在使用GPU加速时情况一样,即在GPU上使用LBFGS和CG时,优化速度明显加快,而SGD算法优化速度提高很小。

  在单机器训练上,LBFGS的优势主要是利用参数之间的2阶近视特性来加速优化,而CG则得得益于参数之间的共轭信息,需要计算Hessian矩阵。不过当使用一个大的minibatch且采用线搜索的话,SGD的优化性能也会提高。

  在单机器训练上比较SGD,LBFGS,CG三种算法的优化性能,当针对Autoencoder模型,SGD效果最差。这主要原因是LBFGS和CG能够使用大的minibatch数据来估算每个节点的期望激发值,这个值是可以用来约束该节点的稀疏特性的,而SGD需要去估计噪声信息。

  CG和L-BFG也是可以更好地利用GPU的方法,因为它们偏好更大的小批量。此外,如果使用平铺(局部连接)网络或具有相对少量参数的其他网络,则可以在Map-Reduce框架中计算梯度,并使用L-BFGS加速训练

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/97030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年上半年软考网工选择题易错总结

1.固态硬盘的存储介质是( )。 A.光盘 B.闪存 C.软盘 D.磁盘 答案:B 解析: 光盘CD-ROM和软盘是塑料的,磁盘的介质是磁性金属圆盘(附着铝合金),固态硬盘采用的存储介质是flash(闪存…

【Unity】RenderFeature笔记

【Unity】RenderFeature笔记 RenderFeature是在urp中添加的额外渲染pass,并可以将这个pass插入到渲染列队中的任意位置。内置渲染管线中Graphics 的功能需要在RenderFeature里实现,常见的如DrawMesh和Blit ​ 可以实现的效果包括但不限于 后处理,可以编写…

大数据软件项目的应用行业

大数据软件项目可以应用于各种不同的行业,以帮助组织更好地理解和利用其数据资产,从而做出更明智的决策、提高效率并推动创新。以下是一些主要行业,大数据软件项目可以发挥重要作用的示例,希望对大家有所帮助。北京木奇移动技术有…

ping使用

使用shell ping一个网段 #!/bin/shfor ib in $(seq 1 254); doip"192.168.1.$ib"(if ping -c3 "$ip" >> 1.txt; thenecho "$ip is alive"fi) &done wait在每次循环的最后,使用 & 将子 shell 放入后台执行&#xff0c…

LangChain 摘要 和问答示例

在Azure上的OpenAI端点 注意 OpenAI key 可以用微软 用例【1. 嵌入 ,2. 问答】 1. import os import openai from langchain.embeddings import OpenAIEmbeddings os.environ["OPENAI_API_KEY"] "****" # Azure 的密钥 os.environ["OP…

蓝桥杯每日一题2023.10.7

跑步锻炼 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 简单枚举&#xff0c;对于2的情况特判即可 #include<bits/stdc.h> using namespace std; int num, ans, flag; int m[13] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool is_ren(int n) {if((n %…

C++20中的关键字

文章目录 前言关键字列表关键字含义总结 前言 源于上一篇中提到了 decltype是一个关键字&#xff0c;所以去查了现有的关键字列表&#xff0c;其实我对C/C的关键字还停留在上世纪大概30多个的时代&#xff0c;虽然知道C加了 auto、constexpr 等关键字&#xff0c;但查询过后才…

计算机网络(三):数据链路层

参考引用 计算机网络微课堂-湖科大教书匠计算机网络&#xff08;第7版&#xff09;-谢希仁 1. 数据链路层概述 1.1 数据链路层在网络体系结构中所处的地位 链路 (Link) 就是从一个结点到相邻结点的一段物理线路&#xff0c;而中间没有任何其他的交换结点 数据链路 (Data Link)…

3.primitive主数据类型和引用 认识变量

3.1 声明变量 Java注重类型。它不会让你做出把长颈鹿类型变量装进兔子类型变量中这种诡异又危险的举动——如果有人对长颈鹿调用“跳跃”这个方法会发生什么样的悲剧&#xff1f;并且它也不会让你将浮点数类型变量放进整数类型的变量中&#xff0c;除非你先跟编译器确认过数字…

【状态估计】将Transformer和LSTM与EM算法结合到卡尔曼滤波器中,用于状态估计(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

JavaWeb:上传文件

1.建普通maven项目&#xff0c;或者maven项目&#xff0c;这里以普通maven为例&#xff0c;区别的jar包的导入方式啦 到中央仓库下载哦 2.结构 3.写fileservlet public class FileServlet extends HttpServlet {Overrideprotected void doPost(HttpServletRequest req, HttpSe…

LVS+Keepalived 高可用集群负载均衡

一.keepalived介绍 1.1.Keepalived实现原理 由多台路由器组成一个热备组&#xff0c;通过共用的虚拟IP地址对外提供服务。 每个热备组内同时只有一台主路由器提供服务&#xff0c;其他路由器处于冗余状态。 若当前在线的路由器失效&#xff0c;则其他路由器会根据设置…

三相PWM整流器滞环电流控制Simulink仿真模型

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

No168.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

【C++面向对象侯捷下】4. pointer-like classes,关于智能指针 | 5. function-like classes,所谓仿函数

文章目录 4. pointer-like classes,关于智能指针pointer-like classes,关于智能指针 shared_ptrpointer-like classes,关于迭代器5. function-like classes&#xff0c;所谓仿函数【不懂&#xff0c;跳过】 4. pointer-like classes,关于智能指针 pointer-like classes,关于智…

【机器学习】决策树原理及scikit-learn使用

文章目录 决策树详解ID3 算法C4.5算法CART 算法 scikit-learn使用分类树剪枝参数重要属性和接口 回归树重要参数&#xff0c;属性及接口交叉验证代码示例 一维回归的图像绘制 决策树详解 决策树&#xff08;Decision Tree&#xff09;是一种非参数的有监督学习方法&#xff0c;…

Django 前端模板显示换行符、日期格式

linebreaksbr 显示换行符 <td>{{ data.sku_list|default:"无"|linebreaksbr }}</td> date:"Y年m月d日 H:i" 设置日期格式 <td>{{ data.submit_time|date:"Y年m月d日 H:i" }}</td> 其他语法 forloop 获取循环的索引 …

【audio】alsa pcm音频路径

文章目录 AML方案音频路径分析dump alsa pcm各个音频路径的原始音频流数据 AML方案音频路径分析 一个Audio Patch用来表示一个或多个source端到一个或多个sink端。这个是从代码的注释翻译来的&#xff0c;大家可以把它比作大坝&#xff0c;可以有好几个入水口和出水口&#xf…

【新书推荐】当 Python 遇到 ChatGPT —— 自动化办公落地

文章目录 当 Python 遇到 ChatGPT&#xff1a;一种强大的组合1. 文本生成2. 自动翻译3. 对话生成4. 情感分析 新书推荐《Python自动化办公应用大全&#xff08;ChatGPT版&#xff09;&#xff1a;从零开始教编程小白一键搞定烦琐工作&#xff08;上下册&#xff09;》前言内容简…

Neo4j深度学习

Neo4j的简介 Neo4j是用Java实现的开源NoSQL图数据库。从2003年开始开发&#xff0c;2007年正式发布第一版&#xff0c;其源码托管于GitHtb。Neo4j作为图数据库中的代表产品&#xff0c;已经在众多的行业项目中进行了应用&#xff0c;如&#xff1a;网络管理、软件分析、组织和…