在介绍权重矩阵的文章中,我们在两种神经网络图景之间来回切换:一种是彼此连接的神经元,另一种是变换向量的矩阵。理解了计算过程,这似乎只是很小的一步。但从历史上看,它要求研究者对自己究竟在研究什么作出相当大的转变。

翻开 Frank Rosenblatt 于 1962 年出版的 Principles of Neurodynamics,就能看出这种转变已经走了多远。在第 83 页,他定义了一个描述单元间连接的相互作用矩阵。在附近的论述中,网络的可调参数成为欧几里得空间中的坐标。学习可以被描述为在这个空间中移动。

这比现代深度学习软件早了几十年。矩阵已经出现了。

有意思的是,它是怎么走到这里的,又为什么最终成为讲授和编写神经网络的常规方式。早期研究者试图解释计算、识别和记忆。每个问题都对模型提出不同的要求,也让数学的另一个部分变得有用。

精确指定的电路遇到的问题

神经元要么发放,要么不发放。这个观察为 Warren McCulloch 和 Walter Pitts 在 1943 年发表的论文提供了起点。如果可以把神经活动理想化为全或无的事件,那么也许就能用逻辑来研究神经元网络。

他们的简化单元具有阈值和延迟。有些输入会兴奋单元,抑制性输入则可能阻止它发放。在网络结构固定的情况下,他们可以研究其活动如何表达逻辑关系,包括不同时刻发生的事件之间的关系。

这种方法的吸引力很容易理解。不必一开始就面对所有生物学细节,而是先指定一个电路,再推理它会计算什么。一幅连接着许多细胞的图变成了数学对象。

但指定电路并没有涵盖学习中许多有趣的部分。动物通过经验获得行为能力。系统里必须有某些东西能够改变。

Donald Hebb 在 1949 年出版的 The Organization of Behavior 中,把这种变化放在连接的效能上。他提出,当一个细胞反复促使另一个细胞发放时,某种持久的变化可能增强这种影响。这是一个用语言表述的生物学假说。它为后来的数学模型提供了一个具体位置,用来保存经验的影响。

Rosenblatt 希望定量解释一个连接部分随机的系统如何学习。在 1958 年的感知机论文中,他指出了逻辑方法面临的困难:我们可能知道神经系统的大体组织方式,却不知道它的精确连接。因此,他选择以概率论作为模型的基础。

这个选择改变了问题本身。给定一个精确指定的电路,我们可以问它计算什么。给定一群以统计方式描述的单元,我们可以问它在什么条件下会获得有用的行为。

Rosenblatt 的感知机包含感觉单元、联想单元和响应单元,部分连接具有随机性。学习改变了联想活动影响响应的方式。这个构想远比今天通常用来介绍感知机的单个阈值神经元丰富。

现在,需要区分活动模式、调整连接,并预测学习的表现。逻辑让神经计算能够接受形式化分析。概率论让 Rosenblatt 可以在不知道每一条连接的情况下研究它。

当连接变成坐标

一旦连接强度成为可调的数值,就出现了一种有用的可能:每一组数值设定都可以被看作一个位置。学习于是成为穿过各种可能设定的一条路径。

Bernard Widrow 和 Marcian Hoff 在 1960 年关于 ADALINE 的工作中,把这个视角变得具体。他们的自适应装置包含可调系数,通过改变这些系数来减小误差。在他们的分析中,输入是向量,均方误差则在系数的取值空间上形成一个曲面。

他们在最后的阈值把信号变成离散决策之前测量误差。这样就得到一个数值曲面,自适应过程可以沿着它走向最小值。同一个系数既是装置的设定,也是优化问题中的坐标。我们的 ADALINE 文章介绍了学习规则本身。

这又把我们带回 Rosenblatt 的书。他的相互作用矩阵收集了单元之间的耦合系数,没有连接的位置取零。参数空间描述了网络记忆的各种可能状态。他随后利用矩阵的秩和奇异性,分析感知机能够实现哪些分类。

矩阵在这里确实具有解释力。网络可以作为一个整体来研究,而整体的性质能够揭示逐条查看连接时难以看出的东西。

这种数学力量也可能与乐观的预期相冲突。在 1969 年出版的 Perceptrons 中,Marvin Minsky 和 Seymour Papert 研究了一类系统:先通过特征检测器收集局部信息,再对其输出进行加权组合并作出决策。副标题 An Introduction to Computational Geometry 表明,数学视角已经变得多么重要。

以奇偶性为例:判断一幅图像中活跃像素的数量是奇数还是偶数。他们证明,如果感知机通过一次对加权和的阈值判断来组合特征检测器的输出,那么除非至少一个检测器依赖整幅图像,否则它不可能对所有输入都解决这个问题。如果每个检测器只能看到图像的一部分,无论怎样调整最终的权重,系统都无法完成任务。限制来自架构及其特征。

因此,学习比找到合适的连接强度更加复杂。提供给这些连接的表示也很重要。如果这种表示无法支持所需的区分,模型就需要换一种方式来表示输入。

能够记忆的矩阵

识别只是关注连接变化的一个原因。记忆提出了另一个问题:经验如何留下痕迹,让后来的线索能够将其唤回?

Karl Steinbuch 在 1961 年发表的 Die Lernmatrix 中研究了这个问题。这个名字的意思是学习矩阵。他提出的电路具有两个阶段:学习阶段同时呈现表示属性的信号及其对应的含义;回忆阶段则可以通过呈现其中一方来恢复另一方。他提出利用磁性存储元件或电化学过程来实现它,并设想了字符识别和信息检索等应用。

这让记忆成为一个工程问题:如何在学习时改变一个阵列,使后来通过它的信号能够恢复某种关联。

Teuvo Kohonen 在 1972 年发表的 Correlation Matrix Memories 中继续研究这个问题。他明确用相关矩阵取代 Steinbuch 的开关矩阵,分析联想回忆的数学性质,而把这种模型可能具有的生物学作用留在论文范围之外。

在存储所有两两乘积的版本中,每个关联都将一个键向量与一个数据向量配对。把数据的每个分量与键的每个分量相乘,就得到外积,也就是一个由两两乘积组成的矩阵。记忆存储的是这些矩阵之和再乘以一个缩放系数。将它作用于一个键,就能得到回忆出的模式。

同样的数学也解释了回忆为什么会出错。相似的键可能带回来自其他关联的不需要的成分。共同存储的记忆可能互相干扰。

James Anderson 在同年发表的工作中,从局部突触变化出发研究了同一种基于乘积的构造。连接的变化量与发送细胞和接收细胞活动的乘积成正比。如果两组细胞之间每一对都有连接,这些变化就构成同样的外积。这里,数值形式的赫布规则成为矩阵更新:局部变化不断累积成一个存储体,后来可以从中恢复关联的模式。

John Hopfield 在 1982 年的论文中,为记忆问题给出了一个格外熟悉的情境:想象一下,仅凭一个片段,甚至是带有拼写错误的片段,恢复完整的文献引用信息。

他的网络通过循环连接把活动反馈回来。不完整的模式可以逐步演变为某个已存储的模式。耦合矩阵描述单元如何互相影响,另一个向量则描述它们当前的状态。

在连接对称、没有自连接且采用异步更新的条件下,Hopfield 能够证明,一个能量函数不会随着状态变化而增加。这把神经网络中的回忆与相互作用的物理系统联系起来。存储的模式可以充当吸引子,也就是附近的活动会趋向的状态。

回忆过程中,连接保持不变,变化的是逐渐稳定下来的活动。耦合矩阵和非线性更新共同解释了为什么部分线索能够引向更完整的模式。

我们已经远远超出了把连接强度收进一张表的做法。矩阵能够帮助解释经验如何被存储、记忆为什么互相干扰,以及网络如何从不完美的线索中恢复模式。

学会下一层应该看到什么

识别问题仍然面临感知机分析所揭示的困难:有用的决策依赖有用的特征。网络能否也通过经验获得这些特征?

Erkki Oja 在 1982 年给出了一个很有启发性的结果。他研究了一个线性神经元,并修改赫布学习规则,以控制权重的增长。在其分析的条件下,权重趋向输入二阶矩矩阵的最大特征值所对应的特征向量。如果输入均值为零,这个方向就是第一主成分。

因此,一条以局部连接变化表述的规则,能够提取出一种已知的统计结构。线性代数帮助我们确定神经元究竟学到了什么。

对于包含多个阶段的网络,还有一个额外挑战。训练样本可以指定答案,但通常不会指定每个中间单元应该检测什么。期望的输出行为必须能够指导网络内部更深处的变化。

David Rumelhart、Geoffrey Hinton 和 Ronald Williams 在 1986 年发表的 Learning Representations by Back-Propagating Errors 中,生动展示了这种可能。他们的例子同时调整隐藏连接和输出连接。在一个学习识别镜像对称的网络中,他们通过检查学到的权重,理解中间单元如何参与解决问题。

计算导数的方法有更早的来源,包括 Seppo Linnainmaa 关于反向累积的工作,其起点是他 1970 年的学位论文;还有 Paul Werbos 在后来回顾中描述的 1974 年学位论文。1986 年的展示说明了这套方法为什么对神经网络学习重要:前面的阶段能够学会提供后面的阶段所需要的特征。

我们的反向传播文章解释了具体计算。对于这个故事,重要的是哪些东西变得可调。训练既能塑造产生内部表示的变换,也能塑造基于该表示作出的最终决策。

彼此连接的神经元图景仍然描述着网络。连续的、通过学习获得的变换图景,则描述着网络在完成什么。

示意图如何变成程序

到这时,向量和矩阵已经能够描述连接、记忆、统计特征以及层与层之间的变换。刚进入这个领域的人,需要一种方法来统一理解这些描述。

Michael I. Jordan 在 1986 年出版的 Parallel Distributed Processing 第一卷中提供了这样的方法。他撰写的第 9 章是一篇教程,介绍分析本卷模型所需的线性代数。

他讲解向量空间、内积和线性,展示简单的联结主义模型如何对应于向量运算。读者由此学到一种能够从一个模型带到另一个模型的数学语言。

在这里,我们能具体看到这种联系如何成为学科教学的一部分。研究者使用矩阵已有几十年。现在,一部系统介绍联结主义模型的重要著作,加入了专门教读者如何用这些概念思考的入门教程。

这种教学上的转变,也体现在 Christopher Bishop 于 1995 年出版的 Neural Networks for Pattern Recognition 中。在前言里,Hinton 将这本书介绍为满足了一项需求:以线性代数、微积分和概率论为基础,给出清晰的讲解。

Bishop 从较简单的统计模型逐步讲到多层网络。初学者可以把神经网络放在估计、优化和泛化的数学框架中学习。从生物学类比走向数值模型的过程,越来越多地融入学科的教学方式。

软件让这种语言具有了实践意义。Ian Nabney 的 NETLAB 工具箱将矩阵描述直接写进代码。它的前向传播函数接收一个由输入样本组成的矩阵。矩阵乘法、偏置相加和非线性激活计算出隐藏层,再通过一次矩阵乘法,把隐藏层的活动传到输出阶段。

每一行存放一个样本,因此相同的运算会让整批样本通过这两层。示意图中的连接,变成了程序中的系数。

对于通过这些书和工具学习的学生,两种描述是同时出现的。他们不再需要单独发现某一层可以表示为矩阵,因为这一层从一开始就是这样被解释和实现的。

后来,GPU 让这些运算的组织方式变得更加重要。在 2009 年关于大规模无监督学习的工作中,Rajat Raina、Anand Madhavan 和 Andrew Ng 用矩阵运算来表达深度信念网络的计算,使并行数值程序能够高效执行。要获得这种收益,必须批量处理工作,并限制 CPU 与 GPU 内存之间的数据传输。我们的 CPU 与 GPU 对比讨论了这个实际问题。

代数也提供了一种讨论架构选择的方式。在 2017 年的 Transformer 论文中,作者把查询、键和值组织成矩阵,并指出优化后的矩阵乘法让点积注意力相较于加性注意力具有速度和内存方面的优势。此时,一些矩阵描述的是根据当前输入计算出来的相互作用,这套语言已经超出了固定连接强度的范围。

开头的两种图景之所以一起变得熟悉,是因为研究者发现,在它们之间切换可以做很多事情。把神经活动表示为数值,把连接表示为系数,就让加权求和拥有了精确的代数描述,同时保留网络中的非线性操作。这种描述帮助解释学习和记忆,随后成为教材和软件的语言。今天,当我们研究权重矩阵的子空间时,我们继承的正是这段历史:一种在不断使用中变得自然的理解网络的方式。