经典梯度下降、随机梯度下降、批量梯度下降是个啥?
假设某任务损失函数为 L L L,模型参数为 θ \theta θ,我们希望找到使损失函数最小的模型参数
θ ∗ = a r g min L ( θ ) \theta^* = arg \min L(\theta) θ∗=argminL(θ)
经典的梯度下降方法采用平均所有数据的平均损失来近似目标优化函数
L ( θ ) = 1 M ∑ i = 1 M L ( f ( x i , θ ) , y i ) L(\theta) = \frac{1}{M}\sum_{i=1}^{M}L(f(x_i, \theta), y_i) L(θ)=M1i=1∑ML(f(xi,θ),yi)
M M M表示样本个数,求梯度得
▽ L ( θ ) = 1 M ∑ i = 1 M ▽ L ( f ( x i , θ ) , y i ) \triangledown L(\theta) = \frac{1}{M}\sum_{i=1}^{M} \triangledown L(f(x_i, \theta), y_i) ▽L(θ)=M1i=1∑M▽L(f(xi,θ),yi)
参数更新公式为
θ t + 1 = θ t − α ▽ L ( θ t ) \theta_{t+1} = \theta_t - \alpha \triangledown L(\theta_t) θt+1=θt−α▽L(θt)
α \alpha α为学习率,经典的梯度下降算法在更新参数时需要遍历所有的数据,当样本数量很大时,计算量很大,更新耗时严重,实际应用场景下,基本不可行。
因此,有人提出了随机梯度下降算法SGD,用1个样本来进行参数更新
L ( θ ) = L ( f ( x i , θ ) , y i ) L(\theta) = L(f(x_i, \theta), y_i) L(θ)=L(f(xi,θ),yi)
▽ L ( θ ) = ▽ L ( f ( x i , θ ) , y i ) \triangledown L(\theta) = \triangledown L(f(x_i, \theta), y_i) ▽L(θ)=▽L(f(xi,θ),yi)
单个样本更新参数大大加快了收敛速度,适用于源源不断的在线更新,但是容易陷入到局部最优解中。因此为了折衷这两种方法,使迭代更加稳定,同时充分利用高度优化的矩阵计算,实际应用中会采用小批量梯度下降,每次处理 m ( m < < M ) m(m << M) m(m<<M)个样本,目标函数及其梯度为
L ( θ ) = 1 m ∑ i = 1 m L ( f ( x i , θ ) , y i ) L(\theta) = \frac{1}{m}\sum_{i=1}^{m}L(f(x_i, \theta), y_i) L(θ)=m1i=1∑mL(f(xi,θ),yi)
▽ L ( θ ) = 1 m ∑ i = 1 m ▽ L ( f ( x i , θ ) , y i ) \triangledown L(\theta) = \frac{1}{m}\sum_{i=1}^{m} \triangledown L(f(x_i, \theta), y_i) ▽L(θ)=m1i=1∑m▽L(f(xi,θ),yi)
- 参数m如何选取?
在不同应用中,最优的 m 通常会不一样,需要通过调参选取。一般 m 取为2的幂次时能充分利用矩阵运算操作,如选取32、64、128等。 - 如何挑选m哥数据?
一般会在每次遍历训练数据之前,先对所有的数据进行随机排序,来避免数据的特定顺序给算法收敛带来影响。然后在每次迭代时按顺序挑选 m 个训练数据直至遍历完所有的数据。 - 学习率 α \alpha α如何确定?
衰减方案。开始用大的学习率,当误差曲线趋于平缓时减小学习率进行精调。
欢迎关注微信公众号(算法工程师面试那些事儿),本公众号聚焦于算法工程师面试,期待和大家一起刷leecode,刷机器学习、深度学习面试题等,共勉~
经典梯度下降、随机梯度下降、批量梯度下降是个啥?相关推荐
- 批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解
批量梯度下降(BGD).随机梯度下降(SGD)以及小批量梯度下降(MBGD)的理解 </h1><div class="clear"></div> ...
- 三种梯度下降的方式:批量梯度下降、小批量梯度下降、随机梯度下降
在机器学习领域中,梯度下降的方式有三种,分别是:批量梯度下降法BGD.随机梯度下降法SGD.小批量梯度下降法MBGD,并且都有不同的优缺点. 下面我们以线性回归算法(也可以是别的算法,只是损失函数(目 ...
- 1. 批量梯度下降法BGD 2. 随机梯度下降法SGD 3. 小批量梯度下降法MBGD
排版也是醉了见原文:http://www.cnblogs.com/maybe2030/p/5089753.html 在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练.其实,常用的梯度 ...
- 局部最优、梯度消失、鞍点、海森矩阵(Hessian Matric)、批梯度下降算法(btach批梯度下降法BGD、小批量梯度下降法Mini-Batch GD、随机梯度下降法SGD)
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) BATCH_SIZE大小设置对训练耗时的影响:1.如果当设置B ...
- 【深度学习】——梯度下降优化算法(批量梯度下降、随机梯度下降、小批量梯度下降、Momentum、Adam)
目录 梯度 梯度下降 常用的梯度下降算法(BGD,SGD,MBGD) 梯度下降的详细算法 算法过程 批量梯度下降法(Batch Gradient Descent) 随机梯度下降法(Stochastic ...
- 梯度下降:全梯度下降算法(FG)、随机梯度下降算法(SG)、小批量梯度下降算法(mini-batch)、随机平均梯度下降算法(SAG)。梯度下降法算法比较和进一步优化。
日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 2.2 梯度下降(Gradient Descent) 2.2. ...
- 批量梯度下降(BGD)、随机梯度下降(SGD)以及小批量梯度下降(MBGD)及 batch、epoch、iteration
先介绍一下梯度下降:梯度下降是一种用于机器学习训练参数的一种优化方法.对损失函数进行梯度下降,"梯度"指误差梯度或误差斜率,"下降"指沿着误差斜率移动到误差较小 ...
- 3. 机器学习中为什么需要梯度下降?梯度下降算法缺点?_浅谈随机梯度下降amp;小批量梯度下降...
机器学习三要素 上次的报告中,我们介绍了一种用于求解模型参数的迭代算法--梯度下降法.首先需要明确一点,即"梯度下降算法"在一个完整的统计学习流程中,属于什么?根据<统计学习 ...
- Lesson 4.34.4 梯度下降(Gradient Descent)基本原理与手动实现随机梯度下降与小批量梯度下降
Lesson 4.3 梯度下降(Gradient Descent)基本原理与手动实现 在上一小节中,我们已经成功的构建了逻辑回归的损失函数,但由于逻辑回归模型本身的特殊性,我们在构造损失函数时无法采用 ...
- 常见优化算法批量梯度下降、小批量梯度下降、随机梯度下降的对比
在机器学习领域中,梯度下降的方式有三种,分别是:批量梯度下降法BGD.随机梯度下降法SGD.小批量梯度下降法MBGD,并且都有不同的优缺点. 下面我们以线性回归算法(也可以是别的算法,只是损失函数(目 ...
最新文章
- 算法提高课-搜索-DFS之连通性模型-AcWing 1112. 迷宫:dfs和bfs两种解法
- 认识JVM--第一篇-对象分配回收算法
- 给vs2012轻松换肤
- Android Studio修改编译JDK
- Java常见的几种设计模式
- I/O的一些简单操作
- 与Adobe Reader安装有关的报错处理
- 牛客网--华为机试在线训练1:字符串最后一个单词的长度
- 原型模式(Prototype)C++实现
- 代码雨代码源复制_黑色帝国中代码雨如何实现?用python就可以了
- python dbf转excel_如何在python中将dbf转换为csv?
- Linux平台Libyuv使用指南
- 科学计算机求年金,科普如何科学使用普通计算器(CPA考试小技巧)
- 8、MySQL Workbench导入数据库提示Failed to open required defaults file:xxx.cnf
- linux6.5关闭防火墙命令,centos关闭防火墙的方法
- [OpenGL] Bloom自发光效果
- 【 Ubuntu 】clang 编译器
- [软件工程]交换编程方法的深入讨论
- opencv人体识别技术汇总
- Axure RP9教程 中继器说明
热门文章
- 在同时使用label和input标签下下label绑定click事件执行两次的问题
- 软件分类(自由软件、开放源代码软件、公共软件......)
- Vue实战中的一些小魔法
- Atypical Games推出《辐射岛》和《辐射之城》的后续游戏
- 二级公立医院绩效考核病案首页上报系统
- 有关shape文件的说明
- 【JAVA长虹键法】第七式 建造者模式(23种设计模式)
- 揭秘跨境电商亚马逊测评的培训骗局!千万不要上当受骗!
- 向上的路,从来都不好走(好文力荐)
- CC2530 + RFX2401C Zigbee模块