随机梯度下降法(Stochastic Gradient Descent)和批量梯度下降法(Batch Gradient Descent )总结
来源:互联网 发布:万网解析设置端口 编辑:程序博客网 时间:2024/06/05 09:54
公式来源于:http://blog.csdn.net/lilyth_lilyth/article/details/8973972
参考知乎:https://zhuanlan.zhihu.com/p/25765735
梯度下降法常用于最小化风险函数或者损失函数,分为随机梯度下降(Stochastic Gradient Descent)和 批量梯度下降(Batch Gradient Descent )。除此之外,还有梯度上升法(Gradient Ascent),应用于极大似然估计,与下降法区别就是朝着梯度上升还是下降的方向迭代。
设hθ(x)是预测值,其中θ是模型的参数,J(θ)是损失函数,对于最小化损失函数问题,采用梯度下降法来求解。
1、批量梯度下降法:
假设J(θ)是平方损失函数,其中m是样本个数,i表示第i个样本,yi是真实值
J(θ)对每一个θj求偏导,j指的是第j个参数
按照每个参数θj的负梯度方向来更新
批量梯度下降得到一个全局最优解,但是每迭代一步,都要用到训练集所有的数据;
如果m很大,迭代速度很慢。所以,这就引入了随机梯度下降的方法。
收敛方向大概是这样(等高线是损失函数):
2、随机梯度下降法:
每次迭代只选取一个样本来更新θj
收敛方向大概是这样(哈哈哈哈……)
总结与比较:
1、收敛速度:随机梯度下降收敛速度比批量梯度下降慢,因为随机梯度下降噪音较多,并不是每次迭代都朝着整体最优化方向;
2、计算速度:随机梯度下降计算速度比批量梯度快,因为不需要用到所有样本就能达到最优解。
3、最优解:
批量梯度下降是min所有训练样本的损失函数,使得最终求解的是全局的最优解,即求解的参数是使得风险函数最小。随机梯度下降是min每次选取的样本的损失函数,虽然每次迭代得到的损失函数并不一定朝着全局最优方向, 但是整体方向是逼近全局最优解的,最终的结果往往是在全局最优解附近。
当损失函数(目标函数)是凸函数时,求得的是全局最优解。
补充:除此之外,还有个min-batch 小批量梯度下降法MBGD
意思就是在以上两种方法之间折中,每次用到一个batch的样本,根据不同的任务,选取batch中样本的个数。
三种梯度下降方法的总结
1.批梯度下降每次更新使用了所有的训练数据,最小化损失函数,如果只有一个极小值,那么批梯度下降是考虑了训练集所有数据,是朝着最小值迭代运动的,但是缺点是如果样本值很大的话,更新速度会很慢。
2.随机梯度下降在每次更新的时候,只考虑了一个样本点,这样会大大加快训练数据,也恰好是批梯度下降的缺点,但是有可能由于训练数据的噪声点较多,那么每一次利用噪声点进行更新的过程中,就不一定是朝着极小值方向更新,但是由于更新多轮,整体方向还是大致朝着极小值方向更新,又提高了速度。
3.小批量梯度下降法是为了解决批梯度下降法的训练速度慢,以及随机梯度下降法的准确性综合而来,但是这里注意,不同问题的batch是不一样的,听师兄跟我说,我们nlp的parser训练部分batch一般就设置为10000,那么为什么是10000呢,我觉得这就和每一个问题中神经网络需要设置多少层,没有一个人能够准确答出,只能通过实验结果来进行超参数的调整。
- 随机梯度下降法(Stochastic Gradient Descent)和批量梯度下降法(Batch Gradient Descent )总结
- batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )
- batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )
- batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )
- 【Machine Learning实验1】batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
- 【Machine Learning实验1】batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比
- batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降) C++版
- 【Machine Learning实验1】batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
- 使用grep搜索代码的几个示例
- CocoaPods制作篇(1)
- easyui子窗口(window)中关闭当前窗口,子页面关闭当前tab
- mysql一个字段多个值关联另一张表
- 基于vue.js 2.0,不使用webpack的nodejs服务,只在浏览器上单独使用在Element UI的Tree树形控件
- 随机梯度下降法(Stochastic Gradient Descent)和批量梯度下降法(Batch Gradient Descent )总结
- okHttpUtils(hongyang)的配置及使用(网络框架)
- 基于 vue-cli 的 Vue js 单页应用项目模板
- Java集合
- MATLAB/Simulink的Arduino支持包安装教程
- 死锁发生的条件,如何避免死锁
- EditText软键盘的弹出与关闭
- Linux学习之Mysql安装
- LAMP安装