最优化笔记

[toc]


凸性

集合

凸集

【定义】集合\(C\subseteq \mathbb R^n\)凸,指的是\(\forall x_0,x_1\in C,\forall \theta\in [0,1],(1-\theta)x_0+\theta x_1\in C\)

其中,「\((1-\theta)x_0+\theta x_1\)」指的是「\(x_1,x_0\)两点连接成的线段」,这是一个常用的表述技巧。那么,凸集的定义的人话版本,就是「一个集合中任意两点连接成的线段,也在集合中」。

对于一些凸集 \(\{C_i\}_{i\in I}\),以下运算的结果仍然是凸集,这样的运算叫「保凸运算」:

  1. 【交】\(C=\cup_{i\in I}C_i\)是凸集。即:任意个凸集的交集是凸集。这里的「任意个」可以是不可数无穷个。

  2. 【直积】\(C=C_1\times C_2=\{(\boldsymbol {x_1,x_2})\mid \boldsymbol x_1\in C_1,\boldsymbol x_2\in C_2\}\)\(\mathbb R^{n_1+n_2}\)上的凸集。

  3. 【加权和】如果 \(C_i\) 都是\(\mathbb R^n\)上的凸集,\(\beta\in \mathbb R\),那么 \[ C=\sum_{i=1}^I \beta_iC_i=\{\beta_1 x_1+\beta_2 x_2+\cdots +\beta_Ix_I,x_i\in C_i\} \] 是凸集。

  4. 【仿射】如果\(C\)\(\mathbb R^n\)上的凸集,\(A\in \mathbb R^{m\times n},b\in \mathbb R^m\),则\(D=\{Ax+b,x\in C\}\)是凸集。其实,所谓仿射,也就是线性变换再加上一个平移。

有一些比较常见的凸集,需要知道他们的表示方法:

  1. 【超平面】\(H=\{x\in \mathbb R^n\mid w^Tx=b\}\),其中\(w\in \mathbb R^n,b\in \mathbb R\)。称\(w\)为超平面的法向量。

  2. 【半空间】\(H=\{x\in \mathbb R^n\mid w^Tx\geq b\}\),也就是一个超平面把空间分成两个半空间(以及超平面自身)

  3. 【多面体】\(H=\{x\in \mathbb R^n\mid Ax\leq b\}\),也就是有限多个半空间的交集。

  4. 【子空间】\(L\in \mathbb R^n,\forall x,y\in L,\alpha x+\beta y\in L\).这个和高代里面的子空间是一个意思,也就是元素的线性组合仍在子空间中。

  5. 【仿射集/线性流形/仿射子空间】对于子空间\(L\),存在\(\alpha\in\mathbb R^n\)\(M=\alpha+L\),则\(M\)是仿射集。称\(L\)的线性维数为\(M\)的仿射维数,记作\(\dim M\)。其实就是说,子空间不是必须要通过\(0\)点吗,那么把子空间平移了以后,它不通过\(0\)点了,虽然不再是子空间了,但是仍然是线性的,也是凸集。

    例如: \[ M=\{x\in R^n\mid Ax=b\}\\\\ L=\{x\in R^n\mid Ax=0\} \] \(\alpha\)\(Ax=b\) 的任意一个特解。\(\dim M=n-\text{rank} A\)。所以说,一般来说可以用一个非齐次线性方程组\(Ax=b\)的解集来表示仿射集。

  6. 【球体】\(H=\{x\in \mathbb R^n\mid ||x-\alpha||\leq r\}\),其中\(||\cdot||\)是范数,\(\alpha\in\mathbb R^n,r\in \mathbb R\).

  7. 【椭球体】\(H=\{x\in \mathbb R^n\mid x^TEx\leq r\}\),其中\(E\)是对称正定矩阵,\(r\geq 0\)

    例如:\(S=\{x\in \mathbb R^2\mid x_1^2+ix_1x_2+i^2x_2^2\leq 1\}\)

    \[ E_i=\begin{pmatrix} 1 & \dfrac i2\\ \dfrac i2 & i^2 \end{pmatrix} \]\(E_i\)是对称正定矩阵,且\(S=\{x\in \mathbb R^2\mid x^TE_xx\leq 1\}\),故\(S\)是凸集。

  8. 【凸函数的下水平集】\(H=\{x\in S\mid f(x)\leq \alpha\}\),其中\(f\)是凸函数,\(S\)是凸集,\(\alpha\in R\)

还有一类特殊的集合,叫做「锥」。

【定义】称\(K\in \mathbb R^n\)为「锥形的」,当且仅当\(\forall x\in K,\forall \alpha>0,\alpha x\in K\)。如果\(K\)还是凸集,称\(K\)为「锥」。

常见的锥有:

  1. 【第一卦限】\(K=\{x\in \mathbb R^n\mid \forall i,x_i>0\}\)
  2. 【二阶锥】\(K=\{x\in \mathbb R^n\mid x_n\geq\sqrt{\sum_{i=1}^{n-1} x_i^2}\}\)
  3. 【对称矩阵、半正定矩阵、正定矩阵】

集合的内部和闭包

集合的闭包记作\(cl X\),指的是集合中的点列的极限的集合。

例如:对于集合\(x>0\),点列\(1/n\),其极限为\(\lim_{n\to \infty} \dfrac 1n=0\),所以\(0\)在集合\(X\)的闭包中。

闭包是包含\(X\)的最小闭集。

集合的内部记作\(\text{int} X\),指的是集合中,存在以其为中心的球体也在集合中的点构成的集合。

例如:对于集合\(x>0\),对于点\(0\),无论半径\(r\)取何值,球体中的一点\(r\)总是大于\(0\),从而不在集合中,所以\(0\)不在\(X\)的内部。

内部是包含在\(X\)中的最大开集。

但是有时候,对于一个凸集,其内部是空集。比如在\(R^3\)中的平面。此时,无法用内点来对\(X\)进行分析,但是就直观来看,\(X\)并不是一个很「空」的集合。这时候需要定义「相对内部」,也就是在\(X\)的仿射包中定义\(X\)的内部。例如,在\(R^3\)中有一个集合\(X\),它是一个圆形。那么它的仿射包就是包含这个圆形的二维平面。在\(R^3\)中,这个圆形集合的内部是空集。但是如果只在仿射包中看,这个圆形集合的内部就不是空集了。从仿射包看的所谓「内部」,就是「相对内部」。

对于集合\(X\in \mathbb R^n\),其仿射包为\(M\),定义相对内部: \[ \text{ri }X=\left\{x\in X\mid \exists r_x>0 s.t.\{y\in M\mid ||y-x||_2<r_x)\subseteq X\} \right\} \] 看这个可能很晕。其实就是说,在\(X\)中存在一些点,它们满足一个条件,这个条件就是「在\(M\)中存在以这些点为中心的球包含于\(X\)」。我们把这些点的集合称为\(X\)的相对内部。相对内部和内部的区别,就是把「球」所存在的空间,从\(\mathbb R^n\)变成了\(X\)的仿射包。

组合和包

\(x_1\cdots x_k\in \mathbb R^n\)凸组合指的是: \[ \sum_{i=1}^k \theta_i x_i \] 其中\(\theta>0,\sum \theta=1\)。有没有发现这个定义特别像前面「凸集定义」的一部分。在二维空间中,凸组合可以看作经过两个点的线段。所以凸集的定义也可以表示为:\(C\)中的点的凸组合也都属于\(C\),那么\(C\)是凸集。

如果集合\(X\)不是凸集,那么称包含\(X\)的最小凸集\(C\)\(X\)的凸包,记作\(C=\text{conv} X\)。可以证明: \[ \text{conv} X=\left\{\sum_{i=1}^k\theta_ix_i\mid k\in \mathbb Z_{++},x_i\in X,\sum_{i=1}^k\theta_i=1\right\} \] 看着很复杂,其实就是\(X\)中的任意有限个点的凸组合的集合。

\(x_1\cdots x_k\in \mathbb R^n\)仿射组合指的是: \[ \sum_{i=1}^k \theta_i x_i \] 其中\(\sum \theta=1\).相比于「凸组合」,「仿射组合」只是删去了「\(\theta>0\)」的条件。在二维空间中,仿射组合相当于经过两个点的直线。

对于仿射包的定义和生成,也和凸包类似。仿射包记作\(C=\text{aff} X\)

通过仿射包,可以定义任意集合的维数。对于任意非空集合\(X\in \mathbb R^n\),称其仿射包\(\text {aff}X\)的仿射维数是\(X\)的仿射维数,记作\(\dim X\)

\(x_1\cdots x_k\in \mathbb R^n\)锥组合指的是: \[ \sum_{i=1}^k \theta_i x_i \] 其中\(\theta>0\).相比于「凸组合」,「锥组合」只是删去了「\(\sum\theta=1\)」的条件。在二维空间中,锥组合相当于经过两个点的射线。

对于锥包的定义和生成,也和凸包类似。锥包记作\(C=\text{cone} X\)

可以总结一下:

组合类型 系数限制 集合名称 样例
线性组合 无限制 向量子空间 \(\mathbb R^n\)
仿射组合 \(\sum \theta=1\) 仿射集/线性流形/仿射子空间 仿射超平面
锥组合 \(\theta>0\) 第一卦限
凸组合 \(\theta>0,\sum \theta=1\) 凸集 单纯形

凸函数

梯度和海森矩阵

这俩东西后面有用。

梯度: \[ \nabla f(\boldsymbol{x})=\left[\begin{array}{c} \frac{\partial f}{\partial x_1} \\ \vdots \\ \frac{\partial f}{\partial x_n} \end{array}\right] \] 海森矩阵: \[ \nabla^2 f(\boldsymbol{x})=\left[\begin{array}{ccc} \frac{\partial^2 f}{\partial x_1^2} & \cdots & \frac{\partial^2 f}{\partial x_n \partial x_1} \\ \vdots & \ddots & \vdots \\ \frac{\partial^2 f}{\partial x_1 \partial x_n} & \cdots & \frac{\partial^2 f}{\partial x_n^2} \end{array}\right] \] 简单理解,梯度就是一阶导,海森矩阵就是二阶导(曲率)。

凸函数

对于凸集\(S\)上的函数\(f\),如果: \[ f(\theta x_0+(1-\theta)x_1)\leq \theta f(x_0)+(1-\theta)f(x_1) \] 其实就是:函数线上的两点之间的连线,一定在函数线以上。

凸函数的性质有:

  1. 函数\(f\)在凸集\(S\)上是凸函数,等价于其上镜图是凸集。 \[ \text{epi} f=\{(x,r)\in S\times \mathbb R\mid r\geq f(x)\} \]

  2. 函数\(f\)在凸集\(S\)上是凸函数,则有Jensen不等式: \[ f\left(\frac{\sum_{i=1}^m \alpha_i \boldsymbol{x}_{\boldsymbol{i}}}{\sum_{s=1}^m \alpha_s}\right) \leq \frac{\sum_{i=1}^m \alpha_i f\left(\boldsymbol{x}_{\boldsymbol{i}}\right)}{\sum_{s=1}^m \alpha_s} \] 其中\(x_i\in S,\alpha>0\)

    证明:令 \[ \theta_i=\frac{\alpha_i}{\sum_{i=1}^m \alpha_i} \] 因为\(f\)是凸函数,所以其上镜图是凸集,所以其上镜图上的点的凸组合是在上镜图里,有: \[ \begin{align} &\sum_{i=1}^m\theta_i(x_i,f(x_i))\in \text{epi} f\\ &\to \left(\sum_{i=1}^m \theta x_i,\sum_{i=1}^m \theta_i f(x_i)\right)\in \text{epi} f\\ &\to f\left(\sum_{i=1}^m \theta_i x_i\right)\leq \sum_{i=1}^m \theta_i f(x_i) \end{align} \]

  3. 函数\(f\)\(\mathbb R^n\)上凸,当且仅当,\(\forall x_0\in \mathbb R^n,\forall d\in \mathbb R^n,\phi(\alpha)=f(x_0+\alpha d)\)关于\(\alpha\)\(\mathbb R\)上凸。

  4. 函数\(f\)在凸集\(S\)上是凸函数,则其在\(S\)的相对内部上连续。如果有界闭集\(K\subset \text{ri }S\),那么\(f\)\(K\)上Lipschitz连续(比一致连续更强的连续)。

  5. 函数\(f\)一阶偏导连续,那么它在凸集\(S\)上是凸函数,当且仅当 \[ f(y)\geq f(x)+\nabla f(x)^T(y-x),\forall xy\in S \]

  6. 函数\(f\)二阶偏导连续,那么它在内部非空的凸集\(S\)上是凸函数,当且仅当\(\nabla ^2f(x)\)半正定。

  7. 函数\(f\)在凸集\(S\)上是凸函数,有:\(\forall c\in \mathbb R,\{x\in S\mid c\geq f(x)\}\)是凸集。即:使得\(f(x)\)小于一个定值的\(x\)的取值范围是凸集,这个范围叫做下水平集。

  8. 函数\(f\)在凸集\(S\)上是凸函数,则\(f\)的所有局部极小点都是全局极小点,而且局部极小点组成的集合是凸集。如果\(f\)是严格凸的,那么最多有一个极小点。

和凸集一样,有时候直接确定函数是不是凸函数比较难,因此可以利用保凸运算:

  1. 【锥组合】凸函数的锥组合是凸函数。即:对于\(\mathbb R^n\)上的凸函数\(f_i(x)\)\(\forall \alpha_i>0\)\(F(x)=\sum_i \alpha_if_i(x)\)是凸函数。
  2. 【仿射替换】对于\(\mathbb R^n\)上的凸函数\(f_i(x)\)\(x=Ay+b\)\(\mathbb R^m\to\mathbb R^n\)的仿射,则\(h(y)=f(Ay+b)\)\(\mathbb R^m\)上的凸函数。
  3. 【上确界】对于\(\mathbb R^n\)上的凸函数\(f_i(x)\)\(h(x)=\max _{i}f_i(x)\)是凸函数。
  4. 【单调复合】\(f(x)\)\(\mathbb R^n\)上凸,\(h(y)\)\(\mathbb R\)上凸且单增,则\(h(f(x))\)\(\mathbb R^n\)上凸。

解和算法的基本性质

本节主要讨论无约束最优化问题 \[ \min_{x\in S}f(x) \] 其中\(f(x)\)\(n\)元实函数,\(S\)\(R^n\)的子集(在本章,\(S\)在大部分情况下就是\(R^n\))。

可行方向和一阶条件

优化的基本思想是目标函数沿着某个方向可以看作一元函数,于是就可以利用一元函数的微积分。对于向量\(x,d\),如果存在\(\bar \alpha\),使得\(\forall \alpha\in [0,\bar \alpha],x+\alpha d\in S\),那么称\(d\)\(x\)处的可行方向。此时,多元函数转化为一元函数\(\phi(a)=f(x*+ad)\),其导数(方向导数)为: \[ \phi'(a)=\langle \nabla f(x*+ad),d\rangle \] 【一阶必要条件】设\(S\subset R^n\)\(f\)是连续可微的,如果\(x*\)是局部极小点,那么对于\(x*\)处的任何可行方向\(d\),有: \[ \langle \nabla f(x*),d\rangle\geq 0 \] 梯度向量的方向是函数增长最快的方向,其与可行方向的内积非负,表示从\(x*\)出发,在所有可行方向上移动,\(f(x)\)都会增长。

特别的,如果\(x*\)\(S\)的内点,此时所有方向都是可行方向,所以对所有的\(d\)都有一阶必要条件条件,容易发现这时的一阶必要条件实际上是 \[ \nabla f(x*)=0 \]

对于一元函数来说,它就是「一阶导数为零」。

将满足这种条件的点称为「驻点」。

image-20241103161508658

二阶条件

【二阶必要条件】设\(S\subset R^n\)\(f\)是二阶连续可微的,如果\(x*\)是局部极小点,那么对于\(x*\)处的任何可行方向\(d\),有:

  1. \(\langle \nabla f(x*),d\rangle\geq 0\)
  2. 如果\(\langle \nabla f(x*),d\rangle= 0\),则\(d^T\nabla^2f(x*)d\geq 0\)

如果\(x*\)是集合的内点,这两个条件就变成

  1. \(\langle \nabla f(x*),d\rangle= 0\)
  2. \(\nabla^2f(x*)\)半正定

如果\(\nabla ^2f(x*)\)正定,那么\(x*\)是严格局部极小点。

线搜索法

线搜索法指的是在当前迭代点处,根据收集到的信息选择一个有待进一步探测的方向,然后在这个方向上进行一维搜索得到合适的步长,进而得到下一个迭代点的过程。后续的梯度下降法、共轭梯度法、牛顿法、拟牛顿法都是线搜索法。

已知初始估计 \(\boldsymbol{x}_0, k=0\).设 \(\boldsymbol{x}_k\)\(\boldsymbol{g}_k=\nabla f\left(\boldsymbol{x}_k\right) \neq \mathbf{0}\) ,则第 \(k\) 次迭代:

  1. 根据某种近似函数确定设 \(\boldsymbol{x}_k\) 处的搜索方向设 \(\boldsymbol{d}_{\boldsymbol{k}}\),
  2. 线搜索: 求解关于 \(\alpha\) 的一元函数极小化问题

\[ \min _\alpha \phi(\alpha)=f\left(\boldsymbol{x}_k+\alpha \boldsymbol{d}_k\right) \]

​ 得到步长 \(\alpha_k\)

  1. \(\boldsymbol{x}_{k+1}=\boldsymbol{x}_k+\alpha_k \boldsymbol{d}_k\)

不同的线搜索法之所以不同,核心区别在于\(\boldsymbol{d}_k\)的选取。具体来说,由函数的二次近似 \[ f(x) \approx f\left(\boldsymbol{x}_k\right)+\boldsymbol{g}_k^T\left(\boldsymbol{x}-\boldsymbol{x}_k\right)+\frac{1}{2}\left(\boldsymbol{x}-\boldsymbol{x}_k\right)^T \boldsymbol{B}_k\left(\boldsymbol{x}-\boldsymbol{x}_k\right) \] 只要\(\boldsymbol{B}_k\)正定,那么\(\boldsymbol{d}_k\)就一定是下降方向。正是不同的\(\boldsymbol{B}_k\)导致了不同的搜索方向。

所谓的精确线搜索,指的是精确求解\(\min _\alpha \phi(\alpha)=f\left(\boldsymbol{x}_k+\alpha \boldsymbol{d}_k\right)\)。其重要性质为: \[ \nabla f(\boldsymbol{x}_{k+1})^T \boldsymbol{d}_k=0 \] 精确线搜索的运算量经常很大,所以大多数情况下都会用非精确线搜索,即不精确求解\(\min _\alpha \phi(\alpha)=f\left(\boldsymbol{x}_k+\alpha \boldsymbol{d}_k\right)\),转而使用别的方法确定\(\alpha_k\)。如果\(\alpha_k\)的选择不合理,则可能会出现算法无法找到最优解的情况。

算法无法找到最优解

对于一元函数\(f(x)=x^2\),想要求其最小值。选取初始点\(x_0=2\)

左图中有\(d_k=-1,\alpha_k=2+\dfrac 3 {2^{k+1}}\),算法收敛于\(1\)

右图中有\(d_k=(-1)^{k+1},\alpha_k=\dfrac{1}{2^{k+1}}\),算法有两个聚点\(1,-1\)

假设\(\bar \alpha\)是使得\(\phi(\alpha)=\phi(0)\),即\(f(\boldsymbol{x}+\alpha\boldsymbol{d})=f(\boldsymbol{x})\)成立的最小正数,从上述两个例子可以看出,\(\alpha\)的选择不能太过靠近区间\([0,\bar \alpha]\)的两个端点。有一些法则给出了选取\(\alpha\)需要满足的条件。

Armijo条件

定义一次函数 \[ l(\alpha)=\phi(0)+\rho \phi'(0)\alpha \] 其中\(\rho\)是由设计者自由选定的参数。于是这个一次函数是一条完全由\(\rho\)确定的直线,称为「\(\rho\)线」。

image-20241103192043054

如果\(\alpha\)对应的函数值在\(\rho\)线以下,则认为\(\alpha\)不太大。再选取参数「缩短因子」\(\lambda<1\),如果将\(\alpha\)扩大\(\lambda ^{-1}\)倍以后,对应的函数值不再在\(\rho\)线以下,则认为\(\alpha\)不太小。写成数学表达式,有: \[ \begin{cases} \phi(\alpha) &\leq \phi(0)+\rho \phi^{\prime}(0) \alpha \\ \phi(\alpha / \gamma)&>\phi(0)+\rho \phi^{\prime}(0) \alpha / \gamma \end{cases} \]

Goldstein测验

「不太大」的条件不变,将「不太小」的条件改为: \[ \phi(\alpha) \geq \phi(0)+(1-\rho) \phi^{\prime}(0) \alpha \] 这要求\(\rho \in (0,\dfrac 12)\)。在上面的图中,也就是两条经过\((0,\phi(0))\)的虚线之间的范围,即\([b,c]\)

Wolfe准则

如果\(\phi\)不是二次函数,则Goldstein测验可能使得真正的极小点不满足条件(看上面的图)。此时仍然保持「不太大」条件不变,把「不太小」条件改为 \[ \phi'(\alpha)\geq \sigma\phi'(0) \] 这就是Wolfe准则。

无约束优化方法

梯度下降法

梯度下降法的基本格式是: \[ \boldsymbol{x}_{k+1}=\boldsymbol{x}_k-\alpha_k \nabla f(\boldsymbol{x}_k) \] 即线搜索法中让\(\boldsymbol{d}_k\)\(f\)\(\boldsymbol{x}_k\)处的负梯度。

梯度下降法是怎么想到的呢?其实有两种解释。

  1. 函数值在负梯度方向下降最快

  2. 极小化函数在\(\boldsymbol{x}_k\)附近的二次泰勒展开 \[ x_{k+1}=\underset{x\in \mathbb{R}^n}{\arg \min} f\left(\boldsymbol{x}_k\right)+\nabla f\left(\boldsymbol{x}_k\right)^T\left(\boldsymbol{x}-\boldsymbol{x}_k\right)+\frac{1}{2 \alpha_k}\left\|\boldsymbol{x}-\boldsymbol{x}_k\right\|_2^2 \]

梯度下降法有全局收敛性:假设与初始点 \(x_0\) 关联的 \(f\) 的下水平集

\[ S=\left\{\boldsymbol{x}: f(\boldsymbol{x}) \leq f\left(\boldsymbol{x}_0\right)\right\} \]

是紧的(有界闭集), 并且 \(f\) 在包含 \(S\) 的某开集上连续可微. 那么对于步长满足Armijo法则的梯度下降法来说,

  1. 迭代轨迹不离开 \(S: \boldsymbol{x}_i \in S \forall i\)
  2. 除非得到驻点;否则 \(\left\{f\left(\boldsymbol{x}_i\right)\right\}\) 严格单调递减
  3. 轨迹有聚点, 并且每个聚点均是 \(f\) 的驻点.

接下来分析\(f(\boldsymbol{x})\)在满足三种特殊情况的条件下,梯度下降法的复杂性。所谓的复杂性一般指的是一个不等式,衡量了迭代\(k\)步时,所得到的值有多接近局部极小点。这三种特殊情况分别是:

  1. 任何具有Lipschitz(李普希茨)梯度的函数
  2. 任何具有李普希茨梯度的凸函数
  3. 任何具有李普希茨梯度的强凸函数

在此之前,需要定义「李普希茨梯度」和「强凸函数」。

【Lipschitz梯度】 设 \(L \geq 0\). 称函数 \(f\) 的梯度在开集 \(U\) 上是 \(L-\) Lipschitz的,如果

\[ \|\nabla f(\boldsymbol{x})-\nabla f(\boldsymbol{y})\| \leq L\|x-y\| \forall x, y \in U . \]

\(f\) 的梯度在集合 \(S\) 上是 \(L-\) Lipschitz的,如果存在开集 \(U \supseteq S\)使得 \(f\) 的梯度在开集 \(U\) 上是 \(L-\) Lipschitz的.

Lipschitz梯度这个名字可能有点容易让人误解。它并不是一种特殊的梯度,而指的是函数的梯度满足某种条件。

如果函数的梯度满足\(L-\)Lipschitz条件,也称为这个函数是\(L-\)光滑的。函数是\(L-\)光滑的等价于函数的Hesse矩阵的谱范数不大于\(L\),即: \[ \forall \boldsymbol{x},||\nabla ^2f(\boldsymbol{x})||_2\leq L \] 从直观上来说,\(L\)-光滑性质保证了函数的梯度的变化速率是受限的,可以理解为函数的斜率在任意两点之间的变化都有一个上界,这使得优化算法在更新变量时,能对目标函数的变化有一定的控制。

【强凸函数】设 \(l>0\). 称定义在凸集 \(S\) 上的函数 \(f(\) 关于范数 \(\|\cdot\|)\)\(l\) —强凸的(strong convex), 如果对每个 \(x_0, x_1 \in S\) 和每个\(\theta\in(0,1)\) \[ \quad f\left((1-\theta) x_0+\theta x_1\right) \leq(1-\theta) f\left(x_0\right)+\theta f\left(x_1\right)-\frac{l}{2} \theta(1-\theta)\left\|x_0-x_1\right\|^2 . \] 其实就是比凸函数的定义多了一个\(\dfrac{l}{2} \theta(1-\theta)\left\|x_0-x_1\right\|^2 .\)

从直观上来说,强凸性是凸性的加强版,它要求函数不仅仅是凸的,还得有一定的曲率(例如:\(|x|\)不是强凸函数),这样的曲率保证了函数在全局上有唯一的最优解,一般来说,强凸函数的\(l\)越大,函数的「盆地」越深,优化算法收敛的也越快。

具有Lipschitz(李普希茨)梯度的函数

【二次上界】:设\(f\)的梯度是L-Lipschitz的,那么: \[ f(\boldsymbol{y}) \leq f(\boldsymbol{x})+\nabla f(\boldsymbol{x})^T(\boldsymbol{y}-\boldsymbol{x})+\frac{L}{2}\|\boldsymbol{y}-\boldsymbol{x}\|^2 \forall \boldsymbol{x}, \boldsymbol{y} \in \mathbb{R}^n . \] 如果设\(\phi(\alpha)=f(\boldsymbol{x}+a(\boldsymbol{y-x}))\),则上面的式子可以写作(按项对应): \[ \phi(1)\leq \phi(0)+\phi'(0)+\frac L2\|\boldsymbol{y-x}\|^2 \] 由二次上界,可以得到关于梯度下降法的两个结论:

  1. 对于常数步长\(\alpha\in \left(0,\dfrac 2L\right)\),梯度下降法是下降算法

  2. 对于常数步长\(\alpha\in\left(0,\dfrac 1L\right)\),梯度下降法满足 \[ f\left(\boldsymbol{x}_{s+1}\right) \leq f\left(\boldsymbol{x}_s\right)-\frac{\alpha}{2}\left\|\nabla f\left(\boldsymbol{x}_s\right)\right\|^2 \quad \forall s \geq 0 \]

为了证明这个结论,只需要让二次上界定理中的\(\boldsymbol{x}=\boldsymbol{x}_s,y=\boldsymbol{x}_{s+1}=\boldsymbol{x}_s-\alpha_s \nabla f(\boldsymbol{x}_s)\)即可。 \[ f\left(\boldsymbol{x}_{s+1}\right)-f\left(\boldsymbol{x}_s\right) \leq \alpha\left(\frac{\alpha L}{2}-1\right)\left\|\nabla f\left(\boldsymbol{x}_s\right)\right\|^2 \quad \forall s \geq 0 \]\(\alpha\leq \dfrac 2L\),右式为负;当\(\alpha\leq \dfrac 1L\)\(\dfrac {\alpha L}{2}\leq \dfrac 12\)

由这两个结论,可以推出具有Lipschitz(李普希茨)梯度的函数上梯度下降法的复杂度:

\(f\) 的梯度是 \(L-\) Lipschitz的, 且 \(f\) 存在极小点 \(\boldsymbol{x}_*\).记 \(f_*=f\left(\boldsymbol{x}_*\right)\), 则步长为 \(1 / L\) 的 GD 迭代满足

\[ \min _{0 \leq s \leq k-1}\left\|\nabla f\left(\boldsymbol{x}_s\right)\right\| \leq \sqrt{\frac{2 L}{k}\left(f\left(\boldsymbol{x}_0\right)-f_*\right)} \] 这里的「复杂度」是用「前\(k-1\)步中函数的梯度的最小范数」表示的。当这个范数是零时,意味着找到了驻点。这个范数越小,就越接近驻点。

\(\alpha=1/L\)代入\(f\left(\boldsymbol{x}_{s+1}\right) \leq f\left(\boldsymbol{x}_s\right)-\dfrac{\alpha}{2}\left\|\nabla f\left(\boldsymbol{x}_s\right)\right\|^2\),有: \[ \frac{1}{2 L}\left\|\nabla f\left(\boldsymbol{x}_s\right)\right\|^2 \leq f\left(\boldsymbol{x}_s\right)-f\left(\boldsymbol{x}_{s+1}\right) \] 对于\(s=0\sim k-1\),写出这个不等式然后求和,消除中间的项,有: \[ \begin{align} f(\boldsymbol{x}_0)-f(\boldsymbol{x}_s)&\geq \frac 1{2L}\sum_{s=0}^{k-1}\|\nabla f(\boldsymbol{x}_s)\|^2\\ &\geq \frac k{2L} \min _{0 \leq s \leq k-1}\left\|\nabla f\left(\boldsymbol{x}_s\right)\right\| ^2 \end{align} \] 证毕。

具有李普希茨梯度的凸函数

\(f\) 是凸函数, 梯度是 \(L-\) Lipschitz的, 且 \(\boldsymbol{x}_*\) 是它的极小点. 那么步长为 \(1 / L\) 的 GD迭代满足

\[ f\left(\boldsymbol{x}_k\right)-f\left(\boldsymbol{x}_*\right) \leq \frac{L\left\|\boldsymbol{x}_0-\boldsymbol{x}_*\right\|^2}{2 k}, k \geq 1 . \] 这里的「复杂度」是用「当前迭代点的函数值和局部极小值的差」表示的。这个差越小,就越接近驻点。

具有李普希茨梯度的强凸函数

关于强凸函数有如下结论:

  1. \(f\)\(l\) 强凸的当且仅当 \(f(\boldsymbol{x})-\frac{l}{2}\|\boldsymbol{x}\|^2\) 是凸的.
  2. \(f \in C^1\). 则 \(f\) 在凸集 \(S\) 上是1强凸的当且仅当

\[ f(\boldsymbol{y}) \geq f(\boldsymbol{x})+\nabla f(\boldsymbol{x})^T(\boldsymbol{y}-\boldsymbol{x})+\frac{l}{2}\|\boldsymbol{y}-\boldsymbol{x}\|^2, \quad \forall \boldsymbol{x}, \boldsymbol{y} \in S . \]

  1. \(f \in C^2\). 则 \(f\) 在内部非空的凸集 \(S\) 上是 \(l\)-强凸的当且仅当

\[ \nabla^2 f(\boldsymbol{x}) \succeq l \boldsymbol{I}, \quad \forall \boldsymbol{x} \in S . \]

\(f\)\(l\)-强凸的, 它的梯度是 \(L-\) Lipschitz的, 且 \(\boldsymbol{x}_*\)\(f\) 的极小点. 那么步长为 \(1 / L\) 的 GD迭代满足

\[ \left\|\boldsymbol{x}_k-\boldsymbol{x}_*\right\|^2 \leq\left(1-\frac{1}{k}\right)^k\left\|\boldsymbol{x}_0-\boldsymbol{x}_*\right\|^2 \quad \forall k \geq 1, \]

其中 \(\kappa=L / l\).

牛顿法

考虑二次连续可微的函数,对其进行泰勒展开: \[ f(x)\approx q_k(x)=f(\boldsymbol{ x_k})+(\boldsymbol{x-x_k})^T\nabla f(\boldsymbol{x_k})+\dfrac 12 (\boldsymbol{x-x_k})^T\nabla^2f(\boldsymbol{x}_k)(\boldsymbol{x-x_k}) \]\(\nabla^2f(x_k)\)正定时,\(q_k\)有唯一极小点。将极小点作为新迭代,由此得到基本牛顿法: \[ \boldsymbol{x_{k+1}}=\boldsymbol {x}_k-(\nabla ^2f(\boldsymbol{x}_k))^{-1}\nabla f(\boldsymbol x_k) \] 关于牛顿法,有二次收敛定理:假设 \(\nabla^2 f(\boldsymbol{x})\)\(\mathbb{R}^n\) 上是 \(M\)-Lipschitz的,且局部极小点 \(x_*\) 处的Hesse矩阵 \(\nabla^2 f\left(x_*\right)\) 正定, 即存在 \(l>0\) 使得 \(\nabla^2 f\left(x_*\right) \geqslant l I\). 如果初始点 \(x_0\) 满足

\[ \left\|x_0-x_*\right\| \leq \frac{l}{2 M} \]

那么 \(\forall k \geq 0\), 牛顿法是良定义的, 且由它产生的序列至少二次收敛到 \(\boldsymbol{x}_*\).

但是在使用上,基本牛顿法存在一些问题。

  1. \(\nabla^2f(x_k)\)正定,但是牛顿增量很大,导致局部二次近似失效
  2. \(\nabla f(x_k)\)不正定

在这两种情况下,基本牛顿法会失效,因此需要寻求将其修正的方法。常用方法是对于\(\epsilon_k>0\),取 \[ M_k=[\nabla^2f(x_k)+\epsilon_kI]^{-1} \] 计算\(\nabla^2f(x_k)\)的特征值,设\(\epsilon_k\)是让\([\nabla^2f(x_k)+\epsilon_kI]\)特征值大于常数\(\delta\)的最小非负整数,然后沿方向 \[ d_k=-M_k\nabla f(x_k) \] 进行线搜索。

共轭梯度法

【定义:\(G-\)正交/共轭】已知对称正定矩阵\(G\),定义两个向量的\(G-\)内积: \[ \langle\boldsymbol{u}, \boldsymbol{v}\rangle_G=\boldsymbol{u}^T \boldsymbol{G} \boldsymbol{v} \] 如果两个向量的\(G-\)内积为\(0\),则称其为\(G-\)正交或者\(G-\)共轭向量。


最优化笔记
https://suzumiyaakizuki.github.io/2024/10/03/最优化/
作者
SuzumiyaAkizuki
发布于
2024年10月3日
许可协议