Lp范数优化问题-迭代权重最小二乘算法

迭代权重最小二乘(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\)更容易被解决,因其处处可导且连续。

matlab代码:

matlab code will be uploaded soon!

matlab code

因此,由于能将\(L_p\)范数的问题转化为\(L_2\)范数的问题,IRLS在压缩感知、稀疏编码等方面取得非常广泛的应用。

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

posted @ 2018-11-07 20:33  三亩竹林  阅读(3082)  评论(1编辑  收藏  举报