《MATLAB神经网络编程》 化学工业出版社 读书笔记
第六章反馈型神经网络 6.1 Hopfield网络
本文是《MATLAB神经网络编程》书籍的阅读笔记,其中涉及的源码、公式、原理都来自此书,若有不理解之处请参阅原书
6.1.4 Hopfield网络结构
在MATLAB神经网络工具箱中,Hopfield网络为单层网络模型,其结构如下图:
输入p是Hopfield网络的初始条件,其隐层神经元为饱和线性传递函数satlins,如下图:
6.1.5 Hopfield网络模型学习过程
网络的学习过程实际上就是权值调整过程,Hopfield网络的学习目的就是调整连接权值,以使得网络的稳定平衡状态就是所要求的状态。
Hopfield网络常常采用的学习算法是Hebb学习规则,即权值调整规则为:若第i和第j个神经元同时处于兴奋状态,那么他们之间的连接应该增强,权值应该增大。如下所示:
newhop函数是设计Hopfield网络的一种方法。给出一系列平衡期望值矩阵T,newhop函数的输出是反馈网络的权值和阈值,之前需要保证网络对应期望值向量具有稳定的平衡点,但是通常会存在一些伪平衡点,设计方法是使伪平衡点数量越少越好。
newhop( )
功能 生成一个Hopfield回归网络。
格式 net = newhop(T)
说明 net为生成的神经网络,具有在T中的向量上稳定的点;T是具有Q个目标向量的R*Q矩阵(元素必须为-1或1)。Hopfield神经网络经常被应用于模式的联想记忆中。Hopfield神经网络仅有一层,其激活函数用satlins( )函数,层中的神经元有来自它自身的连接权和阈值。
注意:T是R*Q矩阵,表明生成的Hopfield网络有Q个稳定点,即T的列向量表示的点就是稳定点。关于这一点的具体含义可以参下面的例子。
6.1.6 几个重要的结论
1,联想记忆功能:由于网络可以收敛于稳定状态,因此可以用于联想记忆。若将稳态视为一个记忆,则由初始状态向稳态收敛的过程就是寻找记忆的过程,初始状态可认为是给定的部分信息,收敛过程可以认为是从部分信息找到了全部信息,则实现了联想记忆功能。(联想记忆是Hopfield及其重要的特征)
2,优化计算:若将稳态视为某一优化问题目标函数的极小点,则由初始状态向稳态收敛的过程就是优化计算过程。
3,网络渐进稳定的前提是Wij=Wji
4,网络的应用:Hopfield网络多用于在控制系统的设计中求解约束优化问题,另外在系统辨识中也有应用。
6.1.7 Hopfield网络的应用
【例6-2】设计一个三维空间中有两个稳定平衡点的网络,期望值向量为T。
分析:两个平衡点,说明矩阵T有两列,三维空间,表明每一个点需要三个分量表示,所以T的每一列有三个分量;故T是3*2的矩阵。
源码:
%T是网络的稳定点,由于没有输入,所以T也是Hopfield网络的输入
T=[-1 -1 1;1 -1 1]'
%构建一个Hopfield网络
net=newhop(T);
Ai=T;
[Y,Pf,Af]=sim(net,2,[],Ai);
Y
执行结果:
可见网络设计确实能够做到设计点稳定。
关于sim函数的参数含义:
doc里面查找到的帮助
sim simulates neural networks.
[Y,Pf,Af,E,perf] = sim(net,P,Pi,Ai,T) takes
net
Network
P
Network inputs
Pi
Initial input delay conditions (default = zeros)
Ai
Initial layer delay conditions (default = zeros)
T
Network targets (default = zeros)
and returns
Y
Network outputs
Pf
Final input delay conditions
Af
Final layer delay conditions
E
Network errors
perf
Network performanceEach matrix argument is found by storing the elements of
the corresponding cell array argument into a single matrix:
P - (sum of Ri)xQ matrix
Pi - (sum of Ri)x(ID*Q) matrix.
Ai - (sum of Si)x(LD*Q) matrix.
T - (sum of Vi)xQ matrix
Y - (sum of Ui)xQ matrix.
Xf - (sum of Ri)x(ID*Q) matrix.
Af - (sum of Si)x(LD*Q) matrix.
E - (sum of Vi)xQ matrix[Y,Pf,Af] = SIM(net,{Q TS},Pi,Ai) is used for networks
which do not have an input, such as Hopfield networks
when cell array notation is used.
下面输入不同于设计点的其他初始值再来检验一下:
%下面输入不同于设计点的其他初始值再来检验一下
Ai={[-0.9;-0.8;0.7]};
[Y,Pf,Af]=sim(net,{