稀疏编码算法详解(稀疏编码的优缺点)
导语:高效稀疏编码公式理解
问题描述
先上原文如下,要使用拉格朗日对偶求解字典,原文在《Efficient sparse coding algorithms》。
基础预备
关于矩阵求导的基础可以参考我的上一篇博客。
开始推导
上述(7)式后面一项,可以知道算出来就是一个实值,可以换做trace(B
T
BΛ−cΛ)
trace(BTBΛ−cΛ)(可自行验证),整个式子就是,
L(B,Λ)
=Tr((X−BS)
T
(X−BS))+Tr(B
T
BΛ−cΛ)
=Tr(X
T
X−S
T
B
T
X−X
T
BS+S
T
B
T
BS)
①
+Tr(B
T
BΛ−cΛ)
②
L(B,Λ)=Tr((X−BS)T(X−BS))+Tr(BTBΛ−cΛ)=Tr(XTX−STBTX−XTBS+STBTBS)① +Tr(BTBΛ−cΛ)②
上式被分为两部分,我们的目标要求解min
B,Λ
L(B,Λ)
minB,ΛL(B,Λ)也即是最终算出字典B,这里可以先在对偶空间中求解Λ
Λ,在反带回去求解B。
1、用Λ
Λ表示B(对B求导得到B和Λ
Λ的关系)
先对第①部分求导,
∇
B
L(B,Λ,①)
=∇
B
Tr(X
T
X−S
T
B
T
X−X
T
BS+S
T
B
T
BS)
=∇
B
TrB
T
BSS
T
−∇
B
Tr(S
T
B
T
X)
T
−∇
B
TrBSX
T
=B(SS
T
+(SS
T
)
T
)−∇
B
TrBSX
T
−(SX
T
)
T
=2BSS
T
−(SX
T
)
T
−(SX
T
)
T
=2BSS
T
−2XS
T
∇BL(B,Λ,①)=∇BTr(XTX−STBTX−XTBS+STBTBS)=∇BTrBTBSST−∇BTr(STBTX)T−∇BTrBSXT=B(SST+(SST)T)−∇BTrBSXT−(SXT)T=2BSST−(SXT)T−(SXT)T=2BSST−2XST
再对第②部分求导,
∇
B
L(B,Λ,②)
=∇
B
Tr(B
T
BΛ−cΛ)
=B(Λ+Λ
T
) Λ为对角阵,也是对称矩,故可合并
=2BΛ
∇BL(B,Λ,②)=∇BTr(BTBΛ−cΛ)=B(Λ+ΛT) Λ为对角阵,也是对称矩,故可合并=2BΛ
整体而言,令梯度=0即可知道他们的关系
∇
B
L(B,Λ)=2BSS
T
−2XS
T
+2BΛ=0
B(SS
T
+Λ)=XS
T
(B(SS
T
+Λ))
T
=(XS
T
)
T
(SS
T
+Λ)B
T
=(XS
T
)
T
B
T
=(SS
T
+Λ)
−1
(XS
T
)
T
∇BL(B,Λ)=2BSST−2XST+2BΛ=0B(SST+Λ)=XST(B(SST+Λ))T=(XST)T(SST+Λ)BT=(XST)TBT=(SST+Λ)−1(XST)T
故,其间关系为
B
T
=(SS
T
+Λ)
−1
(XS
T
)
T
BT=(SST+Λ)−1(XST)T
这个式子就是原文中(11)式的来历,原文如下,
本文内容由小茜整理编辑!