讲的什么

这部分主要讲离散的 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. hdu3257【模拟】

    题意: 从案例找: 思路: 就是16进制,然后到2进制= =.就是个模拟= =.注意格式: #include <bits/stdc++.h> using namespace std; ty ...

  2. BAT或赌在当下或押在未来,谁是王者?

    转自:http://www.tmtpost.com/97132.html 百度阿里和腾讯三家本来的核心业务并不冲突,各守一方阵地,但随着各自的收购注资加上业务的延展而慢慢有了交际,阿里和腾讯在移动支付 ...

  3. Codevs 1961 躲避大龙

    1961 躲避大龙  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 你早上起来,慢悠悠地来到学校门口, ...

  4. 网络装机pxe服务器的配置过程

    网络装机pxe服务器的配置过程 背景: 针对于Linux运维工作中遇到的需要大批量安装Linux系统的情况,通过网络装机的方式实现无人值守安装Linux操作系统,现需要配置一台pxe服务器用于pxe批 ...

  5. 黑马函数式接口学习 Stream流 函数式接口 Lambda表达式 方法引用

  6. Tinghua Data Mining 3

    特征选择 男女身高 男女抽烟 先验分布 熵 衡量系统的不确定性 属性的价值 降低了不确定性 降低的幅度越高越好 主成分分析 旋转是的数据间的correlation消失掉 Q是正交阵 七长八短,长宽相关 ...

  7. bryce1010专题训练——Splay树

    Prob Hint BZOJ 3323 文艺平衡树 区间翻转 BZOJ 1251 序列终结者 区间翻转,询问最值 BZOJ 1895 supermemo 区间加,翻转,剪切,询问最值.点插入,删除. ...

  8. 从navicat for mysql导出数据库语句时应该加上的两条语句

    为了不引起编码问题,一般在从navict for mysql导出一个数据库时在文件最前面添加这2句语句: CREATE DATABASE IF NOT EXISTS `` default charac ...

  9. morhpia(4)-更新

    更新由2部分组成:一个查询和一组更新操作符.本例是跟所有薪水小于等于2000的员工涨工资500. @Test public void update() throws Exception { //第一步 ...

  10. python学习之内部函数:

    python内置函数表:https://docs.python.org/3/library/functions.html 1 判断数据类型的函数:isinstance(变量, 待要判断的类型) 2判断 ...