一類涉及矩陣范數的優化問題


一類涉及矩陣范數的優化問題

作者:凱魯嘎吉 - 博客園 http://www.cnblogs.com/kailugaji/

    這篇博文主要探討一下有關矩陣范數的優化問題,我們知道,矩陣按行或列拆開就是向量,因此矩陣范數優化問題在某種程度上可以轉化為向量范數的優化,而向量拆開是一個個數值,因此向量優化問題就進一步退化為單變量優化。因此,我們從最基礎的單變量優化出發,單變量優化問題搞清楚之后,再逐步拓展到向量、矩陣范數的優化上。文中涉及到向量范數、矩陣范數、軟閾值算子(soft thresholding/shrinkage operator)與奇異值收縮算子(singular value shrinkage operator)等概念。這類優化問題在矩陣補全/填充、壓縮感知、稀疏表達、低秩矩陣分解(比如張長青2015在ICCV會議上發表的Low-Rank Tensor Constrained Multiview Subspace Clustering中E與G的求解問題)、魯棒主成分分析(Robust PCA)等領域有廣泛的應用。尤其是矩陣的$L_{2,1}$范數與矩陣的核范數/跡范數(nuclear/trace norm)在去噪去冗余降維等方面應用最廣。

1. 向量范數與矩陣范數

2. 單變量絕對值優化問題

3. 向量范數優化問題

4. 矩陣$L_{2,1}$范數優化問題

5. 矩陣核范數優化問題

6. MATLAB程序

    這個程序主要集中於單變量絕對值優化與向量的2范數優化問題。flag=1是向量的優化,其中我們用兩種方法進行求解,解析解與數值解,從結果可以看出,在數值解擁有足夠的迭代次數時,兩者結果大體一致。flag=2是單變量絕對值優化問題,可以直觀看出變量x與最優值之間的函數圖像。flag=3與flag=4是軟閾值函數圖像,結果見PPT第5頁。

clear
clc
flag=2;  % flag=1, 向量; flag=2, 單變量(一個數值); flag=3, MATLAB自帶的軟閾值函數;  flag=4, 自定義軟閾值函數
%% 向量的情況 2D shrinkage formula
% 最小化問題:z(x)=alpha*||x||+(beta/2)*||x-y||^2
% alpha=0.5;
% beta=1;
% 用的2范數
if flag==1
    % 法1:解析解
    % 當||y||>alpha,x=(||y||-alpha/beta).*(y/||y||)
    y=0.1:0.1:1;
    num=length(y);
    yy=norm(y, 2);
    x_1=((yy-0.5)/yy).*y;
    z_1=0.5*norm(x_1, 2)+0.5.*(x_1-y)*(x_1-y)';
    % 法2:數值解--只要重復次數夠大,能逼近解析解的結果
    % x=(||y||/((alpha/beta)+||y||)).*y
    N=50; %重復迭代N次
    x_2=rand(1, num);
    for i=1:N
        xx=norm(x_2, 2);
        x_2=(xx/(0.5+xx)).*y;
    end
    z_2=0.5*norm(x_2, 2)+0.5.*(x_2-y)*(x_2-y)';
    % 結果
    x_result=[x_1; x_2] % x的結果, 第一行是方法1的結果, 第二行是方法2的結果
    z=[z_1; z_2] % 最小化問題z的結果, 第一行是方法1的結果, 第二行是方法2的結果
    
%% 單變量的情況 1D shrinkage formula
elseif flag==2
    % z(x)=(beta/2)*(x-y)^2+alpha*|x|
    % alpha=0.5, beta=1
    % 當|y|>alpha, x=(|y|-alpha)*(y/|y|)
    x=0.1:0.1:1;
    y=1;
    z=0.5.*(x-y).^2+0.5.*abs(x);
    [z_min, index]=min(z);
    plot(x, z);
    hold on
    plot(x(index), z_min, 'ro');
    xlabel('x');
    ylabel('z');
    x_result=x(index)
    z=z_min
%% MATLAB自帶的軟閾值函數  1D shrinkage formula
elseif flag==3
    x=-5:0.01:5;
    thr=2;
    %  z(x)=(beta/2)*(x-y)^2+alpha*|x|
    % thr=alpha/beta
    ysoft=wthresh(x,'s',thr); % 軟閾值
    ythard = wthresh(x,'h',thr); % 硬閾值
    plot(x, x, 'b--', x, ythard, 'g-', x, ysoft, 'r-', 'LineWidth',1.3);
    legend('Original Signal','Hard Threshold','Soft Threshold', 'Location', 'northwest'); %圖例的設置
    % 設置網格線
    grid on;
    set(gca, 'FontName','Times New Roman');
    set(gca, 'GridLineStyle', ':');
    set(gca, 'GridAlpha', 1);
    saveas(gcf,sprintf('matlab_shrinkage.jpg'),'bmp'); %保存圖片
%% 自定義軟閾值函數  1D shrinkage formula
elseif flag==4
    x=-5:0.01:5;
    thr=2;
    y=Soft_Threshold(x,thr);
    plot(x, y, 'r-', 'LineWidth',1.3)
    title('Soft Threshold');  
    % 設置網格線
    grid on;
    set(gca, 'FontName','Times New Roman');
    set(gca, 'GridLineStyle', ':');
    set(gca, 'GridAlpha', 1);
    saveas(gcf,sprintf('soft_shrinkage.jpg'),'bmp'); %保存圖片
end
% 自定義軟閾值函數
%  z(x)=(beta/2)*(x-y)^2+alpha*|x|
% thr=alpha/beta
function y=Soft_Threshold(x,thr)
    y=sign(x).*max(abs(x) - thr,0);
end

當flag=1時,給出向量最優化問題,x_result與z的第一行是解析解的結果,第二行是數值解的結果,可以看到在一定精度范圍內兩者結果一致。(前提是數值解需要一定的迭代次數)

x_result =

    0.0745    0.1490    0.2236    0.2981    0.3726    0.4471    0.5216    0.5961    0.6707    0.7452
    0.0745    0.1490    0.2236    0.2981    0.3726    0.4471    0.5216    0.5961    0.6707    0.7452


z =

    0.8561
    0.8561

當flag=2時,可以從圖中看出變量x與目標函數之間的曲線圖。

x_result =

    0.5000


z =

    0.3750

7. 參考文獻

[1] Yang, Junfeng & Yin, Wotao & Zhang, Yin & Wang, Yilun. (2009). A Fast Algorithm for Edge-Preserving Variational Multichannel Image Restoration. SIAM J. Imaging Sciences. 2. 569-592. 

[2] Liu, Jun & Ji, Shuiwang & Ye, Jieping. (2009). Multi-Task Feature Learning Via Efficient l2, 1-Norm Minimization. Proceedings of the 25th Conference on Uncertainty in Artificial Intelligence, UAI 2009. 339-348. 

[3] Peng, Yali & Sehdev, Paramjit & Liu, Shigang & Li, Jun & Wang, Xili. (2018). l2,1-norm minimization based negative label relaxation linear regression for feature selection. Pattern Recognition Letters. 116. 

[4] Cai, Jian-Feng & Candès, Emmanuel & Shen, Zuowei. (2010). A Singular Value Thresholding Algorithm for Matrix Completion. SIAM Journal on Optimization. 20. 1956-1982. 

[5] 最優化之Robust PCA - 博客園 - quarryman 

[6] linear algebra - Derivative of the nuclear norm - Mathematics Stack Exchange

[7] 2010 Proximal gradient method (PPT)

[8] Toh, Kim-Chuan & Yun, Sangwoon. (2010). An Accelerated Proximal Gradient Algorithm for Nuclear Norm Regularized Least Squares Problems. Pacific Journal of Optimization. 6. 

[9] ECE236C - Optimization Methods for Large-Scale Systems http://www.seas.ucla.edu/~vandenbe/ee236c.html

[10] 潘少華, 文再文. 低秩稀疏矩陣優化問題的模型與算法[J]. 運籌學學報, 2020(3):1-26.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM