卷積神經網絡、受限玻爾茲曼機和自動編碼器之間有什麼區別?
最近我一直在閱讀有關深度學習的內容,但我對這些術語(或者說技術)感到困惑。和有什麼區別
- 卷積神經網絡(CNN),
- 受限玻爾茲曼機 (RBM) 和
- 自動編碼器?
自動編碼器是一個簡單的 3 層神經網絡,其中輸出單元直接連接回輸入單元。例如在這樣的網絡中:
output[i]``input[i]
對每個都有優勢i
。通常,隱藏單元的數量遠少於可見(輸入/輸出)單元的數量。結果,當您通過這樣的網絡傳遞數據時,它首先壓縮(編碼)輸入向量以“適應”較小的表示,然後嘗試將其重構(解碼)回來。訓練的任務是最小化錯誤或重構,即為輸入數據找到最有效的緊湊表示(編碼)。RBM 有類似的想法,但使用隨機方法。代替確定性(例如邏輯或 ReLU),它使用具有特定(通常是高斯的二進制)分佈的隨機單位。學習過程包括吉布斯採樣的幾個步驟(傳播:給定可見的樣本隱藏;重建:給定隱藏的樣本可見;重複)和調整權重以最小化重建誤差。
RBM 背後的直覺是有一些可見的隨機變量(例如來自不同用戶的電影評論)和一些隱藏的變量(例如電影類型或其他內部特徵),訓練的任務是找出這兩組變量實際上是如何相互連接(有關此示例的更多信息,請參見此處)。
卷積神經網絡與這兩者有些相似,但它們不是在兩層之間學習單個全局權重矩陣,而是旨在找到一組局部連接的神經元。CNN 主要用於圖像識別。它們的名稱來自“卷積”運算符或簡稱為“過濾器”。簡而言之,過濾器是一種通過簡單更改卷積核來執行複雜操作的簡單方法。應用高斯模糊內核,你會得到它的平滑。應用 Canny 內核,你會看到所有的邊緣。應用 Gabor 核來獲得梯度特徵。
(圖片來自這裡)
卷積神經網絡的目標不是使用預定義的內核之一,而是學習特定於數據的內核。這個想法與自動編碼器或 RBM 相同——將許多低級特徵(例如用戶評論或圖像像素)轉換為壓縮的高級表示(例如電影流派或邊緣)——但現在權重僅從神經元學習在空間上彼此靠近。
這三個模型都有各自的用例、優點和缺點,但最重要的屬性可能是:
- 自動編碼器是最簡單的。它們直觀易懂、易於實現和推理(例如,為它們找到好的元參數比為 RBM 更容易)。
- RBM 具有生成性。也就是說,與僅區分某些數據向量以支持其他數據向量的自動編碼器不同,RBM 還可以生成具有給定聯合分佈的新數據。它們也被認為功能更豐富、更靈活。
- CNN 是非常具體的模型,主要用於非常具體的任務(儘管非常流行的任務)。當今,圖像識別中的大多數頂級算法都以某種方式基於 CNN,但在該領域之外,它們幾乎不適用(例如,使用卷積進行電影評論分析的原因是什麼?)。
UPD。
降維
當我們將某個對象表示為元素,我們說這是一個向量維空間。因此,降維是指以這樣一種方式細化數據的過程,即每個數據向量被翻譯成另一個向量在一個維空間(向量與元素),其中. 可能最常見的方法是PCA。粗略地說,PCA 找到數據集的“內部軸”(稱為“組件”)並按重要性對它們進行排序。第一的然後將最重要的組件用作新的基礎。這些組件中的每一個都可以被認為是一個高級特徵,比原始軸更好地描述數據向量。
兩者——自動編碼器和 RBM——都做同樣的事情。取一個向量維空間,他們將其轉化為維一,試圖保留盡可能多的重要信息,同時消除噪音。如果自動編碼器/RBM 的訓練成功,則結果向量的每個元素(即每個隱藏單元)都代表了關於對象的一些重要信息——圖像中眉毛的形狀、電影的類型、科學文章中的研究領域等。將大量噪聲數據作為輸入,並以更有效的表示形式生成更少的數據。
深層架構
那麼,如果我們已經有了 PCA,為什麼還要提出自動編碼器和 RBM 呢?事實證明,PCA 只允許數據向量的線性變換。也就是說,擁有主成分, 你只能表示向量. 這已經很好了,但還不夠。無論如何,您將 PCA 應用於數據多少次 - 關係將始終保持線性。
另一方面,自動編碼器和 RBM 本質上是非線性的,因此它們可以學習可見單元和隱藏單元之間更複雜的關係。而且,它們可以堆疊,這使得它們更加強大。例如,你訓練 RBM可見和隱藏單元,然後你放另一個 RBM可見和在第一個之上隱藏單元並對其進行訓練,等等。與自動編碼器完全相同。
但你不只是添加新層。在每一層上,您都嘗試從前一層中學習數據的最佳表示:
在上圖中,有一個這樣一個深度網絡的例子。我們從普通像素開始,然後是簡單的過濾器,然後是面部元素,最後是整個面部!這就是深度學習的精髓。
現在請注意,在此示例中,我們使用圖像數據並順序獲取越來越大的空間接近像素區域。聽起來是不是很相似?是的,因為它是深度卷積網絡的一個例子。無論是基於自動編碼器還是 RBM,它都使用卷積來強調局部性的重要性。這就是 CNN 與自動編碼器和 RBM 有所不同的原因。
分類
這裡提到的模型本身都不能用作分類算法。相反,它們用於預訓練——學習從低級和難以消費的表示(如像素)到高級表示的轉換。一旦對深度(或者可能不是那麼深)網絡進行了預訓練,輸入向量就會被轉換為更好的表示形式,並且最終將得到的向量傳遞給真正的分類器(例如 SVM 或邏輯回歸)。在上圖中,這意味著在最底部還有一個實際進行分類的組件。