Python和MATLAB梯度下降导图

news2024/9/24 19:13:37

🎯要点

  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.coloradmin.cn/o/2070648.html

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

相关文章

西安电子高速PCB学习(四)

注意了,信号发生器的不同通路不能并联使用,示波器的信号通路不能并联电源使用,不同信号发生器不能并联使用: 严禁多个电容共用过孔: 多个电容并联时,小容量的电容应更靠近芯片电源引脚,主要原因…

【图像增强】使用 Albumentations Python 库(01)

目录 一、说明 二、Albumentations库 2.1 如何安装 2.2 测试代码示例 2.3 在albumentations库中实现的所有像素级变换 2.4 空间级转换 2.5 混合级别转换 三、让我们看看上述实现中的转换。 3.1 在专辑中实现的天气相关转换 3.2 随机雨 3.3 在相册中处理非 8 位图像 3.4 在文档…

如何优雅的实现CRUD,包含微信小程序,API,HTML的表单(一)

前言 在开发实际项目中,其实CRUD的代码量并不小,最近要做一个小程序项目,由于涉及表单的东西比较多,就萌生了一个想法,小程序的写法不是和VUE类似,就是数据绑定,模块么!那就来一个动…

【vue3|第26期】Vue3 中的 useRoute 与 router.currentRoute.value:选择正确的路由访问方式

日期:2024年8月22日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉在这里插入代码片得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不…

推荐4款2024年专业的电脑远程控制软件。

为了能够打破空间的限制,远程控制工具被越来越多的人使用。它们可以帮助提高工作效率,方便远程技术支持等。今天,就让我们一起来了解一下网上比较火的4款远程控制电脑的软件。 1、向日葵 直达链接:https://down.oray.…

如何使用python脚本爬取微信公众号文章?

1、什么是爬虫? 在座的各位可能经常听到一个词,叫“爬虫”,这是一种能够悄无声息地将网站数据下载至本地设备的程序。利用爬虫,您无需亲自访问特定网站,逐个点击并手动下载所需数据。相反,爬虫能够全自动地…

FL Studio24苹果mac电脑破解绿色版安装包下载

FL Studio 24最新版本,这可不仅仅是一个音乐制作软件的升级,它是音乐创作爱好者的福音,是专业制作人的心头好。那么,它究竟有哪些魔力,能让这么多人为之疯狂呢? 我们来看看它的界面。FL Studio 24的界面设…

XGBoost中正则化的9个超参数

正则化是一种强大的技术,通过防止过拟合来提高模型性能。本文将探索各种XGBoost中的正则化方法及其优势。 为什么正则化在XGBoost中很重要? XGBoost是一种以其在各种机器学习任务中的效率和性能而闻名的强大算法。像任何其他复杂模型一样,它可能会过拟合,特别是在处理噪声数据…

x-cmd mod | x scoop - Windows 开源包管理工具

目录 介绍主要特点例子子命令 介绍 scoop 是 windows 的第三方包管理工具,与 winget, choco, chocolatey 类似。 本模块在 scoop 的基础上做了增强,使其可与 shell 无缝集成,并提供更多的功能。 主要特点 自动下载: 通过调用 S…

汇编语言:cmp、je、jne、jb、jnb、ja、jna 指令

一. cmp 指令 1. cmp 指令功能 cmp (compare) 是比较指令,cmp 的功能相当于减法指令,只是不保存结果,但会根据结果对标志寄存器进行设置,其它相关指令就可以通过识别这些被影响的标志寄存器的位来得知比较结果。 2. cmp指…

python爬虫:selenium+browsermobproxy实现浏览器请求抓取(模块安装详解)

前言 本来很多场景用beautiful和requests就能解决的&#xff0c;但是最近发现了某些网站会使用<link>来链接网页信息&#xff0c;让我没办法通过requests获取页面的具体内容&#xff1b;并且接口也加入了某种token的生成方案&#xff0c;导致我无从下手。 因此&#xff0…

Scrapy 分布式爬虫框架 Scrapy-Redis

github官网代码示例&#xff1a;https://github.com/rmax/scrapy-redis/blob/master/example-project/example/spiders/myspider_redis.py 什么是 Scrapy-Redis Scrapy-Redis 是一个基于 Scrapy 的扩展&#xff0c;用于实现分布式爬虫。它利用 Redis 作为分布式队列来共享待爬…

.NET_web前端框架_layui_栅格布局

基础概念 layui:用于简化前端编写的框架。响应式布局&#xff08;Responsive Layout&#xff09;:一种网页设计方法&#xff0c;使网页能够根据不同设备的屏幕尺寸和分辨率自动调整其内容和布局。栅格布局&#xff08;Grid Layout&#xff09;:一种网页设计布局方法&#xff0c…

计算机毕业设计选题推荐-OA办公管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

【IEEE出版,连续7年稳定发表】第八届电气、机械与计算机工程国际学术会议(ICEMCE 2024,10月25-27)

由西京学院主办&#xff0c;AEIC学术交流中心协办&#xff0c;中国科学技术大学、深圳大学、浙江工业大学等校联合支持的第八届电气、机械与计算机工程国际学术会议&#xff08;ICEMCE 2024&#xff09;将于2024年10月25日至27日在西安举办。 本次会议主要围绕“电气”、"…

电脑文件自动加解密如何实现?3个方法教会你!

电脑文件的自动加解密是一项非常实用的功能&#xff0c;可以帮助确保数据的安全性。 以下是三种实现电脑文件自动加解密的方法&#xff1a; 方法一&#xff1a;使用操作系统自带的加密功能 Windows BitLocker&#xff1a; 启用BitLocker&#xff1a;在Windows系统中&#xf…

SpringBoot 项目——抽奖系统

本项目主要实现的功能是&#xff1a;主要服务于管理员用户&#xff0c;其可圈选奖品&#xff0c;人员来创建抽奖活动&#xff0c;并进行在线抽奖&#xff0c;并可通过短信或邮件的方式通知中奖者&#xff0c;同时普通用户可查看已结束的抽奖活动的中奖结果&#xff1b; 一、项…

ViT篇外:NVIDIA Llama-3.1-Minitron 4B

相关阅读&#xff1a; ViT&#xff1a;3 Compact Architecture MobileLLM&#xff1a;“苗条”的模型比较好&#xff01; 大家也许会很好奇为什么在ViT章节插入了NVIDIA Llama-3.1-Minitron 4B&#xff0c;ViT因为应用场景的特殊性所以都寄希望于高效率的模型&#xff0c;因…

【C语言】浮点型数据在内存中的储存

浮点型数据在内存中的储存 文章目录 浮点型数据在内存中的储存引例概念提出浮点型数据储存规定对于有效数字M的特别规定对于指数E的特别规定指数E的储存指数E的读取 利用规则解释原因 在之前学习过整形数据在内存中的储存后&#xff0c;浮点型数据在内存中的储存又会怎样呢&…

AI辅助论文写作已成大趋势,这些AI工具分享给你

近年来&#xff0c;人工智能语言模型迅速发展&#xff0c;特别是在美国人工智能研究实验室 OpenAI 于 2022 年 11 月发布了聊天机器人 ChatGPT 后&#xff0c;引发了全球范围内的广泛讨论。人们惊叹着一个新的人工智能时代已经到来&#xff0c;预示着许多工作将被这类机器人所取…