07-內點法(不等式約束優化算法)


07-內點法(不等式約束優化算法)

凸優化從入門到放棄完整教程地址:https://www.cnblogs.com/nickchen121/p/14900036.html

一、簡介

這篇文章,我們考慮如下帶等式約束和不等式約束的凸優化問題:

\(\begin{align} \min \quad & f_0(x) \\ \mathrm{s.t.}\quad & f_i(x) \leq 0 \quad i=1, \cdots, m \\ & Ax = b \end{align} \tag{1}\)

其中, \(f_0, \cdots, f_m: \mathbb{R}^n \mapsto \mathbb{R}\) 是二次可微凸函數, \(A \in \mathbb{R}^{n \times p}, \mathrm{rank}(A) = n \leq p\) 。假設最優解用 \(x^*\) 表示,最優值用 \(f_0(x^*)\) 表示。

我們還假定該問題嚴格可行,即存在 \(x \in dom(f)\) 滿足 $Ax = b $ 和 \(f_i(x) < 0, i =1, \cdots, m\) 。這意味着存在最優對偶 \(\lambda^*, \nu^*\) 滿足KKT條件(KKT條件的介紹,參見KKT條件

\(\begin{align} f_i(x^*) &\leq 0, \quad i = 1, \cdots, m \\ h_i(x^*) &= 0, \quad i = 1, \cdots, p \\ \lambda_i^* &\ge 0, \quad i = 1, \cdots, m \\ \lambda_i^* f_i(x^*) &= 0, \quad i = 1, \cdots, m \\ \nabla f_0(x^*) + \sum_{i=1}^m \lambda_i^* \nabla f_i(x^*) + \sum_{i=1}^{p} \nu_i^* \nabla h_i(x^*) &= 0 \end{align} \tag{2}\)

所以用內點法求解問題(1),就等價於求解問題(2)。顯然直接求解(2)是非常困難的,所以我們采用一定的技巧(障礙法),將不等式約束加入到目標函數,從而使問題轉化為帶等式約束的凸優化問題,從而可以利用無約束凸優化問題求解——Newton Method介紹的辦法進行求解。

二、對數障礙

我們重新表述問題(1),將其轉化為等式約束問題:

\(\begin{split} \min \quad & f_0(x) + \sum_{i=0}^m I_{-}(f_i(x)) \\ \mathrm{s.t.} \quad & Ax = b \end{split} \tag{3}\)

其中 \(I_{-}: \mathbb{R} \mapsto \mathbb{R}\) 是非正實數的示例函數,

\(I_{-}(x) = \begin{cases} 0 & \textrm{ if} \,\, x \leq 0 \\ \infty & \textrm{otherwise} \end{cases} \\\)

注:這里做這樣的轉換,是因為如果 \(f_i(x)\) 不成立,則目標函數的解為無窮大,即無解;反之,由於 \(I\_(x)=0\) 不會對原問題的解造成任何影響。

但是可以看到 \(I_{-}(x)\) 是不可微的函數,不能直接應用Newton Method。但是,我們可以近似示例函數:

\(\hat{I_{-}}(x) = \phi(x) =- (1/t) \log(-x), \quad dom(\hat{I_{-}}) = - \mathbb{R}_{++} \\\)

img對數障礙函數。t越大,精度越高,越接近示例函數。注:這里有點機器學習中利用 sigimoid 函數替代 sign 函數的味道

可以看到上面的近似函數,其是可微的凸函數。下面我們求解如下近似問題,並且我們將給予證明當 \(t \to \infty\) 時,近似問題的解與原問題的解是一樣的。

\(\begin{split} \min \quad & f_0(x) + \sum_{i=0}^m -(1/t) \log(-f_i(x)) \\ \mathrm{s.t.} \quad & Ax = b \end{split} \tag{4}\)

為了方便以后討論,我們定義 \(\phi(x) = -\sum_{i=1}^m \log(-f_i(x))\)對數障礙函數 ,並直接給出其梯度和Hessian矩陣。

\(\nabla \phi(x) = \sum_{i=1}^m \frac{1}{-f_i(x)} \nabla f_i(x) \\\)

\(\nabla^2 \phi(x) = \sum_{i=1}^m \frac{1}{-f_i(x)} \nabla^2 f_i(x) + \sum_{i=1}^m \frac{1}{f_i(x)^2} \nabla f_i(x) \nabla f_i(x)^T \\\)

三、中心路徑

下面我們考慮如何求解問題(4),為了簡化符號表達,對目標函數乘以 \(t\) ,考慮如下等價問題:

\(\begin{split} \min \,\quad &t f_0(x) + \phi(x) \\ \mathrm{s.t.} \,\quad & Ax = b \end{split} \tag{5}\)

對任意的 \(t > 0\) ,上述優化問題存在唯一的最優解 \(x^*(t)\) ,將這一系列最優解組成的集合 \(\{x^*(t)\}\) 稱為中心路徑注:前面說到 \(t\) 是不確定的,因此這一系列解就是不同的 \(t\) 對應的最優解,中心路徑上的點滿足 \(x^*(t)\) 是嚴格可行的,即:

\(Ax^*(t) = b, \quad f_i(x^*(t))<0, \quad i =1, \cdots, m \\\)

並且存在 \(\hat \nu \in \mathbb{R}^p\) 使得(KKT 條件)

\(\begin{align} 0 &= t \nabla f_0(x^*(t)) + \nabla \phi(x^*(t)) + A^T \hat \nu \\ & = t \nabla f_0(x^*(t)) + \sum_{i=1}^m \frac{1}{-f_i(x^*)} \nabla f_i(x^*) + A^T \hat \nu \end{align} \tag{6}\)

(6)提供了一個重要的性質:每個中心點產生對偶可行解,從而給出最優值 \(p^*\) 的一個下界。更確切地說,定義

\(\lambda^*(t) = - \frac{1}{tf_i(x^*(t))}, \quad i =1, \cdots, m, \quad \nu^*(t) = \hat \nu/t \tag{7}\)

我們要說明 \(\lambda^*(t), \nu^*(t)\) 是原問題(1)的對偶可行解。

首先驗證 \(\lambda^*(t) >0\) ,這點由 \(f_i(x^*(t)) < 0\) 保證。其次,我們重新整理(6)(注:公式 (6) 除以 \(t\))得到:

$ \nabla f_0(x^(t)) + \sum_{i=1}^m \lambda^(t) \nabla f_i(x^) + A^T \nu^(t) = 0 \ $注:從這里就可以看出 KKT 條件的影子

因此 \(x^*(t)\) 使得 \(\lambda = \lambda^*(t), \nu = \nu^*(t)\) 時的Lagrange函數

\(L(x,\lambda, \nu) = f_0(x) + \sum_{i=1}^m \lambda_i f_i(x) + \sum_{i=1}^p \nu_i h_i(x) \\\)

達到極小,這意味着 $ \lambda^(t), \nu^(t)$是對偶可行解。因此對偶函數 \(g( \lambda^*(t), \nu^*(t))\) 是有界的:

\(\begin{align} g( \lambda^*(t), \nu^*(t)) &= f_0(x^*(t)) + \sum_{i=1}^m \lambda^*(t) f_i(x^*) + \nu^*(t)^T(Ax^*(t) - b) \\ &= f_0(x^*(t)) - m /t \\ \end{align} \\\)

即,近似解 \(g( \lambda^*(t), \nu^*(t))\) 與原問題最優解 \(p^*\) 之間的間隙就是 $m/t $ 。隨着 \(t \to \infty\)\(m/t \to 0\)

\(g( \lambda^*(t), \nu^*(t)) \leq p^* \Rightarrow f_0(x^*(t)) -p^* \leq m/t \\\)

注:上述就是通過對可行解的分析,得出近似解和原問題的最優解的差值

這里,我們補充給出基於KKT條件的解釋。
我們可以將中心路徑條件(6)解釋為KKT最優性(2)的變形。
\(x\) 是等於 \(x^*(t)\) 的充要條件是存在 \(\lambda, \nu\) 滿足
\(\begin{align} Ax = b, \quad f_i(x) &\leq 0, \quad i=1, \cdots, m \\ \lambda_i &\ge 0, \quad i=1, \cdots, m \\ \nabla f_0(x) + \sum_{i=1}^m\lambda_i f_i(x) + A^T\nu &= 0 \\ -\lambda_i f_i(x) &=1/t, \quad i=1, \cdots, m \end{align} \tag{8}\)
近似問題的KKT條件(8)與原始KKT條件(2)的唯一的差別是 \(-\lambda_i f_i(x) =0\)\(-\lambda_i f_i(x) =1/t\) 替代注:這里來自於我們對公式 (6) 的處理。特別地,當 \(t\) 很大時, \(x^*(t)\) 和對應的對偶解 \(\lambda^*(t), \nu^*(t)\) "幾乎"滿足原始問題(1)的KKT條件。

這里小結一下。我們在中心路徑這部分給出了證明近似問題(5)的最優解與原始問題(1)的最優解的誤差不超過 \(m/t\) ,因此我們可以放心的求解近似問題(5)。

四、障礙方法

下面給出Newton Method求解近似問題(5)的算法框架

重復進行:

  1. 中心點步驟:從初始值 \(x\) 開始,采用Newton Method在 \(Ax=b\) 的約束下極小化 \(tf_0 + \phi\) ,最終確定 \(x^*(t)\)
  2. 改進: \(x:= x^*(t)\)
  3. 停止准則。 如果 \(m/t < \epsilon\) 則退出
  4. 增加 \(t\)\(t:= \mu t, \quad \mu>1\)

根據在中心路徑小節中的分析,近似問題(5)的最優解與原始問題(1)的最優解的誤差不超過 \(m/t\),所以在求解時,我們從較小的 \(t\) 開始,不斷增大 \(t\) 直至收斂。此外,我們把每次求出的最優解 \(x^*(t)\) 當作下一個 \(t:= \mu t\) 的初值,這樣Newton Method會收斂更快,即Step1.中心點步驟的運行時間可以當作常數對待,而不是一個耗時的迭代循環。

五、總結

在這篇文章里,我們介紹了帶等式約束和不等式約束的凸優化問題。通過引入對數障礙函數,我們把原問題近似為帶等式約束的凸優化問題,從而可以應用Newton Method求解KKT最優條件,找到最優解;此外,我們也給出了近似問題的最優解和原問題的最優解之間的誤差,證明當 \(t\) 不斷增大時,精度會不斷提高。

到這里,整體凸優化系列已經全部講完了。對於最簡單的無約束凸優化問題,我們可以采用Gradient Descent或者Newton Method求解;對於稍復雜的等式約束凸優化問題,我們對目標函數進行二階Taylor近似,然后采用Newton Method求解KKT最優條件;對於最復雜的帶不等式約束問題,則時引入對數障礙函數,轉化為帶等式約束的凸優化問題。

img

參考文獻:Stephen Boyd, Lieven Vandenberghe: Convex Optimization

參考資料:https://www.zhihu.com/column/c_1046701775096188928


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM