Python和MATLAB梯度下降导图

🎯要点

  1. 寻找局部最小值
  2. 普通最小二乘法和随机梯度下降的动量
  3. 线性回归
  4. 媒体广告销售
  5. 光学字符识别和最小化均方误差
  6. 男女医疗费用
  7. 最快速下降方向函数优化
  8. 等高线图可视化
  9. 共轭梯度下降
  10. 可视化损失函数、动量、涅斯特洛夫动量、权衰减
  11. 量化不确定性拓扑结构算法
  12. 分类中权重归一化算法提升预测效果
    在这里插入图片描述

Python梯度优化器

我们将使用下方程描述的均方误差作为目标函数,将使用这些优化算法来最小化损失函数。
f ( m , b ) = 1 n ∑ i = 1 n ( y i − ( m x i + b ) ) 2 f(m, b)=\frac{1}{n} \sum_{i=1}^n\left(y_i-\left(m x_i+b\right)\right)^2 f(m,b)=n1i=1n(yi(mxi+b))2
在梯度下降中,计算目标函数(L)相对于参数 theta(θ)的梯度,然后沿目标函数梯度的反方向更新参数。学习率 α 决定了达到局部最小值所需采取的步长。
θ j ← θ j − α ∂ ∂ θ j J ( θ ) \theta_j \leftarrow \theta_j-\alpha \frac{\partial}{\partial \theta_j} J(\theta) θjθjαθjJ(θ)

根据用于计算权重更新梯度的数据量,我们有不同的变体,我们将详细讨论这些变体。在批量梯度下降中,对于每个时期,我们计算整个数据集的目标函数相对于参数的梯度。因此,参数的更新每时期发生一次。批量梯度下降也称为 普通梯度下降。

对于我们的均方误差目标函数,m 和 b 的梯度如下所示。
∂ f ∂ m = 1 n ∑ i = 1 n − 2 x i ( y i − ( m x i + b ) ) \frac{\partial f}{\partial m}=\frac{1}{n} \sum_{i=1}^n-2 x_i\left(y_i-\left(m x_i+b\right)\right) mf=n1i=1n2xi(yi(mxi+b))

∂ f ∂ b = 1 n ∑ i = 1 n − 2 ( y i − ( m x i + b ) ) \frac{\partial f}{\partial b}=\frac{1}{n} \sum_{i=1}^n-2\left(y_i-\left(m x_i+b\right)\right) bf=n1i=1n2(yi(mxi+b))

import numpy as np
from sklearn.metrics import mean_squared_error
def batch_gradient_descent(X, y, lr, epochs): m, b = 0.33, 0.48 log, mse = [], [] N = len(X) 
for _ in range(epochs):               f = y - (m*X + b)   m -= lr * (-2 * X.dot(f).sum() / N)b -= lr * (-2 * f.sum() / N)
log.append((m, b))mse.append(mean_squared_error(y, (m*X + b)))        return m, b, log, mse

在随机梯度下降中,从一个时期的整个集合中随机选择一个样本。计算该特定的梯度并更新样本和权重。

import numpy as np
from sklearn.metrics import mean_squared_error
def SGD(X, y, lr, epochs):m, b = 0.5, 0.5  log, mse = [], [] 
for _ in range(epochs):indexes = np.random.randint(0, len(X)) Xs = np.take(X, indexes)ys = np.take(y, indexes)N = len(X)f = ys - (m*Xs + b)m -= lr * (-2 * Xs*(f).sum() / N)b -= lr * (-2 * f.sum() / N)
log.append((m, b))mse.append(mean_squared_error(y, m*X+b))
return m, b, log, mse

在小批量梯度下降中,更新是针对小批量样本进行的。在我们的示例中,我们有 100 个样本。因此,如果批量大小为 10,则我们在 10 个时期内有 100 次更新。小批量梯度下降是训练神经网络时的首选算法。

def minibatchgd(X, y, lr, epochs, batch_size):m, b = 0.5, 0.5 log, mse = [], [] for _ in range(epochs):total_len = len(X)for i in range(0, total_len, batch_size):Xs = X[i:i+batch_size]ys = y[i:i+batch_size]N = len(Xs)f = ys - (m*Xs + b)m -= lr * (-2 * Xs.dot(f).sum() / N)b -= lr * (-2 * f.sum() / N)log.append((m, b))mse.append(mean_squared_error(y, m*X+b))
return m, b, log, mse

动量和涅斯特罗夫动量
V t = β V t − 1 + ( 1 − β ) ∇ w L ( W , X , y ) W = W − α V t \begin{gathered} V_t=\beta V_{t-1}+(1-\beta) \nabla_w L(W, X, y) \\ W=W-\alpha V_t \end{gathered} Vt=βVt1+(1β)wL(W,X,y)W=WαVt
如果学习率按 ( 1 − β ) (1-\beta) (1β) 缩放,则上式可以写为
V t = β V t − 1 + α ∇ w L ( W , X , y ) W = W − V t \begin{gathered} V_t=\beta V_{t-1}+\alpha \nabla_w L(W, X, y) \\ W=W-V_t \end{gathered} Vt=βVt1+αwL(W,X,y)W=WVt
基本上,我们正在计算 W 导数的移动平均线。这有助于减少振荡。

👉更新:亚图跨际

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

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

相关文章

Threejs学习-三维坐标系、相机控件

坐标系: Three.js 使用的是右手坐标系,x 轴朝右,y 轴朝上,z 轴朝向自己。 相机控件轨道控制器 相机控件OrbitControls 通过相机控件OrbitControls实现旋转缩放预览效果。 // 设置相机控件轨道控制器OrbitControls const contr…

OpenCV几何图像变换(6)计算反转仿射变换函数invertAffineTransform()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 反转一个仿射变换。 该函数计算由 23 矩阵 M 表示的逆仿射变换: [ a 11 a 12 b 1 a 21 a 22 b 2 ] \begin{bmatrix} a_{11} & a…

windows vs2022 MFC使用webview2嵌入网页

Microsoft Edge WebView2 控件允许在本机应用中嵌入 web 技术(HTML、CSS 以及 JavaScript)。 WebView2 控件使用 Microsoft Edge 作为绘制引擎,以在本机应用中显示 web 内容。 一、通过菜单“项目”-“管理NuGet程序包”,下载相关包 二、安装 Microsof…

结构化与面向对象

人类认识世界总是循序渐进的过程,软件工程也一样,从最开始的单兵作战,再到软件作坊,直到如今的大规模软件开发,软件工程从业者不断总结实践中存在的问题以及解决途径,逐渐形成了一系列的软件工程方法&#…

ZooKeeper--基于Kubernetes部署ZooKeeper

ZooKeeper 服务 服务类型: 无头服务(clusterIP: None),这是 StatefulSet(有状态集)必需的配置。 端口: 2181 (客户端): 用于客户端连接。 2888 (跟随者): 用于 ZooKeeper 服务器之间的连接。 3888 (领导者): 用于领导者…

Linux查看jvm相关参数以及设置调优参数

1、查看jvm相关参数 1.1、查看Java进程命令 jcmd会显示出来对应的Java进程id 1.2、查看堆内存各个区域的使用大小、具体大小和GC次数以及耗时 jstat -gc 4036145jstat -gc 进程id 各个参数的含义。 如上图,4036145的进程,FGCT是0.452,FGC是4.平均每次full gc耗时0.11秒。 …

Android13系统源码内置App并通过AIDL调用获取内置存储卡的真实大小

jix 进行从事Android系统源码开发不得不在原有的系统上内置自己的App。通过内置App一般都需要调用些系统才能访问的系统级App。App的部署和调试需要依赖源码系统。通过命令 : mm 来实现。 第三方App想调用内置的app需要通过跨进程调用。 这里通过AIDL来实现跨进程…

Qt第二十章 数据库操作

文章目录 Qt操作数据库QSqlDataBaseQSqlQuery执行SQL语句 QSqlRecordQSqlField数据库模型QSqlQueryModelQSqlTableModelQSqlRelationalTableModel 编译MySql驱动msvc版本MySql客户端程序部署 Qt操作数据库 需要在cmakelist加上Sql模块 QSqlDataBase 可以通过静态成员查看支持的…

苹果已删除照片的恢复方法有哪些?盘点几种实用办法

苹果设备上的照片往往是珍贵的回忆,但不小心删除照片的情况时有发生。幸运的是,苹果提供了几种方法来帮助用户恢复已删除的照片。本文将详细介绍几种有效的恢复方法,帮助您找回那些重要的照片。 方法一:通过“最近删除”文件夹恢复…

SQL-DCL-数据控制语言

一、 DCL-管理用户 二、DCL-权限控制 一、 DCL-管理用户,主要是DBA数据库管理员使用,开发使用较少 # 1、查询用户 use mysql; show tables; desc user; select * from user; # host为主机地址, 主机地址和用户名确定唯一性# 2、创建用户 create user itcastlocalh…

【AD9361 数字基带】多片基带内FPGA补偿 I/Q Rotation

I/Q 旋转 Rotation 在许多多通道射频系统中,如 AD-FMCOMMS5,甚至在 AD-FMCOMMS2、AD-FMCOMMS3 上,都需要测量或校正两个复数 (I/Q) RF 信号之间的相位差。 从纯粹的数学描述来看,单个正弦波没有相位&…

【数学建模】趣味数学模型——等额还款数学模型

问题 在银行贷款中,通常采用等额还款。假定银行贷款的年利率为 p,贷款 k 元,分 m 年采用每月等额还款方式还清。问每月还款多少钱?总共还的钱是多少?每月还款中还本金和利息各是多少元? 如果考虑每月等额…

VTK随笔一:初识VTK(QT中嵌入VTK窗口)

VTK(Visualization Toolkit)是一个用于可视化和图形处理的开源软件库。它提供了一系列的算法和工具,可以用来创建、渲染和处理二维和三维的图形数据。VTK可以在多个平台上运行,并支持各种编程语言,包括C、Python和Java…

基于Springboot + vue + mysql 车辆充电桩管理系统 设计实现

目录 📚 前言 📑摘要 1.1 研究背景 📑操作流程 📚 系统架构设计 📚 数据库设计 💬 E-R表 3.4.2 数据库具体设计 系统功能模块 系统首页 用户注册 充电桩 个人中心 用户后台管理模块 用户登录…

完成课题ssrf实现.SSH未创建写shell,同时完成其他漏洞复现

SSRF 一种网络安全漏洞,发生在服务器端应用程序中,允许攻击者通过服务器向任意网络资源发送请求,而无需用户直接参与。这种漏洞通常源于程序设计错误,例如当应用程序使用用户的输入作为URL请求的一部分,而没有适当的验…

Ansible初识

ansible初识 Ansible是一种自动化工具,用于配置管理、应用程序部署和任务自动化。它基于Python语言开发,使用SSH协议进行通信,并且不需要在被管理的主机上安装任何客户端。Ansible使用简单的YAML语言来描述任务和配置,使得操作简…

Vue3的三种样式控制及实现原理

你好,我是沐爸,欢迎点赞、收藏和关注。个人知乎 Vue3中一共有三种样式控制,分别是全局样式控制、局部作用域样式控制和深度样式控制,今天我们一起看下这三种样式控制的使用,以及实现的原理是什么。 一、全局样式控制…

NRK3301语音识别芯片在汽车内饰氛围灯上的应用方案解析

随着智能汽车的快速发展,车载语音交互技术逐渐成为提升驾驶体验的关键技术之一。传统的汽车内饰氛围灯语音识别系统往往依赖于手动操作,不仅操作繁琐,而且在驾驶过程中容易分散驾驶员的注意力。因此,开发一种高效、便捷的汽车内饰…

SpringBoot集成Redis

目录 12.1 配置文件12.2 防火墙12.3 Jedis(一般不用了,了解即可)1.介绍2.步骤3.写YML4.主启动5.业务类 12.4 Lettuce1.介绍以及和Jedis的区别2.步骤1.改pom2.业务类 12.5 Redis Template(推荐)1.连接单机1.改pom2.写YML3.业务类3.1配置类3.2 service3.3 controller测…

Stable Diffusion的微调方法原理总结

在深度学习领域,Stable Diffusion作为一种强大的生成模型,正逐渐成为图像和视频生成领域的热门话题。它不仅能够模拟复杂的自然和人工系统中的随机演化行为,还通过一系列微调方法,显著提升了模型在特定任务上的性能。本文旨在深入…