双向联想记忆神经网络

联想记忆网络的研究是神经网络的重要分支
,在各种联想记忆网络模型中
,由B·Kosko于1988年提出的双向联想记忆(Bidirectional
Associative Memory,BAM
)网络的应用最为广泛。前面介绍过的Hopfiled网络可实现自联想,具体内容可以参考博文《反馈神经网络Hopfield网络》。而BAM网络可以实现双向异联想,具有离散型、连续型和自适应型等多种形式。本篇博文主要介绍离散型BAM网络。

一、BAM网络结构与原理

BAM网络是一种双层双向网络,当向其中一层加入输入信号时,另一层可得到输出。由于初始模式可以作用于网络的任一层,信息可以双向传播,所以没有明确的输入层或输出层。可将其中的一层称为X层,有n个神经元节点;另一层称为Y层,有m个神经元节点。两层的状态向量可取单极性二进制0或1,也可以取双极性离散值1或-1。如果令由X到Y的权矩阵为W,则由Y到X的权矩阵便是其转置矩阵WT

BAM网实现双向异联想的过程是网络运行从动态到稳态的过程。对已建立权值矩阵的BAM网,当将输入样本XP
作用于X侧时,该侧输出X(1)=XP
通过 W阵加权传到Y侧,通过该侧节点的转移函数fy
进行非线性变换后得到输出Y(1)=
fy
(WX(1));再将该输出通过WT
阵加权从Y侧传回X侧作为输入,通过X侧节点的转移函数fx
进行非线性变换后得到输出
X(2)=fx
[WTY(1)]=fx
{[WT
[ f
y (WX(1))]}。这种双向往返过程一直进行到两侧所有神经元的状态均不再发生变化为止。此时的网络状态称为稳态,对应的Y侧输出向量YP
便是模式 XP
经双向联想后所得的结果。同理,如果从Y侧送入模式YP
,经过上述双向联想过程,X侧将输出联想结果X。这种双向联想过程可用下图表示:

对应的计算公式如下:

对于经过充分训练的权值矩阵,当向BAM网络一侧输入有残缺的已存储模式时,网络经过有限次运行不仅能在另一侧实现正确的异联想,而且在输入侧重建了完整的输入模式。也就是说,从残缺的输入模式,既可以通过BAM实现异联想,还可以重建完整的输入模式,这个功能将会非常有用。比如对于下面将分享的一个BAM网络实现就是如此,通过(X,Y)几对需要存储的模式,计算出所需要的权矩阵,例子中选择的是人名和电话的双联想,通过输入残缺的人名,计算好的BAM网络能够实现对电话号码的联想,同时将残缺的人名补全。

二、BAM网络结构的能量函数与稳定性分析

跟Hopfield网络类似,若BAM网络的阈值T为0,则能量函数定义为:

BAM 网双向联想的动态过程就是能量函数量沿其状态空间中的离散轨迹逐渐减少的过程。当达到双向稳态时,网络必落入某一局部或全局能量最小点。对于具体的推理过程,本博文不再进行详述。经过一番的推导,可以得到如下的能量变化公式:

上式表明BAM网的能量在动态运行过程中不断下降,当网络达到能量极小点时即进入稳定状态,此时网络两侧的状态都不再变化。证明过程对BAM网权矩阵的学习规则并未作任何限制,而且得到的稳定性的结论与状态更新方式为同步或异步无关。考虑到同步更新比异步更新时能量变化大,收敛速度比串行异步方式快,故采常用同步更新方式。

三、BAM网络结构的权值设计

对于离散 BAM
网络,一般选转移函数f (·) =
sign(·)。当网络只需存储一对模式(X1,Y1)时,若使其成为网络的稳定状态,应满足如下条件:

当需要存储 P对模式时,将以上结论扩展为P对模式的外积和,从而得到Kosko提出的权值学习公式:

用外积和法设计的权矩阵,不能保证任意P对模式的全部正确联想,但下面的定理表明,如对记忆模式对加以限制,用外积和法设计BAM网具有较好的联想能力。

定理:若P个记忆模式Xp,p =1,2 ,… ,P,x ∈{ -1,1}构成的n维模式,两两正交,且权值矩阵W按上式得到,则向BAM网输入P个记忆模式中的任何一个Xp时,只需一次便能正确联想起对应的模式Yp。

具体的一个例子:含噪声字符的联想过程,如下图:

四、BAM网络的应用

BAM 网络的设计比较简单,只需由几组典型输入、输出向量构成权矩阵。运行时由实测到的数据向量与权矩阵作内积运算便可得到相应的信息输出。这是一种大规模并行处理大量数据的有效方法,具有实时性和容错性。更具魅力的是,这种联想记忆法无需对输入向量进行预处理。便可直接进入搜索,省去了编码与解码工作。

五、BAM网络的实现

以下代码实现的BAM网络,并应用BAM网络存储记忆三个人的名字及其电话号码,按照上面介绍的权值设计方法,进行了网络权值设计,并通过含有噪声的名字输入,实现对名字和电话号码的双联想。具体实现参看以下代码(感谢大佬的倾情贡献:)

**********************************************************

2015-8-7

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-13 14:09:00

双向联想记忆神经网络的相关文章

人工神经网络简介

本文主要对人工神经网络基础进行了描述,主要包括人工神经网络的概念.发展.特点.结构.模型. 本文是个科普文,来自网络资料的整理. 一.             人工神经网络的概念 人工神经网络(Artificial Neural Network,ANN)简称神经网络(NN),是基于生物学中神经网络的基本原理,在理解和抽象了人脑结构和外界刺激响应机制后,以网络拓扑知识为理论基础,模拟人脑的神经系统对复杂信息的处理机制的一种数学模型.该模型以并行分布的处理能力.高容错性.智能化和自学习等能力为特征,

序列模型(5)-----双向神经网络(BRNN)和深层循环神经网络(Deep RNN)

一.双向循环神经网络BRNN 采用BRNN原因: 双向RNN,即可以从过去的时间点获取记忆,又可以从未来的时间点获取信息.为什么要获取未来的信息呢? 判断下面句子中Teddy是否是人名,如果只从前面两个词是无法得知Teddy是否是人名,如果能有后面的信息就很好判断了,这就需要用的双向循环神经网络. 至于网络单元到底是标准的RNN还是GRU或者是LSTM是没有关系的,都可以使用. (2)BRNN如下图所示,每一个输出都是综合考虑两个方向获得的结果再输出: (3)LSTM有一个缺点就是在使用时需要完

循环神经网络RNN公式推导走读

0语言模型-N-Gram 语言模型就是给定句子前面部分,预测后面缺失部分 eg.我昨天上学迟到了,老师批评了____. N-Gram模型: ,对一句话切词 我 昨天 上学 迟到 了 ,老师 批评 了 ____. 2-N-Gram 会在语料库中找 了 后面最可能的词: 3-N-Gram 会在预料库中找 批评了 后面最可能的词: 4-N-Gram 的内存耗费就非常巨大了(语料库中保存所有的四个词的预料组合). 1.1单向循环神经网络 一个单隐层结构示意图: 参数:输入到隐层的权重U.隐层到输出的权重

理解循环神经网络的来龙去脉

一.为什么会出现循环神经网络? 传统的语言模型中,计算特定序列中多个单词出现概率的公式为(以下式子),P(w1,-,wm)一般只考虑前 n 个单词而不是考虑全部之前的单词. 上式对语音.翻译系统中判断一个词序列是否是输入句子的准确翻译起了重要作用.这些只依赖前面1个词(bigram).依赖前面2个词(trigram).... .依赖前面连续n个单词窗口的方式可能不足以捕获足够的上下文信息.在所有传统语言模型中,随着窗口n的增大,系统所需的运行内存也会呈现指数级增长,使得几乎不可能对较大型的词窗口

循环神经网络导读

循环神经网络导读 循环神经网络(Recurrent Neural Network)是一类以序列数据为输入,在序列的演进方向进行递归且所有节点(循环单元)按链式连接的递归神经网络.其中双向循环神经网络(Bidirectional RNN, Bi-RNN)和长短期记忆网络(Long Short-Term Memory networks,LSTM)是常见的的循环神经网络.今天,小编带你认识常见的几种循环神经网络模型,主要内容来自Colah的博客,外加一些自己的总结,一起来学习吧~ 循环神经网络 RNN

深度学习-常见神经网络

目录 一.深度信念网络(DBN) 玻尔兹曼机(BM) 受限玻尔兹曼机(RBM) 二.卷积神经网络(CNN) 卷积是什么 掷骰子 做馒头 做鱼 图像处理 卷积神经网络特性 卷积神经网络分层 三.生成对抗式网络(GAN) 生成器(generator) 判别器(discriminator) 四.循环神经网络(RNN) 双向RNN 深度RNN 递归RNN 五.长短期记忆网络(LSTM) 4种组成 一.深度信念网络(DBN) 2006年,"神经网络之父"Geoffrey Hinton祭出神器深度

深度学习应用在哪些领域让你觉得 “我去,这也能行!”?

Z Stupid 田渊栋. 周若凡等 439 人赞同 Pointer Networks (https://arxiv.org/pdf/1506.03134.pdf) NIPS15的论文,通过改进RNN用来解决一些传统cs问题,比如凸包,三角剖分,甚至是TSP,最神奇的地方在于这玩意效果竟然还不错,甚至比一些近似算法效果好.OI/ACM党出身的我表示三观都被毁了…… Synthesizing Dynamic Textures and Sounds by Spatial-Temporal Gener

资源 | 数十种TensorFlow实现案例汇集:代码+笔记

选自 Github 机器之心编译 参与:吴攀.李亚洲 这是使用 TensorFlow 实现流行的机器学习算法的教程汇集.本汇集的目标是让读者可以轻松通过案例深入 TensorFlow. 这些案例适合那些想要清晰简明的 TensorFlow 实现案例的初学者.本教程还包含了笔记和带有注解的代码. 项目地址:https://github.com/aymericdamien/TensorFlow-Examples 教程索引 0 - 先决条件 机器学习入门: 笔记:https://github.com/

机器翻译引擎的基本原理 ——LSTM

机器翻译引擎的基本原理  摘自:infoq 谷歌机器翻译 Zero-shot:零次 Training:训练 Google Neural Machine Translation:谷歌神经机器翻译 我们每天都在使用不同的技术,但却不知道它们的工作原理.事实上,了解机器学习引擎并不容易.Statsbot团队希望通过本博客中的数据故事使机器学习更加清晰易懂.今天,我们来探讨一下机器翻译并解释谷歌翻译算法如何工作. 几年前,翻译未知语言文本是非常耗时的.使用简单的词汇逐词逐字翻译之所以困难,是由于以下两个