去噪自動編碼器(dae)是在傳統自動編碼器的基礎上,通過向輸入中注入雜訊,然後利用含雜訊的「腐壞」的樣本去重構不含雜訊的「乾淨」輸入,這是與傳統編碼器的主要區別。同時這種訓練策略也使得dae能夠學習到更能反映輸入資料的本質特徵。傳統自動編碼器單純依靠最小化輸入與重構訊號之間的誤差來得到輸入的隱含層特徵表示,但這種訓練策略並不能保證提取到資料的本質特徵,因為單純依靠最小化重構誤差可能導致編碼器學習到的特徵僅僅是原始輸入的複製。為避免上述問題,引入雜訊注入策略,這就是dae產生的動機。
助於形成輸入的更高層特徵表達。dae仍然是通過最小化輸入與重構訊號之間的誤差來對網路引數進行調整,這一點傳統的自動編碼器相同;不同的是,dae的隱含層表示並不是由原始輸入直接對映得到,而是由原始輸入的「腐壞」版本得到。dae按照一定比例將原始輸入中的元素隨機置零,對剩餘元素不作處理,便得到了原始輸入的「腐壞」版本。相當於向原始輸入中引入一定比例的「空白」元素,減少了原始輸入包含的資訊;而dae就是通過對和進行學習,嘗試著去填補丟失的資訊,進而學習到的資料結構,使得提取到的特徵更能反映原始輸入的特點。
多個dae堆疊能夠形成具有一定深度的sdae。這時的sdae並不能進行模式識別,因為它只是乙個特徵提取器,並不具有分類功能。為了使sdae具有分類功能,需在其頂層新增分類器,如svm、softmax等,並使用帶標籤的資料對sdae進行有監督訓練,最後使用利用bp演算法對整個網路引數進行微調,便得到具有分類功能的sdae,如圖4-5所示。具體步驟如下:
step1 初始化sdae網路引數;
step2 訓練第一層dae,將其隱含層作為第2個dae的輸入,並進行同樣的訓練,直到第n層dae訓練完成;
step3 將訓練好的n層dae進行堆疊形成sdae,向sdae網路頂層新增輸出層;
step4 利用樣本資料和標籤對整個網路進行有監督的微調。
sdae的思想就是將多個dae堆疊在一起形成乙個深度的架構。只有在訓練的時候才會對輸入進行腐蝕(加噪),訓練完成就不需要在進行腐蝕。
逐層貪婪訓練:每層自編碼層都單獨進行非監督訓練,以最小化輸入(輸入為前一層的隱層輸出)與重構結果之間的誤差為訓練目標。前k層訓練好了,就可以訓練k+1層,因為已經前向傳播求出k層的輸出,再用k層的輸出當作k+1的輸入訓練k+1層。
一旦sdae訓練完成, 其高層的特徵就可以用做傳統的監督演算法的輸入。當然,也可以在最頂層新增一層logistic regression layer(softmax層),然後使用帶label的資料來進一步對網路進行微調(fine-tuning),即用樣本進行有監督訓練。
在原有的自編碼器中引入正則項。迫使其學習在訓練樣本上有更強收縮作用的對映。
為了提高對訓練集資料點周圍小擾動的魯棒性,收縮自編碼器在基礎自編碼器上新增了正則項,其形式為編碼器的對映 ?f 關於輸入 ?x 的 ????????jacobian 矩陣的 ?????????frobenius 範數,目的是迫使其學習在訓練樣本上有更強收縮作用的對映。從物理意義上引入的正則項表示對輸入量的梯度的表徵。
從代價函式來看,收縮自編碼器通過兩種相反的推動力學習有用資訊--重構誤差和收縮懲罰(正則項)。收縮懲罰迫使自編碼器學習到的所有對映對於輸入的梯度都很小,即把輸入都降維到乙個很小的區域(點附近),而重構誤差迫使自編碼器學習乙個恒等對映,保留完整的資訊。兩種推動力衝擊下,使得大部分對映對於輸入的梯度都很小,而只有少部分的大梯度。這樣在輸入具有小擾動時,小梯度會減小這些擾動,達到增加自編碼器對輸入附近小擾動的魯棒性。
自編碼器(AutoEncoder
本文講述自編碼器 auto encoder,下文簡稱ae 將按照以下的思路展開講解,力圖使得初學者能看懂其中要義。目錄如下 1.ae的基本原理 2.ae的用途 3.基於mnist資料集的ae的簡單python實現 ae,是神經網路模型的一種,是一種全連線網路模型,而且進行無監督學習,下圖是簡單的ae...
自編碼器簡介
autoencoder,中文譯名自編碼器。主要用於特徵提取,可以理解為一種基於神經網路的壓縮 降維演算法,和pca等類似。自編碼器為一種有損壓縮演算法,通過壓縮 編碼 獲得資料等抽象特徵,並可以通過解壓縮 解碼 將抽象特徵盡可能地還原成原始資料。因此,根據原ppt中對自編碼器 學習使用者高度抽象的特...
了解自編碼器
1.什麼是自編碼器?自動編碼器是一種無監督的機器學習演算法,該演算法將影象作為輸入並使用較少的位數來重建它。這聽起來像是影象壓縮,但是自動編碼器和通用影象壓縮演算法之間的最大區別在於,在自動編碼器的情況下,壓縮是通過學習訓練資料集來實現的。當影象類似於所使用的訓練集時,雖然可以實現合理的壓縮,但是自...