BP–前馈式(前馈式神经网络的输出与之前时刻的输出无关)
Hopfield–反馈式(反馈式神经网络的输出与之前时刻的输出有关。)
应用领域:
- 模式识别:用于图像识别、语音识别等。
- 记忆存储:可以存储和回忆多个模式。
- 图像修复:通过部分输入重构完整图像。 在遥感领域,Hopfield网络可以用于从受损或噪声的图像中恢复信息,进行模式识别等任务。
基本思想
- 网络通过调整神经元之间的权重来最小化一个能量函数,从而使得网络状态稳定。网络的每个状态都对应一个能量值,网络的演化过程就是能量减小的过程,最终达到稳定状态,即能量的局部极小值。
- 网络的权值不是通过训练出来的,而是按照一定规则计算出来的, 其权值一旦确定就不再改变,
- Hopfield神经网络的权值矩阵,阈值是计算出来的,不需要进行训练。而网络中各神经元的状态在运行过程中不断更新。
- 在整个求解的过程中,权值矩阵W和阈值T都是固定不变的。
hopfield神经网络通常应用于最优化问题求解和联想回忆。 - hopfield神经网络的运行过程:给这个网络一个初始值(输入),这个网络按照一定的演变规律(转移函数)进行状态更改,直至网络的状态不再改变,即达到了稳定状态(吸引子)。
- 网络演变到稳定时各神经元的状态便是问题之解
类型
Hopfield神经网络分为离散型和连续型两种网络模型,分别记为DHNN(Discrete Hopfield Neural Network)和CHNN(Continues Hopfield Neural Network)
离散型hopfield神经网络(DHNN):输出层是离散函数(如符号函数)
连续型hopfield神经网络(CHNN):输出是连续函数
主要讨论离散型网络模型,下面默认都是离散型的。
DHNN网络模型
单层全反馈网络,一个全连接没有自环的无向图,不分层
共有n个神经元,其中每个神经元的功能都是一致的。
第i个神经元的输出是 x i x_i xi ,阈值是 T i T_i Ti,神经元i和神经元j的连接权重为 w i j w_{ij} wij
连接权重矩阵W是一个主对角线为0的对称矩阵,
w i j = w j i , w i i = 0 wij=wji, wii=0 wij=wji,wii=0
任一神经元的输出 x i x_i xi均通过连接权接收所有神经元输出的反馈回来的信息
目的:任何一个神经元都受到所有神经元输出的控制,使各神经元的输出相互制约,每个神经元均设有一个阈值 T j T_j Tj,反映对输入的噪声的控制。DHNN网络可简记为 N = ( W , T ) N = (W,T) N=(W,T).,他们是全连接的
DHNN运行过程
状态
在前馈式神经网络中,一个神经网络有输入、输出,但是并未涉及到状态。
在DHNN网络中,第i个神经元在第t时刻的状态就是第i个神经元在第t时刻的输出$ x_i(t)$,那么网络的输出就是所有的神经元在第t时刻的输出构成的向量
X ( t ) = [ x 1 ( t ) , . . . , x i ( t ) , . . . , x n ( t ) ] T X(t)=[x_1(t),...,x_i(t),...,x_n(t)]^T X(t)=[x1(t),...,xi(t),...,xn(t)]T
初始输入 / 初始化网络状态
网络从一个初始状态开始,这个状态可以是输入模式或者随机状态。输入模式可能是网络在t = 0时刻的状态
X
(
0
)
=
[
x
1
(
0
)
,
.
.
.
,
x
i
(
0
)
,
.
.
.
,
x
n
(
0
)
]
T
X(0)=[x_1(0),...,x_i(0),...,x_n(0)]^T
X(0)=[x1(0),...,xi(0),...,xn(0)]T
演变规律(转移函数)
在给定网络一个初始值之后,网络要根据一定的演变规律,进行状态迭代
第i个神经元来说在t时刻的输入是 ∑ i = 1 n ( w i j x j − T i ) ∑_{i=1}^n(w_{ij}x_j−T_i) ∑i=1n(wijxj−Ti),给上式起名为第i个神经元的净输入 n e t i net_i neti,即
n e t i = ∑ i = 1 n ( w i j x j − T i ) net_i=∑_{i=1}^n(w_{ij}x_j−T_i) neti=∑i=1n(wijxj−Ti)
减去阈值(Threshold)是为了确定神经元是否应该被激活。阈值的作用类似于一个决策边界,它帮助网络决定在给定的输入下神经元是否应该从当前状态切换到另一个状态。
对于离散型hopfield网络,使用激活函数(通常是符号函数sign)来更新每个神经元的状态。如果neti≥0,则 x i x_i xi更新为1,否则更新为-1。
状态变更方式
网络要根据演变规律进行状态变更。但是一个网络中有多个神经元,那么状态变更时是如何变更呢?每次变更是只变更一个神经元还是一次变更所有的神经元?
DHNN网络有两种变更方式: 一种是同步、一种是异步。
同步就是每次变更都变更所有神经元的状态
异步就是每次只变更一个神经元的状态。
权值
DHNN的权值通常是预先设定的,并且一旦确定就不再改变。这些权值可以通过学习规则(如Hebb规则)来确定
根据Hebb规则,如果两个神经元同时激活,它们之间的连接权重应该增加;如果一个激活而另一个不激活,则连接权重应该减少。这种学习规则可以表示为:
Δ w i j = η x i x j Δw_{ij}=ηx_ix_j Δwij=ηxixj
其中, Δ w i j Δw_{ij} Δwij 是神经元 j和 i之间连接权重的变化量,η是学习率, x i x_i xi 和 x j x_j xj分别是神经元 i和 j 的激活值。
Hebb规则是一种局部学习规则,意味着权重的更新仅依赖于单个神经元的输入和输出,而不需要全局的错误信号,这与需要全局误差反向传播的BP算法不同。
输出
DHNN的输出就是稳定状态,也叫吸引子。吸引子是一个状态
这个网络的输出经过多次更新,还是一样的输出,那么这个输出就是稳定状态,也就是吸引子。看到“吸引子”时,将“吸引子”三个字替换成“稳定状态”就好理解了。
网络状态更新后,检查是否达到稳定状态,即连续几次迭代后网络状态没有变化,或者变化非常小。如果达到稳定状态,则停止迭代;否则,继续迭代。
用数学公式描述一个网络达到了稳定状态,即:
X ( t + 1 ) = f ( W X ( t ) − T ) = X ( t ) X(t+1)=f(WX(t)−T)=X(t) X(t+1)=f(WX(t)−T)=X(t)
从这个公式可以看出,当t + 1时刻的输出与t 时刻的输出一致时,这个络就达到了稳定状态,这个X ( t ) 或者是X ( t + 1 )(二者是一样的)就是吸引子。其中W是权重矩阵,T 是阈值向量。
稳定性
当给定一个网络的初始状态和转移函数之后,这个网络会收敛到一个稳定状态,那么是无论什么样的输入都会达到稳定状态吗?
下面给出两个定理:
定理1:对于DHNN网,若按照异步工作方式调整网络状态,且连接权矩阵为对称阵,则对于任意初态,网络最终收敛到一个吸引子。
这个定理中,有两个重要的点:一个是异步,一个是对称阵
定理2:对于DHNN网,若按照同步工作方式调整网络状态,且连接权矩阵为非负定对称阵,则对于任意初态,网络最终收敛到一个吸引子。
这个定理中,有两个重要的点:一个是同步,一个是非负定对称阵
根据这两个定理可以知道只要满足一定的条件,DHNN网络一定会收敛到一个稳定状态,即一定可以得到吸引子。即DHNN网络是稳定的。
能量函数
我们现在已经知道DHNN网络是稳定的,稳定是一个泛化的概念,我们如何量化稳定呢?
能量函数是一个用来衡量网络状态稳定性的指标。能量函数的值越小,表示网络状态越稳定。通过定义能量函数,我们可以将寻找网络稳定状态(吸引子)的问题转化为寻找能量函数最小值的问题。
定义网络的能量函数如下:
E
(
t
)
=
−
1
2
X
(
t
)
T
W
X
(
t
)
+
X
(
t
)
T
T
E(t)=−\frac12X(t)^TWX(t)+X(t)^TT
E(t)=−21X(t)TWX(t)+X(t)TT
其中W是权重矩阵,T是阈值向量
X ( t ) T W X ( t ) X(t)^TWX(t) X(t)TWX(t)将每个神经元的状态与所有其他神经元的状态进行加权乘积,然后求和。
X ( t ) T T X(t)^TT X(t)TT这部分表示神经元的阈值对能量的贡献。阈值向量 T 决定了每个神经元的激活阈值,而 X ( t ) T T X(t)^TT X(t)TT计算了所有神经元的阈值与当前状态的乘积之和
局限:
- 易陷入局部极小值:网络可能无法在所有情况下都能找到全局最优解,特别是当输入模式非常复杂或者噪声较大时。
- 存储容量有限且易发生模式混淆:随着存储模式数量的增加,Hopfield网络的性能会逐渐下降,可能导致模式之间的相互干扰和混淆。