【人工智能里的数学】多元函数的微分学

news/2025/1/12 21:42:25/

【人工智能里的数学】多元函数的微分学

系列文章目录

【人工智能学习笔记】人工智能里的数学——概述
【人工智能里的数学】一元函数微分学
【人工智能里的数学】线性代数基础
【人工智能里的数学】多元函数微分学

文章目录

文章目录

  • 系列文章目录
  • 文章目录
  • 偏导数
  • 高阶偏导数
  • 梯度
  • 雅可比矩阵
  • Hessian 矩阵
  • 极值判别法则

偏导数

image-20230612211222280

偏导数,可以看作是导数的推广,对于多元函数来说,我们把其它的自变量固定不动,看成是常量,我们对其中的某一个变量求导数的话,那就是偏导数了,偏偏对一个变量求导数!

image-20230612211549540

几何意义上面来说就是在某个方向上对原函数来切一下,再去求导,就是偏导数

image-20230612211758151

有些时候我们也可以更简洁的写

image-20230612212034022

高阶偏导数

有高阶导数的话,同样我们有高阶偏导数,它的情况比高阶导数要复杂一些,因为它的求导变量有多个,比如说

image-20230612212429900

它对 x,y 求高阶偏导数的话,就是先对 x 求偏导,再对 y 求偏导,其实跟一元函数的高阶导数是一样的,依次对每个变量反复求导呗,我们还是以上面的公式为例

image-20230613193151165

对 x 求偏导,然后再对 x 求偏导就等于 2 了

image-20230613193621507

有个重要的结论,就是高阶导数和求导次序无关

image-20230613193700614

梯度

机器学习中的梯度下降法,和牛顿法很多地方都会用到这个概念的

image-20230613193755617

梯度可以看成是一元函数它的导数,对于多元函数的推广

对于多元函数如果它的自变量有 N 个

image-20230613193903607

它的梯度是个向量,是由对 X1 X2 等的偏导数构成的这样一个向量,称之为梯度

梯度我们用倒三角这个符号来表示作用于 f(x)得到这样一个向量,式子里面的 T 表示往往我们把它转置一下,看成是列向量

雅可比矩阵

这个可能很多同学学高等代数的时候可能没有学过,但是这个也比较好理解,就是由一阶偏导数构成的矩阵,发明它的目的主要是为了简化求导公式,对多元的复合函数求导,如果我们用雅可比矩阵来计算的话,它会写起来非常简洁,这在我们的人工神经网络反向推导的过程中往往会看到的

image-20230613194247925

假设有这样一个函数可以把 n 维 x 向量映射为 k 维的向量 y

image-20230613194349461

其中每个 xi 和每个 yi 都相关的,也就是每个 yi 是单独从 xi 映射过来的函数

它的雅可比矩阵就是每个 yi 分别对每个 xi 求偏导,然后构成的矩阵叫做雅可比矩阵

第一行就是 y1 对 X1 X2 到 Xn 求偏导,第二行就是 y2 对 X1 X2 到 Xn 求偏导,第 k 行就是 yk 对 X1 X2 到 Xn 求偏导,

image-20230613194533694

如果 xi 是 n 维向量,y 是 k 个值的结果,那么雅可比矩阵就是 k*n 的矩阵

image-20230613194625113

如果 x1,x2,x3 会映射成为 y1,y2,y1 是 x1,x2,x3 的函数,y2 也是 x1,x2,x3 的函数,那么它的雅可比矩阵是怎么构成的呢?

image-20230613194745681

Hessian 矩阵

它是对于一个多元函数来说的,它就相当于一元函数的二阶导数

怎么定义的呢?有一个 n 元函数,比方说 X1,X2 一直到 Xn

image-20230613194900110

它的 hessian 矩阵是一个 n*n 的矩阵,矩阵里面的元素是什么呢?

它的所有的元素是二阶偏导数构成的,第一个元素是对 X1 求二阶偏导数,第二个元素是对 X1X2 求偏导数,因为咱们前面讲过,多元函数高阶偏导数和顺序无关,所以 hessian 矩阵是对称矩阵

image-20230613195117909

下面这个例子先看一下它的一阶偏导数

image-20230613195157948

然后把 hessian 矩阵求出来

image-20230613195238530

Hessian 矩阵和函数的凹凸性是有密切关系的,如果 hessian 矩阵正定,可以说函数 f(x)是凸函数,如果是负定,它就是凹函数,矩阵正定怎么定义的呢?

极值判别法则

对于一元函数,我们前面讲过,f(x)的一阶导数等于 0 处有极值,当 f(x)的二阶导数大于 0时是极小值,当 f(x)的二阶导数小于 0 时是极大值,可以参考 X 的平方这个函数

多元函数的极值判别法则

首先 f(x)的一阶导数等于 0,这点是驻点的话,那它就可能是极值点,它是极大值还是极小值或者不是极值怎么判定的?

看 hessian 矩阵,在 f(x)的一阶导数等于 0 处,就是驻点处,如果 hessian 矩阵是正定的话,函数在该点有极小值

如果 hessian 矩阵是负定的话,函数在该点有极大值如果 hessian 矩阵不定,还需要看更高阶的导数

对于任意向量 X≠0,都有 image-20230613200017562,那就是正定矩阵,如果是≥的话,那就是半正定矩阵

怎么判断矩阵是正定的呢?就是拿这个式子去证明,

image-20230613200107587

但是这样不太容易,有时候我们会根据几个原则去判断:

矩阵的特征值全部大于 0(矩阵的特征值和特征向量我们会讲到) 矩阵的所有顺序主子式都大于 0(顺序主子式这个我们用的比较少)矩阵合同于单位阵
.(img-2K8dUJuE-1686658156231)]

但是这样不太容易,有时候我们会根据几个原则去判断:

矩阵的特征值全部大于 0(矩阵的特征值和特征向量我们会讲到) 矩阵的所有顺序主子式都大于 0(顺序主子式这个我们用的比较少)矩阵合同于单位阵


http://www.ppmy.cn/news/370462.html

相关文章

Android系统中最重要的一个组件【Framework】

Android Framework是Android系统中最重要的一个组件,它为Android应用开发者提供了一套完整而稳定的API框架,可以方便地实现各种应用功能。Android市场对Framework的需求量非常大,尤其在当前移动互联网时代,Android应用的市场需求也…

MySQL索引的问题

MySQL索引的问题 MySQL索引的问题聚簇索引(Clustered Index)和辅助索引(Secondary Index)执行计划中选择使用哪个索引?统计信息MySQL执行计划如何生成?执行计划如何查看? MySQL索引的问题 1. 什…

最新破解QQ空间收费物品的真实地址(完全可免费使用)

最新破解QQ空间收费物品的真实地址(完全可免费使用) 1.首先把自己空间打开。然后我们随便找个欢迎动画。然后把他的链接网址复制下来2.假如得到的网址http://imgcache.qq.com/qzone/space_item/pre/11/18555_1.gif接下来我们修改:3.把复制的地址改一下即&#xff1…

怎样破解QQ空间代码(转载)及最新收集2009年QQ空间皮肤代码大全 (http://www.enet.com.cn/article/2009/0812/A20090812519367.shtml)

怎样破解QQ空间代码January 25th, 2008 3 comments 破解QQ空间代码 现在最流行的QQ空间代码破解方法: 现在空间的代码其实都是JS… 就是 JAVA script ,一种JAVA脚本. 关于QQ空间JS代码总结… 每一款全屏皮肤都分为top和bg. 在试穿小窝和全屏2种皮肤的时候分别…

QQ空间小助手下载

今天给大家介绍的是一款可以破解QQ空间相册密码的软件,小编在这里提前给大家祝福一下2018年的到来,下面我们开始介绍这款软件的操作方法! 软件下载地址:官方下载1 官方下载2 首先我们先去下载软件,然后解压打开-运行…

如何下载远程maven仓库的jar 手动放到本地仓库?

文章目录 如何下载远程maven仓库的jar 手动放到本地仓库?简单步骤描述:详细步骤描述:案例1:案例2:结语如何下载远程maven仓库的jar 手动放到本地仓库? 在使用Maven构建Java项目时,通常会从中央仓库或其他远程仓库下载所需的依赖库。但是,有时候我们需要手动下载这些依赖库并…

暴力破解QQ空间设置的问题

免责声明: 该代码仅限用于学习和研究目的;不得将下述内容用于非法用途 chrome打开 http://user.qzone.qq.com/qq号,打开开发者工具,在命令行输入如下代码 var answers [];//字典 var con $e(Limit.container); var url "http://&qu…

滑动验证码最简单案例:破解qq空间(豆瓣网)滑块验证码(python+selenium实现)

破解qq空间(豆瓣网)滑块验证码 环境搭建 1、安装chrome浏览器和chromedriver chromedriver下载连接:淘宝镜像 注意 :chromedriver的版本要与你使用的chrome版本对应 下载完成后将chromedriver.exe文件放到python.exe同一目录下…