python AIOT教程一1.必备多元函数微分学理论基础

本篇博客主要给大家介绍一下,在学习python AIOT方向中,必备的数学基础知识。

一.多元函数

请添加图片描述
定义设D为一个非空的n 元有序数组的集合, f 为某一确定的对应规则。

在这里插入图片描述 若对于每一个有序数组,通过对应规则 f,都有唯一确定的实数 y 与之对应,则称对应规则 f 为定义在 D 上的n 元函数。记为在这里插入图片描述 。 变量 在这里插入图片描述称为自变量;y称为因变量。
当n=1时,为一元函数,记为y=f(x),x∈D;
当n=2时,为二元函数,记为z=f(x,y),(x,y)∈D,图象如下图。
二元及以上的函数统称为多元函数。
请添加图片描述

二.偏导数

请添加图片描述
偏导数,可以看作是导数的推广,对于多元函数来说,我们把其他的自变量固定不动,看成是常量,我们对其中的某一个变量求导数的话,那就是偏导数了,只对一个变量求导数!请添加图片描述
几何意义上面来说就是在某个方向上对原函数来切一下,再去求导,就是偏导数。举例说明:
请添加图片描述
对变量x求偏导数,其中y是常量
请添加图片描述
对变量y求偏导数,其中x是常量
请添加图片描述

三.高阶偏导数

对于多元函数来说,若其一阶偏导数仍是关于每个自变量的函数,并且一阶偏导数对每个自变量的偏导数也存在,则说这个多元函数具有二阶偏导数。以此类推,有三阶偏导数,四阶偏导数等,我们把一阶以上的偏导数称为高阶偏导数。

如果定义在开集 G 上的函数的一阶偏导数关于某个变量可偏微分,就能作出二阶偏导数。同样能定义n阶偏导数。我们即将一阶以上的偏导数称为高阶偏导数。将这些高阶偏导数记为:
请添加图片描述
举例
请添加图片描述

四.梯度

请添加图片描述

定义:
设二元函数在这里插入图片描述在平面区域D上具有一阶连续偏导数,则对于每一个点P(x,y)都可定出一个向量在这里插入图片描述 ,该函数就称为函数 在点P(x,y)的梯度,记作gradf(x,y)或在这里插入图片描述,即有:

gradf(x,y)= =在这里插入图片描述

其中 在这里插入图片描述称为(二维的)向量微分算子或Nabla算子,在这里插入图片描述

在这里插入图片描述是方向l上的单位向量,则

在这里插入图片描述
在这里插入图片描述

由于当方向l与梯度方向一致时,有

在这里插入图片描述

所以当l与梯度方向一致时,方向导数在这里插入图片描述 有最大值,且最大值为梯度的模,即

在这里插入图片描述

因此说,函数在一点沿梯度方向的变化率最大,最大值为该梯度的模。

通俗一点总结一下:梯度可以看成一元函数的导数,对于多元函数来说就是偏导数而已。
多元函数的梯度公式:请添加图片描述

五.雅可比矩阵

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

y=f(x), 其中 x 是 n 维向量表示有 n 个未知数即 n 个自变量,y是k维的向量表示函数对应关系计算返回k个因变量。这句话理解不了不要紧,静下心来,我们继续往后看。

Yi = f(Xi) ,其中每个Xi 和每个 Yi 都是相关的,也就是每个 Yi 是单独从 Xi 映射过来的函数。

那么函数f(X)的雅可比矩阵就是每个Yi 分别对每个 Xi 求偏导,然后构成的矩阵就叫雅可比矩阵:
在这里插入图片描述

可能看到这里还是有点迷惑,不知道怎么用这个玩意,我们举几个例子,然后再回过头看,就会有不一样的理解。

示例一
在这里插入图片描述
示例二
在这里插入图片描述
示例三
在这里插入图片描述
相信大家对雅可比矩阵有了一个全面的认识。

六.Hessian矩阵

Hessian矩阵类似于雅可比矩阵,Hessian矩阵是对于一个多元函数来说的,它就相当于一元函数的二阶导数。
有一个关于x 的n元 函数,自变量为 x 1 , x 2 , x 3   , . . . , x n , {x}_{1},{x}_{2},{x}_{3\, ,...},{x}_{n}, x1,x2,x3,...,xn,那么Hessian矩阵为:
在这里插入图片描述
举个例子:
在这里插入图片描述
从上面例子我们引出来一个问题:什么是正定呢?矩阵的正定是如何判断呢?

答案就在下一个知识点极值判别法则

七.极值判别法则

7.1、极值判定条件
对于一元函数,f(x) = x2的一阶导数等于0处有极值,当f(x)的二阶导数大于0时是极小值,当f(x)的二阶导数小于0时是极大值,可以参考f(x) = x2这个函数,其二阶导数为2,大于0,那么该函数是凸函数。
在这里插入图片描述
对于多元函数 ,首先f(x)的一阶导数等于0,这点是驻点,那它就可能是极值点,它是极大值还是极小值或者不是极值怎么判定呢?

看Hessian矩阵,在f(x)的一阶导数等于0处,就是驻点处。

  1. 如果Hessian矩阵是正定的话,函数在该点有极小值
  2. 如果Hessian矩阵是负定的话,函数在该点有极大值
  3. 如果Hessian矩阵不定,函数在该点不是极值。

那么怎么判断Hessian矩阵正负定呢?

7.2、实对称矩阵的正负定判断
实对称矩阵A正定负定判断条件:
在这里插入图片描述
我们用代码演示一下:
实对称矩阵A负定,代码如下:

import numpy as np
A = np.array([[-2,-3,-1],
			 [-3,-6,-4],
			 [-1,-4,-5]])
v = np.array([3,5,6])
print('给定向量任意向量v',v)
print('求解矩阵A正定判定条件结果是:'v.dot(A).dot(v))
'''
给定向量任意向量v:[3,5,6]
求解矩阵A正定判定条件结果是: -714
'''

但是这样不太容易判断,我们还可以根据特征值正负去判断矩阵正定与否:

  1. 矩阵A的特征值全部大于0,那么矩阵A为正定矩阵;
  2. 矩阵A的特征值全部小于0,那么矩阵A为负定矩阵;

实对称矩阵A负定,特征值代码如下:

import numpy as np
A = np.array([[-2,-3,-1],
			 [-3,-6,-4],
			 [-1,-4,-5]])
w,v = np.linalg.eig(A)
print('矩阵A的特征值特征向量是:')
print(w,v)
'''
矩阵A的特征值特征向量是:
 [-10.54287655  -0.03922866  -2.41789479]  特征值全部为负数

 [[ 0.32798528  0.73697623 -0.59100905]
 [ 0.73697623 -0.59100905 -0.32798528]
 [ 0.59100905  0.32798528  0.73697623]]
'''

那存在不存在特征向量有大与0的,也有小于0的呢? 肯定是存在的,我们称它为不定。那存在不存在特征向量大于等于0的,或者小于等于0的呢? 肯定也是存在的,它们我们称为半正定,或者半负定。

什么是半正定,什么是半负定呢?留个疑问,我们学完下面的二次型就明白啦。

八.二次型

8.1、二次型定义
二次型(quadratic form):n个变量的二次多项式称为二次型,即在一个多项式中,未知数的个数为任意多个,但每一项的次数都为2的多项式。

二次型就是纯二次项构成的一个函数。

因为二次函数(方程)的二次部分最重要,为了发表研究,我们把含有n个变量的二次齐次函数:
在这里插入图片描述
称为二次型。

8.2、二次型表示

我们可以通过矩阵来进行表示
在这里插入图片描述
二次型通俗表现形式:
在这里插入图片描述
二次型矩阵表示:
在这里插入图片描述
这里我们可以发现与我们之前说的Hessian矩阵的判定正负有点相似。

n个变量的二次齐次函数矩阵表示:
在这里插入图片描述
在这里插入图片描述
8.3、二次型应用
在机器学习中,我们可以根据数据分布进行模型选择:

●如果数据分布是一次型的,那我们就可以选择Logistic Regression、SVM 等分界面为-次型的模型;

●如果据分布是二次型的,我们可以选择naive bayes;

●如果数据分布既不是一次型也不是二次型,那我们可以选择基于决策树的模型,例如GBDT、随机森林等,或者DNN (深度神经网络), 这些模型都高度非线性,表达能力极强理论上可以拟合任意曲线。

8.4、Hessian矩阵与二次型
请添加图片描述
将Hessian矩阵A转换为二次型:
在这里插入图片描述
这个就是我们上一节留的疑问,半正定,半负定矩阵。

正定效果图,如下所示:
在这里插入图片描述
如上图所示,正定有极小值,相反负定有极大值。

半正定效果图,如下所示:

在这里插入图片描述
不定效果图,如下所示:
在这里插入图片描述
我们可以看到,不定没有最大值也没有最小值。

以上仅供理解,大概理解正定,负定,半正定,半负定,不定就可以了。

以上就是机器学习必备的多元函数微分学理论基础的知识点。
bye,bye!

python AIOT教程目录:
1.AIOT介绍
2.python AIOT 必备多元函数微分学理论基础

持续更新中。。。,本人马上就要考研了,可能更新有些慢,敬请理解。

猜你喜欢

转载自blog.csdn.net/m0_51951121/article/details/126319744
今日推荐