2.9. 神經網路模型(非監督式)#

2.9.1. 受限玻爾茲曼機#

受限玻爾茲曼機 (RBM) 是基於機率模型的非監督式非線性特徵學習器。 RBM 或 RBM 層次結構提取的特徵在饋入線性分類器(例如線性 SVM 或感知器)時,通常會產生良好的結果。

該模型假設輸入的分配。目前,scikit-learn 僅提供 BernoulliRBM,它假設輸入是二元值或介於 0 和 1 之間的值,每個值都編碼特定特徵開啟的機率。

RBM 嘗試使用特定的圖形模型最大化資料的可能性。所使用的參數學習演算法(隨機最大似然)可防止表示偏離輸入資料太遠,這使得它們捕獲有趣的規律性,但使得該模型對於小型資料集不太有用,並且通常對密度估計沒有用處。

該方法因使用獨立 RBM 的權重初始化深度神經網路而廣受歡迎。此方法稱為非監督式預訓練。

../_images/sphx_glr_plot_rbm_logistic_classification_001.png

範例

2.9.1.1. 圖形模型和參數化#

RBM 的圖形模型是一個完全連接的二分圖。

../_images/rbm_graph.png

節點是隨機變數,其狀態取決於與之連接的其他節點的狀態。 因此,該模型由連接的權重以及每個可見和隱藏單元的一個截距(偏差)項參數化,為簡單起見,圖像中省略了這些項。

能量函數測量聯合分配的品質

\[E(\mathbf{v}, \mathbf{h}) = -\sum_i \sum_j w_{ij}v_ih_j - \sum_i b_iv_i - \sum_j c_jh_j\]

在上面的公式中,\(\mathbf{b}\)\(\mathbf{c}\) 分別是可見層和隱藏層的截距向量。 模型的聯合機率是根據能量定義的

\[P(\mathbf{v}, \mathbf{h}) = \frac{e^{-E(\mathbf{v}, \mathbf{h})}}{Z}\]

受限一詞是指模型的二分結構,該結構禁止隱藏單元之間或可見單元之間的直接交互。 這表示假設以下條件獨立性

\[\begin{split}h_i \bot h_j | \mathbf{v} \\ v_i \bot v_j | \mathbf{h}\end{split}\]

二分結構允許使用高效的區塊 Gibbs 採樣進行推論。

2.9.1.2. 柏努利受限玻爾茲曼機#

BernoulliRBM 中,所有單元都是二元隨機單元。 這表示輸入資料應該是二進位,或是介於 0 和 1 之間的實值,表示可見單元開啟或關閉的機率。 這是一個很好的字元識別模型,其中重點在於哪些像素是活躍的,哪些像素不是活躍的。 對於自然場景的圖像,由於背景、深度以及相鄰像素傾向於採用相同的值,因此它不再適用。

每個單元的條件機率分布由它接收的輸入的邏輯 Sigmoid 啟動函數給出

\[\begin{split}P(v_i=1|\mathbf{h}) = \sigma(\sum_j w_{ij}h_j + b_i) \\ P(h_i=1|\mathbf{v}) = \sigma(\sum_i w_{ij}v_i + c_j)\end{split}\]

其中 \(\sigma\) 是邏輯 Sigmoid 函數

\[\sigma(x) = \frac{1}{1 + e^{-x}}\]

2.9.1.3. 隨機最大似然學習#

BernoulliRBM 中實現的訓練演算法稱為隨機最大似然 (SML) 或持久對比發散 (PCD)。 直接優化最大似然是不可行的,因為資料似然的形式為

\[\log P(v) = \log \sum_h e^{-E(v, h)} - \log \sum_{x, y} e^{-E(x, y)}\]

為簡單起見,上面的方程式是針對單個訓練範例寫的。 相對於權重的梯度由兩個項組成,對應於上面的兩個項。 由於它們各自的符號,它們通常稱為正梯度和負梯度。 在此實作中,梯度是根據樣本的迷你批次估算的。

在最大化對數似然時,正梯度使模型偏愛與觀察到的訓練資料相容的隱藏狀態。 由於 RBM 的二分結構,可以有效率地計算它。 然而,負梯度是難以處理的。 其目標是降低模型偏愛的聯合狀態的能量,從而使其保持與資料的一致性。 可以使用區塊 Gibbs 採樣,透過反覆採樣 \(v\)\(h\) 給定另一個來使用馬可夫鏈蒙地卡羅來近似它,直到鏈混合。 以這種方式產生的樣本有時被稱為虛擬粒子。 這是沒有效率的,並且很難確定馬可夫鏈是否混合。

對比發散方法建議在少量迭代 \(k\)(通常甚至為 1)之後停止鏈。 此方法快速且變異數低,但樣本遠離模型分布。

持久對比發散解決了這個問題。 在每次需要梯度時,我們不是啟動新的鏈並僅執行一個 Gibbs 採樣步驟,而是在 PCD 中,我們保留一些在每次權重更新後更新 \(k\) 個 Gibbs 步驟的鏈(虛擬粒子)。 這讓粒子可以更徹底地探索空間。

參考文獻