簡介
Hopfield Network (霍普菲爾德網路),是 Hopfield 在1982年提出的一種基於能量的模型,發表的文章是 Neural networks and physical systems with emergent collective computational abilities。基本結構如下圖所示:
首先我們來看Hopfield Network的一句話定義:
Hopfield Network is a model that can reconstruct data after being fed with corrupt versions of the same data.
也就是說利用Hopfield Network的過程是:
可以看到Hopfield Network的幾個基本特點:
- 只有單層
- 神經元節點之間是全連線的
- 只有輸入,沒有輸出
主要功能是:
-
聯想記憶 associatIve memory,例如重新構建圖形。假設我們在網路中儲存了右側的三張圖片,如果我們只輸入一部分圖片,例如左側的六張圖片,網路可以從記憶中取出完整的影像。
Energy Function
能量函式:Energy Function,可以看作一種代價函式。這個概念最先在熱力學中被提出,用來描述系統的能量值。當能量函式求得的能量值達到最小值的時候,整個熱力學系統達到穩定狀態。
在深度學習之中,引入這個概念也是為了使模型達到穩定的狀態。
Energy Based Models
利用了能量函式的模型被稱為Energy Based Models,EBM。
Energy Function for Images
對於有d個畫素的黑白影像,假設每一個影像都有引數 \(x = \{x_j\}_{1 \leq j \leq d}\),那麼
我們可以建立如下形式的能量函式:
-
如果我們有p個影像,我們就能得到基於\(E(x)\)的p個極小值。
-
當兩個畫素\(x_i\)和\(x_j\)有相同的顏色的時候,\(w_{ij}\)為正值。當兩個畫素\(x_i\)和\(x_j\)有相反的顏色的時候,\(w_{ij}\)為負值。
-
通常情況下,對於所有的畫素\(x_i\), \(w_{ii}=0\)。對於所有的畫素\(x_i\)和\(x_j\),\(w_{ij}=w_{ji}\)。
Hopfield Network
整個網路的使用過程可以總結為,我們首先利用一個完整的pattern來訓練網路得到所有的權值,這樣這個網路本身就是我們的output。以後當我們只有pattern的一部分資料的時候,我們可以把這一部分資料輸入到網路中,通過達到最小的\(E(x)\)來複原完整的pattern。
假設我們根據上述的Energy Function for Images中的內容來定義一個Hopfield Network。這很像一個有權重、有偏差的普通的神經網路。但是它又和普通的前饋神經網路有所不同容:
-
對於離散型Hopfield Network中的神經元\(x_i\),只能取到離散值\(1/-1\)。
-
根據相鄰神經元的當前值,神經元同步或者非同步的迭代更新。
- 同步:一次更新所有的神經元的值
- 非同步:一次更新一個神經元的值
根據上述的所有定義,我們可以發現,其實關於神經元的定義,權重的定義最終形成的就是一個類似我們最開始看到的神經網路的樣子:
訓練模型
Hopfield Network訓練的核心目標就是求出所有的權重\(w_{ij}\)。
首先假設我們要儲存p個pattern到一個有d個神經元的網路中,假設\(b_i=0\),
換句話說,
- c是\(x_i^{(k)}=x_j^{(k)}\)在所有訓練資料中的比例。
- 儲存的pattern p的數目和Hopfield Network中的神經元數目成正比。
- \(p/d < 0.138\),我們可以認為所有的pattern儲存和恢復成功。
- 如果我們試圖儲存比這些更多的模式,額外的“虛假”穩定狀態可能會出現。
這個過程就是著名的Hebbian Learning,類似於大腦中的過程,當兩個神經元同時或者快速放電的時候,它們之間的連線強度會增加。
一旦所有的pattern都儲存完畢,對於任意的影像\(x=x^{(l)}\),有如下的公式:
-
右側最後一項被叫做crosstalk項,代表了來自其他儲存影像的干擾。
-
\(x_i^{(l)}\):原始影像。
-
對於所有的i,干擾項的絕對值小於1。
生成影像
為了能夠產生影像,我們從最初始的x開始,嘗試去反轉x的值,最終使能量函式達到最小值。於是,我們可以利用能量函式的公式,得到x的變化,達到我們減小\(E(x)\)的目的:
一旦達到了最小值,那麼就說明我們的網路達到了穩定狀態,這時的x就是完整的影像。