Stochastic Gradient Descent vs Batch Gradient Descent vs Mini-batch Gradient Descent
来源:互联网 发布:淘宝天机怎么加入 编辑:程序博客网 时间:2024/05/02 22:46
梯度下降是最小化风险函数/损失函数的一种经典常见的方法,下面总结下三种梯度下降算法异同。
1、 批量梯度下降算法(Batch gradient descent)
以线性回归为例,损失函数为
BGD算法核心思想为每次迭代用所有的训练样本来更新Theta,这对于训练样本数m很大的情况是很耗时的。
BGD算法表示为
或者表示为
其中X(m*n)为训练样本矩阵,α为学习速率,m为样本数,y(m*1)为样本结果标签向量,Theta(n*1)为参数向量
其中损失函数 J 对Theta的导数为
for iter = 1:num_iterstheta=theta-alpha/m*X'*(X*theta-y);end
迭代num_iters次的BGD如上述代码所示
BGD大体执行过程
2、随机梯度下降算法(Stochastic Gradient Descent)
SGD在大规模训练集上会更高效
SGD的损失函数也与BGD有所不同
SGD算法在于每次只去拟合一个训练样本,这使得在梯度下降过程中不需去用所有训练样本来更新Theta。BGD每次迭代都会朝着最优解逼近,而SGD由于噪音比BGD多,多以SGD并不是每次迭代都朝着最优解逼近,但大体方向是朝着最优解,SGD大约要遍历1-10次数据次来获取最优解。
SGD算法大体分两步
SGD算法大体执行过程
其中学习速率α一般设置为常数,但我们也可以将α随迭代次数而减小,这样更有利于我们函数收敛向最优解
小批量梯度下降算法(Mini-batch Gradient Descent)
MBGD有时候甚至比SGD更高效。
MBGD不像BGD每次用m(所有训练样本数)个examples去训练,也不像SGD每次用一个example。MBGD使用中间值b个examples
经典的b取值大约在2-100
例如 b=10,m=1000
此处MBGD每次只用10个examples来训练。
参考自Andrew NG 在coursera的machine learning week10
参考链接
1 0
- gradient descent vs (mini-batch) stochastic gradient descent
- Stochastic Gradient Descent vs Batch Gradient Descent vs Mini-batch Gradient Descent
- Batch Gradient Descent and Stochastic Gradient Descent
- Stochastic gradient descent与Batch gradient descent
- Mini-Batch Gradient Descent
- BGD(Batch Gradient Descent), SGD (Stochastic Gradient Descent), MBGD (Mini-Batch Gradient Descent)
- batch gradient descent和stochastic/incremental gradient descent
- Batch & Stochatic Gradient Descent
- batch&stochasic gradient descent
- Batch Gradient Descent(python)
- Batch Gradient Descent
- Batch vs Stochastic Gradient
- Mini-Batch Gradient Descent介绍以及如何决定Batch Size
- batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )
- batch gradient descent(批量梯度下降) 和 stochastic gradient descent(随机梯度下降)
- 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )
- 【机器学习学习过程中的笔记1——Stochastic gradient descent 和 Batch gradient descent 】
- jabsorb
- java.lang.IllegalArgumentException: node to traverse cannot be null!
- CSDN-markdown编辑器 指南
- Python 相关包安装pip
- PAT乙级-1003. 我要通过!
- Stochastic Gradient Descent vs Batch Gradient Descent vs Mini-batch Gradient Descent
- BootStrap--CSS组件--大屏幕展播
- String,StringBuffer,StringBuilder三者区别
- 常见的分布式文件系统
- C#微信开发
- CentOS /RHEL 系统更新安全补丁的方法
- 安装操作系统
- 逻辑思维题目及答案(一)
- 监听和拦截android系统返回键