深層置信網的快速學習方法(Deep Learning)

來自這篇論文:A fast learning algorithm for deep belief nets

轉自:http://www.doesbetter.com/archives/35

Geoffrey E.Hinton and Simon Osindero

    摘要:使用互補先驗消除explaining away現象(互補先驗:在具有雙向的鏈式結構中,某數據推出的結果(後驗)在反向時爲其提供的先驗概率就叫互補先驗,explaining awaycomplementary prior可以用來分層學習directed belief networks。由此導出一個算法,此算法用來初始化一個過程的權值,此過程使用contrastive version of the wake-sleep algorithm來fine-tunes the weights.fine-tunes之後,得到一個具有3層隱藏層的網絡,這個網絡是一個關於手寫數字與它的標籤的聯合分佈的生成模型。這個生成模型在對數字分類方面比最好的判別學習算法的效果都要好。the low-dimensional manifolds on which the digits lie are modelled by long ravines in the free-energy landscape of the top-level associative memory and it is easy to explore these ravines by using the directed connections to display what the associative memory has in mind(誰能告訴我這是神馬意思???)

    1 introduction

    由於在給定數據的情況下很難推出隱藏層的條件分佈(推不出條件分佈就不行?這個條件分佈對模型的學習這很重要嗎?),所以很難學習densely-connect,directed belief nets.有很多方法來近似逼近真正的條件分佈,但是效果不太好,特別是對於最深層的隱藏層的時候,因爲它們的先驗概率被認爲是獨立的。很多的學習方法要求參數一起學習,這在參數增長時將耗費大量的時間.

    作者提出了一個最上層爲一個無向聯想存儲器的模型.其它的隱藏層形成的是一個有向無循環圖(如下圖),可以將聯想存儲器中的表示轉爲可視化(比如轉爲像素,圖片等等).

     R@57VMWYK4P~0P0XLK63[YU

   2 complementary

    explaining away 現象導致有向置信網很難推理,隱層的後驗分佈很難處理,除非在混合模型或者線性且含有高斯噪聲模型中.MCMC方法可以通過抽樣估計後驗概率(how do?)。變分法可以用來估計更難以處理的後驗分佈而且它能提高訓練數據對數概率的下界.值得慶幸的是:這個學習方法(指的是變分法?)即使在對隱藏層狀態推理錯誤的情況下,仍然能提高下界值.如果能找到一種方法消除explaining away現象就好了,即使是模型的隱藏層和顯層高度相關的情況下.

    logistic belief net由隨機二值節點組成,當網絡生成數據時,節點取值爲1的概率是:IO]{7)QY32V%@KZ0~FHI3D2

j是與節點i直接相連的父節點。如果LBN只有一個隱藏層,那麼隱藏層的先驗分佈就是可分解的,因爲模型在生成數據時,它們的二值狀態是獨立選取的(在隱藏層選取節點,是獨立的。所以先驗可以寫成各自的組合形式)。非獨立的後驗分佈(因爲是多因一果)由data(上面所講的生成的data?)的似然函數(即:P(h|v))得到。在第一層隱藏層可以通過使用另外一層隱藏層產生與似然函數中反相關的互補先驗的方法消除explaining away(想用在生成過程方向上V1對h0的先驗(此先驗與v0對h0的先驗反相關(爲什麼反相關呢?因爲:V1是由h0得到的,h0->v11,h0->v12,……,h0->vij,所以可以由此反向得到v0i與h0j的相關性(1) )消除explaining away現象)。所以,當我們把先驗和似然函數相乘後,得到的後驗分佈也是可以分解的(因爲似然函數也成爲了可分解的了,至於是不是用complementary prior替換p(h|v),我還不確定) ,並不是所有的互補先驗都能很容易看出來,但是下圖中的無限logistic belief net的例子中,每一層都有complementary prior

650E741E-3F90-4F0D-AAD2-EA4E7F42E693

使用tied weights構造互補先驗就像是使用一些技巧使得有向網絡模型變成無向網絡模型(原模型就是bottom-up而沒有up-bottom,即沒有可以重現V0的步驟,而tied weights就是指up-bottom方向上的weights) ,所以我們可以得到通過逐步將下層的weights untying from高層的weights的方法學習模型(這裏要untying的weights是指W’還是W?)

2.1 an infinite directed model with tied weights

    可以通過從無限深的隱藏層選取一個隨機構型開始生成數據(根據註釋知,所謂的無限還是有限的,在到達平穩分佈之前迭代一定次數之後選取構型) .然後執行自頂向下的過程,從祖先節點向下傳遞.每層的節點狀態都是從其上層激活狀態的父節點作爲輸入的伯努利分佈中選取的.和有向網不同的是,我們可以通過從在給定顯層數據情況下隱層的真正後驗分佈中抽樣,然後通過權值矩陣的轉置反推每個隱藏層的後驗分佈(先從P(h|v)=p(h)*p(v|h)/p(v)抽樣,即得到v_i0,然後再通過W‘計算得到h0,因子分佈???? .v_i0是可見單元i能被激活的概率,如果可見變量是由隱層單元抽樣後得到的(即在重構數據中單元i能被激活的概率,概率??? 。計算V1的後驗分佈p(v1|h0),和重構數據的過程是一樣的,所以v_i1是以概率v_i0的概率從伯努利分佈中抽樣。

    v1與h_j0之間的關係是通過v_i0聯繫起來的,因爲v_i0是given h_j0時的期望。

3 RBM&&CD

    RBM只有一個隱藏層,而且隱藏層內部節點沒有連接.隱藏層和顯層對稱連接.爲了生成數據,可以隨機選取一層並賦予隨機狀態,然後執行交替Gibbs抽樣:在給定一層節點狀態的情況下,另一層並行更新,這個過程持續到系統到達平穩狀態。這個過程就像IBN中帶有tied weights生成數據的過程.爲了最大化RBM的似然函數,我們可以利用兩個相連節點之間狀態的差異.對於每一個權值w_ij,是顯層節點i和隱層節點j之間的權重。當給定一個顯層數據V0,隱層數據時由條件分佈p(v|h)中抽樣得到的且是可分解的,就得到一個<v0h0>。這時執行交替GIBBS抽樣,直到該馬爾科夫鏈到達穩定狀態,此時計算<vi_infinite hj_infinite>,對數概率的梯度爲:RA8G3)K5YKJY`$IEJ{H(66F

這個學習規則和最大化infinite logistic belief net的似然函數的方法類似,每一步gibbs抽樣都和計算ILBN的一層後驗分佈相對應(即是計算p(v|h)) 。最大化數據data的對數概率,相當於最小化初始狀態P0與平穩分佈時的狀態P_theta的KL散度(後面的比較好理解,就是個等價的過程)(貌似下面就要講CD了)只執行n步的full gibbs抽樣(h|v+v|h稱爲one full step) ,相當於忽略掉來自上層的n-1步的導數(即將bottom-up以及up-bottom之間的部分忽略了) ,忽略掉的這些導數值的和等於第n層的後驗分佈的對數概率的導數(第n層:p(h0|v0)*p(v1|h0)*p(h1|v1)……,然後求對數就得到和) 。下面這個公式就是最小化ingoring derivatives:RA8G3)K5YKJY`$IEJ{H(66F ,gibbs抽樣保證公式(5)不會是負值。P_theta(n)依賴於模型的參數,CD算法中,P_theta(n)隨着參數變化的方式被忽略掉了(什麼意思?) 。這種情況不會出現在P0中,因爲P0不依賴於參數。看似有效的方法也帶來了很高的代價:當DMN的weights不相等時,CD算法效果不好,爲了到達平穩狀態將耗費大量的時間。下一節就給出了等價於RBM和IDN的有效學習方法,該方法在多層而且without tied weights的網絡中效果不錯。

4 a greedy learning algorithm for transforming representations

    多種模型組合的情況下,每學習一個模型都要重新調整參數。adaboost中是針對前面模型的錯誤決策調整權重。figure 5是作者提出的一個混合模型:

    TNYE3}LPZXD{QN@I$`UR]RB

最上層是無向連接,其它層都是有向的,最上層相當於無限多的higher layer with tied weights。內部沒有連接,每層的節點都相等的,學習W0是比較簡單的,假設高層的權值能用來提供W0的互補先驗,相當於假設所有的權值矩陣是相等的(即可以用W0近似W1這個complementary prior) 。這時學習W0就相當於學習一個RBM(RBM就是假設各種相等??) ,但是這仍然有一定的困難。更好的近似方法是CD。一旦得到W0,數據v0會映射到H0,H0繼續用來create更高層的V1.

    爲了使得這個模型更好,作者提出了greedy algorithm:1,假設所有的權值矩陣are tied(神馬意思?????) 。2,使用W‘生成H0的近似後驗分佈(由v0得到H0,即得到P(h0|v0)) ,即使在後面的計算中發現W’是錯誤的也沒關係。3,視W0爲不存在,繼續學習。當這個greedy algorithm改變上層權值矩陣,它能保證提升該生成模型的整體性能。數據的負對數概率由一個變量自由能量energy限定,該energy是近似後驗分佈的期望值減去分佈的墒值。對於一個有向圖模型,某個構型的能量由這個公式給出:

ZB}ZU4G[HLRS(6B3E`5_RFJ

所以可以知道邊界形式爲:

U7Z%H`8%$MU0)I]MUMQ9FG7

上式第一項是Q*E,這個可以根據求期望的公式很容易看出.第二項是該分佈的熵值.h0是第一隱藏層的二值構型,P(h0)是當前模型下的先驗概率分佈。Q(·|v0)可以是第一隱藏層的任何分佈形式,如果Q(·|v0)是真正的後驗分佈,則邊界形式是等號。

    當所有的權值矩陣are tied together(啥意思?放在一起?) ,由應用W_0‘得到的H0的因子分佈(factorial distribution,可分解分佈概率?因子分佈?)就是其真正的後驗分佈,所以bound成爲了如下形式:VTR{PJP8R_VGU)WB9L}$P)W

所以只需要最大化這個bound就行了,即最大化這個隱層節點H0以概率Q發生的的對數概率。P(V0)不會下降。

    如果使用full最大似然RBM的學習算法去學習tied weights,然後將最底層的從權值集中解除,就能每次學習一層的權值,並且保證在整個生成模型下不會降低數據的對數概率。實際中我們用CD替代MLRBM方法(即只執行n步gibbs抽樣)

    爲了保證生成模型適用這個算法,將每層的節點設置爲相同的,這樣便於高層權值初始化爲已經學習到的權值(w0?還是w0’?是W0) 。當然這個算法也可以用在不同層次有不同節點個數的模型中。

5 Back-Fitting with the up-down algorithm

    每次只學習一層的權值雖然有效但不是最優的,一旦得到高層的權值,對於下層來說權值和推理過程都不是最優的.對監督學習來說貪心算法的子優化問題一般難以操作,因爲帶有標籤的數據比較少,且只提供了關於參數約束的一少部分信息(對學習參數的約束條件比較少) ,所以容易過擬合.如果go back 重新擬合之前的模型學習的參數,這將帶來很多麻煩。然而,無監督方法能用到大量的無標籤數據集,而且每一個sample都將是高維數據,能提供很多信息。under-fitting成爲了一個嚴重的問題,不過可以用back-fitting權值的子階段,這個階段是調整先學習到的權值去擬合後面學習到的權值(應該是對應後面的從W0’向上逐層調整權值的過程)

    逐層學習並初始化每層的權值之後,將從決定模型的generative 權值推出的recognition 權值(轉置)解除,但是保留一個限制條件:每層的後驗必須由給定低層值得到的條件獨立層內變量的因子分佈做近似估計。 (下面開始介紹wake-sleep算法) ,在向上的過程中,recognition 權值用來隨機選擇每一隱層的狀態(所謂“隨機”,大概就是指取0或1是由一個概率決定的) , 有向連接中的generative權值通過最大化似然函數公式(2)被調整。最上層的無向連接權值,和之前層次的學習方法一樣,通過將最上層RBM擬合倒數第二層的後驗的方法來學習。

    向下的過程從聯想存儲器的一個狀態開始,隨機激活下一層的單元(和up-pass一致) ,在自頂向下的過程中,所有的生成方向的連接不變,只有最底層的recognition 權值發生調整。這等於wake-sleep的sleep階段,如果在執行down-pass之前聯想存儲器系統狀態到達了平穩分佈狀態。如果聯想存儲器被up-pass初始化而且在down-pass之前只允許執行有限步的gibbs抽樣,這就是wake-sleep算法的一個對比形式算法,這避免了必須使聯想存儲器系統狀態達到平穩分佈。對比形式的wake-sleep算法還解決了sleep階段的其它問題,它保證recognition 權值被用來學習類似真實數據的表達(實際上gibbs抽樣得到的是“僞”真實數據。這裏不是很明白) ,還可以消除mode averaging(目前表示不懂) 。如果給定一個數據sample,recognition 權值經常會在上層選取一個特定的模型,而忽略性能相當的比較複雜的模型,在向下的過程中,如果sleep節點是一個純粹的從父節點到子節點的過程,向下過程中將不會改變recognition權值去恢復任何它能恢復的其它模型(意思是在向下的過程中,不對recognition權值作調整??) 。純粹的ancestral pass需要上層的聯想存儲器系統狀態gibbs抽菸到達平穩分佈。通過上層的聯想存儲器消除wake階段的問題:獨立的上層單元要求允許ancestral pass(意思是要求最上層之上也有節點層?) ,但是這意味着變化的估計對上層權值矩陣作用不大(啥意思?)

——————-剩下的就是些實驗結果,就暫時不寫了。—————————————————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章