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的幾個基本特色:spa
主要功能是:3d
聯想記憶 associatIve memory,例如從新構建圖形。假設咱們在網絡中存儲了右側的三張圖片,若是咱們只輸入一部分圖片,例如左側的六張圖片,網絡能夠從記憶中取出完整的圖像。blog
能量函數:Energy Function,能夠看做一種代價函數。這個概念最早在熱力學中被提出,用來描述系統的能量值。當能量函數求得的能量值達到最小值的時候,整個熱力學系統達到穩定狀態。圖片
在深度學習之中,引入這個概念也是爲了使模型達到穩定的狀態。ci
利用了能量函數的模型被稱爲Energy Based Models,EBM。同步
對於有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}\)。
整個網絡的使用過程能夠總結爲,咱們首先利用一個完整的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\),
換句話說,
這個過程就是著名的Hebbian Learning,相似於大腦中的過程,當兩個神經元同時或者快速放電的時候,它們之間的鏈接強度會增長。
一旦全部的pattern都存儲完畢,對於任意的圖像\(x=x^{(l)}\),有以下的公式:
右側最後一項被叫作crosstalk項,表明了來自其餘存儲圖像的干擾。
\(x_i^{(l)}\):原始圖像。
對於全部的i,干擾項的絕對值小於1。
爲了可以產生圖像,咱們從最初始的x開始,嘗試去反轉x的值,最終使能量函數達到最小值。因而,咱們能夠利用能量函數的公式,獲得x的變化,達到咱們減少\(E(x)\)的目的:
一旦達到了最小值,那麼就說明咱們的網絡達到了穩定狀態,這時的x就是完整的圖像。