彩笔运维勇闯机器学习--梯度下降法

news/2025/12/14 12:08:43/文章来源:https://www.cnblogs.com/MrVolleyball/p/19096369

前言

彩笔运维勇闯机器学习,今天我们来讨论一下梯度下降法

梯度

首先要搞明白什么是梯度,那就要先从导数说起

导数

函数\(y=f(x)\)的自变量\(x\)在一点\(x_0\)上产生一个增量\(\Delta x\)时,函数输出值的增量\(\Delta y=f(x_0 + \Delta x)-f(x_0)\)与自变量增量\(\Delta x\)的比值在\(\Delta x\)趋于0时的极限\(a\)如果存在,\(a\)即为在\(x_0\)处的导数

\[f'(x) = \frac{\partial y}{\partial x} = \lim_{\Delta x \to 0} \frac{f(x + \Delta x) - f(x)}{\Delta x} = a \]

gradient_1

(该图来自于百度百科)

偏导数

偏导数与导数的本质是一样的,只不过偏导数解决的是多变量的问题

\[\frac{\partial f}{\partial x_i} = \lim_{\Delta x_i \to 0} \frac{f(x_1, \dots, x_i + \Delta x_i, \dots, x_n) - f(x_1, \dots, x_i, \dots, x_n)}{\Delta x_i} \]

比如二元函数\(f(x,y)\)

\(x\)求偏导:

\[\frac{\partial f}{\partial x} = \lim_{\Delta x \to 0} \frac{f(x + \Delta x, y) - f(x, y)}{\Delta x} \]

\(y\)求偏导:

\[\frac{\partial f}{\partial y} = \lim_{\Delta y \to 0} \frac{f(x, y + \Delta y) - f(x, y)}{\Delta y} \]

gradient_2

(该图来自于百度百科)

超过二元的就画不出来图来了

方向导数

导数与偏导数都是自变量相对于某一轴方向(比如x相对于x轴,y相对于y轴)讨论变化率,而如果自变量可以其定义域内自由选择方向讨论变化率

一个多元函数\(f\)和一个方向向量\(u\),方向导数\(D_uf\)表示函数\(f\)\(u\)方向的变化率

\[D_{\mathbf{u}}f(a) = \lim_{h \to 0} \frac{f(a + hu) - f(a)}{h} \]

用二元函数举例:

\[D_{\mathbf{u}}f(x_0, y_0) = \lim_{h \to 0} \frac{f(x_0 + h u_1, y_0 + h u_2) - f(x_0, y_0)}{h} \]

  • \(u_1 u_2\)表示方向\(u = (u1, u2)\)
  • h表示沿着\(u\)方向的位移

梯度

梯度是多元函数在某一点处所有偏导数构成的向量,表示函数在该点处变化最快的方向及其变化率,对于\(f(x_1,x_2,...,x_n)\),其梯度记为\(\nabla f\)

\[\nabla f = \left(\frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}, \dots, \frac{\partial f}{\partial x_n}\right) \]

  • 方向:梯度指向函数在该点增长最快的方向
  • 大小:梯度的模表示函数在该方向上的最大变化率

方向导数:梯度与单位方向向量u的点积

\[D_uf=\nabla f⋅u \]

\(u\)\(\nabla f\)同方向时,方向导数最大
\(u\)\(\nabla f\)反方向时,方向导数最小

小结

梯度与方向导数:梯度是方向导数中变化率最大的那一个:梯度的方向是方向导数取最大值的方向,而梯度的模长(大小)等于该最大方向导数的值
方向导数与偏导数:偏导数是方向导数的特例,即\(u=(0,1)\),简而言之,方向导数在坐标轴上移动,就是偏导数

了解了梯度的诞生以及概念之后,终于可以来讨论一下本文的主题:梯度下降法

梯度下降法

在回归任务中,用于评估模型的重要指标是损失函数MSE,提高模型的泛化能力就是设法降低MSE

上述关于梯度的描述,梯度就是函数变化率最快的方向,那梯度下降法就是不断沿着付梯度方向寻找MSE的最小值。不同于最小二乘法只能用于线性模型,梯度下降法适用于大部分模型,包括线性回归、逻辑回归等等

核心思想

  • 函数的梯度指向函数值增长最快的方向,负梯度方向则是函数值下降最快的方向
  • 通过不断沿负梯度方向调整参数,逐步逼近函数的最小值点

步骤

  • 初始化,随机选择初始参数或者全部设置为0
  • 迭代更新,每迭代一次都会更新参数的值:$$\theta_{t+1}=\theta_t - \eta ⋅ \nabla f(\theta_t)$$
    • \(\theta_t\):第\(t\)次迭代的参数值
    • \(\eta\):每次更新的幅度,也叫学习率
    • \(\nabla J(\theta_t)\):目标函数\(f\)\(\theta_t\)的梯度
  • 终止迭代的条件:
    • 梯度很小:梯度的模长很小,一般小于\(10^{-6}\)
    • 损失函数变化很小:一般小于\(10^{-6}\)
    • 到达最大迭代次数

计算过程

我们用本系列的第一节:一元线性回归中的数据,用梯度下降法详细演示一次

data = {'result': [0.63, 0.72, 0.72, 0.63, 0.57, 0.52, 0.48, 0.47],'feature1': [22.48, 19.50, 18.02, 16.97, 15.78, 15.11, 14.02, 13.24]
}

目标是找到一组参数,使得损失函数MSE最小:

\[\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat {y}_i)^2 \]

带入\(y=\beta_0 + \beta_1 x\)

\[f(\beta_0 , \beta_1) = \frac{1}{n} \sum_{i=1}^{n} (\beta_0 + \beta_1 x_i - \hat {y}_i)^2 \]

首先计算梯度,分别对\(\beta_0\)\(\beta_1\)求偏导

先对\(\beta_0\)求偏导:

\[\frac{\partial f}{\partial β_0} = \frac{1}{n} \sum_{i=1}^{n} 2(β_0 + β_1x_i - \hat {y}_i)⋅(β_0 + β_1x_i - \hat {y}_i)' = \frac{2}{n} \sum_{i=1}^{n} (β_0 + β_1x_i - \hat {y}_i) \]

在对\(\beta_1\)求偏导:

\[\frac{\partial f}{\partial β_1} = \frac{1}{n} \sum_{i=1}^{n} 2(β_0 + β_1x_i - \hat {y}_i)⋅(β_0 + β_1x_i - \hat {y}_i)' = \frac{2}{n} \sum_{i=1}^{n} (β_0 + β_1x_i - \hat {y}_i)⋅x_i \]

至此得出梯度:

\[\nabla f = (\frac{2}{n} \sum_{i=1}^{n} (β_0 + β_1x_i - \hat {y}_i), \frac{2}{n} \sum_{i=1}^{n} (β_0 + β_1x_i - \hat {y}_i)⋅x_i) \]

设置参数,学习率\(\eta=0.001\),迭代次数100次,开始迭代:

1)第一轮迭代,先初始化\(\beta_0\) \(\beta_1\)为0

计算损失函数:

\[\begin{aligned} MSE &= f(\beta_0 , \beta_1) = \frac{1}{n} \sum_{i=1}^{n} (\beta_0 + \beta_1 x_i - \hat {y}_i)^2 \\&= \frac{1}{8}[(0-0.63)^2+(0-0.72)^2+...+(0-0.47)^2] = 0.35965 \end{aligned} \]

计算梯度:

\[\begin{aligned} \frac{\partial f}{\partial β_0} &= \frac{2}{n} \sum_{i=1}^{n} (β_0 + β_1x_i - \hat {y}_i) \\&= \frac{1}{4}[(0-0.63)+(0-0.72)+...+(0-0.47)] = -1.185 \end{aligned} \]

\[\begin{aligned} \frac{\partial f}{\partial β_1} &= \frac{2}{n} \sum_{i=1}^{n} (β_0 + β_1x_i - \hat {y}_i)⋅x_i \\&= \frac{1}{4}[(0-0.63)·22.48+(0-0.72)·19.50+...+(0-0.47)·13.24] = -20.418025 \end{aligned} \]

\[\nabla f = (-1.185, -20.418025) \]

损失函数与梯度均小于\(10^{-6}\),继续迭代第二轮

2)第二轮迭代,先初始化\(\beta_0\) \(\beta_1\)

\[\beta_0 ← \beta_0 - \eta · \frac{\partial f}{\partial β_0} = 0 - 0.001·(-1.185) = 0.001185 \]

\[\beta_1 ← \beta_1 - \eta · \frac{\partial f}{\partial β_1} = 0 - 0.001·(-20.418025) = 0.020418025 \]

计算损失函数:

\[MSE = f(\beta_0 , \beta_1) = \frac{1}{n} \sum_{i=1}^{n} (\beta_0 + \beta_1 x_i - \hat {y}_i)^2 = 0.064501 \\ \]

计算梯度:

\[\frac{\partial f}{\partial β_0} = \frac{2}{n} \sum_{i=1}^{n} (β_0 + β_1x_i - \hat {y}_i) = -0.492909 \]

\[\frac{\partial f}{\partial β_1} = \frac{2}{n} \sum_{i=1}^{n} (β_0 + β_1x_i - \hat {y}_i)⋅x_i = -8.395268 \]

\[\nabla f = (-0.492909, -8.395268) \]

损失函数与梯度均小于\(10^{-6}\),继续迭代第三轮...

就这样不断迭代下去,直至满足停止的条件,停止之后,该轮次的\(β_0\) \(β_1\)就是最佳参数

联系我

  • 联系我,做深入的交流


至此,本文结束
在下才疏学浅,有撒汤漏水的,请各位不吝赐教...

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

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

相关文章

vs code运行Java遇到的输入问题

关于在vs code中运行Java无法输入鸣谢我的室友徐同学和亲爱的元宝同学还有ChatGPT老师为什么 code runner内置的编译逻辑是直接运行你的代码,但是java的独特输入方式正好与其不同,导致直接默认输入为空 public class Sqrt{public static void main(String[] args) {double EP…

关于数据跨境,你应该了解的合规难题有哪些?

数据跨境合规难破?匿名化就丢数据价值?本文详解如何攻克隐私保护与算法研发的矛盾,从精准模糊到生成式AI匿名化技术,助你合规传输高价值数据,释放全球研发潜能!当下正是一个由数据驱动的伟大变革时代。从ADAS到AD,每一次技术的跃迁都离不开海量道路数据的采集、标注与分…

doubletrouble wp复盘

因为这台机子形式比较特殊,所以做个wp nmap ┌──(kali㉿kali)-[~/replay/doubletr] └─$ nmap -sT -p- 192.168.48.67 Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-10 23:17 EDT Nmap scan report for 192.168.48.67 Host is up (0.0058s latency). Not shown: 6…

软件设计师知识点总结(2023)上

第1题: 第2题: 第3题: 第4题: 第5题: 第6题:第7题:第8题: 第9题: 先来先服务:最短寻道时间:电梯调度: 单向扫描: 第10题: 第11题: 第12题: 第13题: 第14题: 第15题: 第16题: 第17题: 第18题: 第19题:

【运维自动化-标准运维】各类全局变量使用说明(中)

一、集群资源筛选 此变量用于按照资源筛选方案创建新的集群。 创建 输入名称和KEY值 引用 ${KEY}引用${KEY},返回的是创建集群成功的信息Allocate {set_number} sets with names: 引用${KEY._module},返回的是集群下的模块信息,类型为字典,键为模块名,值为模块下的主机列表…

adobe illustrator中生成连续直角线段

001、工具栏选矩形工具 002、绘制一个矩形 003、鼠标切换到这里 004、 鼠标以横向拖动的方式选中一个边 005、键盘delete健删除 006、同样的方法删除下边这条边 。

【IEEE出版|EI检索稳定】第四届云计算、大数据应用与软件工程国际学术会议(CBASE 2025)

CBASE 2025旨在汇聚全球云计算、大数据、软件工程等计算机相关领域的顶尖学者与专业人士,打造一个高水平、国际化的学术交流平台,共同探讨最新研究进展与发展趋势。会议诚挚欢迎云计算、大数据、软件工程、网络安全、人工智能、计算机视觉、机器学习、智能计算等方向的专家学…

取证 - voasem

分类 内存取证 经常利用volatility分析取证文件后缀 .raw、.vmem、.img 常用命令(imageinfo,pslist,dumpfiles,memdump) 可疑的进程(notepad,cmd) 和磁盘取证结合起来考察 了解部分操作系统原理 常见文件后缀dmg,img命令 python3 vol.py -f [取证文件] 插件可以使用 -h…

Symbol VBRK: Invalid data type u SAP 事务成功新号码获取到 但是提交后提示失败如何处理

前几天用户提了个错误问题 Symbol "VBRK": Invalid data type "u" 提示说发票创建车工但是离开的时候报错 分析问题可能 增强失败 ST22检查没有讯息 今天经过更老的老师傅提示 SM14查看可能事务回滚了 赶紧查看了下 有错 点击 DEBUG发现是发票创建成功以…

three.js中怎么加载 .gltf/glb格式 文件

3D编辑器格式 用于特定应用程序(主要是3D编辑器):. .blend (Blender), .max (3d Studio Max), .mb and .ma (Maya), etc... 交换格式 有.OBJ, .DAE (Collada), .FBX.等格式。它们被设计出来用于3D编辑器之间交换信息的。因此,它们通常比所需的大得多(内含3D编辑器内所需要的…

【SPIE独立出版|连续多年EI稳定检索】第七届地球科学与遥感测绘国际学术会议(GRSM 2025)

为交流近年来国内外在地球、地理科学和遥感测绘领域的理论、技术和应用的最新进展,展示最新成果,第七届地球科学与遥感测绘国际学术会议将于2025年10月17-19日在中国-乌鲁木齐召开,GRSM 2025旨在为从事地球科学和遥感测绘领域的专家学者、工程技术人员、技术研发人员提供一个…

手把手教你实现C++高性能内存池,相比 malloc 性能提升7倍!

大家好,我是小康。 写在前面 你知道吗?在高并发场景下,频繁的malloc和free操作就像是程序的"阿喀琉斯之踵",轻则拖慢系统响应,重则直接把服务器拖垮。 最近我从0到1实现了一个高性能内存池,经过严格的压测验证,在8B到2048B的分配释放场景下,性能相比传统的ma…

内外网文件传输方式有哪些:从传统方案到专业系统的全面解析!

在数字化时代,企业数据流通需求日益增长,许多企业为保障核心数据安全实施网络隔离,由此催生了内外网文件传输的高频场景。内外网文件传输指在企业内部网络与外部网络(或不同安全域隔离网络)之间,实现文件数据流通的行为,其核心诉求是在突破网络连接限制的同时,兼顾安全…

实用指南:DeerFlow 实践:华为IPD流程的评审智能体设计

实用指南:DeerFlow 实践:华为IPD流程的评审智能体设计pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", mon…

AI赋能CRM:纷享销客智能图像提升终端运营效率

在消费品行业竞争日益白热化的当下,终端已成为品牌竞争的核心战场。门店陈列是否规范、数据是否真实、执行是否合规,让诸多企业陷入“看不见、管不清、控不住”的终端管理困境。 面对这一核心痛点,纷享销客推出全新升级的纷享 AI 图像智能,以 AI 技术重新定义终端管理模式。…

一款基于 .NET 开源美观、功能丰富的串口调试工具

前言 今天大姚给大家分享一款基于 .NET 开源(GPL-3.0 license)、美观、流畅、高效、功能丰富的串口调试工具:SuperCom。 工具介绍 SuperCom 是一款基于 .NET 开源(GPL-3.0 license)、美观、流畅、高效、功能丰富的串口调试工具,主要用于 Window 串口日志的采集、存储、可…

麒麟系统中docker常用命令

检查 docker 服务是否已启动 sudo systemctl status dockersudo systemctl start docker # 启动 sudo systemctl enable docker # 设置开机自启 sudo systemctl restart docker #重启docker查看 docker 镜像和容器docker images # 列出本地所有镜像 docker…

2015年7月微软安全更新深度解析:SQL Server、IE及系统漏洞修复

微软2015年7月发布14项安全更新,含4项紧急补丁,涉及SQL Server远程代码执行、IE浏览器漏洞、Hyper-V虚拟化风险等关键技术领域,同时提供Windows Server 2003最终安全更新和恶意软件清除工具增强。2015年7月安全更新概要 2015年7月15日(日本时间),微软发布14项新安全公告(…

国产传输软件解决方案厂商优选指南

内容概要 在当今数字化时代,选择合适的国产传输软件解决方案厂商对于企业的信息安全与业务效率至关重要。众多厂商中,国产传输软件解决方案厂商以其专业实力脱颖而出,其中Ftrans SFT文件安全传输系统‌备受瞩目。本指南旨在通过深入分析厂商的全面适配信创生态能力、解决方案…

安卓方程式计算器HiPER Calc PRO v11.2.7 高级版

HiPER Calc Pro(原应用名称HiPER Scientific Calculator高级版),一款收费非常好用且无广告功能强大的方程式图形计算器,分数计算器,代数计算器,矩阵计算器,具备完整图形、算术方程式、表格、常数、函数强大功能。它多包含100位有效数字和9位小数,支持检测重复的小数,并…