一起讀懂傳說中的經典:受限玻爾茲曼機

2020-12-05 機器之心Pro

儘管性能沒有流行的生成模型好,但受限玻爾茲曼機還是很多讀者都希望了解的內容。這不僅是因為深度學習的復興很大程度上是以它為前鋒,同時它那種逐層訓練與重構的思想也非常有意思。本文介紹了什麼是受限玻爾茲曼機,以及它的基本原理,並以非常簡單的語言描述了它的訓練過程。雖然本文不能給出具體的實現,但這些基本概念還是很有意思的。

定義 & 結構

受限玻爾茲曼機(RBM,Restricted Boltzmann machine)由多倫多大學的 Geoff Hinton 等人提出,它是一種可以用於降維、分類、回歸、協同過濾、特徵學習以及主題建模的算法。更多關於如何部署諸如 RBM 這樣的神經網絡的具體例子,請參閱 deeplearning4j 關於深度學習用例的內容。

本文將從受限玻爾茲曼機的關係和歷史重要性出發,首先討論什麼是 RBM。隨後,我們會使用圖表和淺顯的語言來描述它們的運行原理。

RBM 是兩層神經網絡,這些淺層神經網絡是 DBN(深度信念網絡)的構建塊。RBM 的第一層被稱為可見層或者輸入層,它的第二層叫做隱藏層。

上圖中的每個圓圈代表一個類似於神經元的節點,這些節點通常是產生計算的地方。相鄰層之間是相連的,但是同層之間的節點是不相連的。

也就是說,不存在層內通信,這就是 RBM 中的限制所在。每一個節點都是處理輸入數據的單元,每個節點通過隨機決定是否傳遞輸入。隨機意味著「隨機判斷」,這裡修改輸入的參數都是隨機初始化的。

每個輸入單元以數據集樣本中的低級特徵作為輸入。例如,對於一個由灰度圖組成的數據集,每個輸入節點都會接收圖像中的一個像素值。MNIST 數據集有 784 個像素點,所以處理它們的神經網絡必須有 784 個輸入節點。

現在讓我們跟隨單像素穿過這兩層網絡。在隱藏層的節點 1,x 和一個權重相乘,然後再加上一個偏置項。這兩個運算的結果可作為非線性激活函數的輸入,在給定輸入 x 時激活函數能給出這個節點的輸出,或者信號通過它之後的強度。這裡其實和我們常見的神經網絡是一樣的過程。

activation f((weight w * input x) + bias b ) = output a

接下來,讓我們看一下多個輸入單元是如何結合在一個隱藏節點的。每個 x 乘以一個獨立的權重,然後相加後再加一個偏置項,最後將結果傳遞到激活函數來產生輸出。

因為所有可見(或輸入)節點的輸入都被傳遞到所有的隱藏節點了,所以 RBM 可以被定義為對稱二分圖(symmetrical bipartite graph)。

對稱意味著每個可見節點都與一個隱藏節點相連(如下所示)。二分則意味著它具有兩部分,或者兩層。圖是一個數學術語,指的是由節點和邊組成的網絡。

在每一個隱藏節點,每個輸入 x 都與對應的權重 w 相乘。也就是說,一個輸入 x 會擁有 12 個權重(4 個輸入節點×3 個輸出節點)。兩層之間的權重總會形成一個矩陣,矩陣的行數等於輸入節點的個數,列數等於輸出節點的個數。

每個隱藏節點會接收 4 個與對應權重相乘的輸入。這些乘積的和再一次與偏置相加,並將結果饋送到激活函數中以作為隱藏單元的輸出。

如果這兩層是更深網絡的一部分,那麼第一個隱藏層的輸出會被傳遞到第二個隱藏層作為輸入,從這裡開始就可以有很多隱藏層,直到它們增加到最終的分類層。對於簡單的前饋網絡,RBM 節點起著自編碼器的作用,除此之外,別無其它。

重建(Reconstruction)

但是在本文關於 RBM 的介紹中,我們會集中討論它們如何以一種無監督的方式通過自身來重建數據,這使得在不涉及更深層網絡的情況下,可見層和第一個隱藏層之間會存在數次前向和反向傳播。

在重建階段,第一個隱藏層的激活狀態變成了反向傳遞過程中的輸入。它們與每個連接邊相同的權重相乘,就像 x 在前向傳遞的過程中隨著權重調節一樣。這些乘積的和在每個可見節點處又與可見層的偏置項相加,這些運算的輸出就是一次重建,也就是對原始輸入的一個逼近。這可以通過下圖表達:

因為 RBM 的權重是隨機初始化的,所以,重建結果和原始輸入的差距通常會比較大。你可以將 r 和輸入值之間的差值看做重建誤差,然後這個誤差會沿著 RBM 的權重反向傳播,以一個迭代學習的過程不斷反向傳播,直到達到某個誤差最小值。

關於反向傳播的更全面的解釋請查看機器之心的文章:反向傳播為何飽受質疑?(附完整的 BP 推導)。

正如你所看到的,在前向傳遞過程中,給定權重的情況下 RBM 會使用輸入來預測節點的激活值,或者輸出的概率 x:p(a|x; w)。

但是在反向傳播的過程中,當激活值作為輸入並輸出原始數據的重建或者預測時,RBM 嘗試在給定激活值 a 的情況下估計輸入 x 的概率,它具有與前向傳遞過程中相同的權重參數。這第二個階段可以被表達為 p(x|a; w)。

這兩個概率估計將共同得到關於輸入 x 和激活值 a 的聯合概率分布,或者 p(x, a)。重建與回歸有所不同,也不同於分類。回歸基於很多輸入來估計一個連續值,分類預測出離散的標籤以應用在給定的輸入樣本上,而重建是在預測原始輸入的概率分布。

這種重建被稱之為生成學習,它必須跟由分類器執行的判別學習區分開來。判別學習將輸入映射到標籤上,有效地在數據點與樣本之間繪製條件概率。若假設 RBM 的輸入數據和重建結果是不同形狀的正態曲線,它們只有部分重疊。

為了衡量輸入數據的預測概率分布和真實分布之間的距離,RBM 使用 KL 散度來度量兩個分布的相似性。KL 散度測量的是兩條曲線的非重疊區域或者說發散區域,RBM 的優化算法嘗試最小化這些區域,所以當共享權重與第一個隱藏層的激活值相乘時就可以得出原始輸入的近似。圖的左邊是一組輸入的概率分布 p 及其重構分布 q,圖的右側是它們的差的積分。

迭代地根據它們產生的誤差來調節權重,RBM 學會了逼近原始數據。你可以說權重在慢慢地反映輸入數據的結構,並通過隱藏層的激活值進行編碼,學習過程就像兩個概率分布在逐步重合。

概率分布

讓我們來討論一下概率分布。如果你在擲兩個骰子,所有結果的概率分布如下:

也就是說,和為 7 的結果是最有可能出現的,因為相比於 2 到 12 等其它結果,有更多的拋擲組合可以得到 7 這個結果(3+4,1+6,2+5)。

或者舉另一個例子:語言是字母的特定概率分布,因為每一種語言會使用一些字母較多,而另一些較少。在英語中,字母 e、t 以及 a 是最常見的,然而在冰島語中,最常見的字母是 a、t 和 n。因此嘗試使用基於英語的權重集合來重建冰島語將會導致較大的差異。

同樣,圖像數據集擁有像素值的唯一概率分布,這取決於數據集中圖像的種類。像素值的分布取決於數據集中的圖像類別,例如 MNIST:

或者 Faces in the Wild 數據集中標記的頭像:

想像一下僅輸入狗和大象圖片的 RBM,它只有兩個輸出節點,每個結點對應一種動物。在前向傳遞的過程中 RBM 會問自己這樣的問題:在給定的這些像素下,我應該向哪個節點發送更強的信號呢,大象節點還是狗的節點?在反向傳遞的過程中 RBM 的問題是:給定一頭大象的時候,應該期望那種像素分布?

那就是聯合概率分布:給定 a 時 x 的概率以及給定 x 時 a 的概率,可以根據 RBM 兩層之間的共享權重而確定。

從某種意義上而言,學習重建的過程就是學習在給定的圖像集合下,哪些像素會傾向於同時出現。由深層網絡的隱藏層節點所產生的激活狀態表現出來的共現現象:例如,「非線性灰色管+大的、鬆軟的耳朵+皺紋」可以作為一個分布。

在上面的兩幅圖像中,你看到了用 Deeplearning4j 實現的 RBM。這些重建代表著 RBM 的激活值所「認為」輸入數據看起來的樣子,Geoff Hinton 將其稱為機器「做夢」。當被呈現在神經網絡在訓練過程時,這種可視化是非常有用的啟發,它讓人確信 RBM 確實在學習。如果不是,那麼它的超參數應該被調整。

最後一點:你會注意到 RBM 有兩個偏置項。這是有別於其它自動編碼器的一個方面。隱藏層的偏置項有助於 RBM 在前向傳遞中獲得非零激活值,而可見層的偏置有助於 RBM 學習後向傳遞中的重建。

多層受限玻爾茲曼機

一旦 RBM 學到了與第一隱藏層激活值有關的輸入數據的結構,那麼數據就會沿著網絡向下傳遞一層。你的第一個隱藏層就成為了新的可見層或輸入層。這一層的激活值會和第二個隱藏層的權重相乘,以產生另一組的激活。

這種通過特徵分組創建激活值集合序列,並對特徵組進行分組的過程是特徵層次結構的基礎,通過這個過程,神經網絡學到了更複雜的、更抽象的數據表徵。

對於每一個新的隱藏層,權重都會通過迭代反覆調整,直至該層能夠逼近來自於前一層的輸入。這是貪婪的、逐層的、無監督的預訓練。它不需要使用標籤來改善網絡的權重,這意味著我們可以在無標籤的數據集上進行訓練,而這些數據沒有經過人工處理,這是現實中絕大多數的數據。通常,擁有更多數據的算法會產生更準確的結果,這也是深層學習算法崛起的原因之一。

因為這些權重早已接近數據的特徵,所以在使用深度信念網絡進行圖像分類的時候,後續的監督學習階段可以更簡單地學習。儘管 RBM 有很多用途,但合適的權重初始化以方便以後的分類是其主要優點之一。從某種程度而言,它們完成了某種類似於反向傳播的功能:它們很好地調整了權重,以對數據進行更好的建模。你可以說預訓練和反向傳播是達到相同目的的可替代方法。

為了在一個圖中展示受限玻爾茲曼機,我們需要使用對稱二分雙向圖表示:

對於那些對深入研究 RBM 結構感興趣的人而言,它們是一種無向圖模型,也被稱作馬爾科夫隨機場。

代碼實例:Stacked RBMS

GitHub 連結:

https://github.com/deeplearning4j/dl4j-examples/blob/master/dl4j-examples/src/main/java/org/deeplearning4j/examples/unsupervised/deepbelief/DeepAutoEncoderExample.java

參數 & K

變量 k 是運行對比散度(Contrastive Divergence)的次數。對比散度是用來計算梯度(該斜率表示網絡權重與其誤差之間的關係)的方法,沒有這種方法,學習就無法進行。

在上面的例子中,你可以看到如何將 RBM 創建為具有更通用多層配置的層。在每個點處,你會發現一個可以影響深度神經網絡結構和性能的額外參數。大多數這些參數都是在這裡定義的。

參數初始化(weightInit 或者 weightInitialization)表示放大或者抑制到達每個節點的輸入信號的係數的初始值。合適的權重初始化可以節省大量的訓練時間,因為訓練一個網絡只不過是調整係數來傳遞最佳信號,從而使網絡能夠準確分類。

激活函數(activationFunction)是一組函數中的一個,用於確定每個節點處的激活閾值,高於閾值的信號可以通過,低於閾值的信號就被阻止。如果一個節點傳遞了一個信號,則它被「激活」。

優化算法(optimizationAlgo)指神經網絡最小化誤差或者找到最小誤差軌跡的方式,它是一步一步調整參數的。LBFGS 是一種優化算法,它利用二階導數來計算梯度的斜率,係數將沿著梯度的斜率進行調整。

正則化(regularization)方法(如 L2)有助於防止神經網絡中的過擬合。正則化本質上會懲罰較大的係數,因為大係數意味著網絡已經學會將結果鎖定在幾個高權值的輸入上了。過強的權重會使網絡模型在面對新數據的時候難以泛化。

顯元/隱元(VisibleUnit/HiddenUnit)指神經網絡的層。顯元或者可見層,是輸入到達的層,隱元或者隱藏層,是輸入被結合成更複雜特徵的層。這兩種單元都有各自所謂的變換,在這裡,可見層是高斯變換,隱藏層是整流線性單元,它們將來自它們對應層的信號映射到新的空間。

損失函數(lossFunction)是測量誤差的方法,或者測量網絡預測和測試集包含的正確的標籤之間差距的方法。我們在這裡使用的是 SQUARED_ERROR,它使所有的誤差都是正值,因此可以被求和並反向傳播。

學習率(learningRate,如 momentum)會影響神經網絡在每次迭代中校正誤差時調整係數的程度。這兩個參數有助於確定網絡將梯度降低到局部最優時的步長。較大的學習率會使網絡學習得更快,並且可能越過最佳值。較小的學習率可能減慢學習,而且可能是低效的。

連續 RBM

連續 RBM 是受限玻爾茲曼機的一種形式,它通過不同類型的對比散度採樣接受連續的輸入(也就是比整數切割得更細的數字)。這允許 CRBM 處理圖像像素或字數向量這類被歸一化到 0 到 1 之間的小數的向量。

應該注意,深度學習網絡的每一層都需要四個元素:輸入、係數、偏置項以及變換(激活算法)。

輸入是數值數據,是一個來自於前面層(或者原始數據)的向量。係數是通過每個節點層的特徵的權重。偏置項確保部分節點無論如何都能夠被激活。變換是一種額外的算法,它在數據通過每一層以後以一種使梯度(梯度是網絡必須學習的)更容易被計算的方式壓縮數據。

這些額外算法和它們的組合可以逐層變化。

一種有效的連續 RBM 在可見(或者輸入)層上使用高斯變換,在隱藏層上使用整流線性單元(ReLU)變換。這在面部重建中特別有用。對於處理二進位數據的 RBM 而言,只需要進行二進位轉換即可。

高斯變換在 RBM 的隱藏層上的表現不好。相反,使用 ReLU 變換能夠表示比二進位變換更多的特徵,我們在深度置信網絡中使用了它。

總結 & 下一步工作

你可以將 RBM 的輸出解釋為百分比。每次重建的數字不為零,這是 RBM 學習輸入的良好指示。

應當指出的是,RBM 並不能生成所有的淺層前饋網絡中最穩定、最一致的結果。在很多情況下,密集層自編碼器性能較好。事實上,業界正在轉向變分自編碼器和 GAN 等工具。

下一步,我們將會展示如何實現深度置信網絡(https://deeplearning4j.org/deepbeliefnetwork.html),它由許多受限玻爾茲曼機堆疊而成。

相關焦點

  • 人工智慧之受限玻爾茲曼機(RBM)
    今天我們重點探討一下受限玻爾茲曼機(RBM)算法。受限玻爾茲曼機RBM在深度學習領域一直有重要應用,它是一種可用隨機神經網絡來解釋的概率圖模型,由Smolensky在1986年在玻爾茲曼機BM的基礎上提出, 是玻爾茲曼機BM的一種特殊拓撲結構。
  • 一種基於能量模型的神經網絡架構受限玻爾茲曼機
    一種基於能量模型的神經網絡架構受限玻爾茲曼機 李倩 發表於 2018-07-26 10:09:24 受限玻爾茲曼機是一種基於能量模型的神經網絡架構,雖然不像通常的卷積神經網絡一樣被人熟知
  • 深度學習大神Yoshua Bengio經典前瞻演講,幫你打通深度學習的任督...
    Yoshua Bengio連同Geoff Hinton老先生以及 Yann LeCun教授一起造就了2006年始的深度學習復興。他的研究工作主要聚焦在高級機器學習方面,致力於用其解決人工智慧問題。目前他是僅存的幾個仍然全身心投入在學術界的深度學習教授之一(蒙特婁大學),本文是他在2009年的經典前瞻演講——「人工智慧學習深度架構」有關內容的第一部分。
  • 知中·一本讀懂!山海經
    其中,十二祖巫,九尾狐之類妖族等設定都可以在《山海經》中找到出處。而這之後,讀過的不少網絡小說,看過的不少日漫,其實都有《山海經》的影子,只是那會兒並不明了。「二」正兒八經讀《山海經》這本上古奇書,是在去年十二月,因為那時預備讀中信出版社的知中系列MOOK特輯《一本讀懂!山海經》。心想,《山海經》原著都尚未讀過,何談而來的讀懂?
  • 傳奇經典熱血重來 《武神傳說》為英雄而戰
    重燃經典回憶,等你來戰!《武神傳說》是ARPG類傳奇遊戲,傳奇風格體驗,高度還原了老傳奇的特質,沒有用現在流行的3D高清畫質,始終堅持使用特色2D畫面感動老傳奇愛好者。自由pk,沙城爭霸,打怪掉寶帶你領略曾經那一代人傳奇的經典。給你經典的極致體驗。武神傳說》的裝備提升渠道也更加多樣,玩家可以根據自身需要打造專屬裝備,而且《武神傳說》在裝備的保值性上要更勝一籌。
  • 《第一推動·讀懂宇宙的七大經典著作》(套裝共7冊》Kindle版
    《第一推動·讀懂宇宙的七大經典著作》(套裝共7冊》Kindle版 2017年10月18日 22:33作者:網絡編輯:網絡 《第一推動·讀懂宇宙的七大經典著作》(套裝共7冊》Kindle版
  • 一本書讀懂50部哲學經典|讓-雅克·盧梭《社會契約論》
    《一本書讀懂50部哲學經典》是日本哲學學者平原卓的哲學普及作品,以幫助讀者從系統吸收哲學知識,重新思考自己、認識自己、認識世界為出發點,從古代、中世紀、近代到現代中篩選出50部西方哲學經典著作,包括《蘇格拉底的申辯》《理想國》《君主論》《懺悔錄》《論人類不平等的起源》《社會契約論》《致死的疾病》《悲劇的誕生》《人的境況》《憂鬱的熱帶》《詞與物》等。
  • 《三體》中10句經典語錄,每一句都值得深思,讀懂了便懂了人生
    今天就和大家介紹10句,在《三體》這一本書當中的那一些關於,作者對科技的認知,對世界的認知,還有對更多思維的解讀,每一句話都充滿了哲理,讓人印象深刻,產生不一樣的想法和思緒,讀懂了便讀懂了人生。第一、我們學會把時光賦予生命,在這歲月的長河中,留下文明,以當作這個世界的證據。第二、如果你在面對一件事情的時候,是無畏的,那說明,你對未來也是無知的,所以你有勇氣來面對未來。
  • 讀懂《菜根譚》經典十句,人生豁然開朗!
    似語錄,而有語錄所沒有的趣味;似隨筆,而有隨筆所不易及的整飭;似訓誡,而有訓誡所缺乏的親切醒豁;如果能讀懂這一本書,那麼便能夠幫助自己在紛繁多變的世界裡處理好人際關係,更好的生活。今天,詩詞君總結了《菜根譚》10句經典,讀懂了這些,人生會豁然開朗。不信的話,你來試試。01花開花謝春不管,拂意事休對人言;水暖水寒魚自知,會心處還期獨賞。
  • 莊子的五句經典語錄,讀懂便是人生!
    下面,為大家梳理《莊子》中經典的五句話,讀懂便是人生!1.子非魚,安知魚之樂?這句話的意思很簡單:你又不是魚,怎麼能知道他快樂不快樂呢?堅持是美德,但是盲目的堅持便是固執了,很多事情強求不來,與其拉著對方一起煎熬,不如就此鬆開手,放過彼此,各奔東西,享受自己的萬裡鵬程。4.
  • 仙境傳說ro夢想天空 一起前往天空之城!
    仙境傳說ro夢想天空 一起前往天空之城! 作者:佚名來源:網絡發布時間:2018-05-22 11:03:48 EP4.0「夢想天空」5.22正式上線,讓我們一起去往天空之城——朱諾!新地圖艾爾帕蘭以北,穿越過國境檢查站、艾因布洛克原野,你終將抵達那個最接近天空的地方朱諾領略鄰國首都的氣勢恢弘聖天使波利、邪惡向日葵、卡浩等經典魔物悉數回歸雷根貝勒研究所又隱藏著什麼秘密新職業
  • 龍 (中國神話傳說中的動物)
    龍         是中國等東亞區域古代神話傳說中的神異動物,為鱗蟲之長。
  • 《文學體驗三十講》:一本書讀懂數十部外國文學經典
    三十個文學之夜一劑心靈解藥跟隨作家苗煒的閱讀體驗經歷文學世界裡的多樣人生理解人心的豐富和複雜一本書讀懂數十部外國文學經典《文學體驗三十講》作者:苗煒在本書中,作者分享了自己多年來對數十部外國文學經典的閱讀體驗,也順帶講述了自己對於愛欲、孤獨、死亡等本質問題的思考,還有對於自我、他人和世界等基本對象的體悟:「文學體驗其實就是講我的感受,這些體驗大多跟生活中的一些困境有關。但願你有所收穫,從文學的角度來看待生活,看看人的處境,感受細膩一點兒,心靈豐富一點兒。」
  • [獨家]25張圖讓你讀懂神經網絡架構
    原標題:[獨家]25張圖讓你讀懂神經網絡架構 由於新的神經網絡架構無時無刻不在湧現,想要記錄所有的神經網絡是很困難的事情。要把所有這些縮略語指代的網絡(DCIGN,IiLSTM,DCGAN等)都弄清,一開始估計還無從下手。
  • 爐石傳說:內幕揭秘,蝸牛咬死大表哥深度分析,必須合理
    話說不管在WOW裡,還是在爐石中,大表哥死亡之翼都是毀天滅地的存在。然而就是如此強大的存在,居然會被一隻蝸牛咬一口就掛掉。有詩為證:社會蝸牛哥,人狠話不多,瞬秒王爵德,咬死大表哥。話說為何如此強大的死亡之翼會被蝸牛咬死呢?如果是暴雪粉,這個其實是可論證的。
  • 盤點向:動畫中一本正經存在著的都市傳說
    所謂神秘的事物最引人著迷,目前連科學都無法解釋的謎題是所有人茶餘飯後都喜歡談論的話題,而離我們身邊更近的則是一些「都市傳說」,可能大家也都有聽過什麼午夜的號碼呀,無人的教室啊,或者是什麼校園的七大不可思議等等……而動漫裡也有許多一本正經描繪的都市傳說,甚至是通篇與它有關,接下來就和企鵝娘一起去翻翻那些或中二或致鬱或恐怖的都市傳說吧
  • 策略經典 《仙境傳說:復興》職業炫技大曝光
    說起來RPG網遊的職業設定,最初始也最經典的莫過於傳統的「戰法道」設定了。在那之後的網遊,或多或少受到這一設定影響,總體來看仍然沒有擺脫「戰法道」的分工設定,但職業分支和職業玩法卻越來越多樣化。《仙境傳說》便是一個轉職樹龐大的角色扮演網遊,到後期細化出了許多諸如符文騎士、元素使、漫遊舞娘、基因學者這樣的新奇玩法職業。
  • 傳說之下:無限循環的噩夢遊戲,Chara和Frisk竟是同一人?
    自從被一位粉絲朋友安利了《傳說之下》這款經典像素風RPG遊戲之後,我便對這款遊「其貌不揚」的產生了濃厚的興趣。熟悉阿誠的朋友應該都知道,我了解一款遊戲除了會接觸遊戲本身的內容之外,我更喜歡探索一款遊戲的背景故事和世界觀架構。