1. SGD是什么
    SGD是Stochastic Gradient Descent(随机梯度下降)的缩写,是深度学习中常用的优化算法之一。SGD是一种基于梯度的优化算法,用于更新深度神经网络的参数。它的基本思想是,在每一次迭代中,随机选择一个小批量的样本来计算损失函数的梯度,并用梯度来更新参数。这种随机性使得算法更具鲁棒性,能够避免陷入局部极小值,并且训练速度也会更快。

怎么理解梯度?
假设你在爬一座山,山顶是你的目标。你知道自己的位置和海拔高度,但是不知道山顶的具体位置和高度。你可以通过观察周围的地形来判断自己应该往哪个方向前进,并且你可以根据海拔高度的变化来判断自己是否接近山顶。

在这个例子中,你就可以把自己看作是一个模型,而目标就是最小化海拔高度(损失函数)。你可以根据周围的地形(梯度)来判断自己应该往哪个方向前进,这就相当于使用梯度下降法来更新模型的参数(你的位置和海拔高度)。

每次你前进一步,就相当于模型更新一次参数,然后重新计算海拔高度。如果你发现海拔高度变小了,就说明你走对了方向,可以继续往这个方向前进;如果海拔高度变大了,就说明你走错了方向,需要回到上一个位置重新计算梯度并选择一个新的方向前进。通过不断重复这个过程,最终你会到达山顶,也就是找到了最小化损失函数的参数。

  1. 为什么引入SGD
    深度神经网络通常有大量的参数需要学习,因此优化算法的效率和精度非常重要。传统的梯度下降算法需要计算全部样本的梯度,非常耗时,并且容易受到噪声的影响。随机梯度下降算法则可以使用一小部分样本来计算梯度,从而大大提高了训练速度和鲁棒性。此外,SGD还可以避免陷入局部极小值,使得训练结果更加准确。

  2. 怎么用SGD

import torch
from torch import nn
from torch import optimdata = torch.tensor([[0,0],[0,1],[1,0],[1,1.]], requires_grad=True)
target = torch.tensor([[0],[0],[1],[1.]], requires_grad=True)model = nn.Linear(2, 1)def train():opt = optim.SGD(params=model.parameters(), lr=0.1)for iter in range(20):# 1) 消除之前的梯度(如果存在)opt.zero_grad()# 2) 预测pred = model(data)# 3) 计算损失loss = ((pred - target)**2).sum()# 4) 指出那些导致损失的参数(损失回传)loss.backward()for name, param in model.named_parameters():print(name, param.data, param.grad)# 5) 更新参数opt.step()# 6) 打印进程print(loss.data)if __name__ == "__main__":train()
————————————————
版权声明:本文为CSDN博主「Yohuna」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Yohuna/article/details/123789715
param.data是参数的当前值,而param.grad是参数的梯度值。在进行反向传播计算时,每个参数都会被记录其梯度信息,以便在更新参数时使用。通过访问param.data和param.grad,可以查看参数当前的值和梯度信息。值得注意的是,param.grad在每次调用backward()后都会自动清空,因此如果需要保存梯度信息,应该在计算完梯度之后及时将其提取并保存到其他地方。

计算结果:

weight tensor([[0.4456, 0.3017]]) tensor([[-2.4574, -0.7452]])
bias tensor([-0.2108]) tensor([-2.6971])
tensor(0.8531)
weight tensor([[0.6913, 0.3762]]) tensor([[-0.2466,  1.1232]])
bias tensor([0.0589]) tensor([0.7416])
tensor(0.2712)
weight tensor([[0.7160, 0.2639]]) tensor([[-0.6692,  0.4266]])
bias tensor([-0.0152]) tensor([-0.2023])
tensor(0.1529)
weight tensor([[0.7829, 0.2212]]) tensor([[-0.4059,  0.4707]])
bias tensor([0.0050]) tensor([0.0566])
tensor(0.0963)
weight tensor([[0.8235, 0.1741]]) tensor([[-0.3603,  0.3410]])
bias tensor([-0.0006]) tensor([-0.0146])
tensor(0.0615)
weight tensor([[0.8595, 0.1400]]) tensor([[-0.2786,  0.2825]])
bias tensor([0.0008]) tensor([0.0048])
tensor(0.0394)
weight tensor([[0.8874, 0.1118]]) tensor([[-0.2256,  0.2233]])
bias tensor([0.0003]) tensor([-0.0006])
tensor(0.0252)
weight tensor([[0.9099, 0.0895]]) tensor([[-0.1797,  0.1793]])
bias tensor([0.0004]) tensor([0.0008])
tensor(0.0161)
weight tensor([[0.9279, 0.0715]]) tensor([[-0.1440,  0.1432]])
bias tensor([0.0003]) tensor([0.0003])
tensor(0.0103)
weight tensor([[0.9423, 0.0572]]) tensor([[-0.1152,  0.1146]])
bias tensor([0.0003]) tensor([0.0004])
tensor(0.0066)
weight tensor([[0.9538, 0.0458]]) tensor([[-0.0922,  0.0917]])
bias tensor([0.0003]) tensor([0.0003])
tensor(0.0042)
weight tensor([[0.9630, 0.0366]]) tensor([[-0.0738,  0.0733]])
bias tensor([0.0002]) tensor([0.0003])
tensor(0.0027)
weight tensor([[0.9704, 0.0293]]) tensor([[-0.0590,  0.0586]])
bias tensor([0.0002]) tensor([0.0002])
tensor(0.0017)
weight tensor([[0.9763, 0.0234]]) tensor([[-0.0472,  0.0469]])
bias tensor([0.0002]) tensor([0.0002])
tensor(0.0011)
weight tensor([[0.9811, 0.0187]]) tensor([[-0.0378,  0.0375]])
bias tensor([0.0001]) tensor([0.0002])
tensor(0.0007)
weight tensor([[0.9848, 0.0150]]) tensor([[-0.0303,  0.0300]])
bias tensor([0.0001]) tensor([0.0002])
tensor(0.0005)
weight tensor([[0.9879, 0.0120]]) tensor([[-0.0242,  0.0240]])
bias tensor([0.0001]) tensor([0.0001])
tensor(0.0003)
weight tensor([[0.9903, 0.0096]]) tensor([[-0.0194,  0.0192]])
bias tensor([9.7973e-05]) tensor([0.0001])
tensor(0.0002)
weight tensor([[0.9922, 0.0076]]) tensor([[-0.0155,  0.0153]])
bias tensor([8.5674e-05]) tensor([0.0001])
tensor(0.0001)
weight tensor([[0.9938, 0.0061]]) tensor([[-0.0124,  0.0123]])
bias tensor([7.4933e-05]) tensor([9.4233e-05])
tensor(7.6120e-05)

随机梯度下降算法SGD(Stochastic gradient descent)相关推荐

  1. 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比、实现对比

     随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比.实现对比 标签: 梯度下降最优化迭代 2013 ...

  2. 随机梯度下降(Stochastic gradient descent)

    总目录 一. 凸优化基础(Convex Optimization basics) 凸优化基础(Convex Optimization basics) 二. 一阶梯度方法(First-order met ...

  3. 线性回归之随机梯度下降法(Stochastic Gradient Descent,SGD)

    通俗易懂 一个经典的例子就是假设你现在在山上,为了以最快的速度下山,且视线良好,你可以看清自己的位置以及所处位置的坡度,那么沿着坡向下走,最终你会走到山底.但是如果你被蒙上双眼,那么你则只能凭借脚踩石 ...

  4. 随机梯度下降法(stochastic gradient descent,SGD)

    梯度下降法 大多数机器学习或者深度学习算法都涉及某种形式的优化. 优化指的是改变 特征x以最小化或最大化某个函数 f(x)  的任务. 我们通常以最小化 f(x) 指代大多数最优化问题. 最大化可经由 ...

  5. 随机梯度下降(Stochastic gradient descent)和 批量梯度下降(Batch gradient descent )的公式对比...

    转自:here 注意下面说的全局最优是特殊的情况,一般还是梯度下降的方法还是很容易变成局部最优. 梯度下降(GD)是最小化风险函数.损失函数的一种常用方法,随机梯度下降和批量梯度下降是两种迭代求解思路 ...

  6. 梯度下降算法总结(Gradient Descent Algorithms)

    0. 摘要 机器学习与深度学习中常用到梯度下降(Vanilla Gradient Descent)优化方法及其改进的变种(Improved Variants),不同专业书与教程中均有所涉及,但缺乏系统 ...

  7. 使用SGD(Stochastic Gradient Descent)进行大规模机器学习

    1 基于梯度下降的学习  对于一个简单的机器学习算法,每一个样例包含了一个(x,y)对,其中一个输入x和一个数值输出y.我们考虑损失函数 ,它描述了预测值 和实际值y之间的损失.预测值是我们选择从一函 ...

  8. 梯度下降算法实现原理(Gradient Descent)

  9. 梯度下降:全梯度下降算法(FG)、随机梯度下降算法(SG)、小批量梯度下降算法(mini-batch)、随机平均梯度下降算法(SAG)。梯度下降法算法比较和进一步优化。

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 2.2 梯度下降(Gradient Descent) 2.2. ...

最新文章

  1. iPhone开发:通过NSURLRequest获得服务器返回的http header和http status
  2. 记IOS8中碰到的一个JS bug
  3. SpringCloud Ribbon之概述(一)
  4. C语言打印斐波那契数列
  5. JavaScript丧尸游戏开发教程
  6. 计算机编程与数控宏程序实例教程,数控车床编程教程,图文实例详解
  7. [AHOI2007]密码箱
  8. html转义字符 放大镜,特殊符号
  9. MicroPython之ADS1115+平滑滤波NTC温度采集
  10. 推荐我看过的几本好书给大家
  11. Domain=DDXMLErrorDomain Code=1 (null)
  12. 2022金属非金属矿山井下电气考试题模拟考试题库及答案
  13. android版《手工接水管》--unity3d制作的
  14. 坐标上海,我看见这群开发者用热爱改变世界
  15. bigemap中下载边界_BIGEMAP地图下载软件-BIGEMAP地图下载器下载v19.2.0.0-西西软件下载...
  16. 信奥要学哪些数学知识 学信奥要不要先学python
  17. 将设备插入usb2.0端口_将鼠标插入USB 3.0端口有什么好处?
  18. C#批量转CSV到Excel
  19. 51假期读书笔记(上)——流畅的python
  20. c语言中unsigned long,unsigned long 的用法

热门文章

  1. 云计算实验(三)CloudSim练习
  2. python开发gui网络ping测试_网络工程师使用python实践2_ping测试
  3. HTML:实现鼠标拖拽,释放效果
  4. 计算机网络第三章学习通题目及答案
  5. [python] 字符串格式化 (%操作符)
  6. PSCAD的初步使用
  7. IDEA自定义自动导包设置
  8. 计算机初中校本研修计划,初中教师校本研修计划.doc
  9. threejs摩尔纹镜头拉远模型贴图出现摩尔纹,纹理贴图闪烁异常解决办法
  10. 四川大学锦城学院计算机基础考试,大学计算机基础期末考试样题1 四川大学锦城学院 天天...