自動編碼器基本概念
自動編碼器(autoencoder)是神經網路的一種,一般來講自動編碼器包括兩部分:編碼器和解碼器,編碼器和解碼器相互串聯合作,實現資料的降維或特徵學習,現在也廣泛用於生成模型中.
在深度學習中,autoencoder可用於在訓練階段開始前,確定權重矩陣的初始值.
左側為encoder,右側為decoder.可以看出最簡單的自動編碼器只有三層,輸入層+隱藏層x1+輸出層.
自動編碼器神經網路是一種無監督機器學習演算法,其應用了反向傳播,可將目標值設定成與輸入值相等。自動編碼器的訓練目標是將輸入複製到輸出。在內部,它有乙個描述用於表徵其輸入的**的隱藏層。
自動編碼器可以用乙個公式簡單的表示:
f(x) = x
從這裡也可以看出來自編碼器的作用就是用來進行資料降維和特徵學習.
****自動編碼器的侷限****
從上面來看,僅僅經過了20輪訓練就可以達到乙個不錯的視覺化效果,但是實際上自動編碼器還是有很大的侷限性的.
自動編碼器依據特定的樣本進行訓練,因此其適用性很大程度上被侷限於與訓練樣本相似的資料;
自動編碼器很容易過擬合,即最終簡單的將樣本資料投射回去,這就需要結合深度學習中的各種方法來防止過擬合的產生
(1)給定無標籤資料,用非監督學習學習特徵:
在我們之前的神經網路中,如第乙個圖,我們輸入的樣本是有標籤的,即(input, target),這樣我們根據當前輸出和target(label)之間的差去改變前面各層的引數,直到收斂。但現在我們只有無標籤資料,也就是右邊的圖。那麼這個誤差怎麼得到呢?
如上圖,我們將input輸入乙個encoder編碼器,就會得到乙個code,這個code也就是輸入的乙個表示,那麼我們怎麼知道這個code表示的就是input呢?我們加乙個decoder解碼器,這時候decoder就會輸出乙個資訊,那麼如果輸出的這個資訊和一開始的輸入訊號input是很像的(理想情況下就是一樣的),那很明顯,我們就有理由相信這個code是靠譜的。所以,我們就通過調整encoder和decoder的引數,使得重構誤差最小,這時候我們就得到了輸入input訊號的第乙個表示了,也就是編碼code了。
因為是無標籤資料,所以誤差的**就是直接重構後與原輸入相比得到。
到這裡,這個autoencoder還不能用來分類資料,因為它還沒有學習如何去鏈結乙個輸入和乙個類。**它只是學會了如何去重構或者復現它的輸入而已。**或者說,它只是學習獲得了乙個可以良好代表輸入的特徵,這個特徵可以最大程度上代表原輸入訊號。
sparse autoencoder稀疏自動編碼器:
當然,我們還可以繼續加上一些約束條件得到新的deep learning方法,如:如果在autoencoder的基礎上加上l1的regularity限制(l1主要是約束每一層中的節點中大部分都要為0,只有少數不為0,這就是sparse名字的**),我們就可以得到sparse autoencoder法。
如上圖,其實就是限制每次得到的表達code盡量稀疏。因為稀疏的表達往往比其他的表達要有效(人腦好像也是這樣的,某個輸入只是刺激某些神經元,其他的大部分的神經元是受到抑制的)。
自動編碼器(Autoencoder)
autoencoder是一種無監督的學習演算法,主要用於資料的降維或者特徵的抽取,在深度學習中,autoencoder可用於在訓練階段開始前,確定權重矩陣 w 的初始值。神經網路中的權重矩陣 w可看作是對輸入的資料進行特徵轉換,即先將資料編碼為另一種形式,然後在此基礎上進行一系列學習。然而,在對權重...
自動編碼器(Autoencoder)
autoencoder是一種無監督的學習演算法,主要用於資料的降維或者特徵的抽取,在深度學習中,autoencoder可用於在訓練階段開始前,確定權重矩陣w的初始值。或參考 自動編碼器 autoencoder 對於多層神經網路的引數初始化問題,我們可以依次對每一層進行autoencoder。如下圖所...
五 自動編碼器
1 自動編碼器的基本思想 直接用乙個單層或者多層神經網路對輸入資料進行對映,得到輸出向量,作為從輸入資料中提取出的特徵 核心問題 怎麼設定訓練目標 解決思路 編碼器 解碼器框架 2 網路結構 編碼器 將輸入資料對映為特徵向量 解碼器 將特徵向量對映回輸入向量,重構 3 損失函式 損失函式定義為重構誤...