除了最小二乘法求解损失函数之外,梯度下降法是另一种求解损失函数的方法。
梯度下降的直观理解,先用一个例子说明:
假设找凸函数y=x**2的最小值,通过迭代的方式,假设x=2时,y=4,x=0.8时,y=0.64,,,总之每一步迭代,都是Y都是一个下降的过程。直到f(x)<1e-10位置,如下图所示,整个求解过程是一个下降的过程。(蓝色点为迭代过程中的点)

那么问题来了,x如何取值让y不断变小呢,迭代公式又是什么呢?请看推倒过程:

梯度下降法的求解目标

求解损失函数/目标函数

对上式求导,对上面的式子对单个求解,再还原

批量梯度下降算法(BGD)—(batch一批)

由上面的式子我们得到,
得到的对θ进行一次计算,我们再次还原回去,一次对θ进行多次迭代,就是批量梯度下降算法(BGD),推倒过程如下:

随机梯度下降算法(SGD)—(stochastic随机的)

缺点是:有可能产生波动,一次更新一次。


注:随机是说可以把样本打乱,这样显示出了随机性。

SGD和BGD两个算法比较:

1 SGD速度比BGD快(迭代次数少)
2 SGD在某些情况下(全局存在多个相对最优解/J(θ)不是一个二次),SGD有可能跳
出某些小的局部最优解,所以不会比BGD坏

3 BGD一定能够得到一个局部最优解(在线性回归模型中一定是得到一个全局最优
解),SGD由于随机性的存在可能导致最终结果比BGD的差

沿着负梯度方向迭代,更新后的θ使J(θ)更小

迭代公式如下:

其中:

小批量梯度下降法(MBGD)

如果既保证算法训练过程快,也保证最终参数训练的准确率,而这正是小批梯度下降法的初衷。MBGD中不是拿每一个样本就更新M次,而是而是拿b(一般为10)个样本的平均梯度作为更新方向。

BGD、SGD、MBGD的区别:

当样本量为m的时候,每次迭代BGD算法中对于参数值更新一次,SGD算法
中对于参数值更新m次,MBGD算法中对于参数值更新m/n次,相对来讲
SGD算法的更新速度最快;

SGD算法中对于每个样本都需要更新参数值,当样本值不太正常的时候,就
有可能会导致本次的参数更新会产生相反的影响,也就是说SGD算法的结果
并不是完全收敛的,而是在收敛结果处波动的;
SGD算法是每个样本都更新一次参数值,所以SGD算法特别适合样本数据量
大的情况以及在线机器学习(Online ML)。

梯度下降法总结:

由于梯度下降法中负梯度方向作为变量的变化方向,所以有可能导致最终求解的值是局部最优解,所以在使用梯度下降的时候,一般要进行一些调优策略
**学习率的选择:**学习率过大,表示每次迭代更新的变化比较大,有可能会调出最优解;学习率过小,表示每次迭代更新的时候变化比较小,就会导致迭代速度过慢,很长时间都不能结束。
算法初始参数值的选择:初始值不同,最终得到的最小值也有可能不同,因为梯度下降法求解的是局部最优解,所以一般情况下,选择多次不同初始值运行算法,并最终返回损失函数最小情况下的结果值
标准化:由于样本不同特征的取值范围不同,可能会导致在各个不同参数上迭代速度不同,为了减少特征取值的影响,可以将特征进行标准化操作。(都将数据在一个区间里(0,1))

实现f(x)=x2代码如下:**

def f(x):return x**2
def h(x):return 2*x
X=[]
Y=[]
x=2
step = 0.8
f_change=f(x)
f_current=f(x)
X.append(x)
Y.append(f_current)
while f_change>1e-10:x=x-step*h(x)tmp=f(x)f_change=np.abs(f_current-tmp)f_current=tmpX.append(x)Y.append(f_current)
print (u"最终结果为:",(x,f_current))
fig = plt.figure()
X2 = np.arange(-2.1,2.15,0.05)
Y2= X2**2plt.plot(X2,Y2,'-',color="#666666",linewidth=2)
plt.plot(X,Y,'bo-')
plt.title(u'$y=x^2函数求解最小值,最终解为:x=%.2f,y=%.2f'%(x,f_current))
plt.show()

机器学习_梯度下降法(BGD、SGD、MBGD)相关推荐

  1. GD(gradient descent):梯度下降法(BGD,SGD,mini-batch GD)

      梯度下降法(GD,gradient descent)是一种优化方法,比如对某个损失函数进行最小化的优化. 其共有三种: BGD,batch gradient descent:批量梯度下降 SGD, ...

  2. 梯度下降 - BGD SGD MBGD PyTorch

    文章目录 一般梯度下降方法 批量梯度下降(BGDBGDBGD) 随机梯度下降(SGD)(SGD)(SGD) 小批量梯度下降(MBGD)(MBGD)(MBGD) PyTorch梯度下降方法 一般梯度下降 ...

  3. 各种梯度下降 bgd sgd mbgd adam

    转载  https://blog.csdn.net/itchosen/article/details/77200322 各种神经网络优化算法:从梯度下降到Adam方法   在调整模型更新权重和偏差参数 ...

  4. 1. 批量梯度下降法BGD 2. 随机梯度下降法SGD 3. 小批量梯度下降法MBGD

    排版也是醉了见原文:http://www.cnblogs.com/maybe2030/p/5089753.html 在应用机器学习算法时,我们通常采用梯度下降法来对采用的算法进行训练.其实,常用的梯度 ...

  5. 机器学习小组知识点45:批量梯度下降法(BGD)和随机梯度下降法(SGD)的代码实现Matlab版1

    原 机器学习小组知识点4&5:批量梯度下降法(BGD)和随机梯度下降法(SGD)的代码实现Matlab版 2016年10月19日 10:17:28 Eric2016_Lv 阅读数:3379 这 ...

  6. 梯度下降法的三种解释(BGD,SGD,MBGD).

    机器学习里面,梯度下降法可以说是随处可见,虽然它不是什么高大上的机器学习算法,但是它却是用来解决机器学习算法的良药.我们经常会用到梯度下降法来对机器学习算法进行训练. 在很多介绍梯度下降的书籍里,我们 ...

  7. 机器学习之梯度下降法(GD)和坐标轴下降法(CD)

    梯度下降法 梯度下降法(Gradient Descent, GD)常用于求解无约束情况下凸函数(Convex Function)的极小值,是一种迭代类型的算法,因为凸函数只有一个极值点,故求解出来的极 ...

  8. DistBelief 框架下的并行随机梯度下降法 - Downpour SGD

    本文是读完 Jeffrey Dean, Greg S. Corrado 等人的文章 Large Scale Distributed Deep Networks (2012) 后的一则读书笔记,重点介绍 ...

  9. [机器学习-2]梯度下降法及实现(python)

    [机器学习-2]梯度下降法及实现(python) 样例(Example) 利普西斯连续(L-continuity) 利普西斯光滑(L-smoothness) 凸集(Convex Set) 凸函数(Co ...

最新文章

  1. 注册,WEB2.0应用的小门槛
  2. A query was run and no Result Maps were found for the Mapped Statement....
  3. php 根据数量创建数组,php实现根据字符串生成对应数组的方法
  4. Java构建工具:Maven与Gradle的对比
  5. 深入解析Windows操作系统(一)概念和工具
  6. JavaScript闭包
  7. 计算机视觉论文-2021-12-01
  8. python达梦数据库_Python 封装 DM 达梦 数据库操作(使用类封装基本的增删改查)...
  9. IO 和NIO的区别
  10. 中国十大芯片企业排名
  11. python+opencv 批量修改视频分辨率
  12. 新概念英语第三册21-40课(转)
  13. Windows电脑上搭建Radius 服务器并实现802.1X认证
  14. 点击链接重定向跳转微信公众号关注页、微信关注链接
  15. 企查查爬取返回405错误的一种处理方法
  16. 学渣的刷题之旅 leetcode刷题 7.整数反转
  17. 程序员脱发问题之个人经历
  18. 鸿蒙兼容安卓,华为鸿蒙OS正式官宣!兼容安卓程序,网友反应却水火不容
  19. P1061 [NOIP2006 普及组] Jam 的计数法
  20. Pytorch 构建简单Neural Networks

热门文章

  1. 住宅防雷接地的选择要求和施工方法
  2. Access+Vs 数据库增删查改——使用Asp.net的sqldatasource控件,根据如下Universtiy.mdb数据库,处理学生注册选课与授课老师的工作
  3. 触摸板的使用——windows系统笔记本
  4. html界面比浏览器大,迎接HTML5时代 欧朋浏览器H5体验版试用
  5. 【Web前端】一文带你吃透HTML(上篇)
  6. 手游-神雕侠侣 85侠客纪攻略(已通关)
  7. 给电脑文件夹加密的一个脚本
  8. Flink broadcast的用法
  9. WAP网站设计 xhtml mp
  10. 小米4 hostapd配置热点