AI Evolution

3.2 连接主义的复兴

连接主义在沉寂多年后迎来复兴。物理学家霍普菲尔德从物理系统视角出发,提出了具备“联想记忆”能力的霍普菲尔德网络,重新点燃了学界对神经网络的热情。随后,反向传播算法的提出,革命性地解决了多层神经网络的训练难题,攻克了曾终结第一代神经网络的“异或问题”,为连接主义的崛起铺平了道路,尽管梯度消失等问题依然存在。

3.2.1 霍普菲尔德的物理学洞察

“震惊,诺贝尔奖要和图灵奖抢饭碗?”

如果你关注新闻的话,就应该看到过 2024 年两名科学家首次因人工智能机器学习方面的贡献荣获诺贝尔物理学奖的新闻,没错,约翰·约瑟夫·霍普菲尔德(John Joseph Hopfield) 正是去年的诺贝尔物理学奖的共同得主之一。

1982 年,加州理工学院的物理学家霍普菲尔德做了一件在当时看来很“不务正业”的事情,他开始研究神经网络,在符号主义如日中天的年代,这简直是“学术自杀”。

霍普菲尔德有物理学家的独特视角。他不把神经网络看作计算机程序,而是看作一个物理系统。

物理学中有一个比喻性概念,叫做 “能量景观”(energy landscape)

想象一个复杂的山谷地形,无论我们把一个小球放在山谷的哪一个高度的位置,小球都会自然滚向山谷最低点。在这个比喻中,小球放置的每个位置代表一种状态,高度代表的是该状态的能量,小球会自然滚动到的最低点就是最稳定状态,而这些最低点就是网络记住的模式。霍普菲尔德利用这一点发明了 霍普菲尔德神经网络(Hopfield neural network),简称 Hopfield 网络。

假设你有一张很重要的旧人物照片,你把完整的照片给 Hopfield 网络“看”,Hopfield 网络会记住这种照片的所有特征(眼睛位置、嘴角弧度、脸上的痣等)。某一天这张照片被撕碎并且丢失了一部分,我们把残缺的图片碎片交给 Hopfield 网络,Hopfield 网络就会像人脑一样“联想”缺失的部分(既然左眼在这里,右眼应该出现在对称的另一边),就像是在玩一个“拼图”游戏,经过反复调整,最终恢复出最接近原始照片的完整图像。

在“拼图”的整个过程中,Hopfield 网络其实就在玩“能量景观”的游戏,它把每种可能的拼法都看作山坡上的一个位置,错误拼法等于小球在高处,正确拼法等于小球在低处,Hopfield 网络通过不断调整神经元状态,使整个系统网络就像山谷中的球一样自动滑向最稳定的低处,也就是找到正确拼法。

Hopfield 网络中的每个神经元都与其他所有神经元相连,并且连接权重对称,当我们输入一个残缺模式时,这些连接就回像拼图规则一样,自动把缺失部分“补全”。即使我们输入的是一个模糊的图片,Hopfield 网络也能通过神经元间的协同激活,完整回忆起存储的图像,这种能力的学名叫作 内容寻址记忆(Content-Addressable Memory, CAM)

上文中介绍过神经网络中单个神经元的连接方式,Hopfield 网络属于一种特殊的循环神经网络,如果你了解过“图”这种数据结构,你可以把 Hopfield 网络结构理解成一个无自环的完全无向图,如果用圆圈表示神经元,双向箭头表示对称连接,该无自环的完全无向图的结构和其邻接矩阵(如图 3-4)。

图 3-4 Hopfield网络结构(左) 及其邻接矩阵(右)图 3-4 Hopfield网络结构(左) 及其邻接矩阵(右)

Hopfield 网络也有很多缺陷,它最大的问题在于容量限制,一个 Hopfield 网络中可以存储的模式数量约为15N(N表示神经元的数量),超出这个容量就会导致模式间干扰,产生伪吸引子(错误的记忆)。

另外,当某些分量相同(记忆模式高度相似)时,Hopfield 网络可能无法区分。并且由于 Hopfield 网络是全连接(每个神经元都与其他所有的神经元相连)的,复杂度比较高,大规模网络权重矩阵存储和更新需要 O(N²) 的资源,难以扩展,尤其是同步更新时,迭代次数会随着问题规模呈指数级增长。

不过,尽管 Hopfield 网络有着种种缺陷,但它的“联想记忆”在当时着实惊艳到了同行,因为这种记忆就像是人类看到半张熟人脸就能想起完整脸部一样“智能”,也正是霍普菲尔德的研究成果重新点燃了人们对神经网络的探究热情,1983 年,卡内基梅隆大学开始举办神经网络专项研讨会,参会者从最初的几十人增长到数百人。很多人开始意识到,神经网络也许并没有“死”,只是还没有合适的时机。

3.2.2 反向传播算法

1986 年,大卫·鲁梅尔哈特(David Rumelhart)杰弗里·辛顿(Geoffrey Hinton)罗纳德·威廉姆斯(Ronald Williams ) 发表了划时代的论文 《通过反向传播学习表示》(Learning representations by back-propagating errors)。他们解决了当年 马文·明斯基 遏制神经网络近 20 年的根本问题:如何训练多层神经网络。

反向传播(backpropagation,BP)算法 解决了一个看似不可能解决的问题:如果我们知道神经网络输出的最后答案是错的,能否追根溯源,找出到底是哪些“决策环节”出了问题?答案当然是可以的,反向传播算法就像侦探破案一样,从结果倒推原因。

让我们先回忆一下 3.1.1 小节介绍过的神经网络,准确来说应该是单层神经网络的数学公式:

y = f(w₁x₁ + w₂x₂ + ... + wₙxₙ + b)

与单层神经网络不同的是,多层神经网络的标准结构由 输入层(input layer)隐藏层(hidden layer)输出层(output layer) 组成(如图 3-5)。

图 3-5 多层神经网络标准结构示意图图 3-5 多层神经网络标准结构示意图

这3层的作用如下:

  • 输入层:接收原始数据。
  • 隐藏层:逐层提取高阶特征,多层神经网络中最少要有1个隐藏层。
  • 输出层:输出最终结果。

反向传播算法的核心理念是当最终输出结果有问题时,倒推是哪个隐藏层的问题,再倒推是哪个连接权重需要调整。我们可以把反向传播算法的工作过程分为前向传播、计算误差、反向传播和权重更新4个部分。

我们可以用一个例子来更好地理解反向传播算法。

想象你是一个幼儿园老师,正在教一个小朋友识别动物。

老师拿出一张猫的照片。

小朋友说:“我看到了尖尖的耳朵,比较像狗;我看到了4条腿,像狗;我看到了茸茸的毛,像狗。”

小朋友:“这是狗。”

老师:“错了,这是猫。”

老师反思,为什么小朋友认为这是狗?哦,原来是把猫的尖耳朵当成了狗的特征。胡须是用来区分猫狗的关键特征。小朋友对尖耳朵的重视程度太高了,对胡须的重视程度太低了。

老师:“下次看动物时,胡须这个特征要更重视一些。”

小朋友:“好的,我记住了,下次看到尖耳朵+胡须时,我会更倾向于判断这是猫。”

按照这个例子,学生思考的过程就是前向传播,老师发现错误的过程就是计算误差,老师纠错的过程就是反向传播,最后调整重视程度的过程就是权重更新。

但是,老师究竟应该如何调整小朋友对不同特征的重视程度呢?这涉及反向传播算法的核心概念 —— 梯度(gradient)。我们可以把梯度简单理解为“调整的方向和力度”。

  • 方向:权重应该增加还是减少?(例如对胡须特征应该更重视,对尖耳朵特征应该减少重视)。
  • 力度:权重调整的幅度应该多大?(小幅调整还是大幅调整)。

继续用老师教学的例子,如果小朋友把猫认成了狗,那错误很严重,则需要大力调整;如果小朋友把猫认成了老虎,由于猫和老虎长相比较接近,差别并不像猫狗那么大,所以只需要小幅度调整。

那对于上面老师教学的例子,梯度会告诉算法:

  • 胡须特征的权重:向上调整 0.3(增加重视度)。
  • 尖耳朵特征的权重:向下调整 0.2(减少重视度)。

反向传播算法的整个过程就像下山找到最低点。想象你站在一座山上,被蒙住眼睛,要找到山的最低点。

  • 你会用脚感受哪个方向最陡(这就是梯度方向)。
  • 然后朝这个方向迈一步(这就是权重更新)。
  • 到了新位置再感受方向,继续下山。

这个过程叫作 “梯度下降”(gradient descent),反向传播算法正是使用这种方式一步步调整所有的权重,直到找到最好的参数组合的。它的本质就是让错误信息倒着穿回去,计算出每个权重的梯度,然后精确调整每个连接的强度。

1987 年,研究者使用反向传播算法成功解决了异或问题,那个曾经被明斯基用来“杀死”神经网络的难题至此拉下帷幕。而且解决这个难题的方案非常简单,只需要两层神经网络:输入层 2 个神经元,隐藏层 2 个神经元,输出层 1 个神经元。隐藏层的第一个神经元专门识别“至少有一个输入是 1”的情况,隐藏层的第二个神经元专门识别“两个输入都是 1”的情况,最后输出层综合这两个判断给出最终答案。

图 3-6 解决XOR问题的神经网络示意图(左)分类示意图(右)图 3-6 解决XOR问题的神经网络示意图(左)分类示意图(右)

反向传播用解决异或问题证明了多层神经网络是可以被训练的,也正是因为反向传播算法的出现,神经网络才算真正走出了阴霾,迎来了春天。

不过,虽然反向传播算法解决了多层神经网络的训练问题,但在实际应用中有一个致命缺陷——梯度消失问题。想象一下一群人玩传话游戏,A 告诉 B 一个消息,B 告诉 C,C 告诉 D…… 当消息传到第 10 个人时,可能已经面目全非了,反向传播算法也有类似的问题。

在多层神经网络中,误差信息需要从输出层一层层传递到输入层,但每次传递都会衰减。就像声音在传播过程中会逐渐减弱一样,到了网络的底层(靠近输入层),梯度信号已经非常微弱,几乎无法更新权重。这导致了一个严重后果:网络越深,底层的权重更新越慢,学习效果越差。这就是在深度学习兴起之前,神经网络通常只有2~3层的原因。

Edit on GitHub

Last updated on