Jordan Lecture Note-3: 梯度投影法
在这一节,我们介绍如何用梯度投影法来解如下的优化问题:
\begin{align} \mathop{\min}&\quad f(x)\nonumber\\\mathop{s.t.}&\quad \mathbf{A}_1 x\leq b_1\nonumber\\&\quad \mathbf{A}_2x= b_2\label{equ:originalModel}\end{align}
其中$x\in\mathbb{R}^n,\mathbf{A}_1\in\mathbb{R}^{m_1\times n},b_1\in\mathbb{R}^{m_1},\mathbf{A}_2\in\mathbb{R}^{m_2\times n},b_2\in\mathbb{R}^{m_2}$,并且假设$\left[\begin{array}{lcr}\mathbf{A}_1\\\mathbf{A}_2\end{array}\right]$为行满秩矩阵。
定义:
- 矩阵$\mathbf{P}\in\mathbb{R}^{n\times n}$,若$\mathbf{P}^\prime=\mathbf{P},\mathbf{P}^2=\mathbf{P}$,则称$\mathbf{P}$为投影矩阵。
- 设$\mathbf{A}\in\mathbb{R}^{m\times n}$为行满秩矩阵,则$\mathbf{A}$的零空间为$L_{\mathbf{A}}=\{x\in\mathbb{R}^n|\mathbf{A}x=0\}$,对应的正交空间为$L_{\mathbf{A}}^{\perp}=\{\mathbf{A}^\prime y|y\in\mathbb{R}^m\}$。
对$\forall x\in\mathbb{R}^n$进行正交分解使$x=x_1+x_2,x_1\in L_{\mathbf{A}},x_2\in L_{\mathbf{A}}^{\perp}$,则$x_1=\mathbf{P_A}x$,其中$\mathbf{P_A}=\mathbf{I}-\mathbf{A}^\prime (\mathbf{A}\mathbf{A}^\prime)^{-1}\mathbf{A}$称为$\mathbf{A}$的投影矩阵。
证明:$x_1=x-x_2=x-\mathbf{A}^\prime y$ $\Longrightarrow$ $\mathbf{A}x_1=\mathbf{A}x-\mathbf{AA}^\prime y$ $\Longrightarrow$ $y=(\mathbf{AA}^\prime)^{-1}\mathbf{A}(x-x_1)$ $\Longrightarrow$ $x_1=x-\mathbf{A}^\prime[(\mathbf{AA}^\prime)^{-1}\mathbf{A}(x-x_1)]=x-\mathbf{A}^\prime(\mathbf{AA}^\prime)^{-1}\mathbf{A}x+\mathbf{A}^\prime(\mathbf{AA}^\prime)^{-1}\mathbf{A}x_1=\mathbf{P_A}x$.
设$x^k$为当前迭代点,对$A_1,b_1$进行分块$A_1=\left[\begin{array}{lcr}\mathbf{A}_{11}\\\mathbf{A}_{12}\end{array}\right]$,$b_1=\left[\begin{array}{lcr}b_{11}\\b_{12}\end{array}\right]$,其中$\mathbf{A}_{11}x^k=b_{11},\mathbf{A}_{12}x^k<b_{12}$。
定理:$s\neq 0$是$s$在$x^k$处的可行方向当且仅当$s$满足条件$\mathbf{A}_{11}s\leq 0,\mathbf{A}_2s=0$。(注:可行方向指的是$x^k$沿这个方向移动不会超出约束范围)
证明:由于$s$为可行方向,故$\mathbf{A}_{11}(x^k+s)\leq b_{11},\mathbf{A}_{12}(x^k+s)\leq b_{12},\mathbf{A}_2(x^k+s)=b_2$ $\Longrightarrow$ $\mathbf{A}_{11}s\leq 0,\mathbf{A}_2s=0$。
记 $\mathbf{M}=\left[\begin{array}\mathbf{A}_{11}\\ \mathbf{A}_2\end{array}\right]$ ,$\mathbf{L_M}$为$\mathbf{M}$的零空间。当$s\in\mathbf{L_M}\backslash\{0\}$时,$s$是$x^k$处的可行方向。
对负梯度$-\nabla f(x^k)$,我们壳通过投影矩阵$\mathbf{P_M}=\mathbf{I}-\mathbf{M}^\prime(\mathbf{MM}^\prime)^{-1}\mathbf{M}$将负梯度投影到$\mathbf{L_M}$上,即可得到可行下降方向$s^k=-\mathbf{P_M}\nabla f(x^k)$。
若$s^k\neq 0$,则$s^k$是$x^k$处的可行方向。
若$s^k=0$,则$\nabla f(x^k)-\mathbf{M}^\prime(\mathbf{MM}^\prime)^{-1}\mathbf{M}\nabla f(x^k)=0$。记$w=\left[\begin{array}u\\ v\end{array}\right]=-(\mathbf{MM}^\prime)^{-1}\mathbf{M}\nabla f(x^k)$,其中$u$与$\mathbf{A}_{11}$对应,$v$与$\mathbf{A}_2$对应。
$\Longrightarrow$
\begin{align}0&=\nabla f(x^k)+\mathbf{M}^\prime w=\nabla f(x^k)+(\mathbf{A}_{11}^\prime,\mathbf{A}_2^\prime)\left[\begin{array}u\\ v\end{array}\right]\nonumber\\&= \nabla f(x^k)+\mathbf{A}_{11}^\prime u + \mathbf{A}_2^\prime v\label{equ:functionSK}\end{align}
定理:若上述1) $u\geq 0$,则$x^k$是KKT点;2) 若$u$ 中有负分量,设$u_{i0}=\mathop{\min}\{u_i\}<0$,$\bar{ \mathbf{M}}$是从$\mathbf{M}$中去掉$u_{i0}$对应的行后得到的矩阵,则$\bar{s^k}=-\mathbf{P_{\bar{M}}}\nabla f(x^k)$是$x^k$的可行下降方向。
证明:1)由$\nabla f(x^k)+\mathbf{A}_{11}^\prime u + \mathbf{A}_2^\prime v=0$且$u\geq 0$ $\Longrightarrow$ $x^k$是KKT点。
2)记$\mathbf{M}$中与$u_{i0}$ 对应的行为$\alpha_{i0}^\prime$,故$u=\left[\begin{array} &u_{i0} \\ \bar{u}\end{array}\right]$,$\mathbf{A}_{11}=\left[\begin{array} &\alpha_{i0}^\prime\\ \bar{\mathbf{A}_{11}}\end{array}\right]$,$w=\left[\begin{array} &u_{i0}\\ \bar{w}\end{array}\right]$,则$\bar{\mathbf{M}}=\left[\begin{array}&\bar{\mathbf{A}_{11}}\\ \mathbf{A}_2\end{array}\right]$,$\mathbf{M}=\left[\begin{array} &\alpha_{i0}^\prime\\ \bar{\mathbf{M}}\end{array}\right]$,
令$\beta=-(\bar{\mathbf{M}}\bar{\mathbf{M}}^\prime)^{-1}\bar{\mathbf{M}}\nabla f(x^k)$ 。
先用反证法证$\bar{s^k}\neq 0$。假设$\bar{s^k}=0$,即:
\begin{equation}0=\nabla f(x^k)-\bar{\mathbf{M}}^\prime(\bar{\mathbf{M}}\bar{\mathbf{M}}^\prime)^{-1}\bar{\mathbf{M}}\nabla f(x^k)=\nabla f(x^k)+\bar{\mathbf{M}}^\prime\beta\label{equ:2}\end{equation}
由式子\ref{equ:functionSK}有:
\begin{equation}0=\nabla f(x^k)+\mathbf{M}w=\nabla f(x^k)+u_{i0}\alpha_{i0}+\bar{\mathbf{M}}^\prime\bar{w}\label{equ:3}\end{equation}
由式子\ref{equ:3}$-$\ref{equ:2}得:$u_{i0}\alpha_{i0}+\bar{\mathbf{M}}^\prime(\bar{w}-\beta)=0$。又由于$u_{i0}<0$,故$\mathbf{M}=\left[\begin{array}&\alpha_{i0}^\prime\\\bar{\mathbf{M}}\end{array}\right]$行向量线性相关,与$\mathbf{M}$行满秩条件矛盾,故$\bar{s^k}\neq 0$。
由于
$$\nabla f(x^k)\bar{x^k}=-\nabla f(x^k)\mathbf{P_{\bar{M}}}\nabla f(x^k)=-[\nabla f(x^k)]^\prime\mathbf{P_{\bar{M}}}^\prime\mathbf{P_{\bar{M}}}\nabla f(x^k)=-\|\mathbf{P_{\bar{M}}}\nabla f(x^k)\|^2<0$$
即$\bar{s^k}$是$f(x)$在$x^k$处的下降方向。由于$\bar{s^k}=-\mathbf{P_{\bar{M}}}\nabla f(x^k)$且 $\mathbf{\bar{M}}\mathbf{P_{\bar{M}}}=0$,故$\mathbf{\bar{M}}\bar{s^k}=0$,即
\begin{equation}\bar{\mathbf{A}_11}\bar{s^k}=0\quad\mathbf{A}_2\bar{s^k}=0\end{equation}
所以$\mathbf{A}_{11}\bar{s^k}=\left[\begin{array}&\alpha_{i0}^\prime\\\bar{\mathbf{A}_{11}}\end{array}\right]\bar{s^k}=\left[\begin{array}&\alpha_{i0}^\prime\bar{s^k}\\0\end{array}\right]$,故只需证$\alpha_{i0}^\prime\bar{s^k}<0$即可。
由式子\ref{equ:3}可知:
\begin{align*}\alpha_{i0}^\prime\bar{s^k}&=\frac{-\nabla f(x^k)-\bar{\mathbf{M}}^\prime \bar{w}}{u_{i0}}\bar{s^k}\\&=\frac{-[\nabla f(x^k)]^\prime\bar{s^k}-\bar{w}^\prime\bar{\mathbf{M}}\bar{s^k}}{u_{i0}}\\&=\frac{-[\nabla f(x^k)]^\prime\bar{s^k}}{u_{i0}}<0\end{align*}
即$\mathbf{A}_{11}\bar{s^k}<0,\mathbf{A}_2\bar{s^k}=0$,故$\bar{s^k}$为可行下降方向。
在得到可行下降方向$s^k$后,需求解一维搜索问题$\mathop{\min}_{0\leq\lambda\leq\lambda_{max}}f(x^k+\lambda s^k)$,其中$\lambda_{max}=\mathop{\min}\{\frac{(b_{12}-\mathbf{A}_{12})_i}{(\mathbf{A}_{12})_i}|\forall i:(\mathbf{A}_{12}s^k)_i>0\}$。
使用zoutendijk可行方向法确定一维搜索步长。设从可行点$x^k$出发,沿可行方向$d_k$处一维搜索,得到迭代点:$x^{k+1}=x^k+\lambda_kd_k$ 。
采用最优一维搜索步长,并保证迭代后的点满足可行性,即解如下的优化问题:
\begin{align}\mathop{\min}&\quad f(x^k+\lambda_kd_k)\nonumber\\\mathop{s.t.}&\quad \mathbf{A}(x^k+\lambda_kd_k)\geq b\nonumber\\&\quad \mathbf{E}(x^k+\lambda_kd_k)=e\nonumber\\&\quad \lambda_k \geq 0 \label{equ:originalSearch}\end{align}
由于$x^k$为可行点,且$d_k$为可行方向,故有$\mathbf{E}x^k=e,\mathbf{E}d_k=0,\mathbf{A}_1x^k=b_1,\mathbf{A}_1d_k\geq 0$,所以模型\ref{equ:originalSearch}转化为:
\begin{align}\mathop{\min}&\quad f(x^k+\lambda_kd_k)\nonumber\\\mathop{s.t.}&\quad \mathbf{A}_2x_k+\lambda_k\mathbf{A}_2d_k\geq b_2\nonumber\\&\quad \lambda_k\geq 0\label{equ:search}\end{align}
现在我们来确定满足上述模型\ref{equ:search}的约束条件的$\lambda_k$的最大值。由$\mathbf{A}_2x^k+\lambda_k\mathbf{A}_2d_k\geq b_2$可知:当$\mathbf{A}_2d_k\geq 0$时,$\lambda_k\geq 0\geq \frac{b_2-\mathbf{A}_2x^k}{\mathbf{A}_2d_k}$总是成立(注意:$b_2-\mathbf{A}_2d_k<0$),即$\lambda_k$的最大最为无穷大;当$\mathbf{A}_2d_k$不全大于0,即存在分量$(\mathbf{A}_2d_k)_i<0$时,$\lambda_k\leq \frac{(b_2-\mathbf{A}_2x^k)_i}{(\mathbf{A}_2d_k)_i}$,即$lambda_k$的最大值为$\lambda_{max}=\mathop{\min}\{\frac{(b_2-\mathbf{A}_2x^k)_i}{(\mathbf{A}_2d_k)_i}|\forall i:(\mathbf{A}_2d_k)_i<0\}$。综上所述,最优一维搜索模型为:
\begin{equation}\mathop{\min}_{0\leq\lambda\leq\lambda_{max}}\quad f(x^k+\lambda d_k)\label{equ:optimizationSearch}\end{equation} .
故梯度投影法的算法为:
step 1: 给出满足约束条件的初始点$x^0$,令$k=0$。确定精度参数$\epsilon>0$;
step 2: 构造搜索方向。对$\mathbf{A}_1$和$b_1$进行分块,使$\mathbf{A}_1=\left[\begin{array}\mathbf{A}_{11}\\\mathbf{A}_{12}\end{array}\right]$,$b_1=\left[\begin{array}&b_{11}\\b_{12}\end{array}\right]$,其中$\mathbf{A}_{11}x^k=b_{11},\mathbf{A}_{12}x^k<b_{12}$。令$\mathbf{M}=\left[\begin{array}\mathbf{A}_{11}\\\mathbf{A}_2\end{array}\right]$,若$\mathbf{M}$为空(即$x^k$在可行区域内部),令可行方向$s^k=-\nabla f(x^k)$,否则令$s^k=-\mathbf{P_{M}}\nabla f(x^k)$。
step 3: 终止条件判断。若$\|s^k\|>\epsilon$,转step 5;若$\|s^k\|\leq\epsilon$,则当$\mathbf{M}$空时停止(无可下降的方向),当$\mathbf{M}$非空时,求 $\left[\begin{array}&u\\v\end{array}\right]=-(\mathbf{MM}^\prime)^{-1}\mathbf{M}\nabla f(x^k)$,若$u\geq 0$则停止(此时$x^k$为KKT点),否则令$u_{i0}=\mathop{\min}\{u_i\}$,转step 4.
step 4: 重新构造搜索方向。令$\bar{\mathbf{M}}$为从$\mathbf{M}$中去掉$u_{i0}$对应的行后得到的矩阵,求$s^k=-\mathbf{P_{\bar{M}}}\nabla f(x^k)$。
step 5: 确定步长。令$\lambda_{max}=\mathop{\min}\{\frac{(b_{12}-\mathbf{A}_{12}x^k)_i}{(\mathbf{A}_{12}s^k)_i}|\forall i:(\mathbf{A}_{12}s^k)_i>0\}$,求解$\mathop{\min}_{0\leq\lambda\leq\lambda_{max}}\quad f(x^k+\lambda s^k)$得到最优解$\lambda_k$。
step 6: 确定新的迭代点。令$x^{k+1}=x^k+\lambda_ks^k,k=k+1$,转step 2.
Jordan Lecture Note-3: 梯度投影法的更多相关文章
- Jordan Lecture Note-1: Introduction
Jordan Lecture Note-1: Introduction 第一部分要整理的是Jordan的讲义,这份讲义是我刚进实验室时我们老师给我的第一个任务,要求我把讲义上的知识扩充出去,然后每周都 ...
- Colorful Lecture Note(手工栈)
题目1 : Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorithm ...
- HihoCoder - 1103 Colorful Lecture Note
Little Hi is writing an algorithm lecture note for Little Ho. To make the note more comprehensible, ...
- Colorful Lecture Note
Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorithm lectu ...
- hihocoder #1103 : Colorful Lecture Note微软苏州校招笔试 1月10日(字符串处理+栈)
#1103 : Colorful Lecture Note 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi is writing an algorit ...
- Jordan Lecture Note-2: Maximal Margin Classifier
Maximal Margin Classifier Logistic Regression 与 SVM 思路的不同点:logistic regression强调所有点尽可能远离中间的那条分割线,而SV ...
- Jordan Lecture Note-12: Kernel典型相关分析(Kernel Canonical Correlation Analysis, KCCA).
Kernel典型相关分析 (一)KCCA 同样,我们可以引入Kernel函数,通过非线性的坐标变换达到之前CCA所寻求的目标.首先,假设映射$\Phi_X: x\rightarrow \Phi_X(x ...
- Jordan Lecture Note-11: 典型相关分析(Canonical Correlation Analysis, CCA).
典型相关分析 (一)引入 典型相关分析(Canonical Correlation Analysis)是研究两组变量之间相关关系的一种多元统计方法.他能够揭示出两组变量之间的内在联系. 我们知道,在一 ...
- Jordan Lecture Note-10: Kernel Principal Components Analysis (KPCA).
Kernel Principal Components Analysis PCA实际上就是对原坐标进行正交变换,使得变换后的坐标之间相互无关,并且尽可能保留多的信息.但PCA所做的是线性变换,对于某些 ...
随机推荐
- Jquery AutoComplete的使用方法实例
jquery.autocomplete详解 语法: autocomplete(urlor data, [options] ) 参数: url or data:数组或者url [options]:可选项 ...
- 在ubuntu on windows 上安装jekyll
已知问题 安装ruby之后,重新启动ubuntu on windows,输入ruby命令,提示找不到. 发现的解决办法 执行下面命令 source /home/xxxx/.rvm/scripts/rv ...
- hbase shell下如何使用删除键
今天刚安装好了hbase,通过Secure CRT登录hbase shell,敲入错误命令无法使用删除键(Backspace或是Ctrl+Backspace都不管用)删除,后来在终端-->仿真下 ...
- java并发之CountDownLatch、Semaphore和CyclicBarrier
JAVA并发包中有三个类用于同步一批线程的行为,分别是CountDownLatch.Semaphore和CyclicBarrier. CountDownLatch Java之CountDownLatc ...
- VTK三维重建(2)-根据脚部骨骼CT的三维重建和显示
[效果演示] 根据脚部的骨骼CT扫描的照片,利用VTK完成读取和三维重建. [程序实现] void main () { vtkRenderer *aRenderer = vtkRenderer::Ne ...
- [GRYZ2015]阿Q的停车场
题目描述 刚拿到驾照的KJ 总喜欢开着车到处兜风,玩完了再把车停到阿Q的停车场里,虽然她对自己停车的水平很有信心,但她还是不放心其他人的停车水平,尤其是Kelukin.于是,她每次都把自己的爱车停在距 ...
- ASP.NET服务器控件OnClientClick事件中Eval()作为js方法的参数的一种写法
参考代码: <input type="button" OnClientClick='<%#Eval("DeptID", "DelUserD ...
- 在ASP.NET MVC中修改默认代码生成/支架模板
到 C:\Program Files (or x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp (or Visual ...
- 【暑假】[深入动态规划]UVa 1380 A Scheduling Problem
UVa 1380 A Scheduling Problem 题目: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=41557 ...
- Javascript/15-1-14
1.break 语句用于跳出循环.break 语句跳出循环后,会继续执行该循环之后的代码(如果有的话). continue 用于跳过循环中的一个迭代. 2.label:statements 用于直接跳 ...