浅层神经网络是具有参数
我们可以将这个计算分解为三个部分:首先,我们计算输入数据的三个线性函数 (
为了完成描述,我们必须定义激活函数
当输入为正数时返回输入值,否则返回零(见图3.1)。
公式 3.1 所代表的是哪一类输入/输出关系可能并不明显。尽管如此,前一章中的所有思想都是适用的。公式3.1代表了一类函数,其中的特定成员取决于

图 3.1 修正线性单元(ReLU)。这个激活函数如果输入小于零则返回零,否则返回输入不变。换句话说,它将负值剪切为零。注意,还有许多其他可能的激活函数选择(见图3.13),但ReLU是最常用的,也是最容易理解的。

图 3.2 根据公式3.1定义的函数族。a-c) 对于十个参数ϕ的三种不同选择,函数的输入/输出关系是分段线性的。然而,连接的位置、它们之间线性区域的斜率以及整体高度各不相同。
神经网络的直观理解
实际上,公式3.1代表了一族具有多达四个线性区域的连续分段线性函数(图3.2)。现在我们来分解公式3.1,并解释它为什么描述了这个函数族。为了使理解更容易,我们将函数分成两部分。首先,我们引入中间量:
我们把
图 3.3 展示了创建图 3.2a 中函数的计算流程。每个隐藏单元都包含输入的线性函数
图3.3j中的每个线性区域对应于隐藏单元中不同的激活模式。当一个单元被剪切时,我们将其称为非活动状态,而当它没有被剪切时,我们将其称为活动状态。例如,阴影区域接收来自
每个隐藏单元对函数贡献一个“联合”,因此有三个隐藏单元时,可以有四个线性区域。然而,这些区域中只有三个的斜率是独立的;第四个要么是零(如果在这个区域中所有隐藏单元都不活跃),要么是其他区域斜率的总和。

图 3.3 图 3.2a 中函数的计算。a - c) 输入 x 通过三个线性函数,每个函数具有不同的 y 轴截距θ₀和斜率θ₁。 d - f) 每条线都通过 ReLU 激活函数,该函数将负值截断为零。g - i) 然后分别通过ϕ₁、ϕ₂ 和ϕ₃ 对这三条截断线进行加权(缩放)。j) 最后,将经过截断和加权后的函数相加,并添加一个控制高度的偏移量ϕ₀。四个线性区域中的每一个都对应于隐藏单元中不同的激活模式。在阴影区域,h₂ 处于非激活状态(被截断),但 h₁ 和 h₃ 都处于激活状态。(交互式演示)
注
[1] 为了本书的目的,线性函数具有形式
描绘神经网络
我们一直在讨论一个具有一个输入、一个输出和三个隐藏单元的神经网络。我们在图3.4a中可视化了这个网络。输入在左边,隐藏单元在中间,输出在右边。每个连接代表十个参数中的一个。为了简化这种表示,我们通常不绘制截距参数,因此这个网络通常如图3.4b所示。

图 3.4 神经网络的图示说明: a) 输入x位于左侧,隐藏单元h1、h2和h3位于中间,输出y位于右侧。计算流程从左向右进行。输入用于计算隐藏单元的值,这些隐藏单元的值再组合起来生成输出。图中的十个箭头每个都代表一个参数(橙色表示截距,黑色表示斜率)。每个参数都会与其源节点的值相乘,然后将结果加到其目标节点上。例如,我们将参数ϕ₁与源节点h1相乘,然后将结果加到y上。我们引入了额外的包含1的节点(橙色圆圈)来将偏置项纳入这个框架中,所以我们将ϕ₀乘以1(实际上没有影响)然后加到y上。在隐藏单元处应用ReLU激活函数。 b) 更常见的做法是省略截距、ReLU函数和参数名称;这种更简单的表示方式实际上展示的是相同的网络。