深度置信網路(DBN)和受限玻爾茲曼機(RBM)
阿新 • • 發佈:2019-01-27
原部落格於http://blog.163.com/silence_ellen/blog/static/176104222201431710264087/
本篇非常簡要地介紹了深度信念網路的基本概念。文章先簡要介紹了深度信念網路(包括其應用例項)。接著分別講述了:(1) 其基本組成結構——受限玻爾茲曼機的的基本情況,以及,(2) 這個基本結構如何組成深度信念網路。 本文僅僅能使讀者瞭解深度信念網路這一概念,內容非常淺顯,甚至有許多不嚴密的地方。如果有願意深入瞭解受限玻爾茲曼機、深度信念網路的,想對深度學習有更多瞭解的,請訪問深度學習官方網站。或者讀者可以參考文末的“推薦閱讀”一節。
目錄
概述 .............................................................................................................................. 2
受限玻爾茲曼機 ............................................................................................................ 3
神經元之間的條件獨立性 .......................................................................................... 3
使用 RBM 的過程 ..................................................................................................... 4
訓練 RBM ................................................................................................................. 5
深度信念網路 ................................................................................................................ 5
訓練過程: ................................................................................................................ 6
調優過程 (Fine-Tuning) : ...................................................................................... 6
使用過程 ................................................................................................................... 7
推薦閱讀 ....................................................................................................................... 8
論文 .......................................................................................................................... 8
博文和網路教程 ........................................................................................................ 8
概述
深度信念網路 (Deep Belief Network, DBN) 由 Geoffrey Hinton 在 2006 年提出。它是一種生成模型,通過訓練其神經元間的權重,我們可以讓整個神經網路按照最大概率來生成訓練資料。我們不僅可以使用 DBN 識別特徵、分類資料,還可以用它來生成資料。下面的圖片展示的是用 DBN 識別手寫數字:
圖 1 用深度信念網路識別手寫數字。圖中右下角是待識別數字的黑白點陣圖,它的上方有三層隱性神經元。每一個黑色矩形代表一層神經元,白點代表處於開啟狀態的神經元,黑色代表處於關閉狀態的神經元。注意頂層神經元的左下方即使別結果,與畫面左上角的對應表比對,得知這個 DBN 正確地識別了該數字。
下面是展示了一個學習了大量英文維基百科文章的 DBN 所生成的自然語言段落:
In 1974 Northern Denver had been overshadowed by CNL, and several Irish intelligence agencies in the Mediterranean region. However, on the Victoria, Kings Hebrew stated that Charles decided to escape during an
alliance. The mansion house was completed in 1882, the second in its bridge are omitted, while closing is the proton reticulum composed below it aims, such that it is the blurring of appearing on any well-paid type of box printer.
DBN 由多層神經元構成,這些神經元又分為顯性神經元 和隱性神經元(以下簡稱顯元和隱元)。顯元用於接受輸入,隱元用於提取特徵。因此隱元也有個別名,叫特徵檢測器 (feature
detectors)。最頂上的兩層間的連線是無向的,組成聯合記憶體 (associative memory)。較低的其他層之間有連線上下的有向連線。最底層代表了資料向量 (data vectors),每一個神經元代表資料向量的一維。
DBN 的組成元件是受限玻爾茲曼機(Restricted Boltzmann Machines, RBM)。訓練
DBN 的過程是一層一層地進行的。在每一層中,用資料向量來推斷隱層,再把這一隱層當作下一層 (高一層) 的資料向量。
受限玻爾茲曼機
如前所述,RBM 是 DBN 的組成元件。事實上,每一個 RBM 都可以單獨用作聚類器。
RBM 只有兩層神經元,一層叫做顯層 (visible layer),由顯元 (visible
units) 組成,用於輸入訓練資料。另一層叫做隱層 (Hidden layer),相應地,由隱元 (hidden
units) 組成,用作特徵檢測器 (feature detectors)。
圖 2 受限玻爾茲曼機的結構。圖中的較上一層神經元組成隱層,較下的神經元組成顯元。每一層都可以用一個向量來表示,每一維表示每個神經元。注意這兩層間的對稱 (雙向) 連線。
神經元之間的條件獨立性
應注意到,顯層和隱層內部的神經元都沒有互連,只有層間的神經元有對稱的連線線。這樣的好處是,在給定所有顯元的值的情況下,每一個隱元取什麼值是互不相關的。也就是說,
同樣,在給定隱層時,所有顯元的取值也互不相關:
有了這個重要性質,我們在計算每個神經元的取值情況時就不必每次計算一個,而是同時並行地計算整層神經元。
使用 RBM 的過程
假設我們現在已經得到一個訓練好的 RBM,每個隱元與顯元間的權重用矩陣
W表示,且:
其中Wij代表從第i個顯元到第j個隱元的權重,M代表顯元的個數,N代表隱元的個數。那麼,當我們把一條新來的資料附給
(clamp to) 顯層後,RBM 將會依照權值W來決定開啟或關閉隱元。具體的操作如下:
首先,將每個隱元的激勵值 (activation) 計算出來:
注意,這裡用到了前面提到的神經元之間的條件獨立性。
然後,將每個隱元的激勵值都用 S 形函式進行標準化,變成它們處於開啟狀 (用 1 表示) 的概率值:
此處的 S 形函式我們採用的是 Logistic 函式:
至此,每個隱元hj開啟的概率被計算出來了。其處於關閉狀態 (用 0 表示) 的概率自然也就是
那麼到底這個元開啟還是關閉,我們需要將開啟的概率與一個從 0, 1 均勻分佈中抽取的隨機值
進行如下比較
然後開啟或關閉相應的隱元。
給定隱層,計算顯層的方法是一樣的。
訓練 RBM
RBM 的訓練過程,實際上是求出一個最能產生訓練樣本的概率分佈。也就是說,要求一個分佈,在這個分佈裡,訓練樣本的概率最大。由於這個分佈的決定性因素在於權值W ,所以我們訓練 RBM 的目標就是尋找最佳的權值。為了保持讀者的興趣,這裡我們不給出最大化對數似然函式的推導過程,直接說明如何訓練 RBM。
G. Hinton 提出了名為對比散度 (Contrastive Divergence) 的學習演算法。下面我們來詳述它的具體過程。
我們沿用前文的符號記法。
演算法1. 對比散度
對於訓練集中的每一條記錄
如此訓練之後的 RBM 就能較為準確地提取顯層的特徵,或者根據隱層所代表
的特徵還原顯層了。
深度信念網路
前文我們已經介紹了 RBM 的基本結構和其訓練、使用過程,接下來我們介紹DBN 的相關內容。
DBN 是由多層 RBM 組成的一個神經網路,它既可以被看作一個生成模型,也可以當作判別模型,其訓練過程是:使用非監督貪婪逐層方法去預訓練獲得權值。
訓練過程:
1. 首先充分訓練第一個 RBM;
2. 固定第一個 RBM 的權重和偏移量,然後使用其隱性神經元的狀態,作為第二個 RBM 的輸入向量;
3. 充分訓練第二個 RBM 後,將第二個 RBM 堆疊在第一個 RBM 的上方;
4. 重複以上三個步驟任意多次;
5. 如果訓練集中的資料有標籤,那麼在頂層的 RBM 訓練時,這個 RBM 的顯層中除了顯性神經元,還需要有代表分類標籤的神經元,一起進行訓練:
a) 假設頂層 RBM 的顯層有 500 個顯性神經元,訓練資料的分類一共分成了 10 類;
b) 那麼頂層 RBM 的顯層有 510 個顯性神經元,對每一訓練訓練資料,相應的標籤神經元被開啟設為 1,而其他的則被關閉設為 0。
6. DBN 被訓練好後如下圖: (示意)
圖 3 訓練好的深度信念網路。圖中的綠色部分就是在最頂層 RBM 中參與訓練的標籤。注意調優 (FINE-TUNING) 過程是一個判別模型
另:
調優過程 (Fine-Tuning) :
生成模型使用 Contrastive Wake-Sleep 演算法進行調優,其演算法過程是:
1. 除了頂層 RBM,其他層 RBM 的權重被分成向上的認知權重和向下的生成權重;
2. Wake 階段:認知過程,通過外界的特徵和向上的權重 (認知權重) 產生每一層的抽象表示 (結點狀態) ,並且使用梯度下降修改層間的下行權重 (生成權重) 。也就是“如果現實跟我想象的不一樣,改變我的權重使得我想
象的東西就是這樣的”。
3. Sleep 階段:生成過程,通過頂層表示 (醒時學得的概念) 和向下權重,生成底層的狀態,同時修改層間向上的權重。也就是“如果夢中的景象不是我腦中的相應概念,改變我的認知權重使得這種景象在我看來就是這個概
念”。
使用過程 :
1. 使用隨機隱性神經元狀態值,在頂層 RBM 中進行足夠多次的吉布斯抽樣;
2. 向下傳播,得到每層的狀態。
推薦閱讀
論文
1. Representation Learning: A Review and New Perspectives, Yoshua Bengio, Aaron Courville, Pascal Vincent, Arxiv, 2012.
2. The monograph or review paper Learning Deep Architectures for AI (Foundations & Trends in Machine Learning, 2009).
3. Deep Machine Learning – A New Frontier in Artificial Intelligence Research – a survey paper by Itamar Arel, Derek C. Rose, and Thomas P. Karnowski.
4. A Fast Learning Algorithm for Deep Belief Nets by Geoffrey E. Hinton and Simon Osindero.
博文和網路教程
1. Introduction to Restricted Boltzmann Machines by Edwin Chen.
2. An Introduction to Restricted Boltzmann Machines by Yuhuan Jiang.
3. Restricted Boltzmann Machine - Short Tutorial by iMonad.
4. 《深度學習學習筆記整理系列》 by Zouxy.