Stanford UFLDL教程 稀疏编码
稀疏編碼
Contents[hide]
|
稀疏編碼
稀疏編碼算法是一種無監督學習方法,它用來尋找一組“超完備”基向量來更高效地表示樣本數據。稀疏編碼算法的目的就是找到一組基向量 ,使得我們能將輸入向量 表示為這些基向量的線性組合:
雖然形如主成分分析技術(PCA)能使我們方便地找到一組“完備”基向量,但是這里我們想要做的是找到一組“超完備”基向量來表示輸入向量 (也就是說,k >n)。超完備基的好處是它們能更有效地找出隱含在輸入數據內部的結構與模式。然而,對于超完備基來說,系數 ai 不再由輸入向量 唯一確定。因此,在稀疏編碼算法中,我們另加了一個評判標準“稀疏性”來解決因超完備而導致的退化(degeneracy)問題。
這里,我們把“稀疏性”定義為:只有很少的幾個非零元素或只有很少的幾個遠大于零的元素。要求系數 ai 是稀疏的意思就是說:對于一組輸入向量,我們只想有盡可能少的幾個系數遠大于零。選擇使用具有稀疏性的分量來表示我們的輸入數據是有原因的,因為絕大多數的感官數據,比如自然圖像,可以被表示成少量基本元素的疊加,在圖像中這些基本元素可以是面或者線。同時,比如與初級視覺皮層的類比過程也因此得到了提升。
我們把有 m 個輸入向量的稀疏編碼代價函數定義為:
此處 S(.) 是一個稀疏代價函數,由它來對遠大于零的 ai 進行“懲罰”。我們可以把稀疏編碼目標函式的第一項解釋為一個重構項,這一項迫使稀疏編碼算法能為輸入向量 提供一個高擬合度的線性表達式,而公式第二項即“稀疏懲罰”項,它使 的表達式變得“稀疏”。常量λ 是一個變換量,由它來控制這兩項式子的相對重要性。
雖然“稀疏性”的最直接測度標準是 "L0" 范式(),但這是不可微的,而且通常很難進行優化。在實際中,稀疏代價函數S(.) 的普遍選擇是L1 范式代價函數 及對數代價函數 。
此外,很有可能因為減小 ai 或增加 至很大的常量,使得稀疏懲罰變得非常小。為防止此類事件發生,我們將限制 要小于某常量C 。包含了限制條件的稀疏編碼代價函數的完整形式如下:
概率解釋 [基于1996年Olshausen與Field的理論]
到目前為止,我們所考慮的稀疏編碼,是為了尋找到一個稀疏的、超完備基向量集,來覆蓋我們的輸入數據空間。現在換一種方式,我們可以從概率的角度出發,將稀疏編碼算法當作一種“生成模型”。
我們將自然圖像建模問題看成是一種線性疊加,疊加元素包括 k 個獨立的源特征 以及加性噪聲ν :
我們的目標是找到一組特征基向量 ,它使得圖像的分布函數 盡可能地近似于輸入數據的經驗分布函數 。一種實現方式是,最小化 與 之間的 KL 散度,此 KL 散度表示如下:
因為無論我們如何選擇 ,經驗分布函數 都是常量,也就是說我們只需要最大化對數似然函數 。假設ν 是具有方差 σ2 的高斯白噪音,則有下式:
為了確定分布 ,我們需要指定先驗分布 。假定我們的特征變量是獨立的,我們就可以將先驗概率分解為:
此時,我們將“稀疏”假設加入進來——假設任何一幅圖像都是由相對較少的一些源特征組合起來的。因此,我們希望 ai 的概率分布在零值附近是凸起的,而且峰值很高。一個方便的參數化先驗分布就是:
這里 S(ai) 是決定先驗分布的形狀的函數。
當定義了 和 后,我們就可以寫出在由 定義的模型之下的數據 的概率分布:
那么,我們的問題就簡化為尋找:
這里 < . > 表示的是輸入數據的期望值。
不幸的是,通過對 的積分計算 通常是難以實現的。雖然如此,我們注意到如果 的分布(對于相應的 )足夠陡峭的話,我們就可以用 的最大值來估算以上積分。估算方法如下:
跟之前一樣,我們可以通過減小 ai 或增大 來增加概率的估算值(因為P(ai) 在零值附近陡升)。因此我們要對特征向量 加一個限制以防止這種情況發生。
最后,我們可以定義一種線性生成模型的能量函數,從而將原先的代價函數重新表述為:
其中 λ = 2σ2β ,并且關系不大的常量已被隱藏起來。因為最大化對數似然函數等同于最小化能量函數,我們就可以將原先的優化問題重新表述為:
使用概率理論來分析,我們可以發現,選擇 L1 懲罰和 懲罰作為函數S(.) ,分別對應于使用了拉普拉斯概率 和柯西先驗概率 。
學習算法
使用稀疏編碼算法學習基向量集的方法,是由兩個獨立的優化過程組合起來的。第一個是逐個使用訓練樣本 來優化系數ai ,第二個是一次性處理多個樣本對基向量 進行優化。
如果使用 L1 范式作為稀疏懲罰函數,對 的學習過程就簡化為求解 由L1 范式正則化的最小二乘法問題,這個問題函數在域 內為凸,已經有很多技術方法來解決這個問題(諸如CVX之類的凸優化軟件可以用來解決L1正則化的最小二乘法問題)。如果S(.) 是可微的,比如是對數懲罰函數,則可以采用基于梯度算法的方法,如共軛梯度法。
用 L2 范式約束來學習基向量,同樣可以簡化為一個帶有二次約束的最小二乘問題,其問題函數在域 內也為凸。標準的凸優化軟件(如CVX)或其它迭代方法就可以用來求解,雖然已經有了更有效的方法,比如求解拉格朗日對偶函數(Lagrange dual)。
根據前面的的描述,稀疏編碼是有一個明顯的局限性的,這就是即使已經學習得到一組基向量,如果為了對新的數據樣本進行“編碼”,我們必須再次執行優化過程來得到所需的系數。這個顯著的“實時”消耗意味著,即使是在測試中,實現稀疏編碼也需要高昂的計算成本,尤其是與典型的前饋結構算法相比。
中英文對照
前饋結構算法 feedforward architectures
總結
以上是生活随笔為你收集整理的Stanford UFLDL教程 稀疏编码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Stanford UFLDL教程 用反向
- 下一篇: Stanford UFLDL教程 稀疏编