梯度:给定函数 f : R n → R f:\R^{n}\rightarrow \R f:Rn→R,且 f f f在点 x x x的一个领域内有意义,若存在向量 g ∈ R n g\in R^{n} g∈Rn满足
l i m p → 0 f ( x + p ) − f ( x ) − g T p ∣ ∣ p ∣ ∣ = 0 \mathop{lim} \limits_{p\rightarrow 0}\frac{f(x+p)-f(x)-g^{T}p}{||p||}=0 p→0lim∣∣p∣∣f(x+p)−f(x)−gTp=0
就称 f f f在 x x x处可微(Frechet可微)。此时 g g g称为 f f f在点 x x x处的梯度,记作 ∇ f ( x ) \nabla f(x) ∇f(x)。如果对区域 D D D上每一个点 x x x都有 ∇ f ( x ) \nabla f(x) ∇f(x)存在,则称 f f f在 D D D上可微
若 f f f在点 x x x处的梯度存在,在定义式中令 p = ξ e i p=\xi e_{i} p=ξei, e i e_{i} ei是第 i i i个分量为1的单位向量,可知 ∇ f ( x ) \nabla f(x) ∇f(x)的第 i i i个分量为 ∂ f ( x ) ∂ x i \frac{\partial f(x)}{\partial x_{i}} ∂xi∂f(x),因此
∇ f ( x ) = ( ∂ f ( x ) ∂ x 1 , ∂ f ( x ) ∂ x 2 , . . . , ∂ f ( x ) ∂ x n ) T \nabla f(x)=(\frac{\partial f(x)}{\partial x_{1}}, \frac{\partial f(x)}{\partial x_{2}}, ...,\frac{\partial f(x)}{\partial x_{n}})^{T} ∇f(x)=(∂x1∂f(x),∂x2∂f(x),...,∂xn∂f(x))T
例如 f ( x , y ) = 1 x 2 + y 2 f(x, y)= \frac{1}{x^{2}+y^{2}} f(x,y)=x2+y21,则 ∇ 1 x 2 + y 2 = − 2 x ( x 2 + y 2 ) 2 i − 2 y ( x 2 + y 2 ) 2 j \nabla \frac{1}{x^{2}+y^{2}}= -\frac{2x}{(x^{2}+y^{2})^{2}}i-\frac{2y}{(x^{2}+y^{2})^{2}}j ∇x2+y21=−(x2+y2)22xi−(x2+y2)22yj
海瑟矩阵:如果函数 f ( x ) : R n → R f(x):\R^{n}\rightarrow \R f(x):Rn→R在 x x x处的二阶偏导数 ∂ 2 f ( x ) ∂ x i ∂ x j ( i , j = 1 , 2 , . . . , n ) \frac{\partial^{2}f(x)}{\partial x_{i} \partial x_{j}}(i, j=1, 2,...,n) ∂xi∂xj∂2f(x)(i,j=1,2,...,n)都存在,则 f f f在点 x x x处的海瑟矩阵为
import numpy as np
from sympy import *
# 导数的计算
x, f1 = symbols('x f1') # 符号化
f1 = ln(x) + sin(1/x)
print('ln(x) + sin(1/x)的导数为:', f1.diff(x))
print("-"*30)
# 梯度的计算
x1, x2, x3, f2 = symbols('x1, x2, x3, f2') # 符号化
f2 = 3*x1**2 + 2*x1*x2 + 2*x2*x3 + x3**2
list1 = []
list1.append(diff(f2, x1))
list1.append(diff(f2, x2))
list1.append(diff(f2, x3))
list1 = np.array(list1)
print('3*x1**2 + 2*x1*x2 + 2*x2*x3 + x3**2的梯度为:', list1)
print("-"*30)
来一个复杂点的例子,计算 f ( x ) = l n ( e x 1 + e x 2 + e 3 ) f(x)=ln(e^{x1}+e^{x2}+e^{3}) f(x)=ln(ex1+ex2+e3)的 ∇ f ( x ) \nabla f(x) ∇f(x)和 ∇ 2 f ( x ) \nabla^{2} f(x) ∇2f(x)
# 梯度的计算
x1, x2, x3, f1 = symbols('x1, x2, x3, f1') # 符号化
f1 = ln(exp(x1) + exp(x2) + exp(x3))
print(f1)
list1 = []
list1.append(diff(f1, x1))
list1.append(diff(f1, x2))
list1.append(diff(f1, x3))
list1 = np.array(list1)
print('ln(exp(x1) + exp(x2) + exp(x3))的梯度为:', list1)
print("-"*30)
# 海瑟矩阵的计算(利用定义计算)
vars = symbols('x1 x2, x3')
f2 = sympify(['ln(exp(x1) + exp(x2) + exp(x3))'])
H = zeros(len(vars), len(vars))
for i, fi in enumerate(f2):
for j, r in enumerate(vars):
for k, s in enumerate(vars):
H[j, k] = diff(diff(fi, r), s)
H = np.array(H)
print('ln(exp(x1) + exp(x2) + exp(x3))的海瑟矩阵为:')
for i in range(3):
for j in range(3):
print(H[i][j])
print()
∇ f ( x ) = [ e x 1 e x 1 + e x 2 + e x 3 , e x 2 e x 1 + e x 2 + e x 3 , e x 3 e x 1 + e x 2 + e x 3 ] \nabla f(x)=[\frac{e^{x1}}{e^{x1}+e^{x2}+e^{x3}},\frac{e^{x2}}{e^{x1}+e^{x2}+e^{x3}},\frac{e^{x3}}{e^{x1}+e^{x2}+e^{x3}}] ∇f(x)=[ex1+ex2+ex3ex1,ex1+ex2+ex3ex2,ex1+ex2+ex3ex3]
∇ 2 f ( x ) = ( e x 1 e x 1 + e x 2 + e x 3 − e 2 x 1 ( e x 1 + e x 2 + e x 3 ) 2 − e x 1 ∗ e x 2 ( e x 1 + e x 2 + e x 3 ) 2 − e x 1 ∗ e x 3 ( e x 1 + e x 2 + e x 3 ) 2 − e x 1 ∗ e x 2 ( e x 1 + e x 2 + e x 3 ) 2 e x 2 e x 1 + e x 2 + e x 3 − e 2 x 2 ( e x 1 + e x 2 + e x 3 ) 2 − e x 2 ∗ e x 3 ( e x 1 + e x 2 + e x 3 ) 2 − e x 1 ∗ e x 3 ( e x 1 + e x 2 + e x 3 ) 2 − e x 2 ∗ e x 3 ( e x 1 + e x 2 + e x 3 ) 2 e x 3 e x 1 + e x 2 + e x 3 − e 2 x 3 ( e x 1 + e x 2 + e x 3 ) 2 ) \nabla^{2}f(x)=(ex1ex1+ex2+ex3−e2x1(ex1+ex2+ex3)2−ex1∗ex2(ex1+ex2+ex3)2−ex1∗ex3(ex1+ex2+ex3)2−ex1∗ex2(ex1+ex2+ex3)2ex2ex1+ex2+ex3−e2x2(ex1+ex2+ex3)2−ex2∗ex3(ex1+ex2+ex3)2−ex1∗ex3(ex1+ex2+ex3)2−ex2∗ex3(ex1+ex2+ex3)2ex3ex1+ex2+ex3−e2x3(ex1+ex2+ex3)2) ∇2f(x)=⎝ ⎛ex1+ex2+ex3ex1−(ex1+ex2+ex3)2e2x1(ex1+ex2+ex3)2−ex1∗ex2(ex1+ex2+ex3)2−ex1∗ex3(ex1+ex2+ex3)2−ex1∗ex2ex1+ex2+ex3ex2−(ex1+ex2+ex3)2e2x2(ex1+ex2+ex3)2−ex2∗ex3(ex1+ex2+ex3)2−ex1∗ex3(ex1+ex2+ex3)2−ex2∗ex3ex1+ex2+ex3ex3−(ex1+ex2+ex3)2e2x3⎠ ⎞
多元函数梯度的定义可以推广到变量是矩阵的情形。对于以 m × n m×n m×n矩阵 X X X为自变量的函数 f ( X ) f(X) f(X),若存在矩阵 G ∈ R m × n G\in \R^{m×n} G∈Rm×n满足
l
i
m
V
→
0
f
(
X
+
V
)
−
f
(
X
)
−
<
G
,
V
>
∣
∣
V
∣
∣
=
0
\mathop{lim} \limits_{V\rightarrow 0}\frac{f(X+V)-f(X)-
就称矩阵变量函数 f f f在 X X X处Frechet可微,称 G G G f f f在Frechet可微意义下的梯度,如果令 ∂ f ∂ x i j \frac{\partial f}{\partial x_{ij}} ∂xij∂f表示 f f f关于 x i j x_{ij} xij的偏导数,则矩阵变量函数 f ( X ) f(X) f(X)的梯度为
但是在实际应用中,矩阵rechet可微的定义和使用往往比较繁琐为此我们需要介绍另外一种定义——Gateaux可微
Gateaux可微:设 f ( X ) f(X) f(X)为矩阵变量函数,如果对任意方向 V ∈ R m × n V\in R^{m×n} V∈Rm×n,存在矩阵 G ∈ R m × n G\in R^{m×n} G∈Rm×n满足
l
i
m
t
→
0
f
(
X
+
t
V
)
−
f
(
X
)
−
<
G
,
V
>
∣
∣
t
∣
∣
=
0
\mathop{lim} \limits_{t\rightarrow 0}\frac{f(X+tV)-f(X)-
则称 f f f关于 X X X是Gateaux可微的,满足上式的 G G G称为 f f f在X处在Gateaxu可微意义下的梯度
线性函数: f ( X ) = t r ( A X T B ) f(X)=tr(AX^{T}B) f(X)=tr(AXTB),其中 A ∈ R p × n A\in \R^{p×n} A∈Rp×n, B ∈ R m × p B\in \R^{m×p} B∈Rm×p, X ∈ R m × n X\in \R^{m×n} X∈Rm×n。对任意方向 V ∈ R m × n V\in R^{m×n} V∈Rm×n以及 t ∈ R t\in \R t∈R,有
l
i
m
t
→
0
f
(
X
+
t
V
)
−
f
(
X
)
t
=
l
i
m
t
→
0
t
r
(
A
(
X
+
t
V
)
T
B
)
−
t
r
(
A
X
T
B
)
t
=
t
r
(
A
V
T
B
)
=
<
B
A
,
V
>
\mathop{lim} \limits_{t\rightarrow 0}\frac{f(X+tV)-f(X)}{t}=\mathop{lim} \limits_{t\rightarrow 0}\frac{tr(A(X+tV)^{T}B)-tr(AX^{T}B)}{t}=tr(AV^{T}B)=
因此, ∇ f ( X ) = B A \nabla f(X)=BA ∇f(X)=BA
二次函数: f ( X , Y ) = 1 2 ∣ ∣ X Y − A ∣ ∣ F 2 f(X, Y)=\frac{1}{2}||XY-A||^{2}_{F} f(X,Y)=21∣∣XY−A∣∣F2,其中 ( X , Y ) ∈ R m × p × R p × n (X,Y)\in \R^{m×p}×\R^{p×n} (X,Y)∈Rm×p×Rp×n对变量 Y Y Y,取任意方向 V V V以及充分小的 t ∈ R t\in \R t∈R,有
f
(
X
,
Y
+
t
V
)
−
f
(
X
,
Y
)
=
t
<
V
,
X
T
(
X
Y
−
A
)
>
+
O
(
t
2
)
f(X, Y+tV)-f(X, Y)=t
由定义可知 ∂ f ∂ Y = X T ( X Y − A ) \frac{\partial f}{\partial Y}=X^{T}(XY-A) ∂Y∂f=XT(XY−A),对变量 X X X,同理有 ∂ f ∂ X = ( X Y − A ) Y T \frac{\partial f}{\partial X}=(XY-A)Y^{T} ∂X∂f=(XY−A)YT
ln-det函数: f ( X ) = l n ( d e t ( X ) ) f(X)=ln(det(X)) f(X)=ln(det(X)), X ∈ S + + n X\in S^{n}_{++} X∈S++n,给定 X ⪰ 0 X\succeq 0 X⪰0,对任意方向 V ∈ S n V\in S^{n} V∈Sn以及 t ∈ R t\in \R t∈R。所以 ∇ f ( X ) = ( X − 1 ) T \nabla f(X)=(X^{-1})^{T} ∇f(X)=(X−1)T
广义实值函数:令 R ˉ = R ∪ { ± ∞ } \bar{\R}=R\cup \{\pm \infty\} Rˉ=R∪{±∞}为广义实数空间,则映射 f : R n → R ˉ f:\R^{n}\rightarrow\bar{\R} f:Rn→Rˉ称为广义实值函数
适当函数:给定广义实值函数 f f f和非空集合 χ \chi χ。如果存在 x ∈ χ x\in \chi x∈χ使得 f ( x ) < + ∞ f(x) <+\infty f(x)<+∞,并且对任意的 x ∈ χ x\in \chi x∈χ,都有 f ( x ) > − ∞ f(x)>-\infty f(x)>−∞,那么称函数 f f f关于集合 χ \chi χ是适当的
下水平集:对于广义实值函数 f : R n → R ˉ f:\R^{n}\rightarrow \bar{\R} f:Rn→Rˉ,把
C α = { x ∣ f ( x ) ≤ α } C_{\alpha}=\{x|f(x)\leq \alpha\} Cα={x∣f(x)≤α}
称为 f f f的 α \alpha α-下水平集
上方图:对于广义实值函数 f : R n → R ˉ f:\R^{n}\rightarrow \bar{\R} f:Rn→Rˉ,把
e p i f = { ( x , t ) ∈ R n + 1 ∣ f ( x ) ≤ t } epi \quad f=\{(x,t)\in R^{n+1}|f(x)\leq t\} epif={(x,t)∈Rn+1∣f(x)≤t}
称为 f f f的上方图
闭函数:对于广义实值函数 f : R n → R ˉ f:\R^{n}\rightarrow \bar{\R} f:Rn→Rˉ,若 e p i f epi \quad f epif为闭集,则称 f f f为闭函数
下半连续函数:设广义实值函数 f : R n → R ˉ f:\R^{n}\rightarrow \bar{\R} f:Rn→Rˉ,若对任意的 x ∈ R n x\in R^{n} x∈Rn,有
l i m i n f y → x f ( y ) ≥ f ( x ) \mathop{lim\quad inf} \limits_{y\rightarrow x}f(y)\geq f(x) y→xliminff(y)≥f(x)
则 f ( x ) f(x) f(x)称为下半连续函数
闭函数与下半连续函数:虽然表明上看这两种函数的定义方式截然不同,但闭函数与下半连续函数是等价的。设广义实值函数 f : R n → R ˉ f:\R^{n}\rightarrow \bar{\R} f:Rn→Rˉ,则以下命题等价
闭(下半连续)函数间的简单运算会保持原有性质