今天學習了一下稀疏編碼,自己做點筆記,SRC算法就是利用訓練樣本數據和測試樣本數據之間的關係找到一個稀疏矩陣,本質就是尋找這樣一個矩陣,即一個稀疏的、超完備基向量集,來覆蓋我們的輸入數據空間。
若Xi表示第i類的訓練樣本,大小爲d*li,d爲特徵維數,li爲樣本數量。將所有類別(K類)的訓練樣本組合成一個矩陣爲D=[X1 ... Xi ... XK],大小爲d*l。對於任意一個測試樣本,可以表示成如下的線性方式:
y = Da (1)
根據線性代數的知識,已知D和y,係數a可以方便的求解出來。但是,一般情況下,l 遠大於d。因此,公式(1)沒有唯一的解。爲了得到唯一的解,需要添加一個約束條件,即係數a 儘可能的稀疏。因此公式(1)演變爲如下的最優問題
y = Da
s.t. min ||a|| 1
(2)
上述的問題等同於如下問題:
min ||a|| 1 s.t.y = Da (3)
該問題屬於一種線性約束的最優化問題。
求解得到合適的最優係數a*後,利用殘差來確定相應的類別,方法如下:
y* = arg mini ei(y), ei(y) = ||y - Xiai*||2 (4)
通過公式(4)求解對應的類別。
以下主要是根據SRC的部分改進,其中之一是利用每一類樣本單獨進行訓練得到字典,我看的文章主要是針對測試樣本不能用訓練樣本稀疏表示,採用的是先對測試樣本進行效正,在利用效正後的測試樣本進行稀疏表示求解。
算法模型如式(5): τ=argmin‖x‖1+‖e‖1subj
T(y,τ)=Ax+e(5)
其中,y是原始圖像,τ是仿射變換參數,T(·)是仿射變換算子。T(y,τ)表示測試樣本y
經過仿射變換與訓練樣本對齊後的圖像。
爲了避免陷入局部最小值, 本算法將每一類用戶的訓練圖像單獨用作訓練字典,算法模型變爲式(6):
τ=argmin‖e‖1subj
T(y,τ)=Aix+e,i=1,2…k(6)其中k
表示訓練圖像中的種類。
假設測試樣本與訓練樣本只存在微小的平移偏差,
則可以通過一階泰勒展開式來近似校正後的測試圖像:
T(y,τ)≈y+Δx·Yx +Δy·Yy(7)其中 ,Yx是圖像 y 水 平 方 向 的 一 階 導 數 ,Yy表示圖像 y豎直方向的一階導數。
再將每次得到的相對偏移量累加,最終得到原始的測試樣本相對於同類訓練樣本偏移量。
τ=argmin‖e‖1 subj y+Δx·Yx+Δy·Yy=Ai x+e (8)
等價τ=argmin‖e‖1subj
y=Aix-Δx·Yx-Δy·Yy+e=Bw(9)
(中間計算和推理有省略)
Idetify(y)=arg min‖ei‖2(i=1,2…k) (11)
第三在求解的時候最後採用的是L1和L2範數的混合使用,可以考慮不同範數,比如Lp範數等等。
文章上面的內容是別人滴進行的個人總結,文章最後提出了自己的改進想法和觀點