從下往上看--新皮層資料的讀後感 第十一部分 hopfield-記憶的兩面
在前面我們了解了RNN在輸入輸出特性上的一些的特點,這一節來看看RNN在能量模型下的另一種考察和應用:從狀態機的角度來看神經元組成的RNN系統。這裡從最複雜普遍的hopfield開始,這小節討論的是同一個網路的兩個應用特性,寫混在一起了,看的時候需要留意。
Hopfield 網路
之前我們說過RNN的結構,RNN在節點的連接上不限制其連接方向,一個MPN可以向任何節點傳遞信息,並且可以向自己傳遞信息。上圖是一個Hopfield網路,Hopfield網路是一種特殊的RNN網路,其特點是所有節點同時為輸入-輸出,任意節點之間雙向互聯,且節點不自反饋{Wij=0,i=j}。在每個連接上的W權值獨立設置,但連接上兩兩對聯的節點之間的W值相等(Wij=Wji)。不滿足上述條件的網路也能進行計算,但它可能不會收斂,或者是震蕩,也有可能收斂。由此hopfield的用途主要在兩個場景,我們拆開一個個說.
在第一個場景下,這個網路結構的使用方法和FNN的典型方法不同,它不用於建模而是用於計算。這得益於這個網路本身的狀態轉換的計算特性。Wij=Wji且W矩陣內的對角線上不為負值時,隨著能量函數遞減方向,網路會收斂到一個穩定點上。所謂能量函數如下,這個公式讀不同的材料會看到裡面的符號一會兒加一會兒減,容易蒙圈,這只是mpn傳遞函數的時候是threshold的符號搞的,在codeing的時候務必保持一致:
下,隨著Xi的變化,整體E也會隨之變化。這也比較容易理解,當這個系統沒有外部輸入能量,系統能量總體趨於耗散,直至達到內部平衡點。給定初始化狀態後,系統狀態會向低能量狀態遷移,因此這個網路會在多次循環後自動找到一個相鄰的局部能量最低。能量函數的構成形式剛好與路徑評估函數一致,使得這恰好可用於搜索。
按照書面的推導沒問題,簡單碼了段試了一下,在hardlim下這個網路快速收斂,走向走向全1或-1。但在sigmoid下它能走向中間值收斂,能量會遞減。開始百思不得其解,多次試驗後發現參數範圍和激活函數取值非常容易在最大編碼和最小編碼端形成極限,使用sigmoid或是satlin也同樣會走向全1或是-1。全正或是全負的權值十分容易把能量極點推到取值範圍的邊界,初始化的權值設定在激活函數+-1/10內比較容易獲得可行的網路。在使用hardlim時,如果全局更新輸出的能量值可能反覆在兩個點上反覆震蕩,使用順序節點更新的方式則不會出現震蕩,這與材料中的要求一致,所以需要注意迭代更新方法匹配的激活函數。收斂的速度是非常快,通常不超過20次迭代就沒有太大的能量變化。另外輸入值特別需要注意以激活函數輸出範圍歸一,否則在迭代過程中會出現能量反向運行的情況
hopfield可直接計算整個網路矩陣的狀態轉換,而不用一個節點一個節點的遞進,所以計算效率十分的高。而網路穩定剛好對應一個搜索過程,在節點二值化的場景(只有0和1)這剛好可以對應旅行商人問題的求解過程。因此這可以直接用在路徑搜索上,也可以用於PERT優化,用法也很簡單用二值化的傳遞函數,直接把權值拉進去,等它收斂即可,它自動幫你找到相對能量低點,能量低點的表達在二值化的場景下剛好是路徑長度之和。這是直接使用hopfield計算的場景-通過反覆的迭代確定輸入初態對應的穩態輸出。關於局部和全局最優的問題,通過結合模擬退火的思路通過引入隨機因子調整b-threshold,使得其收斂點能走向全局最低而不是局部最低,這樣使得hopfield在面向搜索的應用時,能給出最優解。
在另外的場景下輸入一個初始化狀態X,由系統本身會向低能點移動,使其對應輸出一個X。因此hopfield可以通過權值設計或訓練用作向量映射或者說聯想。也就是說通過一個特定的網路使得輸入向量X,網路輸出X,這就達到了通過網路實現聯想的目的.參考能量函數的物理意義,可知權值W對應不同位置的場能差,而b對應場偏,所以Hopfield的訓練不調整b-threshold的設置。因此只需要直接關注W的修正即可。這個問題的解答與上面用於搜索的目的的已知剛好相反,在做搜索或是優化時,我們準確的知道權值網路,迭代的方法下用初態計算穩態。而這個過程知道初態和穩態,反向的求解網路,這的確比較麻煩,高維度的權值矩陣自由度十分多。回到能量函數遞減這個特性和W約束,我們可知初態的能量必然大於穩態能量,用這個特性結合hebb的大了往小調,小了往大調的方式。我們就可以試出一套參數使其滿足初態能量大於穩態能量的參數。這裡其實還有很多問題,跳過一下繼續挖。首先的問題是,這能用在什麼場景裡面?我的直覺是模糊匹配可能是一個重要的功能。
一個設計好的網路下的非二值化激活函數的場景,它不做1-1的映射,而是相鄰的高能量區域的pattern都會最終走向低能量區域。這個特性使得相似的輸入都指向同一個映射內容。從這個角度來看訓練過程可視作一個「挖坑」的過程-也就是目標狀態所在位置通過W構建一個能量低的坑。
這就是EBM(Energy Based Model)的基本思路-挖坑。相對於直接評估擬合輸出變化,EBM提供了一個新的角度對網路特性進行評估,看能量函數可得知,這個新的評估方法仍然是以輸入的初態和網路參數為基礎數據對網路進行評估。而通過調整EBM能量公式的曲線特性,就可以使我們找到狀態轉換的hopfield網路。hopfield的實際的樣例工程不多,模糊匹配的功能只是推測,等有時間碼一個來試
如果考慮穩態狀態視為hopfield的「關聯記憶」,相對極小能量低點的數量就對應了這個網路的記憶容量。從材料上看,記憶容量有兩個說法,一個是0.15或是0.13。也就是說1000個節點最多可以記憶130-150個狀態,這遠低於節點的最大組合狀態數量(2^1000)。這種特性允許區域狀態映射到特定的記憶狀態。這裡需要比較一下一些RNN和hopfield在使用目的上的差異,普通RNN面向迭代的計算過程,它通過迭代的狀態遷移,表現出「序列」的記憶效應。而hopfield則面向「迭代穩定」,目的在於狀態遷移的狀態映射。
另外一面,看到這裡可能會誤會hopfield被約束到單層結構,仔細思考hopfield的延展結構可能會比較讓人意外。hopfield是全連接的雙向網路,拋棄邏輯分層的概念,hopfield可說是最大延展性的網路結構,它的節點延展可按照雙向的full connection方式進行,由於使用整體更新,在這種組合下層次結構是沒有意義的。MLP只是hopfield的單向結構的特殊形式。
按照前面幾節的邏輯,這裡還差參數設計或是搜索方法。後續要考察的東西太多,在面向記憶用途時訓練和設計hopfield方法暫不深入,就此跳過。
最後總結一下,Hopfield的功能體現在兩個場景:
1.在設計好的網路結構和參數下,它可用於搜索局部穩定點(能量低點),結合貪心或是退火的方法,可能得到全局極限。這可用於解決搜索問題。
2.在通過網路設計或訓練,可以使得一些輸入向量與目標向量形成對應關係。形成關聯記憶,可以用在模糊匹配等需要關聯狀態的場景。
Boltzamnn機用隨機過程(Stochastic Process)的觀點來考察hopfield結構,算是hopfield的特殊應用方法,我們下面來看看。
推薦閱讀:
※從零開始實現邏輯回歸模型
※機器學習研究人員需要了解的8個神經網路架構(上)
※從結構、原理到實現,Faster R-CNN全解析(原創)
※Michael Nielsen對交叉熵的解釋(三)
※神經網路的一種硬體實現方式 - 自旋電子器件
TAG:神經網路 |