传统的列表存储器在最简单的情况下可以是文本文件,其中逐行保存数字串。如果文件按行排序,则可以在对数时间内快速完成对元素的搜索,即使对于非常大的文件也是如此。
但是,列表内存也可用于创建映射。例如,电话簿是从所有输入的名称的集合到所有电话号码的集合的映射。此映射实现为简单表,通常保存在数据库中。
使用面部识别对建筑物的访问控制是类似的任务。在这里,我们还可以使用一个数据库,其中每个人的照片与人的姓名和可能的其他数据一起保存。然后,入口处的摄像机拍摄该人物的照片并在数据库中搜索相同的照片。如果找到了照片,则识别该人并进入该建筑物。但是,使用这种控制系统的构建不会得到很多访问者,因为当前照片与保存的照片完全匹配的概率非常小。
在这种情况下,仅将照片保存在表格中是不够的。相反,我们想要的是联想记忆,它不仅能够为照片分配正确的名称,而且能够为任何可能无限的“相似”照片分配。应该从一组有限的训练数据生成用于找到相似性的函数,即用名称标记的保存的照片。一个简单的方法是在Sect中引入最近邻法。8.3。在学习过程中,只需保存所有照片。
要应用此功能,必须在数据库中找到与当前照片最相似的照片。对于包含许多高分辨率照片的数据库,此过程取决于所使用的距离度量,可能需要很长的计算时间
因此不能以这种简单的形式实现。因此,代替这种惰性算法,我们更喜欢将数据传输到函数中,然后在应用时创建非常快速的关联。
找到合适的距离度量会带来另一个问题。我们希望即使该人的脸部出现在照片上的另一个地方(翻译),或者它更小,更大,甚至旋转,我们也会认出一个人。视角和照明也可能不同。
这是神经网络展示其优势的地方。无需开发人员考虑合适的相似性度量标准,他们仍然可以提供良好的结果。我们将介绍两个最简单的联想记忆模型,并从该领域的先驱之一Teuvo Kohonen开始。
由于两个原因,前一章中介绍的Hopfield模型难以使用。首先,它只是一个自动关联存储器,即一个大致相同的映射,它将类似的对象映射到学习的原始对象。其次,复杂的复发动态在实践中往往难以管理。因此,我们现在将看看简单的双层前馈网络。
1.
相关矩阵记忆
∈∈
在[Koh72]中,Kohonen介绍了一种基于基本线性代数的联想记忆模型。这将查询向量x R n 映射到结果向量y R m。我们正在寻找矩阵W,它正确地映射出一组训练数据
T = {(q 1,t 1),…,(q N,t N)}
=
使用N个查询 – 响应对所有查询向量进行响应。3也就是说,对于p
1 ,…,N必须是这样的情况
t p = W ・ q p,(9.3)
要么
一世
Ĵ
tp = wijqp。(9.4)
j = 1
j = 1
要计算矩阵元素wij,规则
ñ
Ĵ
一世
wij = qptp
p = 1
(9.5)
p = 1
3为了明确区分训练数据和神经元的其他值,在下面的讨论中,我们将查询向量称为q,将期望的响应称为t(目标)。
图9.9 Kohonen关联存储器作为双层神经网络的表示
用来。如果我们如图9.9 所示定义一个双层网络,其中q为输入层,t为输出层,则可以将这两个线性方程简单地理解为神经网络。输出层的神经元具有线性激活函数,并且(9.5)用作学习规则,其完全对应于Hebb规则。
Ť
在我们显示网络识别训练数据之前,我们需要以下定义:
定义9.1两个向量x和y称为正交,如果
x ・ y =
1如果 x = y ,
0其他。
从而
定理9.1如果训练数据中的所有N个查询向量q p都是正交的,则每个向量q p通过与第233 页的(9.5 )的矩阵wij相乘而映射到目标向量t p 。
证明我们代( 9.5 )页 233 到( 9.4 )页 233 ,并获得
Nn
Ĵ
吉
Ĵ
(W ・ q p)i = wijqp = qrtrqp
j = 1
j = 1 r = 1
j = 1
j = 1 r = 1
= qpqptp + qrqpt r
n N
n
JJI
j = 1
= tp qpqp + tr qrqp
ñ
JJI
r = pj = 1
N n
ijj
j = 1
r = p
ijj
j = 1
ñ
一世
= tp(q p)T q p
+ tr (q r)T q p = tp
一世
= 1
r = p
一世
一世
= 0
因此,如果查询向量是正交的,则所有模式将被正确地映射到相应的目标。然而,正交性是一个太强大的限制。在Sect。9.4 我们将提出一种克服这种限制的方法。
2.
伪逆
×=
×=
我们可以采用不同的方法来计算权重矩阵W :通过将所有查询向量视为 n N 矩阵Q(q 1,…,q N)的列,并且类似地将目标向量视为 m的列 N 矩阵T(t 1,…,t N)。因此,第233 页的(9.3 )可以进入表格
T = W ・ Q 。(9.6)
现在我们试图解决W的这个等式。我们正式反转并获得
W = T ・ Q – 1 。(9.7)
=
这种转换的要求是Q的可逆性。为此,矩阵必须是方形的,并且必须由线性独立的列向量组成。也就是说,必须是n N和n个查询向量都必须是线性独立的。这种情况确实不方便,但仍然不如上面要求的正交性那么严格。然而,通过Hebb规则学习具有的优点是,即使查询向量不是正交的,我们也可以简单地应用它,希望关联器仍然可以工作。然而,这不是那么简单,我们如何反转不可逆矩阵?
当且仅当存在具有该属性的矩阵Q – 1时,矩阵Q是可逆的
Q ・ Q – 1 = I ,(9.8)
在那里我是单位矩阵。如果Q不可逆(例如因为Q不是正方形),则没有具有此属性的矩阵Q – 1。然而,肯定有一个矩阵接近拥有这个属性。在这个意义上我们定义
|
|
|
||||||||||
|
|
|
||||||||||
|
|
|
||||||||||
|
|
|
|
|||||||||
图9.10的矩阵w ^ 保存3对后( q 1,吨1),( q 2,吨2),( q 3,吨3)。
空字段对应于值0
定义9.2设Q是一个真正的n × m矩阵。一米× Ñ矩阵Q +被称为
Q ・ Q + – 我。
这里M是欧几里德范数。
如果最小化,则伪反转到Q.
W = T ・ Q + (9.9)
– ・
我们可以计算一个最小化串扰(关联误差)TWQ的权重矩阵。有各种计算伪逆的方法,例如我们将在Sect中介绍的最小二乘法。9.4.1。
3.
二元Hebb规则
{∈{}}
∈
在联想记忆的背景下,提出了所谓的二元Hebb规则。它要求模式是二进制编码的。这意味着,对于所有模式q p 0 , 1 Ñ和吨 p 0 , 1 米。此外,第233 页上的(9.5 )的求和由简单的逻辑OR代替,我们获得二进制Hebb规则
ñ
Ĵ
一世
wij = qptp。(9.10)
p = 1
p = 1
因此权重矩阵也是二进制的,并且当且仅当条目q 1 t 1 ,…,qN t N中的至少一个不为零时,矩阵元素wij等于1 。所有其他矩阵
叽叽
元素为零。我们很想相信在学习过程中会丢失很多信息,因为当矩阵元素的值为1时,它不会被其他模式改变。图9.10显示了在学习三对之后,如何用n = 10,m = 6 的例子填充矩阵。
|
|
|
||||||||||
|
|
|
||||||||||
图9.11产品 Wq 1, Wq 2, Wq 3的计算
要检索保存的模式,我们只需将查询向量q乘以矩阵,然后查看结果Wq。我们在示例中对此进行测试,得到图9.11。
我们看到,在右侧的目标向量中,在学习的目标向量具有1的位置处存在值3。通过设置阈值3可以获得正确的结果。在一般情况下,我们选择查询向量中的1的数量作为阈值。因此,每个输出神经元都像感知器一样工作,尽管具有可变阈值。
只要权重矩阵稀疏,该算法就能很好地运行。但是,如果保存了许多不同的图案,则矩阵变得越来越密集。在极端情况下,它只包含一个。然后,在设置阈值后,所有答案将只包含一个,并且不再包含任何信息。
+
只要矩阵中保存的位数不会变得太大,就很少发生这种情况。矩阵的大小为mn个元素。要保存的对有mn位。可以显示[Pal80]可存储图案的数量Nmax由以下条件确定:
可存储位数
α = 二进制矩阵元素的数量
MN
= (M + N)ñ最大≤ LN 2 ≈ 0 。69 。(9.11)
=
= =
=
有关列表存储我们α 1.联想记忆与二进制赫布规则具有的最大内存效率α 0 。69相比α 0 。72,用于Koho- NEN关联存储器和α 0 。292用于Hopfield网络[Pal80,Pal91]。因此,与具有连续神经元的Kohonen模型相比,二元Hebb规则的存储容量令人惊讶地高。
很明显,当查询和目标向量稀疏地填充一些时,这种存储器变得“完全”不那么快。这不是关联存储器的输入和输出编码的唯一原因 – 对于其他神经网络 – 对于良好的性能非常重要。我们现在将通过适当选择的输入和输出编码在该存储器的应用上证明这一点。
・=
作为所描述的关联存储器与二进制Hebb规则的应用,我们选择一个程序来纠正错误的输入并将它们映射到字典中保存的单词。显然,这里需要一个自动关联存储器。但是,因为我们对查询和目标向量进行不同的编码,所以情况并非如此。对于查询向量q,我们选择一对编码。对于包含26个字符的字母表,有26 26 676个有序字母对。对于676位,查询向量对于每个可能的对具有一个比特
aa , ab ,…, az , ba ,…, bz ,…, za ,…, zz 。
– ・+
如果单词中出现一对字母,则会在适当的位置输入一个字母。例如,对于单词“henry”,“ha”,“an”和“ns”的槽用1填充。对于目标矢量t,为字中的每个位置保留26位直到最大长度(例如10个字符)。对于字中位置j的字母表中的第i个字母,则设置位号(j 1 ) 26 i。对于单词“henry”,设置位8,27,66和97。对于每个字最多10个字母,目标矢量因此具有260位的长度。
・=
因此权重矩阵W 的大小为676 260位199420位,其中第
237 页的( 9.11 )最多可以存储
N 最大
MN
≤ 0 。69 米+ n
0 。69 676 ・ 260
=
676 + 260
≈ 130
话。有72个名字,我们节省了大约一半的数量并测试系统。存储的名称和几个示例输入的程序输出在第
239 页的图 9.12 中给出。阈值始终初始化为编码查询中的位数。这是字母对的数量,因此字长减去1。然后逐步减少到两个。我们可以通过与每个尝试阈值的字典进行比较来进一步自动选择阈值,并输出比较成功时找到的单词。
对模糊输入“andr”和“johanne”的反应很有趣。在这两种情况下,网络都会创建两个适合的保存单词。我们在这里看到了神经网络的重要优势。它们能够在没有明确的相似性度量的情况下与相似对象建立关联。然而,与启发式搜索和人类决策类似,不能保证“正确”的解决方案。
由于训练数据必须以输入 – 输出对的形式提供给目前为止已经引入的所有神经模型,我们正在处理监督学习,这也是以下各节介绍的网络的情况。
存储的单词:
agathe,agnes,alexander,andreas,andree,anna,annemarie,astrid,august,bernhard,bjorn,cathrin,christian,christoph,corinna,corrado,dieter,elisabeth,elvira,erdmut,ernst,evelyn,fabrizio,frank,franz,杰弗里,格奥尔格,格哈德,hannelore,哈里,赫伯特,ingilt,irmgard,jan,约翰内斯,约翰尼,juergen,卡琳,克劳斯,路德维希,路易丝,曼弗雷德,玛丽亚,马克,马克思,马丁,马蒂亚斯,诺伯特,otto, patricia,peter,phillip,quit,reinhold,renate,robert,robin,sabine,sebastian,stefan,stephan,sylvie,ulrich,ulrike,ute,uwe,werner,wolfgang,xavier
该计划的协会:
输入模式:哈里
门槛:4,回答:哈里门槛:3,回答:哈里门槛:2,回答:horryrrde
——————————-
输入模式:ute threshold:2,回答:ute
——————————-
输入模式:格哈尔
阈值:5,回答:gerhard阈值:4,回答:gerrarn阈值:3,回答:jerrhrrd阈值:2,回答:jurtyrrde
——————————-
输入模式:egrhard
门槛:6,回答:
阈值:5,回答:门槛:4,回答:gerhard门槛:3,回答:gernhrrd门槛:2,回答:irrryrrde
——————————-
输入模式:andr
阈值:3,回答:andrees阈值:2,回答:anexenser
输入模式:andrees
阈值:6,回答:阈值:5,回答:andree阈值:4,回答:andrees阈值:3,回答:mnnrens门槛:2,回答:morxsnssr
——————————-
输入模式:johanne
门槛:6,回答:johnnnes门槛:5,回答:johnnnes门槛:4,回答:jornnnrse门槛:3,回答:sorrnyrse门槛:2,回答:wtrrsyrse
——————————-
输入模式:johnnnes
门槛:6,回答:约翰门槛:5,回答:johnnnes门槛:4,回答:johnnyes门槛:3,回答:jonnnyes门槛:2,回答:jornsyrse
——————————-
输入模式:johnnyes
门槛:7,回答:门槛:6,回答:约翰门槛:5,回答:johnny门槛:4,回答:johnnyes门槛:3,回答:johnnyes门槛:2,回答:jonnnyes
图9.12 拼写校正程序应用于各种学习或错误输入。找到具有最大(即首次尝试)阈值的正确输入。对于错误的输入,必须降低阈值才能正确关联