其他分享
首页 > 其他分享> > 【Heskey带你玩模拟】凸优化笔记

【Heskey带你玩模拟】凸优化笔记

作者:互联网

优化:从一个可行解的集合(满足约束的可行解)中,寻找出最优的元素

Basic Concept

条件数:\(Ax=B\) 中 \(||A||\cdot||A^{-1}||\)

物理意义:线程方程组的解对b中的误差或不确定度的敏感性的度量(该数量在数值计算中的容易程度的衡量,低条件数是良态的)

1. 梯度下降

梯度下降又称最速下降法

无约束优化:

\[\min_{x\in R^n}f(x) \]

可以通过迭代的方式,将 \(x_0\) 迭代到最优解对应的点 \(x^\star\):

\[x_{t+1}=x_t+\gamma_td_t \]

where:

梯度下降法希望得到一个在该点下降最快的方向,来使得我们的迭代过程尽可能的高效

3. 牛顿法

要求解 \(f(x)=0\),可以通过选取迭代初值 \(x_0\),通过牛顿迭代公式逼近 \(x^\star\)

\[x_{t+1}=x_t-\frac{f(x_t)}{f^\prime(x_t)} \]

3.1 牛顿法在最优化上的应用

最优化-牛顿法(Newton)CSDN

补充:

Jacobian矩阵

Hessian矩阵

函数 \(F:R^n\rightarrow R^m\) 由 \(m\) 个实函数构成:\(y_1(x_1,...,x_n),...,y_m(x_1,...,x_n)\) 则,

Jacobian矩阵:

\[J_F(x_1,...,x_n)= \left[ \begin{array}{3} \frac{\part y_1}{\part x_1}&...&\frac{\part y_1}{\part x_n}\\ ...&...&...\\ \frac{\part y_m}{\part x_1}&...&\frac{\part y_m}{\part x_n} \end{array} \right] \]

Hessian矩阵:

\[H(F)(x)= \left[ \begin{array}{4} \frac{\part^2 F}{\part x_1^2}&\frac{\part^2 F}{\part x_1\part x_2}&...&\frac{\part^2 F}{\part x_1\part x_n}\\ \frac{\part^2 F}{\part x_2x_1}&\frac{\part^2 F}{\part x_2^2}&...&...\\ ...&...&...&...\\ \frac{\part^2 F}{\part x_nx_1}&\frac{\part^2 F}{\part x_nx_2}&...&\frac{\part^2 F}{\part x_n^2} \end{array} \right] \]

(1) 迭代方程

优化问题也就是找极值点 \(f^\prime(x^\star)=g(x)=0\),迭代公式变为

\[x_{t+1}=x_t-\frac{g(x_t)}{g^\prime(x_t)}=x_t-f^{\prime\prime}(x_t)^{-1}f^\prime(x_t) \]

因此,迭代方程为:

\[x_{t+1}=x_t+d=x_t-\nabla^2f(x_t)^{-1}\nabla f(x_t) \]

高维的情况下:

\[x_{n+1}=x_n-[Hf(x)n]^{-1}\nabla f(x_n),\quad n\ge0. \]

其中,\(H\) 为hessian矩阵

在高维情况下,变成线性系统求解问题:

\[x_{n+1}-x_n=-[Hf(x_n)]^{-1}\nabla f(x_n)\\ x=-[Hf(x_n)]^{-1}\nabla f(x_n)\\ [Hf(x_n)]x=-\nabla f(x_n)\\ Ax=B \]

(2) 算法

选定初始 \(x_0\),取 \(\epsilon>0\),Loop:

4. 共轭梯度

共轭梯度法(CG)是实现共轭方向法的一个方法。由于CG是通过梯度信息来获取共轭方向的,所以我们称之为共轭梯度法。

4.1 共轭向量组

在共轭梯度法中,我们想得到的并不是一组相互正交的搜索方向,而是一组相互共轭的搜索方向

设 \(Q\) 是正定矩阵,若对于两个不同的非零向量满足:

\[d_i^TQd_j=0 \]

则称 \(d_i,d_j\) 为共轭方向

若 \(d_0,d_1,...,d_{n-1}\) 均两两满足以上性质,则称为共轭向量组 ,顺着共轭向量组走,不受条件数影响

二次型的共轭向量组:目标二次型Hessian矩阵的平方根逆矩阵的列向量组

4.2 共轭方向法的框架

对于一般的函数,想要求得共轭向量组:

给定初始值 \(x_0\) 和阈值 \(\epsilon>0\),令 \(k=0\)

计算 \(g_0=\nabla f(x_0)\) 和初始下降方向,满足 \(d_0^Tg_0<0\),Loop:

4.3 共轭方向法的本质

共轭向量组彼此是线性无关的,线性无关的 \(n\) 个向量可以张成一个 \(n\) 维空间,即: \(k\) 次得到的搜索方向正交于前面 \(k-1\) 次搜索方向张成的线性空间,新增一个共轭向量,原本的空间就被拓展了维度

共轭方向法的搜索逻辑:先在 \(R\) 上找到最棒的解,然后得到下一个共轭方向,拓展我们的搜索维度,在 \(R^2\) 上搜索,找到最棒的解,这样迭代下去,直到我们的搜索维度达到原问题的维度 \(R^n\)

也就是说,我们每次都是在保证我们已经在目前的这个子空间(或者说线性流形)上已经达到最优了,然后我们再拓展这个子空间的维度,直到这个子空间拓展得和我们原问题得搜索空间一样时,那么得到的解就是最好的

子空间拓展定理

[公式]

空间搜索定理说明了:第 \(k+1\) 次得到的迭代点处的梯度值与之前所有的搜索方向正交,也就是说之前所有的搜索方向再梯度方向上分量都为0,这个方向是“前人”没有探索过的方向,我们需要在这个新的方向上探索更新迭代点

4.4 共轭梯度法

共轭梯度法:通过梯度信息来获得共轭的搜索方向

(1) 搜索方向的构建

构建要求

\[d_k=-g_k+\beta_{k-1}d_{k-1} \]

其中:

\[\beta_{k-1}=\frac{g_k^Tg_{k}}{g_{k-1}^Tg_{k-1}} \]

等价的共轭梯度公式还有很多,以上的 \(\beta\) 只是其中一个(FR [Fletcher-Reeves]公式)

步长:

\[\alpha_k=\frac{g_k^Tg_k}{d_k^TGd_k} \]

(2) 共轭梯度法

目的:要解线性系统:\(Ax=b\) 或者优化二次型:\(f=\frac12x^TGx+b^Tx\)

给定迭代初始值 \(x_0\) 和阈值 \(\epsilon>0\)

令 \(d_0=-g_0,k=0\),Loop:

(3) 预处理共轭梯度

preconditioning

\[Ax=b \]

如果 \(A\) 的性质不好,则可以先乘以预处理矩阵

\[M^{-1}Ax=M^{-1}b \]

总结

标签:frac,迭代,梯度,笔记,Heskey,part,搜索,共轭,模拟
来源: https://www.cnblogs.com/Heskey0/p/16481696.html