[DeeplearningAI笔记]改善深层神经网络_优化算法2.1_2.2_mini-batch梯度下降法
来源:互联网 发布:文字转音频软件 编辑:程序博客网 时间:2024/05/16 14:13
觉得有用的话,欢迎一起讨论相互学习~Follow Me
2.1 mini-batch gradient descent mini-batch梯度下降法
我们将训练数据组合到一个大的矩阵中
在对整个数据集进行梯度下降时,你要做的是,你必须训练整个训练集,然后才能进行一步梯度下降法.然后需要重新训练整个数据集,才能进行下一步梯度下降法.所以你在训练整个训练集的一部分时就进行梯度下降,你的算法速度会更快.你可以把训练集分割为小一点的子训练集.这些小的训练集被称为mini-batch.每次训练一个mini-batch后就对模型的权值进行梯度下降的算法叫做mini-batch梯度下降法.
2.2 理解mini-batch梯度下降
在batch梯度下降中,每次迭代你都需要遍历整个训练集,可以预期正常情况下每次迭代的成本函数都会下降.
使用mini-batch梯度下降法时,会发现cost并不是每次迭代都下降的,看到的图像可能是以下这种情况.总体走向朝下但是有更多的噪声.
你需要决定的变量之一就是mini-batch的大小,m就是训练集的大小.
极端情况下,如果m=mini-batch,其实就是batch梯度下降法.在这种极端情况下,假设mini-batch大小为1一次只处理一个,就有了新的算法,叫做随机梯度下降法.
看两个极端情况下,成本函数的优化情况:
假设图中蓝点是最小值点,其中batch梯度下降从某处开始,相对噪声低些,幅度也大一些:
对于随机剃度下降,你只对一个样本进行梯度下降,大部分时候你向着全局最小值靠近,但是有时候你会偏离方向,因为那个样本恰好给你指的方向不正确.因此随机梯度下降法是有很多噪声的.平均来看会向着正确的方向,不过有时候也会方向错误.
因为随机梯度下降法永远不会收敛,而是会一直在最小值附近波动.但它并不会达到最小值并停留于此.
不同的梯度下降算法的利和弊
每次迭代需要处理大量训练样本,该算法主要弊端是特别是在训练样本数量巨大的时候,单次迭代耗时太长,如果训练样本不大,batch梯度下降法运行的很好.
相反如果使用随机梯度下降法,每次只训练一个训练样本,通过减少学习率,噪声也会相应的减少.但是其一大缺点是:你会失去所有向量化带给你的加速.
- [DeeplearningAI笔记]改善深层神经网络_优化算法2.1_2.2_mini-batch梯度下降法
- [DeeplearningAI笔记]改善深层神经网络_优化算法2.6_2.9Momentum/RMSprop/Adam优化算法
- [DeeplearningAI笔记]改善深层神经网络_优化算法2.3_2.5_带修正偏差的指数加权平均
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.10_1.12/梯度消失/梯度爆炸/权重初始化
- [DeeplearningAI笔记]改善深层神经网络_深度学习的实用层面1.9_归一化normalization
- [DeeplearningAI笔记]改善深层神经网络1.4_1.8深度学习实用层面_正则化Regularization与改善过拟合
- [DeeplearningAI笔记]改善深层神经网络1.1_1.3深度学习实用层面_偏差/方差/欠拟合/过拟合/训练集/验证集/测试集
- 优化算法-梯度下降法
- DeepLearing学习笔记-改善深层神经网络(第三周- 将batch-norm拟合进神经网络)
- 梯度下降优化算法
- 梯度下降优化算法
- 各种神经网络优化算法:从梯度下降到Adam方法
- 神经网络梯度下降优化算法及初始化方法小结
- 神经网络优化算法之不一样的梯度下降
- [DeeplearningAI笔记]Batch NormalizationBN算法Batch归一化_02_3.4-3.7
- 机器学习_最优化算法_梯度下降
- DeepLearing学习笔记-改善深层神经网络(第一周作业-3-梯度校验)
- BP神经网络梯度下降算法
- arraylist
- 社交网络图挖掘1--将社交网络看作图及其聚类
- 求最大子矩阵的大小
- Android多语言以及APP内切换语言的实现
- 突破微信小程序模板消息的推送限制
- [DeeplearningAI笔记]改善深层神经网络_优化算法2.1_2.2_mini-batch梯度下降法
- indea创建部署gralde项目
- 笨方法学习Python-习题25: 更多更多的练习
- apply()
- 压缩感知重构算法之广义正交匹配追踪(gOMP)
- mycat数据库中间件
- InterruptedException详解
- linux使用sed命令
- 线程中断,interrupt(),interrupted,isInterrupted()