L1-L2范數最小化問題-迭代收縮算法
涉及L1-L2范數的機器學習問題非常常見,例如我們遇到的去噪、稀疏表示和壓縮感知。一般而言,這類問題可以表示為:
由於\(L_0\)范數存在着NP難的問題,因此我們一般會用\(L_1\)范數來替代\(L_0\)范數,得到關於\(\bf{z}\)的如下問題:
研究表明,使用\(L_1\)來替代\(L_0\)范數也能夠得到比較稀疏的\(\bf{z}\),因此上述問題能夠替代\(L_0\)范數來解決我們上述所說的機器學習任務。
當矩陣\(\bf{A}\)為正交矩陣時
如果矩陣\({\bf{A}}\)為正交矩陣,即\({\bf{A}} {\bf{A}}^T = {\bf{I}}\),那么我們容易將上式表達成:
由於\(L_2\)范數具有旋轉不變性,我們令\({\bf{z}}_0 = {\bf{A}}^T{\bf{x}}\)因此上式也可以寫成:
那么上述問題可以馬上簡化為求解一個含有絕對值的標量函數的問題:\(g(\tau) = 0.5 (\tau_0 - \tau )^2 + \lambda |\tau|\)。這個問題的解法也很簡單直接,即:1. 若\(|\tau_0| \leq \lambda\),則\(\tau = 0\);2. 否則\(\tau = \tau_0 - \text{sign}(\tau_0) \lambda\)。總結起來,我們將這兩步操作寫成收縮算子\(\mathcal{S}_{\lambda} (\tau_0)\)的形式,即\(\tau_{opt} = \mathcal{S}_{\lambda}(\tau_0)\)。
值得關注的是:
矩陣\({\bf{A}}\)為正交陣時\(L_1\)范數最小化的解法給了我們很大的啟示,即我們是否通過一些手段將遇到的\(L_1\)范數最小化的問題轉化為\(f({\bf{z}}) = \frac{1}{2}|| {\bf{z}} - {\bf{z}}_0 ||_2^2 + \lambda || {\bf{z}}||_1\)這種形式呢?
本文探討的內容就圍繞着這個問題逐步展開(即矩陣\({\bf{A}}\)非正交時,如何通過其他方法來轉化為上述形式的解),給大家介紹各種基於收縮算子 \(\mathcal{S}_{\lambda} (\tau_0)\)的\(L_1\)范數優化方法。
迭代收縮優化算法
所謂迭代收縮優化算法,可以分3點來理解,第一個是迭代,第二個是收縮,第三個是優化算法。從字面意思我們可以得到的信息是:這個優化算法在每次迭代中都使用了收縮算子。
在每一次迭代中,我們都構造新的函數\(Q(z)\)來近似原函數。此新函數\(Q(z)\) 應該滿足:
- 函數收斂到最小值點時,即\(Q(z^*) = f(z^*)\)
- 新函數始終大於或者等於原函數,即\(Q(z) \geq f(z)\)
基於原問題\(f({\bf{z}}) = \frac{1}{2}|| {\bf{x}} - {\bf{Az}} ||_2^2 + \lambda || {\bf{z}} ||_1\),我們可以為原問題加入如下項(注意此時,我們沒有給\({\bf{A}}\)添加正交約束):
利用以上\(\text{dist}\)末項,並根據Majorization-Minimization優化框架,我們構造如下新函數:
為讓\(Q(z)\)滿足上述兩個條件,我們必須保證超參數\(c\)為一個特定的常數。我們要保證:\(c {\bf{I}} - {\bf{A}}^T {\bf{A}} \geq 0\),因此,參數\(c\)應具備$c\geq || {\bf{A}}^T {\bf{A}}||2 = \lambda{\text{max}} ({\bf{A}}^T {\bf{A}}) \(,即取矩陣\){\bf{A}}^T {\bf{A}}$最大的特征值。我們展開上式可得:
如果我們令\({\bf{v}}_0 = {\bf{A}}^T ({\bf{x}} - {\bf{Az}}_0) + c {\bf{z}}_0\),上式可以簡化為:
對比上一節我們討論的內容,發現兩個目標函數是完全一樣的形式,只是這里我們添加了超參數\(c\)和\(\lambda\)。類似地,我們可以將上式收縮算子的形式,即\({\bf{z}}_{\text{opt}} = \mathcal{S}_{\lambda / c} ({\bf{v}}_0) = \mathcal{S}_{\lambda / c} ( {\bf{A}}^T ({\bf{x}} - {\bf{Az}}_0) + c {\bf{z}}_0)\).
提醒一下的是,我們這里的\({\bf{z}}_0\)一般設為第\(i\)次迭代得到的\({\bf{z}}_i\),然后通過\({\bf{z}_{i}}\)來求解\(i+1\)次迭代的\({\bf{z}}_{i+1}\)。
迭代閾值收縮優化算法 (ISTA)
相信大家對ISTA(Iterative Shrinkage )
