讲的什么

这部分主要讲离散的 Hopfield 网络权值的计算方法,以及网络记忆容量。主要参考了网上搜到的一些相关 PPT。


DHNN 的训练方法

常见的学习方法中有海布法,还有 \(\delta\) 学习规则方法、伪逆法、正交化的权值设计方法等,正交化的权值设计方法是 Matlab 中库函数 solvehop.m 中采用的,该方法的具体介绍和证明可参考论文:【人工神经网络的数学模型建立及成矿预测 BP 网络的实现】。我们着重介绍一下海布法。

海布调节规则

在 DHNN 的网络训练过程中,运用的是海布调节规则:当神经元输入与输出节点的状态相同(即同时兴奋或抑制)时,从第 \(j\) 个到第 \(i\) 个神经元之间的连接强度则增强,否则则减弱。海布(Hebb)法则是一种无指导的死记式学习算法。学习的目的:对具有 \(q\) 个不同的输入样本组 \(P_{n\times q}=[p^1,p^2,\cdots,p^q]\),希望通过调节计算有限的权值矩阵 \(W\),使得当每一组输入样本 \(p^k,k=1,2,\cdots,q\),作为系统的初始值,经过网络循环,系统能够收敛到各自输入样本矢量本身。

以下默认神经元取值为 -1 或 1,对 0 和 1 的情况只有稍许不同。
当 \(k=1\) 时,对于第 \(i\) 个神经元,由海布学习规则可得网络权值对输入矢量的学习关系式为
\begin{align}
W_{i,j}=\alpha p_j^1p_i^1,\quad \alpha>0,\quad i=1,2,\cdots,n\quad j=1,2,\cdots,n
\end{align}
\(n\) 为神经元个数。实际学习规则的运用中,一般取 \(\alpha=1\) 或 \(1/n\).

海布规则是合理的,由于第能够保证改变权值后样本的输出仍为样本矢量本身。不妨取 \(\alpha=1\),则有
\begin{align}
a^1_i=\mathrm{sgn}(\sum_{j=1}^n W_{i,j}p_j^1)=\mathrm{sgn}(\sum_{j=1}^n p_j^1p_i^1p_j^1)=\mathrm{sgn}(p_i^1)=p_i^1
\end{align}

根据海布规则的权值设计方法,当 \(k\) 由 1 增加到 2,直至 \(q\) 时,则是在原有已设计出的权值的基础上,增加一个新量 \(p_j^kp_i^k,k=2,\cdots,q\),所以对网络所有输入样本记忆权值的设计公式为:
\begin{align}
W_{i,j}=\alpha\sum_{k=1}^qt_j^kt_i^k
\end{align}
式中矢量 \(T\) 为记忆样本,\(T=P\)。式 (3) 称为推广的学习调节规则。当系数 \(\alpha=1\) 时,称式 (3) 为 \(T\) 的外积公式。

因为 Hopfield 网络有 \(W_{ij}=W_{ji}\),所以完整的网络权值设计公式应当为:
\begin{align}\label{eq37}
W_{i,j}=\alpha\sum_{\substack{k=1\ i\neq j}}^qt_j^kt_i^k
\end{align}
向量形式表示为
\begin{align}
W=\alpha \sum_{k=1}^q[T^k(T^k)^T-I]
\end{align}

当 \(\alpha=1\) 时有
\begin{align}
W= \sum_{k=1}^q[T^k(T^k)^T]-qI
\end{align}
其中 \(I\) 为单位对角矩阵。

一个例子

对 \(n=5\) 的 DHNN 网络,要求记忆的样本为:
\begin{align}
p^1&=(1,1,1,1,1)^T \notag \\
p^2&=(1,-1,-1,1,-1)^T\notag \\
p^3&=(-1,1,-1,-1,-1)^T \notag
\end{align}
它们不满足正交条件,按外积计算权重矩阵:
\begin{align}
W &=\sum_{k=1}^3p^k(p^k)^T-3I \notag \\
&= \begin{bmatrix}
1 & 1& -1 \\
1& -1&1 \\
1 & -1 & -1\\
1 & 1&-1 \\
1&-1&-1
\end{bmatrix} \begin{bmatrix}
1 & 1& 1& 1&1 \\
1 & -1& -1& 1&-1 \\
-1 & 1& -1& -1&-1 \\
\end{bmatrix}-3I \notag \\
&=\begin{bmatrix}
3 & -1 & 1& 3&1 \\
-1 &3 & 1&-1 &1 \\
1& 1&3 &1 &3 \\
3 & -1&1&3 &1 \\
1 & 1&3 &1 &3
\end{bmatrix} -3I
=\begin{bmatrix}
0 & -1 & 1& 3&1 \\
-1 &0 & 1&-1 &1 \\
1& 1&0 &1 &3 \\
3 & -1&1&0 &1 \\
1 & 1&3 &1 &0
\end{bmatrix} \notag
\end{align}
计算可得:\(\mathrm{sgn}(Wp^1)=p^1,\mathrm{sgn}(Wp^2)=p^2,\mathrm{sgn}(Wp^3)=p^3\). 网络可能的输出状态:\(2^5=32\) 个矢量。分析一下其稳定点的情况:

  • 共有 4 个稳定点: \(p^1, p^2, p^3\), 除此之外,还有一个 \(p^4=(-1,1,1,-1,1)^T\).
    其中 \(p^1, p^2, p^3\) 为要求的稳定点, \(p^4\) 为伪稳定点。仔细发现 \(p^4=-p^2\). 其实,稳定点具有对称性。

把 32 种可能的输出矢量作为初值来检验

  • 串行工作下:10 个初始态收敛于 \(p^1\) , 8 个收敛于 \(p^2\) ,8 个收敛于 \(p^3\) ,6 个收敛于 \(p^4\)
  • 并行工作下:8 个初始态收敛于 \(p^1\) , 1 个收敛于 \(p^2\) ,2个收敛于 \(p^3\) ,1 个收敛于 \(p^4\). 而其他 20 个都使网络陷入极限环(即在多种状态下来回跳动,不收敛)。

影响记忆容量的因素

设计 DHNN 网络的目的,是希望通过所设计的权值矩阵 \(W\) 储存多个期望模式。从海布学习公式的推导过程中可以看出:当网络只记忆一个稳定模式时,该模式肯定被网络准确无误地记忆住,即所设计的 \(W\) 值一定能够满足正比于输入和输出矢量的乘积关系。但当需要记忆的模式增多时,情况则发生了变化,主要表现在下面两点上:

  • 权值移动。发生遗忘、疲劳。
    当只需记住一个样本,即 \(k=1\) 时,根据海布规则确定了权值,网络准确的记住了样本 \(T^1\),当 \(k=2\) 时,为了记忆样本 \(T^2\),需要在记忆了样本 \(T^1\) 的权值上加上对样本 \(T^2\) 的记忆项 \(T^2(T^2)^T-I\),将权值在原来值的基础上产生了移动。
    另一方面,由于在学习样本 \(T^2\) 时,权矩阵 \(W\) 是在已学习了 \(T^1\) 的基础上进行修正的。此时,因 \(W\) 起始值不再为零,所以由此调整得出的新的 \(W\) 值,对记忆样本 \(T^2\) 来说,也未必对所有的 \(s\) 个输出同时满足符号函数的条件,即难以保证网络对 \(T^2\) 的精确的记忆。
    随着学习样本数 \(k\) 的增加,权值移动现象将进一步发生,当学习了第 \(q\) 个样本 \(T^q\) 后,权值又在前 \(q-1\) 个样本修正的基础上产生了移动,这也是网络在精确学习了第一个样本后的第 \(q-1\) 次移动。
    对已记忆的样本发生遗忘,这种现象成为“疲劳”。
  • 交叉干扰。设输入矢量 \(P\) 维数为 \(n\times q\),取 \(\alpha=1/n\). 因为对于 DHNN 有 \(p^k \in \{-1,1\},k=1,2,\cdots,n\),所以有 \(p_i^k\cdot p_i^k=p_j^k\cdot p_j^k=1\). 当网络某个矢量 \(p^\ell,\ell \in [1,q]\), 作为网络的输入矢量时,可得网络的加权输入和 \(n_i^{\ell}\) 为
    \begin{align}
    n_i^{\ell}&=\sum_{\substack{k=1\\ k\neq \ell}}^n W_{i,j}p_j^{\ell} \notag \\
    &=\frac 1n \sum_{j=1,j\neq i}^n \sum_{k=1}^qp_i^kp_j^k \cdot p_j^{\ell} \notag \\
    &=\frac 1n \sum_{\substack{k=1\\ k\neq \ell}}^n \bigg[p_i^{\ell}\cdot p_j^{\ell}\cdot \cdot p_j^{\ell}+\sum_{\substack{k=1\\ k\neq \ell}}^q p_i^kp_j^k \cdot p_j^{\ell} \bigg] \notag \\
    &= p_i^{\ell}+\frac 1n \sum_{\substack{j=1 \\ j\neq i}}^n \sum_{\substack{k=1\ k\neq \ell}}^q p_i^kp_j^k \cdot p_j^{\ell}
    \end{align}
    上式右边中第一项为期望记忆的样本,而第二项则是当网络学习多个样本时,在回忆阶段即验证该记忆样本时,所产生的相互干扰,称为交叉干扰项

网络的记忆容量确定

一般来说,只要满足 \(n>q\),则有 \(\mathrm{sgn}(N^{\ell})=p^{\ell}\),保证 \(p^{\ell}\) 为网络的稳定解。
DHNN用于联想记忆有两个突出的特点:即记忆是分布式的,而联想是动态的。它有局限性,主要表现在以下几点:

  • 记忆容量的有限性
  • 伪稳定点的联想与记忆
  • 当记忆样本较接近时,网络不能始终回忆出正确的记忆等

另外网络的平衡稳定点并不可以任意设置的,也没有一个通用的方式来事先知道平衡稳定点。 所以真正想利用 Hopfield 网络并不是一件容易的事情。 对于用Hebb规则设计的权,能在异步工作时,稳定收敛。记忆样本正交时,可保证能记住自己。有吸引域。但对不正交的记忆样本,它不一定收敛到自身。

转载于:https://www.cnblogs.com/zhoukui/p/7737404.html

Hopfield 网络(下)相关推荐

  1. Hopfield网络和玻尔兹曼机对比,总结,以及受限玻尔兹曼机RBM的提出

    7.Hopfield网络 特点: (1)是一个简单的单层全连接神经网络: (2)每个神经元和其他神经元是全连接的关系: (3)在更新网络权重时,有异步工作方式:每次只更新一个神经元的权重,其他权重保持 ...

  2. MATLAB神经网络编程(九)——Hopfield网络

    <MATLAB神经网络编程> 化学工业出版社 读书笔记 第六章反馈型神经网络 6.1 Hopfield网络 本文是<MATLAB神经网络编程>书籍的阅读笔记,其中涉及的源码.公 ...

  3. python网络构建_使用Python构建Hopfield网络的教程

    热的东西显然会变凉.房间会会人沮丧地变得凌乱.几乎同样,消息会失真.逆转这些情况的短期策略分别是重新加热. 做卫生和使用 Hopfield 网络.本文向您介绍了三者中的最后一个,它是一个只需要特定的参 ...

  4. 智能计算之神经网络(Hopfield网络-DHNN,CHNN )介绍

    目录 1. 神经网络受欢迎的原因 2. 人工神经网络定义 3. 人工神经网络的学习能力 4. 人工神经网络的基本原理 5. 神经网络的研究进展 6. 神经网络的典型结构 6.1 单层感知器网络 6.2 ...

  5. 什么是离散的Hopfield网络?

    什么是离散的Hopfield网络?

  6. 多层感知机MLP、RBF网络、Hopfield网络、自组织映射神经网络、神经网络算法地图

    多层感知机MLP.RBF网络.Hopfield网络.自组织映射神经网络.神经网络算法地图 目录

  7. g120变频器报7490怎么处理_西门子通讯profinet网络下怎么更换G120变频器等部件

    在西门子PLC (300/400/1200/1500)通讯网络下怎么更换G120变频器呢?在西门子强大的工业通讯网络中,如果出现了莫一个站的通讯网络断了,需要我们具备快速更换的能力! 但是西门子网络已 ...

  8. mysql php7安装配置_centos7无网络下安装部署php7.1.33+mysql5.7.28+apache2.4.6-Go语言中文社区...

    centos7无网络下安装部署php7.1.33+mysql5.7.28+apache2.4.6 一. 1.先ping www.baidu.com,root账户下,如果未联网,创建目录,把提前下载好的 ...

  9. 华为仿苹果字体_苹果手机和华为手机,同样的网络下为何我的手机网速这么差?...

                                                                                                        ...

最新文章

  1. 幽暗统领 树的重心 牛客白月赛44
  2. 【iHMI43 4.3寸液晶模块】demo例程(版本1.03)发布
  3. 手机处理器排行榜2019_手机处理器AI性能排行榜出炉,高通骁龙第一,华为排在第十名...
  4. 无限级分类限定层级_王者荣耀:s20战令该不该买?战令限定星元皮肤实测真香...
  5. Moodle: Remove customise this page button from profile?
  6. Linux工作笔记030---Centos7.3启动tomcat 输入startup.sh后提示command not found
  7. ListView问题:Your content must have a ListView wh...
  8. java 反射 判断是否存在_如何判断Javascript对象是否存在
  9. 百度图表echart使用心得
  10. Python编写微信打飞机小游戏(一)
  11. TechTool Pro 11 Mac(硬件检测和系统维护工具)附序列号中文版
  12. audio2mid:音频提取主旋律
  13. 申论该怎么学?申论作文如何提高
  14. 字符串与整型的相互转换
  15. ckfinder 配置 php,CKEditor4+CKFinder3(php版本)安装及配置方法
  16. 企业标志设计主题要素
  17. 微信账户如何解除对第三方应用的授权
  18. p13390677 112040 linux x86-64 1of7,11.2.0.4.0 PatchSet 补丁号 13390677
  19. SPSS数据分析中出现的常见问题总结
  20. Android自定义垂直 SeekBar

热门文章

  1. 提高工作效率:15个有用的项目管理工具
  2. 【转】Traceview的使用
  3. 从Asp.net转到Php之调试
  4. 关于AVR单片机熔丝位的设置和拯救方法大全 AVR单片机熔丝位的设置和详细的拯救方法...
  5. oracle timestamp约束,java.lang.ClassCastException:oracle.sql.TIMESTAMP不能转换为java.sql.Timestamp...
  6. yolov3为什么对大目标检测不好_基于改进Yolov3的目标检测的研究
  7. python如何写生日快乐说说_高逼格祝福朋友生日快乐的说说
  8. bat 删除文件_利用电脑文本文档建立一个简单方便的删除文件的小程序
  9. vue 分享微信传参_vue 中使用微信分享接口(简单实用)
  10. linux下 get,Unix/Linux下 getrusage 的用法