本文依旧是吴恩达《深度学习工程师》课程的笔记整理与拓展。

一、优化算法的目的与挑战

优化算法主要是用来加快神经网络的训练速度,使得目标函数快速收敛。

优化问题面临的挑战有病态解、鞍点、梯度爆炸与梯度消失……具体可见参考文献【1】241页到249页。

其中深度学习不太可能陷入局部最优,因为loss函数通常涉及多个维度(w1,w2...)

二、常见的优化算法

1、基本算法

  • 小批量梯度下降即各种变体

  1. 批量梯度下降(Batch gradient descent)

  2. 随机梯度下降(Stochastic gradient descent)

  3. 小批量梯度下降(Mini-batch gradient descent)

 三者关系:

mini-batch size = m,Batch gradient descent

mni-batch size = 1,Stochastic gradient descent

三者各自的特点:

Batch gradient descent:优化目标函数一次迭代的时间太长

Stochastic gradient descent:丧失了向量化加速的优势

Stochastic gradient descent:可以向量化,而且每次迭代不用遍历整个数据集

如何选择mini-batch size:

如果是小的训练集(m<=2000),可以直接使用Batch gradient descent;对于大的训练集,常见的size有64,128,256,512.另外注意考虑CPU/GPU memory。

涉及概念Epoch:

1 epoch即一代就是遍历整个数据集一次。

  • Momentum梯度下降法(Gradient descent with momentum)

相对于通常的梯度下降法,该优化算法采用了dw的指数加权平均数替换原来的dw,使得w更快地指向最优解。

指数加权平均  Exponentially weighted averages

       这里补充一下指数加权平均的概念。课堂上是以伦敦连续很多天的温度为例子,是指第t天的温度

这里的指数加权平均Vt大约是  天的平均温度

2、自适应学习率算法

  • RMSprop

和Momentum算法一样,可以消除梯度下降中的摆动并使用更大的学习率。

  • Adam

结合了Momentum和RMSprop两种算法,是很常用的优化算法。

三、如何选择合适的优化算法

一是考虑自己对算法的熟悉程度, 便于调试超参数;二是Adam从总体来说是最好的选择。详见参考文献【2】、【3】

四、优化策略

许多优化技术并非真正的算法,而是一般化的模板,可以特定地产生算法,或是并入到很多不同的算法中。

  • 正则化输入 Normalizing inputs

        正则化输入可以使得代价函数更圆,从而加快训练速度。

实现方法分为两步:零均值化,归一化方差。即减去均值除以标准差。

  • 批标准化   Batch Normalization

​​​​​​​       批标准化使得每一层的隐藏单元有着标准的均值和方差(不一定分别为0和1),从而加快训练速度。

这两个参数是需要学习的参数。更多内容参看论文。

  • 预训练

待学习

  • 学习率衰减 Learning rate decay

​​​​​​​

两个超参数:decayrate、

【1】《深度学习》https://github.com/exacity/deeplearningbook-chinese

【2】《深度学习总结(五)——各优化算法》https://blog.csdn.net/manong_wxd/article/details/78735439

【3】《深度学习常用优化算法》https://blog.csdn.net/pandamax/article/details/72852960

【深度学习笔记】优化算法( Optimization Algorithm)相关推荐

  1. 深度学习的优化算法——梯度下降和随机梯度下降

    深度学习的优化算法--梯度下降和随机梯度下降 优化算法在深度学习中存在的问题 优化在深度学习中有很多挑战,下面描述其中两个,局部最小值和鞍点. 1.局部最小值 深度学习模型的目标函数可能存在若干极点- ...

  2. 深度学习(五)优化算法--提高神经网络的训练速度和精度

    转自:https://blog.csdn.net/red_stone1/article/details/78348753 上节课我们主要介绍了如何建立一个实用的深度学习神经网络.包括Train/Dev ...

  3. 收藏 | 从SGD到NadaMax,深度学习十种优化算法原理及实现

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨永远在你身后@知乎 来源丨https://zhuanl ...

  4. 深度学习常见优化算法,图解AdaGrad、RMSProp,Adam

    1. AdaGrad AdaGrad算法是梯度下降法的改进算法,其优点是可以自适应学习率.该优化算法在较为平缓处学习速率大,有比较高的学习效率,在陡峭处学习率小,在一定程度上可以避免越过极小值点.在S ...

  5. 「深度学习之优化算法」(六)人工蜂群算法

    1. 人工蜂群算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读) 工蜂群算法(Artificial Bee Colony Algorithm,ABC)是一种模仿蜜蜂采蜜机理而产生的群智能优化算 ...

  6. 动手学深度学习——基础优化算法梯度下降,小批量随机梯度下降

    一.梯度下降算法 挑选一个初始值w0: 重复迭代参数t=1,2,3: 在接下来不断的更新w0,使它接近最优解: 具体来说,法则如下: wt等于wt的上一时刻减去η乘以损失函数关于wt的上一时刻的梯度. ...

  7. 深度学习经典优化算法-公式汇总

    -----整理自DeepLearning chapter8,主要是方便做算法的对比. 1.基础算法 1.1 随机梯度下降(SGD,Stochastic Gradient Descent) 随机梯度下降 ...

  8. 【深度学习】优化算法-Ftrl

    脑图 代码实现 '''DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSEVersion 2, December 2004Copyright (C) 2004 Sam ...

  9. 深度学习加速:算法、编译器、体系结构与硬件设计

    2020-03-28 10:38:33 概述 NeurlPS2019 大会的「Efficient Processing of Deep Neural Network: from Algorithms ...

最新文章

  1. 基于成像激光雷达的鲁棒位置识别
  2. 又一联盟成立:清华、北大、深大、南科大、哈工大等12家在深单位加盟
  3. PDO(PHP Data Object),Mysqli,以及对sql注入等问题的解决
  4. 不止代码:最长上升序列
  5. 组态王opc_组态王和西门子S7300、S7400系列PLC通讯的几种配置方案
  6. 文本序号添加/移除工具
  7. vue render 渲染html,详解vue渲染函数render的使用
  8. CSS详解(一)——CSS基本原理
  9. Android中的 targetsdkversioin
  10. Python的类和继承中的属性变量
  11. 科研人员新电脑装机指南
  12. Win7安装 Rational Rose软件
  13. 基于PHP开发的外卖订餐网站(带源码)
  14. Vue使用createWebHistory 页面刷新变成白页 解决
  15. Navicat 局域网连接数据库
  16. 公链Sui Layer1网络
  17. 华美天气(数据来源:和风天气 API)
  18. linux 下的字体引擎
  19. 指纹识别 python实现_Python语言之指纹识别是目前最成熟的识别技术!Python能分分钟做出一个来!...
  20. 交通灯定时控制系统的设计

热门文章

  1. 3D次世代MAYA游戏角色建模的方法
  2. #芯片# MX25L12835F
  3. 拼多多5.6面试题总结
  4. LTE-5G学习笔记7---5G技术考试必看
  5. java项目问题 The content of element type servlet must match (icon?,servlet-name,display-name?,descrip
  6. Python torch 模块,randperm() 实例源码
  7. 那些年 WooYun 的漏洞
  8. 2021-11-4 kalibr_calibrate_camera 標定Mynteye
  9. 一根RS485线可以并联多少设备
  10. 海龟编程 python绘图工具turtle库的用法 turtle库使用方法大全,画笔设置 画布设置 绘图设置,画笔粗细,画笔颜色, 画笔速度。Python二级必须会的命令(已获取证书)