初次接觸hopfield神經網路,有一些約束沒有注意,導致生出很多愚蠢的想法。
一、hopfield神經網路其實沒有層的概念,所有的神經元全連線就形成了乙個hopdield神經網路的基本結構。
既然是全連線,那麼誰先誰後、誰左誰右就沒有意義了,反正都是互聯的。
二、hopfield神經網路既然沒有層的概念,那麼神經網路的輸入、輸出是什麼?我從**去獲得輸出呢?
hopfield神經網路的輸入是神經元的初始狀態,輸出是神經網路的穩定狀態。我們給神經元初始狀態,神經元的狀態就會不停地變化下去,到最後穩定下來。這個穩定的狀態就是輸出。
三、神經元的狀態如何變化呢?
(一)同步更新
所有的神經元按照時間的順序,一起更新狀態。
(二)非同步更新
每乙個時刻更新乙個神經元,神經元可以是隨機的,也可以是按照預先確定的順序。
四、hopfield神經網路一定會變化到乙個穩定狀態嗎?
分多鐘情況討論:
(一)離散情況下(dhnn)
定義能量函式e,定義神經元的狀態只有{-1,1}兩種。
(1)可以證明,連線權值矩陣w為對稱矩陣,按照非同步方式調整網路狀態,當能量函式收斂於乙個固定值時,網路穩定。這種穩態即神經網路收斂的一種狀態,用此時的神經網路的每個神經元的狀態構成乙個狀態向量,叫做吸引子。
(2)可以證明,連線權值矩陣w為非負定對稱矩陣,按照同步方式調整網路狀態,當能量函式收斂於乙個固定值時,網路穩定。
(二)連續情況
神經網路隨著時間連續更新,這個可以用模擬電路來實現。不在我們討論的方位內。
五、如何設計乙個hopfield神經網路
網路的設計其實就是權值矩陣的確定。
兩種方法:
(一)聯立方程組法。
根據對稱性要求,吸引子的定義(吸引子是設計網路前就應該定好的),可以得到乙個不等式組。解這個不等式組可以得到w的取值範圍。在範圍內的權值都可以。
(二)外積和法
有p個正交樣本,神經元個數n,n>p,w=sum(dot(xi,(xi).t)),(i=[1,2,...,p])
上述兩種方法可以保證我們要求的狀態是吸引子,但是還可能存在其他的狀態也是吸引子。這是hopfield神經網路的固有缺陷。
Hopfield神經網路
import numpy as np import neurolab as nl import matplotlib.pyplot as plt 0 1 2 16 8 target np.array 0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,...
Hopfield神經網路
多層神經網路 模式識別 相互連線型網路 通過聯想記憶去除資料中的雜訊 1982年提出的hopfield神經網路是最典型的相互鏈結型網路。當輸入模式為某種狀態時,輸出端要給出與之相應的輸出模式。如果輸入模式與輸出模式一致,稱為自聯想記憶,否則,稱為異聯想記憶。網路結構上,hopfield神經網路是一種...
Hopfield神經網路
目錄hopfield網路計算圖 hopfield網路的能量函式 hnn型別 chnn 定義 forall x in r n,forall a in a,lim d f n x f n a 0 a為吸引子 半 正 負定函式 自治系統 衡點 dot f x 李雅普諾夫候選函式v dot x nabla ...