標籤:

從下往上看--新皮層資料的讀後感 第十四部分 Restricted Boltzmann Machine-層層疊疊的開始

再來看網路結構這邊的事情,下面這個圖和上面的彩色圖是完全等效的,只是重新展開了一形式。當右邊框內的輸入給定一組輸入時,若左邊的內容為確定值。多次更新後整個網路會收斂到一個穩態上,而如果另外一側的內容不是確定值時,每次迭代輸出的內容則可以用向量和概率進行表達。如果進一步簡化這個網路,人為的使得垂直方向的連接值為0,就約束了整體更新的方向,而構成了一個雙層的雙向更新網路。

由於一切hopfield的前提都沒有改變(沒有連接的地方可視為權值為0),這個新的雙向網路的更新和狀態遷移仍然可以用能量函數來評估和考察,其本身的轉化特性仍得以保存。在一組輸入的前提下,此時隱含層的初值就不重要了,第一個回合顯層把數據會更新過去,因此在一個確定的網路結構上,顯層的初態決定了整個網路的初態。有了確定的初態,通過反覆更新網路。它必然會收斂到一個穩態上。

第一種boltzmann機,狀態遷移需要整體進行,或是序列進行,狀態的更新和網路參數有關,同時也和所有的v,h狀態有關。通過強制約束,到第二個結構上由於單個邏輯層內的mpn互不相關,這使得它的計算方法可以獨立進行。於是整體的更新邏輯在單一時間點上變成了層-層的單向網路。再整體上網路總體仍然體現為RNN,局部時間切片上表現為FNN.這種新的更新邏輯使得在輸入邏輯上表現出新的內含。

Hinton希望用這個方式來處理sensory input.對於每一個單次的更新,初始化的信息被在顯層內再表達(repersentation),顯層通過隱含層重新表達或是解釋輸入的向量(interpretations),而隱含層-顯層的過程則被視為representation重建(reconstruction)顯層數據的過程。

怎麼理解這種奇怪的應用目的?回到生物的角度來看,大腦的輸入是來自分布在身體各個部分的各種感知單元獲取的,這些感知單元採集到的信息被統稱為sensory input.當這些信息輸入到大腦的第一時間上,這些來自神經末梢的電信號會刺激接收層次的皮質細胞進行激活,形成基本的信息輸入活動分布。而這層面上的活動會影響到下一層次皮質的激活分布進行記憶或是信息處理。對單向sensory的感知可以到此為止。但對於雙向的sensory-motor單元,就存在通過記憶提取信息構建行為的需求。因此在邏輯層面上,我們同時希望輸入能在隱含層進行interpretations,還希望能儘可能準確的reconstruction原有的信息。到這裡目標就十分明確了:

1.輸入可以在顯層repersentation

2.通過更新隱層狀態實現interpretations

3.反向過程可能實現reconstruction

Boltzmann 通過最後的簡化,構成了一個雙向更新的hopfield網路,這就是RestrictedBoltzmann Machine。它約束了更新方向,且在提供局部初態(顯層初態)後就能確定整體初態,進而通過反覆更新整體會走向一個局部能量低點,從而輸出一個穩定的輸出。網路結構簡化使得原有的Boltzmann在<h,v>這兩玩意的的組合從不確定的hidden層中走了出來--Hidden層的初始化內容不重要了。這是從它的更新過程來看網路。

在這個網路中,所有的信息都是變數,幾乎所有的材料到這裡就開始各種公式推導了,幾乎所有人都在這裡開始一整眩暈。對工程過程而言這是空泛的具體,需要跳過所有的計算細節來看整體。開始之前需要重新設置其目標,RBM的目標場景不是計算,而是面向再表徵或是重建或是歸類。

先說網路結構:在一個特定的應用場景中,網路的結構是按照你的輸入向量來決定的,顯層的要求通常只要能滿足輸入向量的要求即可。由於信息將會映射到隱層,因此隱層的MPN數量最好大於顯層的數量,這樣可以得到一個更大的信息空間來映射信息,如果你希望存放足夠多的能量表徵,還得考慮隱層+顯層的信息容量問題。

第二個點就是確定W和b.RBM的能量函數由於加入了隱層,把顯層和隱層的能量分開了。

此時的雙向條件概率則可表示為下面的公式。

有了這兩個公式,我們就可以把mpn具體的激活函數帶進去,用W和threshold來表達能量公式。如果此表達內的能量變化是連續的(坦率說我真不知道),EBM挖坑法下就可以用下面的結果來指引調整的梯度和方向。

到此為止,功能已經是齊備了。初始化參數以後一通更新,待MCMC過程收斂上面這三組參數就可以調一次。慢慢迭代,慢慢調參就可得到P(X)近似於Ptraining(X)的模型。

到這裡必須問,這有什麼用?EBM在這裡扮演什麼樣的角色?走這麼遠就是為了產生一個數據生成模型么?表徵和重建,和穩定如何結合到整體建模或是計算過程中?

結合Autoencoder的思路,如果我們設定hidden的層次小於Visablelayer,這個RBM就產生了與Autoencoder相似的功能。

1.通過RBM訓練過程,找到了一個與輸入的概率分布相似的訓練集合。對應網路的編碼特性理論上「最大化」符合「潛在」輸入的可能。

2.編碼解碼雙向過程都共享同一個網路權值結構。

3.整個訓練過程丟掉了BP的訓練框架。

4.編碼解碼流程中的結果天然符合"能量相似"的基本特性。

相比AutoEncoder它使用的是樣本"分布"來構建網路,而不是簡單的用"有限樣本"來構建。在這個角度上看,它對未知數據-樣本外的數據,適應能力理應好過Autoencoder.

總之,通過樣本的訓練,RBM形成了一個有效的feature extractor. 這裡已經看了諸多的網路結構,下面在ANN這部分的最後,看一下CNN這種面向二維構建的網路結構。


推薦閱讀:

<Reinforcement Learning for Relation Classification from Noisy Data>閱讀筆記
BP神經網路實現(R語言+Python)
邏輯回歸的重要性
2017年深度學習頂級論文盤點
如何向普通人解釋機器學習、數據挖掘

TAG:機器學習 |