六.隨機神經網絡Boltzmann(玻爾茲曼機)


Hopfield網絡具有最優計算功能,然而網絡只能嚴格按照能量函數遞減方式演化,很難避免偽狀態的出現,且權值容易陷入局部極小值,無法收斂於全局最優解。

如果反饋神經網絡的迭代過程不是那么死板,可以在一定程度上暫時接受能量函數變大的結果,就有可能跳出局部極小值。隨機神經網絡的核心思想就是在網絡中加入概率因素,網絡並不是確定的向能量函數減小的方向演化,而是以一個較大概率向這個方向演化,以保證正確的迭代方向,同時想能量函數增大的概率也存在,以防止陷入局部極小值。

 在機器學習以及優化組合問題中,最常用的方法就是梯度下降法。比如BP神經網絡,多層感知器的神經元(units)越多,對應的權矩陣也就越大,每個權可視為一個自由度或者變量。我們知道自由度越高,變量越多,模型越復雜,模型的能力越強。但是模型能力越強,模型就越容易過擬合,對噪聲太敏感。另一方面,使用梯度下降進行最優解搜尋時,多變量的誤差曲面很像是連綿起伏的山峰一樣,變量越多,山峰和山谷也越多,這就導致梯度下降法極容易陷入到局部的一個小山谷,而停止搜索(局部最優)。這就是常規的梯度下降法在解決多維度的優化問題中最常見的局部最優問題。究其原因是梯度下降法的搜索准則所致,按照梯度的負方向搜索,一味追求網絡誤差或能量函數的降低,使得搜索只具有“下山”的能力,而不具備“爬山”的能力。所謂“爬山”的能力,就是當搜索陷入局部最優時,還能具備一定的“翻山越嶺”的能力,能夠從局部最優中逃出來,繼續搜索全局最優。如果為具有多個局部極小點的系統打一個形象的比喻。設想托盤上有一個凸凹不平的多維能量曲面,若在該曲面上放置一個小球,它在重力作用下,將滾入最鄰近的一個低谷(局部最小點)而不能自拔。但該低谷不一定就是曲面上最低的那個低谷(全局最小點)。因此, 局部極小問題只能通過改進算法來解決 。一種可行的辦法就是剛才所提到的讓算法具有“爬山”的能力,同時還要保證當搜索進入全局最優時不會因為“爬山”而跑出全局最優的“山谷”。本文要講解的隨機神經網絡:模擬退火(Simulated Annealing)與玻爾茲曼機(Boltzmann Machine)就是通過一定的概率保證搜索陷入局部最優時能夠具有一定的“爬山”能力。這個形象的對比可參看下圖:

本文先介紹模擬退火算法,然后討論基於模擬退火算法的Boltzmann機的結構和運行原理,在介紹Sigmoid置信度網絡。

模擬退火算法

模擬退火算法時非凸優化問題尋優的一種重要的啟發式算法。

 

模擬退火算法的參數控制

為了確保模擬退火算法在有限時間收斂,必須設定控制參數控制算法收斂的參數。上面公式中,可調節的參數是控制退火快慢的參數T,T如果過大,會導致退火太慢,會延長不必要的搜索時間,T太小,則退火很快,達到局部極小值即結束迭代。實際中應該采用退火溫度表,退火初期采用較大的T值,隨着退火的進行,逐步降低。退火溫度表包括以下內容:

  1. 溫度的初始值T(0),初始溫度應該選的夠高,使得所有可能的狀態轉移都被接受。初始溫度越高,獲得高質量的解的可能性就越大,耗費時間也就越長。
  2. 退火速率最簡單的速率下降方式有以下幾種:
  3. 終止溫度:如果在若干次連續的溫度下沒有可接受的新狀態,則算法終止。

 

模擬退火算法的運行步驟:

 

 Boltzmann機

G·E·Hinton等人提出一種稱為 Boltzmann 機的隨機神經網絡 。在這種網絡中神經元只有兩種輸出狀態,即單極性二進制的0或1。狀態的取值根據概率統計法則決定,由於這種概率統計法則的表達形式與著名統計力學家 L·Boltzmann 提出的 Boltzmann 分布類似,故將這種網絡取Boltzmann機。

BM網絡結構及運行原理

(1)BM機的結構介於DHNN全互連與BP網絡的層次結構之間,形式上與單層反饋網絡DHNN相似,權值對稱,且wii = 0;功能上BM機與三層BP網相似,具有輸入節點、輸出節點和隱節點。一般把輸入與輸出節點稱為可見節點,隱節點成為不可見節點,訓練時輸入輸出節點收集訓練樣本,而隱節點主要起輔助作用,用來實現輸入輸出之間的聯系,使得訓練集能在可見單元再現。BM機的3類節點之間沒有明顯的層次。

(2)神經元的轉移概率函數,設BM網絡中單個神經元的凈輸入為:

與DHNN不同的是,凈輸入並不能通過符號轉移函數直接獲得確定的輸出狀態,實際的輸出狀態將按照某種概率發生,輸出某種狀態的轉移概率:

上式表示的是神經元j輸出狀態取1的概率。狀態為0的概率就用1減去即可。可以看出,凈輸入越大,神經元狀態取1的概率越大;凈輸入越小,神經元狀態取0的概率越大。而溫度T的變化可改變概率曲線的形狀。具體如下圖所示:

從公式和圖中可以看出,當溫度T較高時,概率曲線變化平緩,對於同一凈輸入得到的狀態為0或1的概率差別小;而溫度低時,改率曲線陡峭,對於同一凈輸入狀態為1或0的概率差別大;當T = 0時,概率函數退化為符號函數,神經元輸出狀態將無隨機性。

 

網絡能量函數與運行的搜索機制:

BM機采用的與DHNN網絡相同的能量函數描述網絡狀態,如下圖所示:

設BM機按異步方式工作,每次第j個神經元改變狀態,根據能量變化公式:

 

下面進行進行一下討論:
(1) 當凈輸入大於0時,狀態為1的概率大於0.5。若原來狀態xj=1,則Δxj=0,從而ΔE=0;若原理狀態xj=0,則Δxj=1,從而ΔE<0,能量下降;
(2) 當凈輸入小於0時,狀態為1的概率小於0.5。若原來狀態xj=0,則Δxj=0,從而ΔE=0;若原理狀態xj=1,則Δxj=-1,從而ΔE<0,能量下降;
以上對各種可能的情況討論中可以看出,對於BM機,隨着網絡狀態的演變,從概率意義上網絡的能量總是朝着減小的方向變化。這就意味着盡管網絡能量的總趨勢是朝着減小的方向演進,但不排除在有些神經元狀態可能會按照小概率取值,從而使網絡能量暫時增加。正是因為有了這種可能性,BM機才具有了從局部極小的低谷中跳出的“爬山”能力,這一點是BM機與DHNN網能量變化的根本區別。由於采用了神經元狀態按概率隨機取值的工作方式,BM機的恩呢高亮具有不斷跳出位置較高的低谷搜索位置較低的新低谷的能力。這種運行方式稱為搜索機制,即網絡在運行過程中不斷地搜索更低的能量極小值,直到達到能量的全局最小。從模擬退火的原理可以看出,溫度T不斷下降可使得網絡“爬山”能力由強減弱,這正是保證BM機能成功搜索到能量全局最小的有效措施。

BM網絡的Boltzmann分布

設xj=1時對應的網絡能量為E1,xj=0時網絡能量為E0,根據前面的分析結果,當xj由1變為0時,有Δxj=-1,於是有如下的公式:E0-E1= ΔE = netj;對應的狀態為1或狀態為0的概率如下圖所示:

將上式推廣到網絡中任意兩個狀態出現的概率與之對應能量之間的關系,有:

這就是著名的Boltzmann分布。從公式中可以看出:BM機處於某一狀態的概率主要取決於此狀態下的能量,能量越低概率越大;BM機處於某一狀態的概率還取決於溫度參數T,溫度越高,不同狀態出現的概率越近,網絡能量較容易跳出局部極小而搜索全局最小,溫度越低,不同狀態出現的概率差別越大,網絡能量較不容易改變,從而可以使得網絡搜索收斂。這正是采用模擬退火方法搜索全局最小的原因所在

 

用BM機進行優化計算時,可構造目標函數為網絡的能量函數,為防止目標函數陷入局部最優,采用上述模擬退火算法進行最優解的搜索,開始時溫度設置很高,此時神經元狀態為1或0概率幾乎相等,因此網絡能量可以達到任意可能的狀態,包括局部最小或全局最小。當溫度下降,不同狀態的概率發生變化,能量低的狀態出現的概率大,而能量高的狀態出現的概率小。當溫度逐漸降至0時,每個神經元要么只能取1,要么只能取0,此時網絡的狀態就凝固在目標函數全局最小附近。對應的網絡狀態就是優化問題的最優解。

用BM機進行聯想時,可通過學習用網絡穩定狀態的概率來模擬訓練樣本的出現概率。根據學習類型,BM機可分為自聯想和異聯想。具體見最上面的Boltzmann機圖。左邊為自聯想,右邊為異聯想。自聯想型BM機中的可見節點V與DHNN網中的節點相似,即使輸入節點也是輸出節點,隱節點H的數目由學習的需要決定,而最少可以為0;異聯想BM機中的可見節點V需按照功能分為輸入節點組I和輸出節點組O。

 

Boltzmann學習算法

1.學習過程:通過有導師學習,BM網絡可以對訓練集中各種模式的概率分布進行模擬,從而實現聯想記憶。學習目的是通過調整權值使得訓練集中的模式在網絡狀態中以相同的概率再現。學習過程可以分為兩個階段:

  1. 正向學習階段或輸入期:即向網絡輸入一對輸入輸出模式,將網絡輸入輸出節點的狀態鉗制到期望的狀態,而讓隱節點自由活動以捕捉模式對之間的對應規律
  2. 反向學習階段或自由活動期:對於異聯想學習,鉗制住輸入節點而然隱含節點和輸出節點自由活動;對於自聯想學習,可以讓其可見節點和隱節點都自由活動,已體現網絡對輸入輸出對應規律的模擬情況。輸入輸出的對應規律表現為網絡到達熱平衡時,相連節點狀態同時為一的平均概率。期望對應規律與模擬對應規律之間的差別就表現為兩個學習階段對應的平均概率的差值,此差值做為權值調整的依據。

設BM網絡隱含節點個數為m,可見節點個數為n,則可見節點可表達的狀態X(對於異聯想,X中部分分量表示輸入模式,還有一部分表示輸出模式)共有2的n次方種。

設訓練集共提供了P對模式,一般有P<n,訓練集用一組概率縫補表示各個模式出現的概率:

以上也正是在正向學習階段期望的網絡狀態概率分布。當網絡自由運行時,相應模式出現的概率為:

 

 

學習算法並沒有學怎么懂,以后會在繼續補上

 

Boltzmann機的運行步驟

運行是訓練完成以后,根據輸入數據得到輸出的過程,在運行過程中權值保持不變。其運行步驟和模擬退火算法很是類似,不同之處在模擬退火算法正對不同個問題需要定義不同的代價函數,而bolzmann機的代價函數為能量函數。

(1)初始化:Boltzmann機神經元個數為N,第i個神經元與第j個神經元的連接權重為wij,初始溫度為T(0),終止溫度Tfinal,初始化神經元狀態。

(2)在溫度T(n)下,選取第i個神經元,根據下式計算輸入。

如果xi>0,則能量有減小的趨勢,取1為神經元i的下一個狀態值,如果xi<0則按照概率選擇神經元下一個狀態。

(3)檢查小循環的終止條件,在小循環中,使用同一個溫度值T(n),如果當前狀態已經達到了熱平衡,則轉到第(4)步進行降溫,否則轉到第二步,繼續隨機選擇一個神經元選擇迭代。

(4)按照指定規律降溫,並檢查大循環的終止條件:判斷溫度是否達到了終止溫度,若到到終止溫度則算法結束,否則轉到第二步繼續計算 。

初始溫度T(0)的選擇:可以隨機選擇網絡中的n個神經元,取其能量的方差,或者隨機選擇若干神經元,取其能量的最大差值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM