D2第 1 / 6 节 · 约 35 分钟

神经网络:从小计算单元到多层表示

本节目标
  • 用玩具卡片描述输入、权重与输出
  • 说明非线性为何让多层网络有意义

先认识一个可观察的问题

云朵工坊要把虚构玩具卡片分成圆形玩具和方形玩具。最初每张卡片只记录圆度与边角数量,都是约定范围内的数字。普通规则可以写成圆度高就判圆形,但有些卡片遮住了边缘,单一规则不够稳定。神经网络不是有意识的小人,而是一组可以调整的计算规则:输入数字经过若干计算单元,最后输出类别分数。我们先用两项特征理解结构,暂时不直接处理整张图片。

一个单元实际计算什么

每个计算单元把输入分别乘以权重,再加上偏置。权重表示当前计算中某项输入的影响方向与大小,偏置改变整体起点。假设圆度为零点八,归一化边角数量为零点二,权重分别为二和负一,偏置为负零点三,加权结果就是一点一。这个结果还不是判断正确的概率,只是计算中间值。接下来可经过激活函数,例如把负值置零、保留正值的修正线性单元。激活改变计算关系,使网络不只是重复直线式组合。

多层为什么不是单纯堆数量

若每层都只有线性计算,无论堆多少层,整体仍能合并成一次线性变换,表达能力不会因为层数自动变复杂。加入非线性后,前层可以形成简单模式,后层再组合它们。处理图片时,某些中间表示可能对边缘、局部纹理或组合形状有反应,但不能保证每个单元都对应人类可命名的概念。表示是为任务学出的数字特征,不等于模型理解了玩具的用途,更不是每层都在模拟人脑。

完整走一遍分类流程

工坊把一张卡片转成两项数字,输入隐藏层;隐藏层执行加权与激活,输出层得到圆形和方形两个分数。分类时可用归一化指数函数把分数变成总和为一的模型概率,再取较高的一类。这个概率反映模型在当前任务下的相对判断,不保证在新背景卡片上仍然校准良好。前向传播指这一整段从输入到输出的计算,推理通常使用已经固定的参数,不因为看见一张新图就自动学会它。

如何检查自己的理解

画出输入、隐藏层、输出的箭头,把权重标在连接上,把偏置标在单元旁。分别回答输入是什么、参数是什么、输出如何用于决定类别。然后想象所有权重固定,只替换输入卡片,输出会改变而参数不会改变。若换成从未见过的三角形玩具,二分类网络仍可能强行选择一个已有类别。因此建模前必须规定类别边界与拒绝处理方式;层数更深不能代替清楚的问题定义。

本节要点

  • 神经网络由可调参数与计算结构组成,不是具有意识的实体
  • 非线性使多层组合能表达更复杂关系
  • 前向传播产生输出,普通推理不自动更新参数

动手练习:手绘一个玩具卡片判断器

  1. 把圆度零点八、边角比例零点二写在纸上,按正文给出的权重和偏置计算一点一
  2. 画出两项输入、两个隐藏单元和两个类别输出,区分输入数字与可调参数
  3. 假设出现三角形卡片,写出该二分类器的限制与一种人工处理方式

自查清单

  • 计算得到一点一且不把它称为准确率
  • 图中明确标出输入、参数、中间表示与输出
  • 指出三角形属于任务范围外并给出复核办法
先自己做,再查看参考答案

示范计算为零点八乘二,再减零点二,最后减零点三,得到一点一;经过把负数置零的激活后仍为一点一。这个中间值不能直接叫圆形正确率,因为尚未经过完整输出层,也没有比较另一个类别。图中输入随卡片变化,连接权重和偏置属于训练时调整的参数,隐藏单元的输出是中间表示。三角形不在既定类别范围内,即使输出圆形概率很高,也只能说明模型在两个选项之间偏向圆形。合理方案是记录未知类别,交由人工复核,并在未来重新定义任务与数据,而不是把高分当作新类别已被理解。

本节自测

学完了吗?

标记后会记录在本机浏览器,课程首页显示你的进度。