l20范数最小化求解系数方程_贪婪组稀疏方法(Greedy group sparsity)
来源:互联网 发布:图片不停绕中心旋转js 编辑:程序博客网 时间:2024/06/06 14:08
l20范数最小化求解系数方程_贪婪组稀疏方法(Greedy group sparsity)
本文章部分参考Fast group sparse classification
- l20范数最小化求解系数方程_贪婪组稀疏方法Greedy group sparsity
- 前言
- BOMP
- GOMP
- BOMP的matlab实现
前言
之前的一篇文章介绍了l0范数最小化求解方法中的正交追踪匹配法,其基本思想是不求整体的最优解,而是快速得到某个局部最优解。求解l0-minimization的稀疏解在人脸识别中有很广泛的应用,最著名的文章之一便是John Wright和Ma Yi发表在PAMI上的 Robust Face Recognition via Sparse Representation,但是利用l0-minimization的求解方法在面对不同类之间高度相关的情况下会产生错误,最稀疏的解不一定是分类问题最优解,于是Ehsan Elhamifar提出了用结构化稀疏解来分类的算法Robust classification using structured sparse representation。具体的稀疏表达分类算法在以后的博客中会写到,这篇文章关注结构化稀疏解的算法——Block Orthogonal Matching Pursuit (BOMP),Group Orthogonal Matching Pursuit (GOMP). 和其他凸优化方法相比贪婪组稀疏方法在速度上有很大优势。
这篇博客的matlab实现已上传到github.
BOMP
输入 观测数据向量
输出 稀疏系数向量
Step 1 初始化 令标签集
Step 2 辨识 求矩阵
Step 3 估计 最小化问题 min
Step 4 更新残差
Step 5 令
Step 6 输出系数向量
注:
下面是三种常用的停止判据
1. 运行到某个固定的迭代步数后停止。
2. 残差能量小于某个预先给定值
3. 当字典矩阵
GOMP
GOMP算法和BOMP算法类似,唯一的不同是在Step2,GOMP不求矩阵
BOMP的matlab实现
function [x, Out] = BOMP(A,y,groups,varargin)% This is a l21 minimization solver for block orthogonal matching pursuit:% minimiza ||x||_{2,1}% subject to y = Ax,% -------------------------------------------------------------------------% Author: Beier ZHU% Tsinghua University% -------------------------------------------------------------------------% % ==========================Required inputs================================% A -- an m x n matrix% y -- an m x 1 vector% group -- an n-entry vector whose i-th entry is the group number of x_i% ==========================Optional inputs================================% 'maxIter' -- maximum number of iterations% 'StopTolerance' -- stopping tolerance% ===============================Outputs===================================% x -- last iterate (hopefully an approximate solution)% Out.iter -- # of iterations taken % Test for number of required parametres if (nargin-length(varargin)) ~= 3 error('Wrong number of required parameters'); end %---------------------------------------------------------------------- % Set parameters to their defaults %---------------------------------------------------------------------- opts.tol = 1e-6; opts.maxIter = 1e3; %---------------------------------------------------------------------- % Set parameters to user specified values %---------------------------------------------------------------------- if (rem(length(varargin),2)==1) error('Options should be given in pairs'); else for i=1:2:(length(varargin)-1) switch upper(varargin{i}) case 'STOPTOLERANCE' opts.tol = varargin{i+1}; case 'MAXITER' opts.maxit = varargin{i+1}; otherwise error(['Unrecognized option: ''' varargin{i} '''']); end end [m_A, n_A] = size(A); n = length(groups); [m_y, n_y] = size(y); if n ~= n_A error(['group length must equal to the # of columns']); end if n_y ~= 1 error(['y must be a column vector']); end if m_A ~= m_y error(['A and y must have same # of row']) end % ---------------------------------------------------------------------- x = zeros(n,1); Omega = []; A_Omega = []; r = y; iter = 1; varepsilon = 1e-6; while true [~, max_index] = max(abs(A'*r)); group_id = groups(max_index); group_index = find(groups==group_id); Omega = [Omega group_index']; A_Omega = [A_Omega A(:,group_index')]; x_k = A_Omega\y; r = y - A_Omega*x_k; iter = iter + 1; if (iter > opts.maxIter) || (norm(r) <= opts.tol) || (norm(A'*r, inf) <= varepsilon) break; end end x(Omega) = x_k; Out.iter = iter; Out.residual = norm(r); Out.energy = norm(A'*r, inf); % Out.tmp = Omega;end
- l20范数最小化求解系数方程_贪婪组稀疏方法(Greedy group sparsity)
- l1范数最小化求解系数方程_正交匹配追踪法(orthogonal matching pursuit)
- 用类方法求解一元二次实系数方程
- 最小二乘法求解直线方程系数
- 使用UMFPACK求解大型稀疏矩阵方程
- 稀疏表示求解方法
- 变分贝叶斯求解0.01范数稀疏编码问题
- 范数求解
- Sparsity稀疏编码(一)
- Sparsity稀疏编码(三)
- Sparsity constraint稀疏约束详解
- greedy algorithms_贪婪算法
- 贪婪投影 greedy projection
- [VB.NET源码]36_求解方程
- 洛谷P1689--方程求解_题解
- L1范数 系数表达
- 机器学习_矩阵的l21范数/行稀疏/结构稀疏
- 用Python求解方程(组)
- JavaScript 中创建三种消息框:警告框、确认框、提示框
- h5 表单
- 解决ajax异步传输数据,return返回为undefined的问题
- apt-get命令
- Educational Codeforces Round 16-C. Magic Odd Square
- l20范数最小化求解系数方程_贪婪组稀疏方法(Greedy group sparsity)
- C/C++关键字之extern
- httpClient4.3 模拟Post提交,模拟Post上传文件并解决服务端使用spingMVC时upload.parseRequest(request)解析不到File,Pos简单抓取页面数据
- Double和Float中的NaN、Infinite等常量字段详解
- Quake4动画部分
- 最长回文子串
- python 的日志logging模块学习
- 微服务,微架构[一]之springboot[helloWorld]
- Github上关注最多的53个深度学习项目