摘要:你在参加一个热闹的派对,正和朋友聊天,突然听到角落里扬声器飘出一段熟悉的旋律。电光火石之间,你的脑中就浮现出那首歌的歌词,甚至想起几个月前在音乐节上跟着万人合唱的场景。
你在参加一个热闹的派对,正和朋友聊天,突然听到角落里扬声器飘出一段熟悉的旋律。电光火石之间,你的脑中就浮现出那首歌的歌词,甚至想起几个月前在音乐节上跟着万人合唱的场景。
你没多想,因为这太自然了:听到音乐,联想到歌词,再联想到记忆。但如果我们退后一步,从计算的角度思考这件事,就会发现这个过程远比它表现出来的轻松要复杂得多。
假设你是大脑的设计者,现在你面前有一个挑战:设计一个系统,在接收到一小段音频片段之后,能从过去几十年中无数听过的歌曲中迅速识别出匹配项,然后检索相关的歌词和记忆。这不是个检索关键词的问题,也不是文本搜索,这个系统得处理的是声音碎片、模糊记忆和联想关系。你总不能指望它穷举过去所有的听觉经验吧?
最原始的做法是建一个数据库。每当你听一首歌,就把它存进去,包括歌名、旋律、歌词,以及与之相关的事件记录。然后在你听到一个片段时,就把它拿去匹配数据库中的所有条目,找出最相似的那一个。这是经典的信息检索思路,问题是——你听过的声音远比你记得的要多得多。
大脑接收到的声音从胎儿期就开始积累了,你听过街上的喇叭声,朋友的笑声,车厢里的广播,电影院的背景音乐……如果每一个都要存一份,每次都要全体扫描匹配,那不是搜索引擎,是灾难现场。
更严重的是,记忆的数量不仅是声音,还有伴随它形成的所有视觉、触觉、情绪信息,甚至你的身体状态。要在这种数量级的空间里高效地做模式匹配?在计算意义上,这几乎是不可能完成的任务。
可大脑就能做到。甚至你没意识到它做了什么。
这正是联想记忆的奇迹:你只需一个触发,大脑就能从混沌的记忆堆里迅速、稳定地激活出与你当前感知最相关的那一组信息,而且往往非常准确。这种能力不是穷举,不是搜索,而是一种自然演化出来的记忆检索机制,高度并行,高容错,有模糊输入的恢复能力。
我们的问题变成了:有没有一种人工系统,也可以模拟这种能力?
这不是一个简单的数据库问题,而是一个系统行为问题:我们要找到一种机制,能让系统根据输入,自发地演化到对应记忆的位置;这个位置不需要是全局最优,只需要是稳定、合理、足够接近。
这就引出了我们今天的主角之一:Hopfield 网络。它是第一代尝试模拟大脑联想记忆的神经系统模型,具有非常清晰的物理图景和计算含义。而为了理解它,我们得先从另一个似乎完全无关的领域——蛋白质折叠——中寻找灵感。
几十年前,生物学家面对一个古怪的问题时,惊呆了。他们发现,蛋白质——那种由氨基酸链组成的分子机器——会在体内毫不犹豫地折叠成特定的三维结构,而这个结构恰恰决定了它的功能。一个折叠正确的蛋白质可以成为血红蛋白,把氧气从肺带到全身;但如果折叠错了,它可能就变成“入侵者”,甚至引发疾病。
那么问题来了:这个折叠结构是怎么找出来的?
你要知道,哪怕是一条短短的氨基酸链,它能折叠成的三维构型组合数也是天文级的。考虑到原子之间可以旋转、弯曲、扭转,可能的构型多得超出人类认知。如果蛋白质想靠“试遍所有可能”的办法去找到那个最优结构,那就太搞笑了:就算它每十亿分之一秒尝试一次新构型,它也得花比宇宙寿命还长的时间,才能碰上一次正确的折叠。
这个看起来荒谬的矛盾就是Levinthal悖论。按常识,蛋白质不可能用穷举法找到折叠态;但现实中,它几乎总是毫不费力地在几毫秒内完成这一过程。
解释是:它根本就没“找”。
物理法则告诉我们,蛋白质不是一个搜索引擎,而是一个顺应自然力学的系统。在微观层面,所有原子的相互作用——范德华力、氢键、静电力——共同决定了某种形态比其他形态更稳定。蛋白质会自然而然地“滚”向这个稳定态,就像一颗球会从山坡上滚下,停在山谷底一样。
这就引出了一个关键概念:能量。
每一种构型都有一个对应的“势能”值。这个能量越低,就越稳定,越“舒服”。你可以把整个蛋白质的所有可能构型看作一个高维空间中的地形图——我们叫它“能量地形图”(Energy Landscape)。在这个图上,每个点代表一种构型,点的高低就是能量的大小。蛋白质折叠的过程,就是在这个复杂崎岖的地形上“往低处走”。
它不会费力去“找”目标构型,而是顺着物理规律,沿着最陡的下坡滑进最近的能量谷底。最终,它自然地落入最低的能量陷阱,这就是它的天然构型。
注意,这个过程不需要意识、策略、存储或者搜索——它只是系统动力学的自然演化结果。
这跟我们前面说的大脑回忆是不是有点像?
是的,正是这个点才让人拍案叫绝:也许我们的记忆系统也可以被建造成一个类似的能量系统。
我们不再想着“从数据库里搜出最像的那一项”,而是设计一个系统——只要你给它一个模糊的输入,它会自动往某个稳定态滑落,而这个稳定态就是你原本的记忆。
于是,问题转化了:我们要造一个“认知系统”的能量地形图,把每一段记忆都埋成一个局部低谷。当新的输入到来,它就像蛋白质那样,在这个记忆能量地形上“自然滑落”,进入最相近的谷底,完成一次自动的、类生物的联想回忆。
接下来,我们要开始认真建模:怎样构造这样的能量系统?能不能用神经网络来实现?Hopfield 网络,就是第一步尝试。
这时我们终于可以把视线转回大脑,转回人工智能,转回那个在派对上听见旋律时瞬间触发的记忆闪回。我们要开始建模了。
目标很明确:建立一个系统,它的状态空间中埋藏着多个稳定“记忆谷底”,新的输入落下去,就会自然滑入某一个最近的谷底。
那怎么办?我们不能靠分子间的范德华力,也不能靠氢键,那是蛋白质的特权。但我们可以造出一套规则系统——它由大量的基本单位组成,每个单位可以“激活”或“沉默”,彼此之间有连接、有影响、有方向。听起来像什么?像神经元。
这就是Hopfield网络的出发点。它是最早尝试模拟联想记忆的一种神经网络模型,提出于1982年,由约翰·霍普菲尔德(John Hopfield)设计,但概念上的野心远超当时的硬件能力。
我们先来搭一张简化的神经网络图景。
假设有 N 个神经元,每个神经元只有两种状态:+1(激活)或 -1(沉默)。这听起来简陋,但别小看这个二值结构,它是整个系统“数字神经动力学”的基础。
所有神经元之间是全连接的,也就是说,每个神经元都能“看到”其他所有神经元的状态,并根据它们做出自己的决定。这些连接是有权重的——某两个神经元之间的连接可以是“兴奋性的”(权重大于0)也可以是“抑制性的”(权重小于0)。而且关键一点:权重是对称的,也就是说神经元 i 对 j 的影响和 j 对 i 的影响是一样的。这是后面整个能量系统收敛性的数学基础。
再明确一点:我们不是要训练这个网络去输出“正确答案”,也不是要用它来分类图像。Hopfield 网络的作用非常纯粹——记忆。它所记住的,是一组特定的状态模式(也就是所有神经元的激活/沉默组合)。你可以把它想成:我们在系统中“雕刻”出了一个个记忆图像,每个图像是一种神经元集体活动的稳定状态。
接下来是关键问题:怎么衡量整个网络的“能量”?
我们刚才说过,蛋白质的每种构型都有一个能量值。同理,Hopfield 网络中,每种神经元状态组合也可以对应一个“系统能量”。Hopfield 给出了一种非常直观的定义:
对于所有神经元对 (i,j),我们把他们的状态乘积 x_ix_j 乘上对应的连接权重 w_ij,然后对所有 i
这个负号非常重要——因为我们想让“状态和权重一致”的配置具有低能量。具体来说:
如果两个神经元状态相同(比如都为 +1),而连接权重大于 0,那么它们“合作愉快”,贡献一个负值,降低总能量;如果状态相反,而权重依然为正,那就冲突了,贡献正值,拉高能量;如果连接是负的(表示这对神经元倾向于“意见相左”),那么状态相反就更好了,贡献负值,继续降能量。总之,Hopfield 网络的能量函数衡量的是“这个网络当前状态和它连接规则之间的协调程度”。能量越低,说明神经元之间“相处得越和谐”。
于是系统的演化目标就很清楚了:不断调整神经元状态,使得系统能量降低,直到无法再下降为止。这就是我们的“自然滑落”,就是记忆的“谷底”。
那么它是怎么滑的呢?不像传统神经网络有复杂的前向传播和反向传播,Hopfield 网络的机制简洁得惊人:
每次只看一个神经元 xix_ixi,计算它接收到的“加权输入总和” hi=∑jwijxjh_i = \sum_j w_{ij} x_jhi=∑jwijxj,如果这个总和是正的,它就变为 +1;如果是负的,就变为 -1。这个过程就像是“邻居投票”:你看看你的所有朋友,他们都在活跃地说话吗?那你也加入;他们都沉默?你也闭嘴。每次这样的翻转都会让系统能量下降一小截。你依次轮着更新每个神经元,这个系统就像一块石头在能量地形图上弹跳滑落,最终停在某个谷底。
当所有神经元都达成一致,不再有任何一个愿意改变自己状态的时候,系统稳定了。这时的神经元状态,就是一个稳定的记忆图像,是我们先前“刻在能量地形中的谷底”。
换句话说,我们成功地把模式识别任务转化成了能量最优化问题。新输入只需启动一部分神经元状态,它就会带着这个模糊的“起点”,顺势滑落,最终回到那个完整、稳定的记忆中。
如果你觉得这听起来太巧妙,那你没错。这确实是一个几乎物理层面模拟生物记忆结构的大胆设想。
当然,目前我们还没说清楚最关键的一点——这个能量地形是怎么雕刻出来的?怎么让某些模式自然地成为能量谷底?这就是“学习”要做的事。
我们终于走到了核心问题的门口:这个能量地形,是怎么造出来的?
刚才我们假设了一切。假设权重已经设定好了,假设系统已经可以滑入记忆谷底。但我们不能一直靠假设。真正的大脑不是靠神明写死权重,而是通过一次次学习,把经验“刻”进了连接中。
这就是我们现在要讲的:Hopfield网络的学习机制。
我们先从最简单的情况入手——只想让系统记住一个特定的记忆模式。这个模式就是我们要雕刻进能量地形的一口井。我们希望:无论网络一开始被扰动成什么样,它最后都能滑回这个稳定的记忆。
现在,设这个记忆模式用一个向量表示,
每个分量
就是第 i 个神经元在这个记忆图像中的状态。
目标是:设定所有连接权重 w_ij,让整个网络的能量函数在状态为 ξ时达到最小,也就是说 ξ 是一个局部极小值。
这时候最经典、最简单、也最优雅的方案就派上用场了——Hebb法则。
那句你可能听过的口号:“Neurons that fire together, wire together”,说的就是这个。
翻成公式,Hopfield 网络中的 Hebbian 学习规则是:
这句话的意思是:如果两个神经元在我们想记住的图像中都是活跃的(都为 +1 或都为 -1),那它们之间的连接就应该是正的,鼓励它们在将来再次一起活跃;如果它们“意见相左”,那连接权重就应该是负的,防止它们以后走到一起。
非常自然,非常符合生物学直觉。
至于对角线项 w_ii 呢?我们设它为 0,意思是神经元不“影响”自己,免得在能量函数中自己给自己加戏。
这个权重矩阵一旦设定好,Hopfield 网络就形成了一个非常干净的能量地形图:唯一的低谷对应 ξ,任何别的扰动最终都会滑回它。
漂亮吗?确实。但现实并不止一个回忆。
多个记忆的叠加术
真正的记忆系统不止记住一次生日派对,TA 还得记住毕业典礼、初恋的短信、周一的会议议程,以及你刚才吃的早餐。我们希望 Hopfield 网络能存多个记忆模式,每一个都成为能量地形中的局部低谷。
于是我们采用一种策略:叠加。
如果我们有多个记忆模式:
我们就对每一个应用 Hebbian 规则,分别计算它对权重的贡献,然后全部加起来:
这相当于我们在能量地形图上分别挖了 P 个谷底,然后把它们拼起来,形成一张整体能量图。每一个模式都试图在空间中留下自己的印记,让网络在接近它时自动滑进去。
这就是 Hopfield 网络最美的特性:只用局部规则,就能建成全局记忆结构。每条连接只用参考两个神经元的共同活动记录,就能更新自己。没有全局调度,没有中央控制。
但美感总是短暂的——容量问题
Hopfield 网络虽然优雅,但并不是无限容器。
你可以往里面加越来越多的记忆图像,但你很快就会发现一个问题:系统开始“走神”了。
原来明明能回忆清楚的图像,现在变得模糊甚至扭曲。给一个干净输入,它可能跳进另一个图像的谷底;给一个模糊输入,它干脆卡在两个记忆之间,合成出一个你根本没存过的奇怪状态。为什么?
因为在你不停加记忆的过程中,能量地形上的谷底开始重叠、干扰、融合。
理论分析告诉我们,Hopfield 网络最多能可靠存储的模式数,大约是神经元总数 N 的 0.138 倍(即 0.138N)。换句话说:
如果有 100 个神经元,大概只能稳定存 13~14 个图像。如果你非要存 50 个?对不起,系统开始胡言乱语了。这就是 Hopfield 网络的容量极限。而且这只是理论上“最好情况”,实际中如果图像之间相似度太高、彼此“撞脸”,干扰会更早出现。
来源:老胡科学一点号