如果你还不了解梯度下降请参考:知乎@Ai酱:{高中生能看懂的}梯度下降是个啥?。

随机梯度下降与梯度下降之间有什么区别?

假设你已经懂了梯度下降的原理与公式。接下来我会举个例子来讲随机梯度下降与梯度下降的区别。
假如损失(误差)函数对参数w的导数是 x ( w x − l a b e l ) x(wx - label) x(wx−label),然后我们需要更新的参数是 w w w,学习率是 α \alpha α。
现在有一堆数据 ( x 1 , l a b e l 1 ) , ( x 2 , l a b e l 2 ) , ( x i , l a b e l i ) , ( x n , l a b e l n ) {(x_1,label_1),(x_2,label_2),(x_i,label_i),(x_n,label_n)} (x1​,label1​),(x2​,label2​),(xi​,labeli​),(xn​,labeln​).
那么梯度下降会这么更新参数w:
w = w − α ∗ ∑ i = 1 n ( x i ( w x i − l a b e l ) ) w=w-\alpha*\sum_{i=1}^n {(x_i(wx_i - label))} w=w−α∗∑i=1n​(xi​(wxi​−label))
随机梯度下降会这么做:

遍历i从1到n{
w = w − α ∗ ( x i ( w x i − l a b e l ) ) w=w-\alpha* {(x_i(wx_i - label))} w=w−α∗(xi​(wxi​−label))
}

可以看到梯度下降中的导数部分是把所有样本代入到导数中,然后累加,然后更新参数。而随机梯度下降则是选一个样本计算一个导数,然后马上更新参数
下面我用伪代码表示下随机梯度下降与梯度下降之间的区别:
梯度下降

x = [...]
lable = [...]
w = 0.666
learning_rate = 0.001
for(循环很多次){df_dw = 0for i in range(len(x)):df_dw += x[i]*(w*x[i]-label[i])passw = w - learning_rate*df_dw
}

随机梯度下降

x = [...]
lable = [...]
w = 0.666
learning_rate = 0.001
for(循环很多次){for i in range(len(x)):df_dw = x[i]*(w*x[i]-label[i])w = w - learning_rate*df_dw
}

然后随机梯度下降有很多变种,比如增加动量来加速收敛。
本来是
w = w + α ∗ f ′ ( w ) w=w+\alpha*f'(w) w=w+α∗f′(w),然后加了动量的就变成了:
v = γ v v=\gamma v v=γv
w = w + v + α ∗ f ′ ( w ) w=w+v+\alpha*f'(w) w=w+v+α∗f′(w)

import math
def f(x):  return x**3-2*x - 10 +x**2  def derivative_f(x):  return 3*(x**2)+2*-2  x=0.0
y=0.0
learning_rate = 0.001
gradient=0
e=0.00000001  b1 = 0.9
b2 = 0.995  m = 0
v = 0
t = 0  for i in range(10000):  print('x = {:6f}, f(x) = {:6f},gradient={:6f}'.format(x,y,gradient))  if(abs(gradient)>0.00001 and (abs(gradient)<0.0001)):  print("break at "+str(i))  break  else:  gradient = derivative_f(x)  t=t+1  'mt ← β1 · mt−1 + (1 − β1) · gt '  m = b1*m + (1-b1)*gradient  'vt ← β2 · vt−1 + (1 − β2) · g2'  v = b2*v +(1-b2)*(gradient**2)  'mt ← mt/(1 − βt1)'  mt = m/(1-(b1**t))  'vbt ← vt/(1 − βt2)'  vt = v/(1-(b2**t))  x = x- learning_rate * mt/(math.sqrt(vt)+e)  y=f(x)

随机梯度下降与梯度下降的区别?相关推荐

  1. 机器学习:随机梯度下降(SGD)与梯度下降(GD)的区别与代码实现。

    机器学习:随机梯度下降(SGD)与梯度下降(GD)的区别与代码实现. 梯度下降法(GD) 随即梯度下降(SGD) 代码实现 如果想细致的了解:-> 梯度下降法 梯度下降法(GD) 假设函数fx, ...

  2. 梯度下降和随机梯度下降为什么能下降?

     梯度下降和随机梯度下降为什么能下降? 标签: 深度学习梯度下降SGD 2016-02-22 19:19 663人阅读 评论(1) 收藏 举报 本文章已收录于: 分类: Deep Learning ...

  3. 批梯度下降 随机梯度下降_梯度下降及其变体快速指南

    批梯度下降 随机梯度下降 In this article, I am going to discuss the Gradient Descent algorithm. The next article ...

  4. 深度学习_07_2_随机梯度下降_激活函数及梯度损失函数及梯度

    07_2_随机梯度下降_激活函数及梯度&损失函数及梯度 激活函数及其梯度 Activation Functions(激活函数) 研究青蛙的神经元有多个输入,比如x0,x1,x2x_0,x_1, ...

  5. 梯度下降法和随机梯度下降,批量梯度下降法,小批量梯度下降(SGD,MGD,BMGD)

    梯度下降法 其有着三种不同的形式: 批量梯度下降(Batch Gradient Descent). 随机梯度下降(Stochastic Gradient Descent) 以及小批量梯度下降(Mini ...

  6. 梯度算法之梯度上升和梯度下降

    转载请注明出处:http://blog.csdn.net/gamer_gyt 博主微博:http://weibo.com/234654758 Github:https://github.com/thi ...

  7. 3. 机器学习中为什么需要梯度下降_梯度提升(Gradient Boosting)算法

    本文首发于我的微信公众号里,地址:梯度提升(Gradient Boosting)算法 本文禁止任何形式的转载. 我的个人微信公众号:Microstrong 微信公众号ID:MicrostrongAI ...

  8. 【机器学习】P17 梯度下降 与 梯度下降优化算法(BGD 等 与 Adam Optimizer、AdaGrad、RMSProp)

    梯度下降与梯度下降算法 梯度下降 梯度下降算法 基础优化算法 批量梯度下降 BGD 随机梯度下降 SGD 小批量梯度下降 MBGD 动量梯度下降 MGD 基础优化算法上的改进和优化的算法 自适应梯度算 ...

  9. |●梯度下降是什么|●梯度下降算法原理|●梯度下降实例

    <老饼讲解机器学习>--一个经典的机器学习算法网站http://ml.bbbdata.com/teach#193 目录 一.问题背景 二.梯度下降算法思路 (一) 思路概览 (二) 关于梯 ...

最新文章

  1. Qt Creator指定代码样式设置
  2. 开源 协作工具_6所高等学校教授开源,协作峰会的言论以及更多新闻
  3. 算法 matlab_MATLAB遗传算法及其实现
  4. Android8.1展讯平台之audio_policy_configuration.xml(四十二)
  5. SQL中的5种常用的聚集函数
  6. java if if else语句_Java if else条件判断语句用法
  7. vb adodc连接mysql_VB中用ADODC控件连接ACCESS数据库
  8. Spring Boot 集成maven和Spring boot的profile功能
  9. 【论文笔记】基于聚类特征深度LSTM的语音情感识别
  10. HTTPS 防劫持攻击
  11. 看_那人好像一个产品狗_对_这就是产品狗
  12. 你为什么要去博物馆? 我的理由比较另类
  13. Calibre中使用DeDRM插件进行Kindle电子书解锁
  14. 根据mask绘制contour ,bounding box。批量展示图片 等工具函数
  15. 不破坏背景的情况下在线ps替换文字
  16. 联通 位置服务器,中国联通服务器名称或地址
  17. Vue + Element 实现导入导出Excel
  18. Bulk-Only传输协议 UFI命令块规范
  19. SpringBoot 在启动时执行某些方法
  20. 大数据随记 —— Hadoop 环境搭建

热门文章

  1. 狂野飙车8服务器在哪个文件夹,狂野飙车8数据包安装存放位置详解
  2. 2021年什么邮箱最好用,这款电子邮箱让你的工作效率翻倍!
  3. 2020 年最具潜力 44 个顶级开源项目,涵盖 11 类 AI 学习框架、平台(值得收藏)...
  4. 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。
  5. Python产生100个1—100的随机数放入列表Num中,输出列表中的数,然后将它们排序,并输出排序结果。
  6. C#面向对象编程的学习笔记
  7. “大学生就业难”与IT外包服务带给我的启发
  8. 破案了!不会讲笑话不会作诗的chatGPT!
  9. 前端在线微信扫码支付的小功能
  10. 华为防火墙 相关命令