讲的什么

这部分主要讲离散的 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规则设计的权,能在异步工作时,稳定收敛。记忆样本正交时,可保证能记住自己。有吸引域。但对不正交的记忆样本,它不一定收敛到自身。

Hopfield 网络(下)的更多相关文章

  1. Hopfield 网络(上)

    讲的什么 这部分主要对 Hopfield 网络作一大概的介绍.写了其模型结构.能量函数和网络的动作方式.主要参考了网上搜到的一些相关 PPT.   概述 早在 1982 年,Hopfield 发表的文 ...

  2. symfony框架在中国移动cmwap网络下访问的问题

    最近用symfony框架给手机app做后台,发现在中国移动cmwap网络下会出现问题,所有请求都路由到根路径了 左图为原始$_SERVER对象,右图为$request->server对象由于re ...

  3. 网络请求失败记录(安卓4g网络下第一次请求特别慢或者失败)

    最近app的一次版本上线以后出现4g网络下请求接口特别慢,第一次调用接口非常非常慢或者直接访问失败,后面就正常了,但是WiFi情况下并不会出现这个问题.最主要的是IOS的线上app并没有问题. 开始怀 ...

  4. Batch Normalization的算法本质是在网络每一层的输入前增加一层BN层(也即归一化层),对数据进行归一化处理,然后再进入网络下一层,但是BN并不是简单的对数据进行求归一化,而是引入了两个参数λ和β去进行数据重构

    Batch Normalization Batch Normalization是深度学习领域在2015年非常热门的一个算法,许多网络应用该方法进行训练,并且取得了非常好的效果. 众所周知,深度学习是应 ...

  5. NAT网络下tcp_tw_recycle参数引起的故障

    记录一次阿里云服务器故障排查思路 公司网络是nat 环境 问题: 同一个服务有两台服务器 172.19.19.252 172.19.19.187 两台服务器 要连node5 发现172.19.19.2 ...

  6. 反馈神经网络Hopfield网络

    一.前言 经过一段时间的积累,对于神经网络,已经基本掌握了感知器.BP算法及其改进.AdaLine等最为简单和基础的前馈型神经网络知识,下面开启的是基于反馈型的神经网络Hopfiled神经网络.前馈型 ...

  7. maven联通网络下中央仓库不能访问的解决办法

    最近刚开始学习maven工具,下载解压完毕,环境变量配置完毕,运行如下命令尝试快速构建一个maven项目: mvn archetype:generate 结果就有问题: [INFO] Scanning ...

  8. 高速网络下的http协议优化

    http协议是基于TCP协议,具备TCP协议的所有功能.但是与一般TCP的长连接不同的是http协议往往连接时间比较短,一个请求一个响应了事.但是总所周知,TCP协议除了具备可靠的传输以外,还有拥塞控 ...

  9. SDWebImage -- 封装 (网络状态检测,是否打开手机网络下下载高清图设置)

    对SDWebImage 进行封装,为了更好的节省用户手机流量,并保证在移动网络下也展示高清图,对使用SDWebImage 下载图片之前进行逻辑处理,根据本地缓存中是否有缓存原始的图片,用户是否打开移动 ...

随机推荐

  1. git如何撤销上次提交

    git push提交完数据后后悔了怎么办? 写在前面的话重要:删除上次提交后本地和远程仓库的数据都将删除,所以删除上次提交前,记得备份备份备份数据!!! 1.直接删除上次提交,使用reset命令 gi ...

  2. Lightoj1013【DP_LCS】

    题意: 给你两个字符串,让你求一个最短字符串,其中存在给出串的种类: 求这个字符串的长度和种类: 思路: //dp[i,j,k]表示前i个字符,包含s1串前j个字母,包含s2串前k个字符时的方案数. ...

  3. GYM 101889J(枚举、环上gcd)

    答案只有n - 1种暴举即可,对于每种,gcd是一那踩雷稳了,否则看雷的分布有没有把模余占满. const int maxn = 1e5 + 5; int n, ans; char str[maxn] ...

  4. 洛谷 P1067 多项式输出

    P1067 多项式输出 模拟,很坑的那种 var i,n:longint; a:array[1..105] of integer; begin readln(n); for i:=1 to n+1 d ...

  5. Integer一类的比较问题

    总体主要分为两个方面 ①比较的是值 一.基本数据类型与引用数据类型进行比较时,引用数据类型会进行拆箱(自动拆装箱需要在jdk1.5以上),然后与基本数据类型进行值的比较 举例: int i = 12; ...

  6. avalon使用体验

    最近在用avalon做项目,使用的感受是,它确实会比angualr学习成本更低,我不需要花很多时间去了解它的功能,没有指令.没有服务,花一个晚上看看API就差不多能着手用了.avalon的视图它提供了 ...

  7. CodeSmith Generator 7.0.2

    [工具]CodeSmith Generator 7.0.2激活步骤 只看楼主 收藏 回复     M炎骫毒逆天T   c#攻城狮 8   学过三层的人应该认识CodeSmith Generator吧, ...

  8. T4310 祖玛游戏

    题目描述 祖玛是一款曾经风靡全球的游戏,其玩法是:在一条轨道上初始排列着若干 个彩色珠子,其中任意三个相邻的珠子不会完全同色.此后,你可以发射珠子到 轨道上并加入原有序列中.一旦有三个或更多同色的珠子 ...

  9. copyin函数

    详见:http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.kerneltechref%2Fdoc%2Fk ...

  10. Azure 项目构建 – 构建和部署 .NET 应用程序

    本课程主要介绍了如何在 Azure 平台上快速构建和部署基于 .NET 语言的 Web 应用, 实践讲解如何使用 Azure 门户创建 Web 应用, 部署 ASP.NET 代码, 连接 Azure ...