1. 程式人生 > >迭代權重最小二乘演算法

迭代權重最小二乘演算法

迭代權重最小二乘(Iteratively reweighted least squares, IRLS) [1] 方法用於求解\(p\)範數(\(p\) norm)的最小化問題。問題如下:
\[\arg \min_{x} \sum_{i} | y_i - f_i (x) |^p\]
通過迭代的方法,在每次迭代我們都在解決一個加權的最小二乘問題:
\[ x^{t+1} = \arg \min_{x} ~ \sum_{i} w_i(x^t) | y_i - f_i (x^t) |^2 \]
此時,我們能夠將原始的\(p\) norm問題轉化為2-norm的問題。同時我們此時引入了一個隨著迭代次數而改變的變數\(w_i(x^t)\)

。一般地,我們定義\(t\) step的權重與\(t\) step的誤差,即\(| y_i - f_i(x^t) |^p\)有關。我們首先初始化變數\(w_i^{t}\)為:
\[ w_i^{0} = 1\]
\(W\)矩陣的對角元素都為1,其他元素為0。在第\(t\)步,矩陣\(W\)的第\(i\)個對角元素\(w_i^{t}\)為:
\[w_i^{t} = | y_i - f_i(x^t) |^{p-2} \]

例子

例如,我們要求解如下問題[2]:
\[ \arg \min _{\sum s_{I,j} = 1; s_{i,j} \geq 0 } \sum_{j} || s_{i,j} - a_{i,j} ||_1 + \lambda \sum_{j} | f_i - f_j |_2^2 s_{i,j}\]


我們使用迭代權重最小二乘法,可將上式寫成
\[ \arg \min _{\sum s_{I,j} = 1; s_{i,j} \geq 0 } \sum_{j} w_{i,j}(s_{i,j}^{t} ) | s_{i,j} - a_{i,j} |^2 +\lambda \sum_{j} | f_i - f_j |^2 s_{i,j} \]
其中,
\[ w_{j}^{t} = \frac{1}{| s_{i,j} - a_{i,j} |} \]
當然,為了防止分母為零,我們很自然地會將上式寫成下式的形式:
\[ w_i^{t} = \frac{1}{\max(\epsilon, | s_{i,j} - a_{i ,j} |)}\]

其中,\(\epsilon = 1e-6\)
相比最開始的\(L1\)問題,上面的\(L2\)更容易被解決,因其處處可導且連續。

因此,由於能將\(L_p\)範數的問題轉化為\(L_2\)範數的問題,IRLS在壓縮感知、稀疏編碼等方面取得非常廣泛的應用。

[1] Iteratively reweighted least squares
[2] The Constrained Laplacian Rank Algorithm for Graph-Based Clustering