SGD随机梯度下降

一、补充概念:

  1. 目标函数(Objective Function):这个术语通常指的是整个优化问题中需要最小化(或最大化)的函数。在机器学习和优化中,目标函数可以包括损失函数以及正则化项等目标函数的最优化过程旨在找到使目标函数取得最小值或最大值的参数值。

  2. 损失函数(Loss Function):这个术语通常指的是在监督学习中用来衡量模型预测值与真实标签之间差异的函数。损失函数是目标函数的一部分,通常作为目标函数的组成部分出现。在训练过程中,损失函数的值被用来作为优化算法的目标,以便通过调整模型参数来最小化损失函数。

      3.损失函数:某些情况下为目标函数。

      4.梯度:梯度通常是指损失函数关于模型参数的偏导数

在机器学习和深度学习中,训练模型的目标是通过最小化损失函数来优化模型参数,而梯度是一种用于指导参数更新的重要工具。

二、SGD

SGD 是随机梯度下降(Stochastic Gradient Descent)的缩写。梯度下降是一种优化算法,用于最小化损失函数,通过迭代更新参数来逐步调整模型以最小化损失。在机器学习和深度学习中,梯度下降被广泛用于训练模型。

随机梯度下降梯度下降的一种变体,其基本思想是每次迭代时随机选择一个样本来计算梯度并更新参数,而不是使用整个训练集来计算梯度。相比于传统的批量梯度下降(Batch Gradient Descent),随机梯度下降的计算代价更低尤其在大规模数据集上更为高效

优点:随机梯度下降通常用于训练大规模数据集和深度神经网络,因为它能够以较低的计算成本和内存消耗实现模型的训练。

缺点:由于随机梯度下降对梯度的估计是基于单个样本的,因此可能会导致参数更新的不稳定性,需要采用一些技巧来调整学习率和控制收敛速度,如学习率衰减、动量等。

三、简单代码举例

当使用 PyTorch 进行随机梯度下降的实现时,可以通过 PyTorch 提供的优化器类 torch.optim.SGD 来实现。以下是一个简单的示例代码,展示了如何使用 PyTorch 来实现随机梯度下降算法:

import torch
import torch.nn as nn
import torch.optim as optim# 假设有一些训练数据
# 这里我们创建一个简单的线性回归问题
# 输入特征维度为 1,输出维度为 1
# 我们的目标是拟合一个简单的线性函数 y = 2x + 1# 构建训练数据
x_train = torch.tensor([[1.0], [2.0], [3.0], [4.0]])
y_train = torch.tensor([[3.0], [5.0], [7.0], [9.0]])# 构建一个简单的线性模型
model = nn.Linear(1, 1)# 定义损失函数,这里使用均方误差损失
criterion = nn.MSELoss()# 定义优化器,这里使用随机梯度下降
optimizer = optim.SGD(model.parameters(), lr=0.01)# 进行模型训练
num_epochs = 100
for epoch in range(num_epochs):# 前向传播outputs = model(x_train)# 计算损失loss = criterion(outputs, y_train)# 梯度清零optimizer.zero_grad()# 反向传播loss.backward()# 更新参数optimizer.step()if (epoch+1) % 10 == 0:print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}')# 测试模型
x_test = torch.tensor([[5.0]])
predicted = model(x_test)
print(f'Predicted value for x = 5: {predicted.item():.4f}')

运行结果截图:

图1 运行结果

这个示例代码中,我们首先定义了训练数据 x_trainy_train,然后构建了一个简单的线性模型 model。接着定义了损失函数 criterion,这里使用均方误差损失。然后使用 torch.optim.SGD 定义了优化器 optimizer,学习率设置为 0.01。

在训练过程中,我们对模型进行多轮的迭代,每一轮中首先进行前向传播计算输出,然后计算损失,接着梯度清零,进行反向传播计算梯度,最后更新参数。最后我们对模型进行测试,对一个新的输入样本进行预测。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/797044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营day31

122_买卖股票的最佳时机(看了题解) 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后…

怎么转换图片格式jpg?分享几种转换的方法

我们都知道现在图片格式种类非常多,比较常用的有jpg、png、webp等,很多时候,我们在网上保存的照片不是jpg格式的,查看或者编辑起来就很麻烦,这时候你可能需要将图片转换成jpg格式,那怎么转换图片格式jpg呢?…

【CNN】ConvMixer探究ViT的Patch Embedding: Patches Are All You Need?

Patches Are All You Need? 探究Patch Embedding在ViT上的作用,CNN是否可用该操作提升性能? 论文链接:https://openreview.net/pdf?idTVHS5Y4dNvM 代码链接:https://github.com/tmp-iclr/convmixer 1、摘要 ViT的性能是由于T…

举个例子说明联邦学习

学习目标: 一周掌握 Java 入门知识 学习内容: 联邦学习是一种机器学习方法,它允许多个参与者协同训练一个共享模型,同时保持各自数据的隐私。 联邦学习概念(例子): 假设有三家医院,它们都希望…

我的 256天 创作纪念日

创作纪念日 我与CSDN的初识耕耘后的收获有笑有泪的日常小小的成就我的憧憬 我与CSDN的初识 在大一上学期的C语言课程中,我首次接触到CSDN。那时,面对众多难以理解的题目,我不得不频繁搜索相关知识和题解,CSDN成了我的救星。这个经…

这几个小众SaaS知识库工具原来这么好用,强烈推荐!

时代的进步和科技的发展,让我们有了更多高效的工作工具。由于云计算和SaaS(Software as a Service)的普及,越来越多的知识库工具被广大用户所知和使用。今天,就让我来为你推荐几款小众但卓效独特的SaaS知识库工具。 首…

前端将列表数据转换为树形数据的函数

大概的思路就是这个: 树状图的规则是 二级的 pid 等于 一级的 id 从这个规则进行下手 结构数据遍历数据,拆分他的数据结构 可以遍历n条的数据,主要就是通过递归的方法实现 以下就是代码案例(如有不准确的地方,欢迎各位…

vite配置postcss

1.搭建项目 pnpm create vite 2.下载postcss pnpm i postcss pnpm i postcss-pxtorem pnpm i autoprefixer 也可以去官网找其他插件下载 3.配置vite.config.js import postCssPxToRem from postcss-pxtorem import autoprefixer from autoprefixerexport default () >…

LeetCode hoot100-22

160. 相交链表给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。这道题几分钟就写出来了。应该是几年前做过,这种思想还能一直记得。所以算法题是不会白做的。 我的…

市场首款!华邦电子发布内置PQC算法的闪存产品

3月27日,全球领先的半导体内存解决方案供应商华邦电子股份有限公司推出TrustME Secure Flash W77Q系列的最新扩展,包括256Mb、512Mb和1Gb器件。 这些突破性的安全闪存设备是市场上首款针对后量子密码学(PQC)实施Leighton-Micali签…

FSP7罗德与施瓦茨FSP7频谱分析仪

181/2461/8938产品概述: 罗德与施瓦茨 FSP7 频谱分析仪以其创新的测量和大量标准功能而著称。FSP7 没有提供多种选项,而是标配了最先进的频谱分析仪所需的所有功能和接口。FSP 具有如此丰富的功能,以极具吸引力的性价比提供最先进的频谱分析…

Vscode已经安装imutils但是依旧报错

问题描述 使用 pip install imutils安装完成之后,依旧报错没有安装 问题解决 找到你安装的anaconda环境 使用cmd安装 :\环境路径\anaconda\envs\你的环境名称\Scripts\pip.exe install imutils

windows下Msys2编译OpenOCD方法与总结

windows下Msys2编译OpenOCD方法与总结 参考博客: 编译的总体方法:https://blog.csdn.net/MicroMehhh/article/details/135721360lib-usb库问题的解决办法:https://github.com/espressif/openocd-esp32/issues/162编译方法参考: …

智过网:一建继续教育,操作指南与周期解析

随着社会的快速发展和技术的不断更新,建筑行业对从业人员的专业素质要求也在逐步提高。为了确保一级建造师的专业技能能够与时俱进,满足行业发展的需求,继续教育成为了必不可少的环节。本文将详细解析一建继续教育的操作流程及其周期安排&…

localStorage和sessionStorage

在HTML5中,本地存储是一个window的属性,包括localStorage和sessionStorage,前者是一直存在本地的,后者是伴随着session存在 window.localStorage localStorage特性,这个特性主要是用来作为本地存储来使用的&#xff…

前端开发学习笔记 3 (Chrome浏览器调试工具、Emmet语法、CSS复合选择器、CSS元素选择模式、CSS背景)

文章目录 Chrome浏览器调试工具Emmet语法CSS复合选择器后代选择器子选择器并集选择器伪类选择器 CSS元素选择模式元素选择模式概述CSS块标签CSS行内标签CSS行内块标签CSS元素显示模式转换 CSS背景CSS背景颜色CSS背景图片CSS背景图片平铺CSS背景图片位置CSS背景图片固定CSS背景复…

口语 4.7

PG section:少儿不宜 enhance our lives:提升了我们的生活质量 modify the pictures:修图 theyre way happier seeming 看起来更开心 rebaseline our expectations:重新设定我们的预期值 a famous quote:sb说过的…

HEVC预测编码

目录 帧内预测 亮度帧内预测模式 亮度帧内模式的编码 色度帧内预测模式编码 帧内预测过程 相邻参考像素的获取 参考像素的滤波 预测像素的计算 帧间预测 MV

解锁网络安全新境界:雷池WAF社区版让网站防护变得轻而易举!

网站运营者的救星:雷池WAF社区版 ️ 嘿朋友们!今天我超级激动要跟你们分享一个神器——雷池WAF社区版。这个宝贝对我们这帮网站运营者来说,简直就是保护伞! 智能语义分析技术:超级侦探上线 先说说为啥我这么稀饭它。雷…

【题解 | 分组背包】掷骰子等于目标和的方法数

掷骰子等于目标和的方法数 力扣:1155. 掷骰子等于目标和的方法数 这里有 n 个一样的骰子,每个骰子上都有 k 个面,分别标号为 1 到 k 。 给定三个整数 n、k 和 target,请返回投掷骰子的所有可能得到的结果(共有 kn 种方…