自编码器
文章目錄
- 自編碼器
- 稀疏自編碼器
- 去噪自編碼器
- 變分自編碼器
自編碼器
在現實世界中,我們無時無刻的接受著大量的數據,但是這些數據中有用的部分僅僅用一個低維向量表示就夠用了,而不是像看起來像數據本身那樣復雜。機器學習中有很多技術可以將數據壓縮到低維空間中,自編碼器就是其中的一種。
自編碼器是神經網絡的一種,經過訓練后能嘗試將輸出復制到輸出。自編碼器內部有一個隱藏層h,可以產生編碼表示輸入。如下圖所示,該網絡可以看作由兩部分組成:一個由函數h=f(x)表示的編碼器和一個生成重構的解碼器r=g(h)。
如果一個編碼器只是簡單的將g(f(x))=x,那么這個編碼器就沒有什么特別的用處了。我們不應該將自編碼器設計成輸入到輸出完全相等。這通常需要向自編碼器增加一些約束,使它只能近似的復制,并只能復制與訓練數據相似的輸入。
自編碼器的編碼器部分,它通常是多層神經網絡(全連接的神經網絡或卷積神經網絡等等),負責接收數據然后將其壓縮為一個低維度的向量。同樣解碼器也是一個全連接的或卷積神經網絡,作用于一個中間的單元重建輸入數據。
所以自編碼器想要做的就是將輸入的一些高維度的數據通過神經網絡的加持使數據能夠壓縮成一個低維度的表示,然后再通過一系列的神經網絡將低維度的信息還原。
稀疏自編碼器
稀疏編碼器一般用來學習特征,以便用于像分類這樣的任務。 稀疏正則化的自編碼器必須反映訓練數據集的獨特統計特征,而不是簡單地充當恒等函數。以這樣的方式訓練,執行附帶懲罰的復制任務可以得到能學習有用特征的模型。
這里要說一下正則自編碼器。如果編碼維數小于輸入維數的欠完備自編碼器可以學習數據分布最顯著的特征,如果賦予這類自編碼器過大的容量它就不能學習到任何有用的信息。如果隱藏編碼的維數允許與輸入相等,或隱藏編碼維數大于輸入的過完備的情況下,即使使用線性編碼、解碼器也學習不到任何有關數據分布的有用信息。理想情況下,根據要建模的數據分布的復雜性,選擇合適的編碼維數和編碼、解碼器容量,就可以成功訓練任意架構的自編碼器。正則自編碼器提供這樣的能力,它使用的損失函數可以鼓勵模型學習其他特性,而不必限制使用淺層的編碼器和解碼器以及小的編碼維數來限制模型的容量。
稀疏自編碼器簡單地在訓練時結合編碼層的稀疏懲罰Ω(h)和重構誤差:
L(x,g(f(x)))+Ω(h)其中g(h)是解碼器的輸出,通常h是編碼器的輸出,即h=f(x)。
在這里,可以簡單地將懲罰項Ω(h)視為加到前饋網絡的正則項,這個前饋網絡的主要任務是將輸入復制到輸出(無監督學習的目標),并盡可能地根據這些稀疏特征執行一些監督學習任務。我們認為整個稀疏自編碼器框架是對帶有潛變量的生成模型的近似最大似然訓練,而不將稀疏懲罰視為復制任務的正則化。例如我們有一個帶有可見變量x和潛變量h的模型,且具有明確的聯合分布p(x,h)=p(h)p(x|h)。將p(h)視為模型關于潛變量的先驗分布,表示模型看到x的先驗。
對數似然函數可以分解為:
logp(x)=log∑p(h,x)我們可以認為自編碼器使用一個高似然值h的點估計近似這個總和。這類似于稀疏編碼生成模型,但h是一個參數編碼器的輸出。
去噪自編碼器
變分自編碼器
未完待續
總結
- 上一篇: Citavi下载及使用
- 下一篇: 机器学习——推荐算法