注:本文内容参考了图灵社区图书《深度学习的数学》,书籍链接:https://www.ituring.com.cn/book/2593
在日常生活中,模式识别问题随处可见,例如手写数字识别、人脸检测、语音识别等。尽管这些任务的目标是让计算机识别特定的模式,但它们的难点在于模式的多样性和不确定性。就像人类无法用一套固定规则去判断所有的手写数字一样,计算机也需要依赖更加灵活的方法来完成任务。
神经网络是受生物神经系统启发的一种计算模型,其核心思想是通过模拟人脑的神经元之间的连接来处理复杂的模式识别任务。本文以一个简单的例子——识别4×3像素图像的手写数字0和1,帮助大家直观地理解神经网络的基本结构与工作原理。在这个例子中,我们将通过“恶魔组织”这种拟人化的方式形象地描述神经网络的各个层次及其相互作用,让读者轻松理解复杂的技术概念。
例题
建立一个神经网络,用来识别通过 4 × 3 像素的图像读取的手写数字 0 和 1。学习数据是 64 张图像,其中像素是单色二值。
模式识别的难点在于答案不标准。即使是区区一个 4 × 3 像素的二值图像,所读入的手写数字 0 和 1 的像素模式也是多种多样的。例如,下列图像可以认为是读取了手写数字 0:
对于这种没有标准答案、识别困难的问题,如何解决才好呢?一种思路是“由网络进行判断”。
“恶魔组织”结构
假设有一个如下图所示的恶魔组织,隐藏层住着 3 个隐藏恶魔 A、B、C,输出层住着 2 个输出恶魔 0 和 1。输入层有 12 个手下(编号 1 ~ 12),为隐藏恶魔 A、B、C 服务。
输入层
最下层(输入层)的 12 个手下分别住在 4 × 3 像素图像的各个像素上,其工作是:
- 如果像素信号为 OFF(值为 0),就处于休眠状态;
- 如果像素信号为 ON(值为 1),则变得兴奋,并将兴奋度信息传递给他们的主人隐藏恶魔 A、B、C。
隐藏层
住在隐藏层的 3 个隐藏恶魔,从下层(输入层)的 12 个手下那里获得兴奋度信息。接着,将获得的信息进行整合,根据其值的大小,自己也变兴奋,并将这个兴奋度传递给住在上层的输出恶魔。
不过,隐藏恶魔 A、B、C 有不同的喜好。他们分别喜欢下图所示的模式 A、模式 B、模式 C 的图案。这个性质影响了神经网络的特性。(看清他们的不同“偏好”,就是我们最初所提及的设计者的预估。)
现在假设隐藏恶魔A、B、 C 分别喜欢模式 A、B、C。
输出层
住在最上层的 2 个输出恶魔也是从住在下层的 3 个隐藏恶魔那里得到兴奋度信息。与隐藏恶魔一样,他们将得到的兴奋度信息进行整合,根据其值的大小,自己也变兴奋。然后,这些输出恶魔的兴奋度就成为整个恶魔组织的意向。
- 如果输出恶魔 0 的兴奋度比输出恶魔 1 的兴奋度大,神经网络判定图像的数字为 0;
- 反之,则判定为 1。
恶魔组织的交情
隐藏恶魔 A、B、C 对模式有着各自的偏好,与 12 个手下有不同的交情。隐藏恶魔 A 的偏好是之前的模式 A,因此与4、7性情相投。因为模式 A 的 4 号像素与 7 号像素是 ON,所以理所当然地与对应的看守人4、7性情相投。
具体关系如下:
- 隐藏恶魔 A 喜欢模式 A,与手下 4 和 7 交情最好。
- 隐藏恶魔 B 喜欢模式 B,与手下 5 和 8 交情最好。
- 隐藏恶魔 C 喜欢模式 C,与手下 6 和 9 交情最好。
因此他们之间传递兴奋度的管道也变粗了(下图)。
住在隐藏层的隐藏恶魔 A、B、C 与住在上层的 2 个输出恶魔也有着人际关系。
具体与输出层的关系如下:
- 输出恶魔 0 与隐藏恶魔 A、C 交情最好;
- 输出恶魔 1 与隐藏恶魔 B 交情最好。
以上就是恶魔组织的所有人际关系。
通过例子解释识别流程
识别数字0
- 读入手写数字 0
- 作为像素看守人的手下4、7和手下6、9看到这个图像就变得非常兴奋了(下图)。
- 兴奋的手下4、7向性情相投的隐藏恶魔 A 传递了较强的兴奋度信息,兴奋的手下6、9也向性情相投的隐藏恶魔 C 传递了较强的兴奋度信息。相对地,几乎没有手下向隐藏恶魔 B 传递兴奋度信息(下图)。
- 接收了来自手下的兴奋度信息的隐藏恶魔们会怎样呢?接收了较强的兴奋度信息的隐藏恶魔 A 和隐藏恶魔 C 自然也变兴奋了。另一方面,隐藏恶魔B 变得怎样呢?因为几乎没有从手下接收到兴奋度信息,所以一直保持冷静。
- 输出恶魔 0 由于与兴奋的隐藏恶魔 A、C 关系亲密,从而获得了较强的兴奋度信息,所以自己也兴奋起来了。相对地,输出恶魔 1 与隐藏恶魔 A、C 关系疏远,而与之关系亲密的隐藏恶魔B 一直保持冷静,所以输出恶魔 1 没有获得兴奋度信息,因此也保持冷静。
- 读取手写数字 0 的图像后,根据恶魔之间的连锁关系,最终得到了“输出恶魔 0 兴奋,输出恶魔 1 冷静”的结果。根据前文中的“如果输出恶魔 0 的兴奋度比输出恶魔 1 的兴奋度大,神经网络就判断图像的数字为 0”,恶魔的网络推导出了 0 这个解答。
识别数字1
按照上述过程可以得到下图的结构图。
将恶魔的工作翻译为神经网络的语言
- 将恶魔看作神经单元。隐藏层住着 3 个隐藏恶魔 A、B、C,可以解释为隐藏层有 3 个神经单元 A、B、C。输出层住着 2 个输出恶魔0、1,可以解释为输出层有 2 个神经单元 0、1。此外,输入层住着 12 个恶魔的手下,可以解释为输入层有 12 个神经单元(下图)。
- 将恶魔的“交情”看作神经单元的权重。隐藏恶魔 A 与手下4、7性情相投,这样的关系可以认为是从输入层神经单元4、7指向隐藏层神经单元 A 的箭头的权重较大。同样地,隐藏恶魔 B 与手下5、8性情相投,可以认为是从输入层神经单元5、8指向隐藏层神经单元 B的箭头的权重较大。隐藏恶魔 C 与手下6、9性情相投,可以认为是从输入层神经单元6、9指向隐藏层神经单元 C 的箭头的权重较大。
- 隐藏恶魔 A、C 与上层的输出恶魔 0 性情相投,这个关系表示从隐藏层神经单元 A、C 指向输出层神经单元 0 的箭头的权重较大。同样地,隐藏恶魔 B 与输出恶魔 1 性情相投,这个关系表示从隐藏层神经单元 B 指向输出层神经单元 1 的箭头的权重较大。
这样解释的话,神经网络读入手写数字 0 时,神经单元 A 和 C 的输出值较大,输出层神经单元 0 的输出值较大。于是,根据神经网络整体的关系,最终识别出数字 0。
在像这个神经网络那样前一层与下一层全连接的情况下,在输入 0的图像时,原本不希望做出反应的隐藏层神经单元 B 以及输出层神经单元 1 也有信号传递,因此需要禁止这样的信号并使信号变清晰,这样的功能就是偏置。