【深度学习笔记】优化算法( Optimization Algorithm)
本文依旧是吴恩达《深度学习工程师》课程的笔记整理与拓展。
一、优化算法的目的与挑战
优化算法主要是用来加快神经网络的训练速度,使得目标函数快速收敛。
优化问题面临的挑战有病态解、鞍点、梯度爆炸与梯度消失……具体可见参考文献【1】241页到249页。
其中深度学习不太可能陷入局部最优,因为loss函数通常涉及多个维度(w1,w2...)
二、常见的优化算法
1、基本算法
小批量梯度下降即各种变体
批量梯度下降(Batch gradient descent)
随机梯度下降(Stochastic gradient descent)
- 小批量梯度下降(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.局部最小值 深度学习模型的目标函数可能存在若干极点- ...
- 深度学习(五)优化算法--提高神经网络的训练速度和精度
转自:https://blog.csdn.net/red_stone1/article/details/78348753 上节课我们主要介绍了如何建立一个实用的深度学习神经网络.包括Train/Dev ...
- 收藏 | 从SGD到NadaMax,深度学习十种优化算法原理及实现
点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨永远在你身后@知乎 来源丨https://zhuanl ...
- 深度学习常见优化算法,图解AdaGrad、RMSProp,Adam
1. AdaGrad AdaGrad算法是梯度下降法的改进算法,其优点是可以自适应学习率.该优化算法在较为平缓处学习速率大,有比较高的学习效率,在陡峭处学习率小,在一定程度上可以避免越过极小值点.在S ...
- 「深度学习之优化算法」(六)人工蜂群算法
1. 人工蜂群算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读) 工蜂群算法(Artificial Bee Colony Algorithm,ABC)是一种模仿蜜蜂采蜜机理而产生的群智能优化算 ...
- 动手学深度学习——基础优化算法梯度下降,小批量随机梯度下降
一.梯度下降算法 挑选一个初始值w0: 重复迭代参数t=1,2,3: 在接下来不断的更新w0,使它接近最优解: 具体来说,法则如下: wt等于wt的上一时刻减去η乘以损失函数关于wt的上一时刻的梯度. ...
- 深度学习经典优化算法-公式汇总
-----整理自DeepLearning chapter8,主要是方便做算法的对比. 1.基础算法 1.1 随机梯度下降(SGD,Stochastic Gradient Descent) 随机梯度下降 ...
- 【深度学习】优化算法-Ftrl
脑图 代码实现 '''DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSEVersion 2, December 2004Copyright (C) 2004 Sam ...
- 深度学习加速:算法、编译器、体系结构与硬件设计
2020-03-28 10:38:33 概述 NeurlPS2019 大会的「Efficient Processing of Deep Neural Network: from Algorithms ...
最新文章
- 基于成像激光雷达的鲁棒位置识别
- 又一联盟成立:清华、北大、深大、南科大、哈工大等12家在深单位加盟
- PDO(PHP Data Object),Mysqli,以及对sql注入等问题的解决
- 不止代码:最长上升序列
- 组态王opc_组态王和西门子S7300、S7400系列PLC通讯的几种配置方案
- 文本序号添加/移除工具
- vue render 渲染html,详解vue渲染函数render的使用
- CSS详解(一)——CSS基本原理
- Android中的 targetsdkversioin
- Python的类和继承中的属性变量
- 科研人员新电脑装机指南
- Win7安装 Rational Rose软件
- 基于PHP开发的外卖订餐网站(带源码)
- Vue使用createWebHistory 页面刷新变成白页 解决
- Navicat 局域网连接数据库
- 公链Sui Layer1网络
- 华美天气(数据来源:和风天气 API)
- linux 下的字体引擎
- 指纹识别 python实现_Python语言之指纹识别是目前最成熟的识别技术!Python能分分钟做出一个来!...
- 交通灯定时控制系统的设计
热门文章
- 3D次世代MAYA游戏角色建模的方法
- #芯片# MX25L12835F
- 拼多多5.6面试题总结
- LTE-5G学习笔记7---5G技术考试必看
- java项目问题 The content of element type servlet must match (icon?,servlet-name,display-name?,descrip
- Python torch 模块,randperm() 实例源码
- 那些年 WooYun 的漏洞
- 2021-11-4 kalibr_calibrate_camera 標定Mynteye
- 一根RS485线可以并联多少设备
- 海龟编程 python绘图工具turtle库的用法 turtle库使用方法大全,画笔设置 画布设置 绘图设置,画笔粗细,画笔颜色, 画笔速度。Python二级必须会的命令(已获取证书)