AI算法工程师 | 04人工智能基础-高等数学知识强化(五)多元函数的微分学

数学知识 之 多元函数的微分学

一、偏导数

概念

偏导数,可以看作是导数的推广

在多元函数中,把其它的自变量固定不动,看成是常量。只对其中的某一个变量(如 x i x_i xi )求导数,这就是偏导数(偏偏对一个变量求导数)
∂ f ∂ x i = lim ⁡ △ x i → 0 f ( x 1 , . . . , x i + △ x i , . . . , x n ) − f ( x 1 , . . . , x i , . . . , x n ) △ x i \frac{\partial f}{\partial x_i}=\lim_{\bigtriangleup x_i\rightarrow 0}\frac{f(x_1,...,x_i+\bigtriangleup x_i,...,x_n)-f(x_1,...,x_i,...,x_n)}{\bigtriangleup x_i} xif=xi0limxif(x1,...,xi+xi,...,xn)f(x1,...,xi,...,xn)

几何意义

几何意义

计算

示例: f ( x , y ) = x 2 + x y − y 2 f(x,y)=x^2+xy-y^2 f(x,y)=x2+xyy2

① 对 x x x 求偏导数:(把 y y y 当成常数)
∂ f ∂ x = 2 x + y \frac{\partial f}{\partial x}=2x+y xf=2x+y
② 对 y y y 求偏导数:(把 x x x 当成常数)
∂ f ∂ y = x − 2 y \frac{\partial f}{\partial y}=x-2y yf=x2y

有些时候,可简洁的写成: f ′ x {f}'x fx f ′ y {f}'y fy

Pyhton中的表示

以下是 cmd 命令端中输入python,所进入的 python 交互窗口

  • 通过代码可验证:上方的式子计算准确性(对多元函数求偏导)
>>> from sympy import diff, symbols
>>> x , y = symbols('x y')  # 用 symbols 函数定义变量
>>>
>>> f = x**2 + x*y - y**2  
>>>
>>> # 用 diff 函数进行求导
>>> diff(f,x) # 对 x 求偏导数
2*x + y
>>> diff(f,y) # 对 y 求偏导数
x - 2*y

注意:

  • 若在导入模块时 from sympy import diff, symbols,出现如下错误
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'sympy'
  • 需要先在 cmd 命令窗口下载 sympy 库 pip install sympy
    处理

二、高阶偏导数

概念

既然有高阶导数,那同样存在高阶偏导数,但它的情况比高阶导数要复杂一些,因为它的求导变量有多个。

  • 比如下式 ☞ 对 x x x y y y 求高阶偏导数:先对 x x x 求偏导,再对 y y y 求偏导
  • 高阶偏导数跟一元函数的高阶导数是一样的,依次对每个变量反复求导 ∂ 2 f ∂ x ∂ y \frac{\partial^2 f}{\partial x \partial y} xy2f

计算

示例: f ( x , y ) = x 2 + x y − y 2 f(x,y)=x^2+xy-y^2 f(x,y)=x2+xyy2

  • 情况一:先对 x x x 求偏导 ∂ f ∂ x = 2 x + y \frac{\partial f}{\partial x}=2x+y xf=2x+y
    • 然后再对 x x x 求偏导就等于 2
      ∂ 2 f ∂ 2 x = 2 \frac{\partial^2 f}{\partial^2 x}=2 2x2f=2
    • 然后再对 y y y 求偏导就等于 1
      ∂ 2 f ∂ x ∂ y = 1 \frac{\partial^2 f}{\partial x \partial y}=1 xy2f=1
  • 情况二:先对 y y y 求偏导 ∂ f ∂ y = x − 2 y \frac{\partial f}{\partial y}=x-2y yf=x2y
    • 然后再对 x x x 求偏导就等于 1
      ∂ 2 f ∂ y ∂ x = 1 \frac{\partial^2 f}{ \partial y \partial x}=1 yx2f=1
    • 然后再对 y y y 求偏导就等于 -2
      ∂ 2 f ∂ 2 y = − 2 \frac{\partial^2 f}{ \partial^2y }=-2 2y2f=2

一个结论:高阶导数和求导次序无关
∂ 2 f ∂ x ∂ y = ∂ 2 f ∂ y ∂ x \frac{\partial^2 f}{\partial x \partial y}=\frac{\partial^2 f}{ \partial y \partial x} xy2f=yx2f

Pyhton中的表示

以下是 cmd 命令端中输入python,所进入的 python 交互窗口

  • 通过代码可验证:上方的式子计算准确性(求高阶偏导数)
>>> from sympy import diff, symbols
>>> f = x**2 + x*y - y**2
>>> x,y = symbols('x y') # 用 symbols 函数定义变量
>>> diff(f,x,2) # 对 x 的二阶偏导数
2
>>> diff(f,y,2) # 对 y 的二阶偏导数
-2
>>> diff(diff(f,x),y) # 先对 x 的一阶偏导数,再对 y 的一阶偏导数
1
>>> diff(diff(f,y),x) # 先对 y 的一阶偏导数,再对 x 的一阶偏导数
1
>>>
>>> # 可将 实际数值 代入变量 y 中求具体值
>>> diff(f,y) # 对 y 的一阶偏导数
x - 2*y
>>> diff(f,y).subs(y,2) # 令 y = 2 代入 x - 2*y 中
x - 4

三、梯度

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

关于梯度

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

  • 梯度的概念:对于多元函数,如果它的自变量有 N 个( x 1 x_1 x1 x 2 x_2 x2 x n x_n xn)。它的梯度是个向量,是由对 x 1 x_1 x1 x 2 x_2 x2 x n x_n xn 等的偏导数构成的向量,称之为梯度
  • 梯度的表示:用倒三角符号来表示,表示作用于 f ( x ) f(x) f(x) 得到这样一个向量。式子里往往会通过 T T T 把它转置一下,看成是列向量
    ▽ f ( x ) = ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , . . . , ∂ f ∂ x n ) T \bigtriangledown f(x) = \left ( \frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2},..., \frac{\partial f}{\partial x_n}\right )^T f(x)=(x1f,x2f,...,xnf)T

示例-求梯度

  • f ( x 1 , x 2 ) = x 1 2 + x 1 x 2 − x 2 2 f(x_1,x_2)=x_1^2+x_1x_2-x_2^2 f(x1,x2)=x12+x1x2x22 的梯度
    ▽ f ( x ) = ( ∂ f ∂ x 1 , ∂ f ∂ x 2 ) T = ( 2 x 1 + x 2 , x 2 − 2 x 2 ) T \bigtriangledown f(x) = \left ( \frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2}\right )^T=\left ( 2x_1+x_2,x_2-2x_2\right )^T f(x)=(x1f,x2f)T=(2x1+x2x22x2)T
  • f ( x 1 , x 2 , . . . , x n ) = w 1 x 1 + w 2 x 2 + . . . + w n x n f(x_1,x_2, ... ,x_n)=w_1x_1+w_2x_2+...+w_nx_n f(x1,x2,...,xn)=w1x1+w2x2+...+wnxn 的梯度
    ▽ f ( x ) = ( ∂ f ∂ x 1 , ∂ f ∂ x 2 , . . . , ∂ f ∂ x n ) T = ( w 1 , w 2 , . . . , w n ) T \bigtriangledown f(x) = \left ( \frac{\partial f}{\partial x_1}, \frac{\partial f}{\partial x_2},..., \frac{\partial f}{\partial x_n}\right )^T=\left ( w_1,w_2,...,w_n\right )^T f(x)=(x1f,x2f,...,xnf)T=(w1,w2,...,wn)T

四、雅可比矩阵

雅可比(Jacobian)矩阵:是由一阶偏导数构成的矩阵,发明它的目的主要是为了简化求导公式

  • 优点:对多元的复合函数求导,如果用雅可比矩阵来计算,它会写起来非常简洁
  • 应用:在人工神经网络(ANN)反向推导(BP)的过程中往往会看到雅可比矩阵的使用

定义

  • y = f ( x ) y=f(x) y=f(x):假设有一个函数可以把 n n n x x x 向量映射为 k k k 维的向量 y y y
  • y i = f ( x i ) y_i=f(x_i) yi=f(xi):其中每个 x i x_i xi 和每个 y i y_i yi 都相关,即 每个 y i y_i yi 是单独从 x i x_i xi 映射过来的函数;

函数 f ( x ) f(x) f(x) 的雅可比矩阵就是每个 y i y_i yi 分别对每个 x i x_i xi偏导,然后构成的矩阵叫做雅可比矩阵

雅克比矩阵

小贴士:如果 x i x_i xi n n n 维向量, y y y k k k 个值的结果( k k k 维向量),那么雅可比矩阵就是 k × n k×n k×n 的矩阵

图文理解
雅克比矩阵-理解

计算-求雅克比矩阵

如果 x 1 x_1 x1 , x 2 x_2 x2 , x 3 x_3 x3 根据函数 f ( x ) f(x) f(x) 映射成 y 1 y_1 y1 , y 2 y_2 y2 。其中, y 1 y_1 y1 x 1 x_1 x1 , x 2 x_2 x2 , x 3 x_3 x3 的函数, y 2 y_2 y2 也是 x 1 x_1 x1 , x 2 x_2 x2 , x 3 x_3 x3 的函数,则函数 f ( x ) f(x) f(x) 的雅可比矩阵为:
计算-雅可比矩阵

在神经网络中的应用
在神经网络中的应用

五、Hessian 矩阵

定义

Hessian 矩阵:对多元函数中每个变量分别求二阶求导,它就相当于一元函数的二阶导数

  • 对于一个 n n n 元函数 f ( x ) f(x) f(x),有自变量 x 1 , x 2 , . . . , x n x_1,x_2, ... ,x_n x1,x2,...,xn
    其 Hessian 矩阵(如下图)是一个 n*n 的矩阵,它的所有的元素是二阶偏导数构成的
    Hessian 矩阵

小贴士:由于多元函数高阶偏导数和顺序无关,所以 hessian 矩阵是对称矩阵

计算

f ( x , y , z ) = 2 x 2 − x y + y 2 − 3 z 2 f(x,y,z)=2x^2-xy+y^2-3z^2 f(x,y,z)=2x2xy+y23z2 的 Hessian 矩阵

  • 先求出 f ( x , y , z ) f(x,y,z) f(x,y,z) 的一阶偏导数:
    • f ′ x = 4 x − y f'x=4x-y fx=4xy
    • f ′ y = − x + 2 y f'y=-x+2y fy=x+2y
    • f ′ z = − 6 z f'z=-6z fz=6z
  • 然后把 Hessian 矩阵求出来:
    [ 4 − 1 0 − 1 2 0 0 0 − 6 ] \begin{bmatrix} 4 & -1 &0 \\ -1 & 2 & 0\\ 0 & 0 & -6 \end{bmatrix} 410120006

作用

Hessian 矩阵和函数的凹凸性(极值)是有密切关系的——对机器学习的凹凸性有用(找 loss function 损失函数 的极值)

  • 如果 Hessian 矩阵 正定,函数 f(x) 存在 极小值
  • 如果 Hessian 矩阵 负定,函数 f(x) 存在 极大值

六、极值判别法则

对于一元函数点击可查看相关知识:高等数学知识强化(二)一元函数微分学 ,设 f ( x ) f(x) f(x) x = x 0 x=x_0 x=x0 处二阶可导,且 f ′ ( x 0 ) = 0 f'(x_0) =0 f(x0)=0 f ′ ′ ( x 0 ) ≠ 0 f''(x_0) ≠0 f′′(x0)=0。① 若 f ′ ′ ( x 0 ) > 0 f''(x_0) >0 f′′(x0)0 ,则 f ( x ) f(x) f(x) x 0 x_0 x0 处取得极小值;② 若 f ′ ′ ( x 0 ) < 0 f''(x_0) <0 f′′(x0)0 ,则 f ( x ) f(x) f(x) x 0 x_0 x0 处取得极大值。—— 判别极值的第二充分条件
极值

多元函数的极值判别法则

对于多元函数,首先 f ( x ) f(x) f(x) 的一阶导数等于 0,这点是驻点的话,那它就可能是极值点

问:它是极大值还是极小值或者不是极值怎么判定的?

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

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

实对称矩阵正定判断

A A A 为实对称矩阵:对于任意向量 X ≠ 0 X≠0 X=0,都有 X T A X > 0 X^TAX>0 XTAX>0,则矩阵 A A A正定矩阵;如果 X T A X ≥ 0 X^TAX≥0 XTAX0,则矩阵 A A A半正定矩阵

问:怎么判断矩阵是正定的?

答:拿式子 X T A X . . . X^TAX... XTAX... 去证明,但是这样不太容易,有时候会根据几个原则去判断:

  • 矩阵的特征值全部大于 0(矩阵的特征值和特征向量后续会讲到)
  • 矩阵的所有顺序主子式都大于 0(用的较少)
  • 矩阵合同于单位阵(用的较少)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值