随机梯度下降法的数学基础

news2024/9/27 15:29:49

梯度是微积分中的基本概念,也是机器学习解优化问题经常使用的数学工具(梯度下降算法)。因此,有必要从头理解梯度的来源和意义。本文从导数开始讲起,讲述了导数、偏导数、方向导数和梯度的定义、意义和数学公式,有助于初学者后续更深入理解随机梯度下降算法的公式。大部分内容来自维基百科和博客文章内容的总结,并加以个人理解。

导数

导数(英语:derivative)是微积分学中的一个概念。函数在某一点的导数是指这个函数在这一点附近的变化率。导数的本质是通过极限的概念对函数进行局部的线性逼近。当函数 f f f 的自变量在一点 x 0 x_0 x0 处产生一个增量时 h h h 时,函数输出值的增量与自变量增量 h h h 的比值在 h h h 趋于 0 时的极限如果存在,则将这个比值定义为 f f f x 0 x_0 x0 处的导数,记作 f ′ ( x 0 ) f'(x_0) f(x0) d f d x ( x 0 ) \frac{\mathrm{d}f}{\mathrm{d}x}(x_0) dxdf(x0) d f d x ∣ x = x 0 \left.\frac{\mathrm{d}f}{\mathrm{d}x}\right|_{x=x_0} dxdf x=x0

导数是函数的局部性质。不是所有的函数都有导数,一个函数也不一定在所有的点上都有导数。若某函数在某一点导数存在,则称其在这一点可导(可微分),否则称为不可导(不可微分)。如果函数的自变量和取值都是实数的话,那么函数在某一点的导数就是该函数所代表的曲线在这一点上的切线斜率。

对于可导的函数 f f f x ↦ f ′ ( x ) x \mapsto f'(x) xf(x) 也是一个函数,称作 f f f 的导函数。导数示例如下图所示:

函数每个位置处的导数

导数的一般定义如下:

如果实函数 f f f 在点 a a a 的某个领域内有定义,且以下极限(注意这个表达式所定义的函数定义域不含 a a a

lim ⁡ x → a f ( x ) − f ( a ) x − a {\displaystyle \lim _{x\to a}{\frac {f(x)-f(a)}{x-a}}} xalimxaf(x)f(a)

存在,则称 f f f a a a 处可导,并称这个极限值为 f f f a a a 处的导数,记作 f ′ ( a ) f'(a) f(a)

偏导数

偏导数的作用与价值在向量分析和微分几何以及机器学习领域中受到广泛认可。

导数是一元函数的变化率(斜率),导数也是函数,可以理解为函数的变化率与位置的关系。

那么如果是多元函数的变化率问题呢?答案是偏导数,定义为多元函数沿坐标轴的变化率

偏导数是多元函数“退化”成一元函数时的导数,这里“退化”的意思是固定其他变量的值,只保留一个变量,依次保留每个变量,则 N N N 元函数有 N N N 个偏导数。

如果一个变量对应一个坐标轴,那么偏导数可以理解为函数在每个位置处沿着自变量坐标轴方向上的导数(切线斜率)。

在数学中,偏导数(英语:partial derivative)的定义是:一个多变量的函数(或称多元函数),对其中一个变量(导数)微分,而保持其他变量恒定。函数 f f f 关于变量 x x x 的偏导数记为 f ′ ( x ) f'(x) f(x) ∂ f ∂ x \frac{\partial f}{\partial x} xf。偏导数符号 $\partial $ 是全导数符号 d d d 的变体。

假设 f f f 是一个多元函数。例如:

z = f ( x , y ) = x 2 + x y + y 2 z = f(x, y) = x^2 + xy + y^2 z=f(x,y)=x2+xy+y2

我们把变量 y y y 视为常数,通过对方程求导,我们可以得到函数 f f f 关于变量 x x x 的偏导数:

∂ f ∂ x = 2 x + y {\displaystyle {\frac {\partial f}{\partial x}} = 2x + y} xf=2x+y

同理可得,函数 f f f 关于变量 y y y 的偏导数:

∂ f ∂ y = x + 2 y {{\frac {\partial f}{\partial y}} = x + 2y} yf=x+2y

方向导数

在前面导数和偏导数的定义中,均是沿坐标轴正方向讨论函数的变化率。那么当我们讨论函数沿任意方向的变化率时,也就引出了方向导数的定义,即:某一点在某一趋近方向上的导数值

通俗理解就是:我们不仅要知道函数在坐标轴正方向上的变化率(即偏导数),而且还要设法求得函数在其他特定方向上的变化率(方向导数)。如下图所示,点 P P P 位置处红色箭头方向的方向导数为黑色切线的斜率。图片来自链接 Directional Derivative。

Directional Derivative Visual

方向导数的定义参考下图,来源-直观理解梯度,以及偏导数、方向导数和法向量等。

方向导数计算推导

梯度

梯度,写作 ∇ f \nabla f f 或 grad f f f,二元时为( ∂ z ∂ x , ∂ z ∂ y \frac{\partial z}{\partial x}, \frac{\partial z}{\partial y} xz,yz)。梯度是微积分中的基本概念,也是机器学习解优化问题经常使用的数学工具(梯度下降算法)。

在向量微积分中,梯度(英语:gradient)是一种关于多元导数的概括。平常的一元(单变量)函数的导数是标量值函数,而多元函数的梯度是向量值函数。

就像一元函数的导数表示这个函数图形的切线的斜率,如果多元函数在点 P P P 上的梯度不是零向量,则它的方向是这个函数在 P P P 上最大增长的方向、而它的量是在这个方向上的增长率

可以从以下两个例子理解梯度的意义:

  1. 假设有一个房间,房间内所有点的温度由一个标量场 ϕ \phi ϕ 给出的,即点 ( x , y , z ) (x,y,z) (x,y,z) 的温度是 ϕ ( x , y , z ) \phi(x,y,z) ϕ(x,y,z)。假设温度不随时间改变。然后,在房间的每一点,该点的梯度将显示变热最快的方向。梯度的大小将表示在该方向上的温度变化率。

  2. 考虑一座高度函数为 H H H 的山,山上某点 ( x , y ) (x, y) (x,y) 的高度是 H ( x , y ) H(x, y) H(x,y),点 ( x , y ) (x,y) (x,y) 的梯度是在该点坡度(或者说斜度)最陡的方向。梯度的大小会告诉我们坡度到底有多陡。

总结梯度的几何意义:

  • 当前位置的梯度方向,为函数在该位置处方向导数最大的方向,也是函数值上升最快的方向,反方向为下降最快的方向;
  • 当前位置的梯度长度(模),为最大方向导数的值。

总结

  • 方向导数是各个方向上的导数。
  • 偏导数连续才有梯度存在。
  • 梯度的方向是方向导数中取到最大值的方向,梯度的值是方向导数的最大值。

参考资料

  1. 维基百科-偏导数
  2. 直观理解梯度,以及偏导数、方向导数和法向量等

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

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

相关文章

SpringBoot-自动配置-切换内置web服务器

SpringBoot-自动配置-切换内置web服务器 介绍 SpringBoot的web环境中默认使用tomcat作为内置服务器其实SpringBoot提供了4种内置服务器供我们选择分别为:Jetty,Netty,Tomcat,Undertow我们可以很方便的进行切换 实例演示 在pom文件…

简单了解操作系统、进程内存管理

目录 前言: 一、操作系统: 操作系统的定位: 应用程序: 系统调用: 操作系统内核: 驱动程序: 硬件设备: 二、进程: 什么是进程? 进程的描述与组…

自定义类型,结构体、枚举、联合(C语言)

目录 结构体 结构体的基础知识: 结构体的声明: 特殊声明: 结构体的自引用 结构体变量的定义和初始化 结构体内存对齐: 修改默认对齐数: 结构体传参 结构体的柔型数组 柔型数组的书写 柔性数组的特点 柔性数组的使用 柔…

【Java寒假打卡】JavaWeb-Tomcat

【Java寒假打卡】JavaWeb-Tomcat服务器Tomcat下载和安装Tomcat的目录结构基本使用控制台乱码的问题IDEA集成TomcatJavaWeb项目的目录结构Tomcat-idea发布项目Tomcat-WAR包发布项目Tomcat配置文件的介绍Tomcat配置虚拟目录Tomcat配置虚拟主机服务器 Tomcat下载和安装 将下载好的…

干货 | 数据安全和个人信息保护审计的方法研究

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分:概述我们的研究核心是个人信息保护合规审计,具体指个人信息处理活动是否遵守我国相关法律法规的监督性审计。在个保法出台后,我国形成了以内部审计为…

我用ChatGPT写神经网络:一字不改,结果竟很好用

自从去年底推出以来,对话式 AI 模型 ChatGPT 火遍了整个社区。 ChatGPT 的确是一个了不起的工具,就像一个「潘多拉魔盒」。一旦找到正确的打开方式,你或许会发现,自己再也离不开它了。 作为一个全能选手,人们给 Chat…

Fedora 38发布Budgie与Sway定制版

导读两款新的 Fedora 定制版将在 Fedora 38 发布时首次亮相。我们期待着它们在 Fedora 37 时出现,但在 Fedora 38 中终于来了! 早在 2022 年 5 月,Budgie 项目的主要开发者 Joshua Strobl ​​宣布​​,Budgie 已被提交到 Fedora…

第五届字节跳动青训营 前端进阶学习笔记(四)TypeScript入门

文章目录前言TypeScript概要1.什么是TypeScript2.TypeScript基本语法基础数据类型对象类型函数类型函数重载数组类型补充类型泛型约束和泛型默认参数类型别名和类型断言高级类型1.联合类型2.交叉类型3.类型守卫类型谓词总结前言 课程重点: TypeScript概要TypeScri…

Kubernets核心介绍及实战

1、资源创建方式 命令行YAML 2、Namespace 名称空间用来隔离资源 “namespace"通常被翻译为「命名空间」,听起来好像比较抽象,其实重点是在这个"space”。它和描述进程的虚拟地址空间的address space一样,都是提供一种独占的视角…

linux引导和启动程序

1.BIOS/Bootloader: 一上电,硬件强制让cpu的cs:ip寄存器指向bios程序的位置,从bios程序开始执行,由pc机的BIOS (0xFFFFO是BIOs存储的总线地址)把bootsect从某个固定的地址拿到了内存中的某个固定地址(0x90…

SpringAMQP快速入门

介绍Spring AMQP 项目将核心 Spring 概念应用于基于 AMQP 的消息传递解决方案的开发它提供了一个“模板”作为发送和接收消息的高级抽象它还通过“侦听器容器”为消息驱动的 POJO 提供支持这些库促进了 AMQP 资源的管理,同时促进了依赖注入和声明性配置的使用包含两…

纷享销客华为云CXO思享会华东系列活动成功举办!

3天,3座城市,5家标杆企业,11位不同领域的专家,超百位企业家云集。1月10日-13日,纷享销客与华为云联合举办的“数字创新 高效增长”CXO思享会华东系列活动成功举办。全国各地超百名企业家齐聚华东参与本次思享会&#x…

kubeasz安装kubernetes1.25.5

kubeasz安装k8s 1 配置 kubeasz安装kubernetes,只需要做好网通配置,做好ssh免密通信配置即可 1.1 环境介绍 OS:CentOS Linux release 8.5.2111 机器: IPhostname10.104.10.201k8s-master10.104.10.202k8s-node 所有机器,都将…

3-4存储系统-虚拟存储器(CO)

文章目录一.页式存储1.页式存储系统2.逻辑地址到物理地址的转换3.页表4.快表TLB二.虚拟存储器(一)页式虚拟存储器(二)段式虚拟存储器(三)段页式虚拟存储器一.页式存储 1.页式存储系统 为提高主存的空间利…

JS中的splice方法添加或删除数组中的元素

splice方法嘚吧嘚语法下标问题实战splice(index)splice(index,howmany)示例一(howmany>0)示例二(howmany ≤ 0)splice(index,howmany,item1,.....,itemX)howmany ≤ 0示例一(index ≥ 0)示例二(index<0)howmany>0示例一(index ≥ 0)示例二(in…

Spring Cloud Kubernetes 本地开发

简介 Spring Cloud Kubernetes 是spring官方集成Kubernetes的一个框架.可以直接将springboot项目使用Kubernetes做为注册中心.很方便,但是我们本地开发的时候很难进行调试,因为我们本地没有Kubernetes环境. 下面介绍一种能够本地开发的方式 KT-Connect KtConnect(Kt…

【倍增+最短路】P1613 跑路

不知道是因为这样的套路太典了还是因为什么,这难度只有绿题,可是我感觉好难想到QwQ不过今天写了好几道倍增,好像有点感觉了捏P1613 跑路 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)题意:思路:一开始的思路就是建图…

【内存函数】-关于内存的操作函数

作者:小树苗渴望变成参天大树 作者宣言:认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 ,就 给 作 者 点 点 关 注 吧! 内存函数前言一、[memcpy](https://cplusplus.com/reference/cstring/memc…

初识软件测试

作者:~小明学编程 文章专栏:测试开发 格言:热爱编程的,终将被编程所厚爱。 目录 什么是软件测试? 软件测试和软件开发的区别? 调试和测试的区别? 优秀的测试人员应该具备哪些素质&#xff…

cherry-pick的定义和使用方法

1、定义 使用遴选(cherry-pick)命令,Git 可以让你将任何分支中的个别提交合并到你当前的 Git HEAD 分支中。当执行 git merge 或者 git rebase 时,一个分支的所有提交都会被合并。cherry-pick 命令允许你选择单个提交进行整合。 …