Iterative Reweighted Least Squares(IRLS)

IRLS (迭代重加权最小二乘)优化算法理解

最近在阅读去模糊算法中,在估计模糊核过程中经常提到IRLS算法,决定好好理解一下!
以下理解来自论文《Iterative Reweighted Least Squares》

对于线性方程组的最优近似解问题:
Iterative Reweighted Least Squares(IRLS)_第1张图片
写成矩阵形式,
A x = b , A ∈ R M × N {\bf Ax=b,A\in }\mathbb R^{M\times N} Ax=bARM×N
等价于最小化误差向量 e = A x − b \bf e=Ax-b e=Axb的范数。

最小平方误差近似

使用二范数作为误差度量: ∥ e ∥ 2 2 = ∑ i e i 2 = e T e {\bf \Vert e\Vert_2^2}=\sum_i e_i^2=\bf e^Te e22=iei2=eTe

如果A为方正且是非奇异的,即 M = N M=N M=N,有精确解: x = A − 1 b \bf x=A^{-1}b x=A1b;

如果 M > N M>N M>N,即Overdetermined,近似解为: x = [ A T A ] − 1 A T b \bf x={[A^TA]}^{-1}A^Tb x=[ATA]1ATb;

如果 M < N MM<N,即Underdetermined,近似解为: x = A T [ A T A ] − 1 b \bf x=A^T{[A^TA]}^{-1}b x=AT[ATA]1b;

加权最小平方误差近似

即使用加权的二范数来强调或不强调方程组中的某些分量
Iterative Reweighted Least Squares(IRLS)_第2张图片

一般范数作为误差度量

前面都只是铺垫,基于二范数实现的近似解。对于更一般的p范数而言:
∥ e ∥ p = ( ∑ i ∣ e i ∣ p ) 1 / p , {\bf \Vert e\Vert}_p=(\sum_i|e_i|^p)^{1/p}, ep=(ieip)1/p,
等价于优化: ∥ e ∥ p p = ∑ i ∣ e i ∣ p {\bf \Vert e\Vert}_p^p=\sum_i|e_i|^p epp=ieip
Iterative Reweighted Least Squares(IRLS)_第3张图片
p=0.2(p=1)时对小值依然有较大的惩罚,使它们趋于零,可以实现解的稀疏性。
因此在某些场景,比如去模糊过程中常使用1范数作为解约束。

接下来说本文主题IRLS 算法。
∥ e ∥ p p = ∑ i ∣ e i ∣ p = ∑ i ∣ e i ∣ ( p − 2 ) ∣ e i ∣ 2 = ∑ i w n 2 ∣ e i ∣ 2 = ∥ W e ∥ 2 2 {\bf \Vert e\Vert}_p^p=\sum_i|e_i|^p=\sum_i|e_i|^{(p-2)}|e_i|^2=\sum_iw_n^2|e_i|^2={\bf \Vert We\Vert}^2_2 epp=ieip=iei(p2)ei2=iwn2ei2=We22
通过上式即可明白该算法的核心:等价于解加权最小平方误差近似问题,只是权值 W \bf W W在迭代过程中不断变化(更新,reweighted) w n = e i ( p − 2 ) / 2 w_n=e_i^{(p-2)/2} wn=ei(p2)/2。因为对角阵 W \bf W W根据上次误差 e \bf e e计算得到,因此会不断变化。

Matlab算法实现如下:

% minimizing the L_p norm ||Ax-b||_p, using basic IRLS.
% csb 11/10/2012

function x = IRLS0(A,b,p,KK)
if nargin < 4, KK=10; end;
x = pinv(A)*b; 				% Initial L_2 solution W为单位阵I得到初始解
E = [];
for k = 1:KK				% Iterate
	e = A*x - b; 				% Error vector
	w = abs(e).^((p-2)/2); 		% Error weights for IRLS 重加权
	W = diag(w/sum(w)); 		% Normalize weight matrix
	WA = W*A; 					% apply weights
	x = (WA'*WA)\(WA'*W)*b; 	% weighted L_2 sol.
	ee = norm(e,p); E = [E ee]; % Error at each iteration
end
plot(E)

可以参考:https://blog.csdn.net/lzp_k2/article/details/88042874

你可能感兴趣的:(图像去模糊)