稀疏分解 Y=Dα 分为两个步骤:
- sparse coding stage: means given D, to get sparse coefficients. (根据对稀疏系数向量的稀疏范数要求,分为算法OMP for L0 , 算法LARS for L1,L2 )
- atoms updating stage: means given α , to update atoms in dictionary D .
1) if param.mode=0
2) if param.mode=1
minD∈C1n∑i=1n||αi||1s.t.||xi−Dαi||22≤λ
3) if param.mode=2 (default)
minD∈C1n∑i=1n{12||xi−Dαi||22+λ||αi||1+λ2||αi||22}
4) if param.mode=3
minD∈C1n∑i=1n12||xi−Dαi||22s.t.||αi||0≤λ
5) if param.mode=4
minD∈C1n∑i=1n||αi||0s.t.||xi−Dαi||22≤λ
6) if param.mode=5
minD∈C1n∑i=1n{12||xi−Dαi||22+λ||αi||0}
When param.mode=1, 2, 可以考虑 mexTrainDL_Memory()
When param.mode=3, 4, 5, sparse coding stage is solved by OMP.
对D的约束: C
C is a convex set verifing:
1) if param.modeD=0 (default)
C={D∈Rm×p,s.t.∀j,||dj||22≤1}
2) if param.modeD=1
C={D∈Rm×p,s.t.∀j,||dj||22+γ1||dj||1≤1}
3) if param.modeD=2
C={D∈Rm×p,s.t.∀j,||dj||22+γ1||dj||1+γ2FL(dj)≤1}
4) if param.modeD=3
C={D∈Rm×p,s.t.∀j,(1−γ1)||dj||22+γ1||dj||1≤1}
参数说明
parameter | 说明 |
---|---|
param.D | |
param.K | |
param.lamda | |
param.lamda2 | |
param.iter | |
param.mode | |
param.posAlpha | 系数矩阵 α 非负性(not compatible with param.mode =3,4)) |
param.modeD | |
param.posD | 字典 D <script type="math/tex" id="MathJax-Element-61">D</script> 矩阵的非负性(not compatible with param.modeD=2) |
param.gamma1 | |
pamma.gamma2 | |
param.batchsize | default 512 |
param.iter_updateD | |
param.modeParam | 0, 1, 2 |
param.rho | |
param.t0 | |
param.clean | |
param.verbose | |
param.numThreads | by default -1 |