第三章 浅层神经网络
第二章我们学习了使用一维线性回归的监督学习方法,但这种模型只能表示出输入与输出之间简单的线性关系。在这一章里,我们将接触到浅层神经网络。这种网络可以表达分段线性函数,并且能力强大到足以近似任何复杂度的多维输入和输出之间的关系。
3.1 神经网络示例
浅层神经网络是带有参数 ϕ \phi ϕ 的函数 y = f [ x , ϕ ] y = f[x, \phi] y=f[x,ϕ],它将多变量输入 x x x 映射成多变量输出 y y y。关于浅层神经网络的全面定义将在第3.4节中给出。首先,我们通过一个示例网络 f [ x , ϕ ] f[x, \phi] f[x,ϕ] 来介绍核心概念。这个网络能够将单一变量输入 x x x 转化为单一变量输出 y y y,并包含十个参数 ϕ = { ϕ 0 , ϕ 1 , ϕ 2 , ϕ 3 , θ 10 , θ 11 , θ 20 , θ 21 , θ 30 , θ 31 } \phi = \{\phi_0, \phi_1, \phi_2, \phi_3, \theta_{10}, \theta_{11}, \theta_{20}, \theta_{21}, \theta_{30}, \theta_{31}\} ϕ={ ϕ0,ϕ1,ϕ2,ϕ3,θ10,θ11,θ20,θ21,θ30,θ31}:
y = f [ x , ϕ ] = ϕ 0 + ϕ 1 a [ θ 10 + θ 11 x ] + ϕ 2 a [ θ 20 + θ 21 x ] + ϕ 3 a [ θ 30 + θ 31 x ] \begin{align} y &= f[x, \phi] \\ &= \phi_0 + \phi_1a[\theta_{10} + \theta_{11}x] + \phi_2a[\theta_{20} + \theta_{21}x] + \phi_3a[\theta_{30} + \theta_{31}x] \tag{3.1} \end{align} y=f[x,ϕ]=ϕ0+ϕ1a[θ10+θ11x]+ϕ2a[θ20+θ21x]+ϕ3a[θ30+θ31x](3.1)
这个计算过程可以分成三个步骤:首先,计算输入数据 x x x 的三个线性函数( θ 10 + θ 11 x , θ 20 + θ 21 x , θ 30 + θ 31 x \theta_{10} + \theta_{11}x, \theta_{20} + \theta_{21}x, \theta_{30} + \theta_{31}x θ10+θ11x,θ20+θ21x,θ30+θ31x)。接着,将这三个函数的结果通过激活函数 a [ ⋅ ] a[\cdot] a[⋅] 处理。最后,用 ϕ 1 , ϕ 2 , ϕ 3 \phi_1, \phi_2, \phi_3 ϕ1,ϕ2,ϕ3 对这三个激活结果进行加权,求和,并加上一个偏移量 ϕ 0 \phi_0 ϕ0。
接下来,我们需要定义激活函数(activation function) a [ ⋅ ] a[\cdot] a[⋅]。虽然有很多选择,但最常用的是整流线性单元(ReLU):
a [ z ] = R e L U [ z ] = { 0 if z < 0 z if z ≥ 0 (3.2) a[z] = ReLU[z] = \begin{cases} 0 & \text{if } z < 0 \\ z & \text{if } z \geq 0 \end{cases} \tag{3.2} a[z]=ReLU[z]={ 0zif z<0if z≥0(3.2)
这个函数在输入为正时返回输入值,否则返回零(参见图 3.1)。
方程 3.1 描述了哪一类输入/输出关系可能不是一目了然的。但是,前一章节提到的所有概念都适用于这里。方程 3.1 表示了一个函数族,具体的函数取决于 φ 中的十个参数。如果我们知道这些参数,就可以通过对给定输入 x x x 计算该方程来进行推断(预测 y y y)。给定一个训练数据集 { x i , y i } i = 1 I \{ {x_i,y_i}\}^I_{i=1} { xi,yi}i=1I,我们可以定义一个最小二乘损失函数 L [ ϕ ] L[\phi] L[ϕ],用它来评估对于任意参数值 ϕ \phi ϕ,模型描述该数据集的效果。为了训练这个模型,我们要找出能够最小化这个损失的参数值 ϕ ^ \hat \phi ϕ^。
图 3.1 整流线性单元 (Rectified Linear Unit, ReLU)。这种激活函数在输入小于零时输出为零,否则保持输入值不变。简而言之,它将所有负数输入值变为零。需要注意的是,虽然有许多其他激活函数可供选择(参见图 3.13),但 ReLU 由于其简单易懂,成为最常用的选择。
图 3.2 由方程 3.1 定义的函数族。a-c) 展示了三种不同参数 $\phi$ 的选择下的函数。在这些函数中,输入与输出的关系均为分段线性。不过,各个拐点的位置、拐点间线段的斜率,以及整体高度各不相同。
3.1.1 神经网络直观理解
事实上,方程 3.1 描述了一个连续分段线性函数族(见图 3.2),这个函数族最多包含四个线性区域。下面我们解析这个方程,阐释它是如何描绘出这样一个函数族的。为了便于理解,我们将这个函数拆分为两个部分。首先,我们定义几个中间量:
h 1 = a [ θ 10 + θ 11 x ] h 2 = a [ θ 20 + θ 21 x ] h 3 = a [ θ 30 + θ 31 x ] (3.3) \begin{align} h1 = a[\theta_{10} + \theta_{11}x] \\ h2 = a[\theta_{20} + \theta_{21}x] \\ h3 = a[\theta_{30} + \theta_{31}x] \end{align} \tag{3.3} h1=a[θ10+θ11x]h2=a[θ20+θ21x]h3=a[