最优化:建模、算法与理论
目前在学习 最优化:建模、算法与理论这本书,来此记录一下,顺便做一些笔记,在其中我也会加一些自己的理解,尽量写的不会那么的条条框框(当然最基础的还是要有)
第二章 基础知识
2.1 范数
2.1.1 向量范数
定义2.1(范数)称一个从向量空间Rn到实数域R的非负函数||·||为范数,如果他满足:
(1)正定性:对于所有的 v ∈ R n v{\in}R^n v∈Rn,有 ∣ ∣ v ∣ ∣ > = 0 ||v|| >= 0 ∣∣v∣∣>=0,且 ∣ ∣ v ∣ ∣ = 0 ||v|| = 0 ∣∣v∣∣=0 当且仅当 v = 0 v=0 v=0
(2)齐次性:对于所有的 v ∈ R n v{\in}R^n v∈Rn和 α ∈ R {\alpha}{\in}R α∈R,有 ∣ ∣ α v ∣ ∣ ||{\alpha}v|| ∣∣αv∣∣= ∣ α ∣ |{\alpha}| ∣α∣ ∣ ∣ v ∣ ∣ ||v|| ∣∣v∣∣
(3)三角不等式:对于所有的 v , w ∈ R n v,w{\in}R^n v,w∈Rn,有 ∣ ∣ v + w ∣ ∣ < = ∣ ∣ v ∣ ∣ + ∣ ∣ w ∣ ∣ ||v+w|| <= ||v|| + ||w|| ∣∣v+w∣∣<=∣∣v∣∣+∣∣w∣∣
最常用的向量范数为lp范数(p >= 1)
∣ ∣ v ∣ ∣ p = ( ∣ v 1 ∣ p + ∣ v 2 ∣ p + … + ∣ v n ∣ p ) 1 / p ||v||_{p} = (|v_{1}|^p + |v_{2}|^p + \ldots + |v_{n}|^p)^{1/p} ∣∣v∣∣p=(∣v1∣p+∣v2∣p+…+∣vn∣p)1/p
显而易见,高数应该都学过,如果 p = ∞ p={\infty} p=∞,那么 l ∞ l_\infty l∞范数定义为 ∣ ∣ v ∣ ∣ ∞ = m a x ∣ v i ∣ ||v||_\infty = max|v_i| ∣∣v∣∣∞=max∣vi∣
记住 p = 1 , 2 , ∞ p = 1,2,{\infty} p=1,2,∞的时候最重要,有时候我们会忽略 l 2 l_2 l2范数的角标
也会遇到由正定矩阵 A A A诱导的范数,即 ∣ ∣ x ∣ ∣ A = x T A x ||x||_A = \sqrt{x^TAx} ∣∣x∣∣A=xTAx
对于 l 2 l_2 l2范数,有常用的柯西不等式,设 a , b ∈ R n a,b{\in}R^n a,b∈Rn,则
∣ a T b ∣ < = ∣ ∣ a ∣ ∣ 2 ∣ ∣ b ∣ ∣ 2 |a^Tb|<=||a||_2||b||_2 ∣aTb∣<=∣∣a∣∣2∣∣b∣∣2
等号成立当且仅当a与b线性相关
2.1.2 矩阵范数
矩阵范数首先也一样要满足那三个特性啦,就是要满足正定性,齐次性,三角不等式,常用的就是 l 1 , l 2 l_1,l_2 l1,l2范数,当 p = 1 p = 1 p=1时,矩阵 A ∈ R m ∗ n A{\in}R^{m*n} A∈Rm∗n的范数定义
∣ ∣ A ∣ ∣ 1 = ∑ i = 1 m ∑ j = 1 n ∣ a i j ∣ ||A||_1={\sum_{i=1}^m}{\sum_{j=1}^n}|a_{ij}| ∣∣A∣∣1=i=1∑mj=1∑n∣aij∣
当 p = 2 p=2 p=2时,也叫矩阵的Frobenius范数(F范数),记为 ∣ ∣ A ∣ ∣ F ||A||_F ∣∣A∣∣F,其实就是所有元素的平方和然后开根号,具体定义如下
∣ ∣ A ∣ ∣ F = T r ( A A T ) = ∑ i , j a i j 2 ||A||_F=\sqrt{Tr(AA^T)}=\sqrt{\sum_{i,j}a_{ij}^2} ∣∣A∣∣F=Tr(AAT)=i,j∑aij2
这里的 T r Tr Tr表示方阵X的迹(这个大家应该都知道吧,我把百度的解释搬过来—在线性代数中,一个n×n矩阵A的主对角线(从左上方至右下方的对角线)上各个元素的总和被称为矩阵A的迹(或迹数),一般记作tr(A)),矩阵的F范数具有正交不变性。
正交不变性呢就是说对于正交矩阵 U ∈ R m ∗ n , V ∈ R m ∗ n U{\in}R^{m*n},V{\in}R^{m*n} U∈Rm∗n,V∈Rm∗n,我们有
∣ ∣ U A F ∣ ∣ F 2 = ∣ ∣ A ∣ ∣ F 2 ||UAF||_F^2=||A||_F^2 ∣∣UAF∣∣F2=∣∣A∣∣F2
具体的推导我这里就不写了哈,打公式太麻烦了哈哈,感兴趣的可以看这本书的第24页或者来找我^^
矩阵范数也可以由向量范数给诱导出来,一般称这种算数为诱导范数,感觉用的不是很多,这里先不扩展开了
除了上诉的1范数,2范数,另一个常用的矩阵范数是核范数,给定矩阵 A ∈ R m ∗ n A{\in}R^{m*n} A∈Rm∗n,核范数定义为
∣ ∣ A ∣ ∣ ∗ = ∑ i = 1 r σ i ||A||_*=\sum_{i=1}^r{\sigma}_i ∣∣A∣∣∗=i=1∑rσi
其中 σ i , i = 1 , 2 , . . . , r {\sigma}_i,i=1,2,...,r σi,i=1,2,...,r为 A A A的所有非0奇异值, r = r a n k ( A ) r=rank(A) r=rank(A),类似于向量的 l 1 l_1 l1范数可以保稀疏性,我们也通常通过限制矩阵的核范数来保证矩阵的低秩性。
2.1.3 矩阵内积
内积一般用来表征两个矩阵之间的夹角,一个常用的内积—Frobenius内积, m ∗ n m*n m∗n的矩阵 A A A和 B B B的Frobenius内积定义为
< A , B > = T r ( A B T ) = ∑ i = 1 m ∑ j = 1 n a i j b i j <A,B>=Tr(AB^T)=\sum_{i=1}^m\sum_{j=1}^na_{ij}b_{ij} <A,B>=Tr(ABT)=i=1∑mj=1∑naijbij
其实就是两个矩阵一一对应元素相乘
同样的,我们也有矩阵范数对应的柯西不等式,设 A , B ∈ R m ∗ n A,B{\in}R^{m*n} A,B∈Rm∗n,则
∣ < A , B > ∣ < = ∣ ∣ A ∣ ∣ F ∣ ∣ B ∣ ∣ F |<A,B>|<=||A||_F||B||_F ∣<A,B>∣<=∣∣A∣∣F∣∣B∣∣F
等号成立当且仅当A和B线性相关
2.2 导数
2.2.1 梯度与海瑟矩阵
梯度的定义(这玩意应该是我之前好像都没见到过的):给定函数 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满足
lim p → 0 f ( x + p ) − f ( x ) − g T p ∣ ∣ p ∣ ∣ = 0 \lim_{p{\rightarrow}0}\frac{f(x+p)-f(x)-g^Tp}{||p||}=0 p→0lim∣∣p∣∣f(x+p)−f(x)−gTp=0
就称 f f f在点 x x x处可微,此时 g g g称为 f f f在点 x x x处的梯度,记作 ∇ f ( x ) {\nabla}f(x) ∇f(x),如果对区域D上的每一个点 x x x都有 ∇ f ( x ) {\nabla}f(x) ∇f(x)存在,则称 f f f在D上可微
然后呢,这其中经过一系列的推导,就可以得到我们耳熟能详的梯度公式
∇ f ( x ) = [ ∂ f ( x ) ∂ x 1 , ∂ f ( x ) ∂ x 2 , . . . , ∂ f ( x ) ∂ x m ] T {\nabla}f(x)=\left[ \begin{matrix} {\frac{{\partial}f(x)}{{\partial}x_1}} ,{\frac{{\partial}f(x)}{{\partial}x_2}} ,...,{\frac{{\partial}f(x)}{{\partial}x_m}} \end{matrix} \right]^T ∇f(x)=[∂x1∂f(x),∂x2∂f(x),...,∂xm∂f(x)]T
对于多元函数,我们可以定义其海瑟矩阵:如果函数 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}^2f(x)}{{\partial}x_i{\partial}x_j}i,j=1,2,...,n ∂xi∂xj∂2f(x)i,j=1,2,...,n都存在,则
∇ 2 f ( x ) = [ ∂ 2 f ( x ) ∂ x 1 2 ∂ 2 f ( x ) ∂ x 1 ∂ x 2 ⋯ ∂ 2 f ( x ) ∂ x 1 ∂ x n ∂ 2 f ( x ) ∂ x 2 ∂ x 1 ∂ 2 f ( x ) ∂ x 2 2 ⋯ ∂ 2 f ( x ) ∂ x 2 ∂ x n ⋮ ⋮ ⋮ ∂ 2 f ( x ) ∂ x n ∂ x 1 ∂ 2 f ( x ) ∂ x n ∂ x 2 ⋯ ∂ 2 f ( x ) ∂ x n 2 ] {\nabla}^2f(x)=\left[ \begin{matrix} \frac{{\partial}^2f(x)}{{\partial}x_1^2} & \frac{{\partial}^2f(x)}{{\partial}x_1{\partial}x_2} & \cdots& \frac{{\partial}^2f(x)}{{\partial}x_1{\partial}x_n}\\ \frac{{\partial}^2f(x)}{{\partial}x_2{\partial}x_1} &\frac{{\partial}^2f(x)}{{\partial}x_2^2} & \cdots & \frac{{\partial}^2f(x)}{{\partial}x_2{\partial}x_n} \\ \vdots & \vdots & &\vdots\\ \frac{{\partial}^2f(x)}{{\partial}x_n{\partial}x_1} &\frac{{\partial}^2f(x)}{{\partial}x_n{\partial}x_2} & \cdots &\frac{{\partial}^2f(x)}{{\partial}x_n^2} \end{matrix} \right] ∇2f(x)= ∂x12∂2f(x)∂x2∂x1∂2f(x)⋮∂xn∂x1∂2f(x)∂x1∂x2∂2f(x)∂x22∂2f(x)⋮∂xn∂x2∂2f(x)⋯⋯⋯∂x1∂xn∂2f(x)∂x2∂xn∂2f(x)⋮∂xn2∂2f(x)
成为 f f f在点 x x x处的海瑟矩阵
当 ∇ 2 f ( x ) {\nabla}^2f(x) ∇2f(x)在区域D上每个点 x x x都存在,就称 f f f在D上二阶可微,若他在D上还连续,可以证明此时的海瑟矩阵是一个对称矩阵
当 f : R n → R m f:R^n{\rightarrow}R^m f:Rn→Rm是向量值函数时,我们可以定义他的雅可比矩阵 J ( x ) ∈ R m ∗ n J(x){\in}R^{m*n} J(x)∈Rm∗n,他的第i行分量 f i ( x ) f_i(x) fi(x)梯度的转置,即
J ( x ) = [ ∂ f 1 ( x ) ∂ x 1 ∂ f 1 ( x ) ∂ x 2 ⋯ ∂ f 1 ( x ) ∂ x n ∂ f 2 ( x ) ∂ x 1 ∂ f 2 ( x ) ∂ x 2 ⋯ ∂ f 2 ( x ) ∂ x n ⋮ ⋮ ⋮ ∂ f m ( x ) ∂ x 1 ∂ f m ( x ) ∂ x 2 ⋯ ∂ f m ( x ) ∂ x n ] J(x)=\left[ \begin{matrix} \frac{{\partial}f_1(x)}{{\partial}x_1} & \frac{{\partial}f_1(x)}{{\partial}x_2} & \cdots& \frac{{\partial}f_1(x)}{{\partial}x_n}\\ \frac{{\partial}f_2(x)}{{\partial}x_1} & \frac{{\partial}f_2(x)}{{\partial}x_2} & \cdots& \frac{{\partial}f_2(x)}{{\partial}x_n}\\ \vdots & \vdots & &\vdots\\ \frac{{\partial}f_m(x)}{{\partial}x_1} & \frac{{\partial}f_m(x)}{{\partial}x_2} & \cdots& \frac{{\partial}f_m(x)}{{\partial}x_n} \end{matrix} \right] J(x)= ∂x1∂f1(x)∂x1∂f2(x)⋮∂x1∂fm(x)∂x2∂f1(x)∂x2∂f2(x)⋮∂x2∂fm(x)⋯⋯⋯∂xn∂f1(x)∂xn∂f2(x)⋮∂xn∂fm(x)
容易看出,梯度 ∇ f ( x ) {\nabla}f(x) ∇f(x)的雅可比矩阵就是f(x)的海瑟矩阵
类似于一元函数的泰勒展开,对于多元函数,这里也不加证明的给出泰勒展开
设 f : R n → R f:R^n{\rightarrow}R f:Rn→R是连续可微的, p ∈ R n p{\in}R^n p∈Rn,那么
f ( x + p ) = f ( x ) + ∇ ( x + t p ) T p f(x+p)=f(x)+{\nabla}(x+tp)^Tp f(x+p)=f(x)+∇(x+tp)Tp
其中 0 < t < 1 0<t<1 0<t<1,进一步,如果说 f f f是二阶连续可微的
f ( x + p ) = f ( x ) + ∇ f ( x ) T p + 1 2 p T ∇ 2 f ( x + t p ) p f(x+p)=f(x)+{\nabla}f(x)^Tp+\frac{1}{2}p^T{\nabla}^2f(x+tp)p f(x+p)=f(x)+∇f(x)Tp+21pT∇2f(x+tp)p
其中 0 < t < 1 0<t<1 0<t<1
最后呢这一章还介绍了一类特殊的可微函数-----梯度利普希茨连续的函数,这类函数在很多优化算法收敛性证明中起着关键作用
梯度利普希茨连续定义:给定可微函数 f f f,若存在 L > 0 L>0 L>0,对任意 x , y ∈ d o m f x,y{\in}domf x,y∈domf有( d o m f domf domf就是 f f f的定义域)
∣ ∣ ∇ f ( x ) − ∇ f ( y ) ∣ ∣ ≤ L ∣ ∣ x − y ∣ ∣ ||{\nabla}f(x)-{\nabla}f(y)||{\le}L||x-y|| ∣∣∇f(x)−∇f(y)∣∣≤L∣∣x−y∣∣
则称 f f f是梯度利普希茨连续的,相应利普希茨常数为 L L L,有时候也会称为 L L L-光滑,或者梯度 L L L-利普希茨连续
梯度利普希茨连续表明, ∇ f ( x ) {\nabla}f(x) ∇f(x)的变化可以被自变量 x x x的变化所控制,满足该性质的函数有很多很好的性质, 一个重要的性质就是具有二次上界
具体证明我这里我就不再过多阐述了,有二次上界就是说 f ( x ) f(x) f(x)可以被一个二次函数上界所控制,即要求说 f ( x ) f(x) f(x)的增长速度不超过二次
还有一个推论就是说,如果 f f f是梯度利普希茨连续的,且有一个全局最小点 x ∗ x^* x∗,我们可以利用二次上界来估计 f ( x ) − f ( x ∗ ) f(x)-f(x^*) f(x)−f(x∗)的大小,其中 x x x可以是定义域中任意一点
1 2 L ∣ ∣ ∇ f ( x ) ∣ ∣ 2 ≤ f ( x ) − f ( x ∗ ) \frac{1}{2L}||{\nabla}f(x)||^2{\le}f(x)-f(x^*) 2L1∣∣∇f(x)∣∣2≤f(x)−f(x∗)
具体的证明我这里就不写了哈,想知道的可以百度或者我们讨论一下
2.2.2 矩阵变量函数的导数
多元函数梯度的定义也可以推广到变量是矩阵的情况,以 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满足
lim V → 0 f ( X + V ) − f ( X ) − < G , V > ∣ ∣ V ∣ ∣ = 0 \lim_{V{\rightarrow}0}\frac{f(X+V)-f(X)-<G,V>}{||V||}=0 V→0lim∣∣V∣∣f(X+V)−f(X)−<G,V>=0
其中 ∣ ∣ ⋅ ∣ ∣ ||·|| ∣∣⋅∣∣是任意矩阵范数,就称矩阵向量函数 f f f在 X X X处 F r a ˊ c h e t Fr\acute{a}chet Fraˊchet可微,就称G为 f f f在 F r a ˊ c h e t Fr\acute{a}chet Fraˊchet可微意义下的梯度,其实矩阵变量函数 f ( X ) f(X) f(X)的梯度也可以用其偏导数表示为
∇ f ( x ) = [ ∂ f ∂ x 11 ∂ f ∂ x 12 ⋯ ∂ f ∂ x 1 n ∂ f ∂ x 21 ∂ f ∂ x 22 ⋯ ∂ f ∂ x 2 n ⋮ ⋮ ⋮ ∂ f ∂ x m 1 ∂ f ∂ x m 2 ⋯ ∂ f ∂ x m n ] {\nabla}f(x)=\left[ \begin{matrix} \frac{{\partial}f}{{\partial}x_{11}} & \frac{{\partial}f}{{\partial}x_{12}} & \cdots& \frac{{\partial}f}{{\partial}x_{1n}}\\ \frac{{\partial}f}{{\partial}x_{21}} & \frac{{\partial}f}{{\partial}x_{22}} & \cdots& \frac{{\partial}f}{{\partial}x_{2n}}\\ \vdots & \vdots & &\vdots\\ \frac{{\partial}f}{{\partial}x_{m1}} & \frac{{\partial}f}{{\partial}x_{m2}} & \cdots& \frac{{\partial}f}{{\partial}x_{mn}} \end{matrix} \right] ∇f(x)= ∂x11∂f∂x21∂f⋮∂xm1∂f∂x12∂f∂x22∂f⋮∂xm2∂f⋯⋯⋯∂x1n∂f∂x2n∂f⋮∂xmn∂f
F r a ˊ c h e t Fr\acute{a}chet Fraˊchet可微的定义和使用往往比较繁琐,为此还有另一种定义----- G a ^ t e a u x G\hat{a}teaux Ga^teaux可微
定义:设 f ( X ) f(X) f(X)为矩阵变量函数,如果存在矩阵 G ∈ R m ∗ n G{\in}R^{m*n} G∈Rm∗n对任意方向 V ∈ R m ∗ n V{\in}R^{m*n} V∈Rm∗n满足
lim t → 0 f ( X + t V ) − f ( X ) − t < G , V > t = 0 \lim_{t{\rightarrow}0}\frac{f(X+tV)-f(X)-t<G,V>}{t}=0 t→0limtf(X+tV)−f(X)−t<G,V>=0
则称 f f f关于 X X X是 G a ^ t e a u x G\hat{a}teaux Ga^teaux的,就称G为 f f f在 G a ^ t e a u x G\hat{a}teaux Ga^teaux可微意义下的梯度
若 F r a ˊ c h e t Fr\acute{a}chet Fraˊchet可微可以推出 G a ^ t e a u x G\hat{a}teaux Ga^teaux可微,反之则不可以,但这本书讨论的函数基本都是 F r a ˊ c h e t Fr\acute{a}chet Fraˊchet可微的,所以我们目前无需讨论,大家了解一下就好了~,统一将矩阵变量函数 f ( X ) f(X) f(X)的导数记为 ∂ f ∂ X \frac{{\partial}f}{{\partial}X} ∂X∂f或者 ∇ f ( X ) {\nabla}f(X) ∇f(X)
举个例子把,免得大家不知道有什么用
考虑线性函数: f ( X ) = T r ( A X T B ) f(X)=Tr(AX^TB) f(X)=Tr(AXTB),其中 A ∈ R p ∗ n , B ∈ R m ∗ p , X ∈ R m ∗ n A{\in}R^{p*n},B{\in}R^{m*p},X{\in}R^{m*n} A∈Rp∗n,B∈Rm∗p,X∈Rm∗n对任意方向 V ∈ R m ∗ n V{\in}R^{m*n} V∈Rm∗n以及 t ∈ R t{\in}R t∈R,有
lim t → 0 f ( X + t V ) − f ( X ) t = lim t → 0 T r ( A ( X + t V ) T B − T r ( A X T B ) ) t \lim_{t{\rightarrow}0}\frac{f(X+tV)-f(X)}{t}=\lim_{t{\rightarrow}0}\frac{Tr(A(X+tV)^TB-Tr(AX^TB))}{t} t→0limtf(X+tV)−f(X)=t→0limtTr(A(X+tV)TB−Tr(AXTB))
= T r ( A V T B ) = < B A , V > =Tr(AV^TB)=<BA,V> =Tr(AVTB)=<BA,V>
所以, ∇ f ( X ) = B A {\nabla}f(X)=BA ∇f(X)=BA
我学到这里时候会有一个疑问,就是 T r ( A V T B ) = < B A , V > Tr(AV^TB)=<BA,V> Tr(AVTB)=<BA,V>是为什么呢?
我们知道, T r ( A V T B ) = T r ( B A V T ) Tr(AV^TB)=Tr(BAV^T) Tr(AVTB)=Tr(BAVT)这个是迹的基本性质, B A BA BA和 V V V都是 m ∗ n m*n m∗n的,那么这时候又有一个性质,假设C和D是相同规模的矩阵,那么 T r ( A T B ) = < A , B > Tr(A^TB)=<A,B> Tr(ATB)=<A,B>
我这里是参考知乎jordi的,这是他的一个关于3*3矩阵的推导
链接:https://www.zhihu.com/question/274052744/answer/1521521561
那么这样就可以推出 T r ( A V T B ) = T r ( V T , B A ) = < B A , V > Tr(AV^TB)=Tr(V^T,BA)=<BA,V> Tr(AVTB)=Tr(VT,BA)=<BA,V>啦