【机器学习】LatLRR

LatLRR

文章目录


参考论文:Latent Low-Rank Representation for Subspace Segmentation and Feature Extraction
作者:Guangcan Liu, Shuicheng Yan
Electrical and Computer Engineering, National University of Singapore

LRR

 LRR的主要思想是获取给定字典的样本的低秩表示,LRR问题可以描述为: m i n z ∣ ∣ Z ∣ ∣ ∗ , s . t . X o = A Z min_z||Z||_*,s.t.X_o=AZ minzZ,s.t.Xo=AZ其中 X o X_o Xo表示观测到的数据矩阵(每一列是一个观测样本), A A A是字典。对于子空间分割,通常用观测到的数据本身作为字典,所以问题变为: m i n z ∣ ∣ Z ∣ ∣ ∗ , s . t . X o = X o Z ① min_z||Z||_*,s.t.X_o=X_oZ ① minzZ,s.t.Xo=XoZ然而,数据常被多种噪声干扰,为增强鲁棒性,上式可改为: m i n z ∣ ∣ Z ∣ ∣ ∗ + λ ∣ ∣ E ∣ ∣ l , s . t . X o = X o Z + E min_z||Z||_*+\lambda||E||_l,s.t.X_o=X_oZ+E minzZ+λEl,s.t.Xo=XoZ+E但是,LRR由于直接把观测到的数据本身作为字典,所以会有一些问题

  • 首先,为了能够表示底层子空间,字典( A = X O A=X_O A=XO)必须包含从子空间中采样的足够的数据样本,否则, Z = I Z=I Z=I可能是①的唯一可行解,因此LRR失败。所以,如果数据采样不够,就不能用 X O X_O XO作为字典来表示子空间;
  • 其次,为了实现鲁棒的分割,LRR需要字典 A A A中有足够的无噪声数据,当 A = X O A=X_O A=XO时,这个假设可能是无效的,这会降低LRR的鲁棒性。

也可参见自本人的另一篇归纳文章: 【机器学习】LPP\NPE\SPP\CRP\RPCA\LRR\LRPP\LRPE

LatLRR

所以,为了解决上述两个问题,考虑以下模型(LatLRR): m i n z ∣ ∣ Z ∣ ∣ ∗ + λ ∣ ∣ E ∣ ∣ l , s . t . X o = [ X o , X H ] Z + E min_z||Z||_*+\lambda||E||_l,s.t.X_o=[X_o,X_H]Z+E minzZ+λEl,s.t.Xo=[Xo,XH]Z+E其中 X O X_O XO是观测到的数据, X H X_H XH是隐藏的数据,
在这里插入图片描述
L H ∣ O ∗ = U Σ V H T V H Σ − 1 U T L_{H|O}^*=U\Sigma V_{H}^TV_H\Sigma^{-1}U^T LHO=UΣVHTVHΣ1UT,则:
在这里插入图片描述
假设 X O 和 X H X_O和X_H XOXH取样于同一个低秩子空间集合,并且子空间集合的秩为 r r r,然后,
在这里插入图片描述
所以, Z O ∣ H ∗ 和 L H ∣ O ∗ Z_{O|H}^*和L^*_{H|O} ZOHLHO都是低秩的,我们可以通过下面式子来恢复 Z O ∣ H ∗ Z_{O|H}^* ZOH
在这里插入图片描述
所以:
在这里插入图片描述
L L L是投影矩阵:
在这里插入图片描述
注意: L ∈ R d ∗ d , X ∈ R d ∗ n L∈R^{d*d},X∈R^{d*n} LRdd,XRdn,所以 Y Y Y X X X是同样维数的。

算法如下:
在这里插入图片描述
代码:

%% Latent Low-Rank Representation
function [Z,L,E] = latent_lrr(X,lambda)
% Latent Low-Rank Representation for Subspace Segmentation and Feature Extraction
% Guangcan Liu, Shuicheng Yan. ICCV 2011.
% Problem:
%   min_Z,L,E ||Z||_* + ||L||_* +¡¡lambda||E||_1,
%           s.t. X = XZ + LX +E.
% Solning problem by Inexact ALM

A = X;
tol = 1e-6;
rho = 1.1;
max_mu = 10;
mu = 1e-6;
maxIter = 1e6;
[d n] = size(X);
m = size(A,2);
atx = X'*X;
inv_a = inv(A'*A+eye(m));
inv_b = inv(A*A'+eye(d));
%% Initializing optimization variables
J = zeros(m,n);
Z = zeros(m,n);
L = zeros(d,d);
S = zeros(d,d);

% E = sparse(d,n);
E = zeros(d,n);

Y1 = zeros(d,n);
Y2 = zeros(m,n);
Y3 = zeros(d,d);

%% Start main loop
iter = 0;
disp('initial');

while iter<maxIter
    iter = iter + 1;
%     disp(['iter====>>>>' num2str(iter)]);
    %updating J by the Singular Value Thresholding(SVT) operator
    temp_J = Z + Y2/mu;
    [U_J,sigma_J,V_J] = svd(temp_J,'econ');
    sigma_J = diag(sigma_J);
    svp_J = length(find(sigma_J>1/mu));
    if svp_J>=1
        sigma_J = sigma_J(1:svp_J)-1/mu;
    else
        svp_J = 1;
        sigma_J = 0;
    end
    J = U_J(:,1:svp_J)*diag(sigma_J)*V_J(:,1:svp_J)';
    
    %updating S by the Singular Value Thresholding(SVT) operator
    temp_S = L + Y3/mu;
    [U_S,sigma_S,V_S] = svd(temp_S,'econ');
    sigma_S = diag(sigma_S);
    svp_S = length(find(sigma_S>1/mu));
    if svp_S>=1
        sigma_S = sigma_S(1:svp_S)-1/mu;
    else
        svp_S = 1;
        sigma_S = 0;
    end
    S = U_S(:,1:svp_S)*diag(sigma_S)*V_S(:,1:svp_S)';
    
    %udpate Z
    Z = inv_a*(atx-X'*L*X-X'*E+J+(X'*Y1-Y2)/mu);
    
    %udpate L
    L = ((X-X*Z-E)*X'+S+(Y1*X'-Y3)/mu)*inv_b;
    
    %update E
    xmaz = X-X*Z-L*X;
    temp = xmaz+Y1/mu;
    E = max(0,temp - lambda/mu)+min(0,temp + lambda/mu);
    
    leq1 = xmaz-E;
    leq2 = Z-J;
    leq3 = L-S;
    max_l1 = max(max(abs(leq1)));
    max_l2 = max(max(abs(leq2)));
    max_l3 = max(max(abs(leq3)));
    
    stopC1 = max(max_l1, max_l2);
    stopC = max(stopC1, max_l3);
    if stopC<tol
        disp('LRR done.');
        break;
    else
        Y1 = Y1 + mu*leq1;
        Y2 = Y2 + mu*leq2;
        Y3 = Y3 + mu*leq3;
        mu = min(max_mu,mu*rho);
    end
    
end
end
  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值