感知机简介
了解感知机,并按照逐步流程将其组合在一起。
在前面的章节中,我们设计了一个细节繁多的复杂程序。现在是时候后退一步,从宏观角度来整体审视一下了。
在本课程的第一部分,我们构建了一个基于特定架构的监督学习系统,这种架构称为感知机(perceptron)。到本章结束时,我们将清楚地了解感知机的结构及其能力。此外,我们还将探讨它的局限性,并理解为何必须向更复杂的算法(如神经网络)迈进。
我们还会学习感知机的历史。这不会是一堂枯燥的历史课,而是一次关于思想碰撞的回顾,这些争论深刻影响了我们今天对计算机的认知。
什么是感知机?
要理解什么是感知机,让我们回顾一下在《回归现实》一节中讨论过的二分类器。该程序将 MNIST 字符分为两类:“5”或“非5”。下图展示了一种理解方式:
该图展示了 MNIST 图像在系统中的流动过程。整个流程始于输入变量 到 。对于 MNIST 数据集而言,这些输入变量就是图像的 784 个像素值。我们额外添加一个偏置项 ,其固定值为 1,并用更深的灰色加以区分,使其与其他输入变量区分开来。
下一步是黄色方框所示的部分——输入变量的加权和。这一操作通过矩阵乘法实现,因此用“点乘”符号表示。
加权和随后进入最后一个函数——浅蓝色方框。这个函数通常被称为激活函数,不同学习系统可以使用不同的激活函数。在我们的系统中,使用的是 Sigmoid 函数。Sigmoid 的输出即为预测标签 ,取值范围在 0 到 1 之间。
在训练过程中,系统会将预测值 与真实标签进行比较,以计算梯度下降的下一步更新方向。而在分类阶段,则将 的值强制映射到两个极端之一:1 或 0,分别代表“是5”或“不是5”。
上述架构正是感知机,即最早的监督学习系统。
注意:原始感知机(vanilla perceptron,有时也被称为普通感知机)并不使用梯度下降法,因此不需要像 Sigmoid 这样具有平滑梯度的激活函数。相反,它可以仅使用一个简单的阶跃函数,根据加权和的正负将其输出直接置为 1 或 0。
感知机构建基础
感知机是构建更复杂系统的优秀基本单元。这意味着我们从一开始就在组合多个感知机。下面我们来深入理解这一概念。
在训练过程中,我们的系统是一次性读取所有样本,而不是逐个处理。这种方式在效果上相当于将多个感知机堆叠起来,每个感知机处理一个样本,然后将所有输出结果整合成一个矩阵:
我们使用了十个矩阵列来分类十个数字,每一列专门负责判断某一数字是否为特定类别(例如“是5”或“不是5”)。在《最终挑战》一节中,我们也采用了另一种方式组合感知机。由于感知机本质上是二分类器,只能输出 0 或 1,因此我们用十个矩阵列表示十个独立的二分类任务,每个任务专注于识别一个数字相对于其余数字的特征。从概念上看,这就像是并行运行十个感知机:
每一个并行的感知机负责识别一个类别,从 0 到 9。在分类时,我们选择输出置信度最高的那个类别作为最终预测结果。
因此,我们可以堆叠感知机,也可以并行化感知机。在这两种情况下,我们都通过矩阵运算实现了高效处理,相比对每个样本逐一运行分类器、再对每个类别重复执行的方式,这种方法更加简洁且高效。
还有一种组合感知机的方式是将它们串联起来,即将一个感知机的输出作为下一个感知机的输入。这种结构被称为多层感知机(Multilayer Perceptron)。目前我们尚未使用过多层感知机,但在接下来的课程中将会引入。暂时先将这一概念保留在脑海中即可。