PRML Chapter 05 Neural Networks

PRML Chapter 05 Neural Networks


《PRML》第三章和第四章提到的线性回归模型和线性分类模型,都采用了固定的基函数形式,这些模型具有一些有用的分析性质和计算性质,然而实际应用中往往会遇到维数灾难的问题,模型的复杂度往往会随着输入向量的维度 D D D而增长,导致模型不再可用,因此,神经网络的提出即为解决这一问题。

Feed-forward Network Functions


解决维数灾难的问题一般有两种思路,

  • 首先定义以训练集数据点的数目为基函数数量,然后通过训练过程选择其基函数全集的一个子集作为模型结果,这可以被看作为一种自顶向下的方法。这一方案的典型代表是支持向量机。
  • 首先固定基函数的数量,但是允许基函数可调节,也就是说基函数的数量固定,但是基函数的形式不固定、可调节。这一方案的典型代表是神经网络。

由此,我们知道神经网络框架的策略,即采用与线性回归、分类一致的固定基函数数量策略,并使得基函数可以通过学习得到任意形式。后者为与线性回归、分类模型最大的区别,也是神经网络能够近似函数空间中绝大多数函数的能力来源。

在回归的线性模型与分类的线性模型中,他们基于固定的非线性基函数 ϕ j ( x ) \phi_j(\boldsymbol{x}) ϕj(x),形式为,

(5.1) y ( x , ω ) = f ( ∑ j = 1 M ω j ϕ j ( x ) ) y(\boldsymbol{x},\boldsymbol{\omega})=f\left ( \sum_{j=1}^M \omega_j\phi_j(\boldsymbol{x}) \right ) \tag{5.1} y(x,ω)=f(j=1Mωjϕj(x))(5.1)

式(5.1)的函数 f f f在分类问题中是一个非线性激活函数,在回归问题中式一个恒等函数。我们的目标式推广这个模型,使得其基函数依赖于参数,在训练过程中发生动态变化。神经网络使用与式(5.1)形式相同的基函数,即每个基函数本身输入的线性组合的非线性函数,其中线性组合的系数是可调节的参数。

这就引起了基本的审计网络,它可以被描述为一系列的函数变换,首先,我们构造输入变量 x 1 , . . . , x D x_1,...,x_D x1,...,xD M M M个线性组合,形式为,

(5.2) a j = ∑ i = 1 D ω j i ( 1 ) x i + ω j 0 ( 1 ) a_j = \sum_{i=1}^D \omega_{ji}^{(1)}x_i+\omega_{j0}^{(1)} \tag{5.2} aj=i=1Dωji(1)xi+ωj0(1)(5.2)

其中 j = 1 , . . . , M j=1,...,M j=1,...,M,且商标 ( 1 ) (1) (1)表示对应的参数是神经网络的第一“层”。参数 ω j i ( 1 ) \omega_{ji}^{(1)} ωji(1)被定义为权(weight),把参数 w j 0 ( 1 ) w_{j0}^{(1)} wj0(1)称为偏置(bias)。 a j a_j aj被称为激活(activation),每个激活都使用一个可微的非线性激活函数(activation function) h h h进行变换, h h h被定义为logistic sigmoid函数或者双曲正切函数,可以得到,

(5.3) z j = h ( a j ) z_j = h(a_j) \tag{5.3} zj=h(aj)(5.3)

这样一来,式(5.3)所计算的量便可以被看作是与式(5.1)中的基函数输出量 ϕ ( x ) \phi(x) ϕ(x)相对应,因为二者都是输入空间的非线性函数。根据式(5.1),对式(5.3)的输出值再次进行线性组合和非线性变换(sigmoid或者softmax函数),

(5.4) a k = ∑ j = 1 M ω k j ( 2 ) z j + ω k 0 ( 2 ) a_k = \sum_{j=1}^M\omega_{kj}^{(2)}z_j+\omega_{k0}^{(2)} \tag{5.4} ak=j=1Mωkj(2)zj+ωk0(2)(5.4)

(5.5) y k = σ ( a k ) y_k = \sigma(a_k) \tag{5.5} yk=σ(ak)(5.5)

(5.6) σ ( a ) = 1 1 + e x p ( − a ) \sigma(a) = \frac{1}{1+exp(-a)} \tag{5.6} σ(a)=1+exp(a)1(5.6)

可以看到式(5.5)则对应了式(5.1)的左侧输出,而式(5.3)表示的 z j z_j zj对应了式(5.1)的基函数 ϕ ( x ) \phi(x) ϕ(x),与之不同的是, z j z_j zj由式(5.2)输入的线性组合所控制。这样的结构可以层层叠加下去,直到最后的输出层。如果将各个阶段进行结合,则可以得到整体的网络函数,

(5.7) y k ( x , ω ) = σ ( ∑ j = 1 M ω k j ( 2 ) h ( ∑ i = 1 D ω j i ( 1 ) x i + ω j 0 ( 1 ) ) + ω k 0 ( 2 ) ) y_k(\boldsymbol{x},\boldsymbol{\omega})=\sigma\left ( \sum_{j=1}^M\omega_{kj}^{(2)}h \left ( \sum_{i=1}^D\omega_{ji}^{(1)}x_i+\omega_{j0}^{(1)} \right ) + \omega_{k0}^{(2)} \right ) \tag{5.7} yk(x,ω)=σ(j=1Mωkj(2)h(i=1Dωji(1)xi+ωj0(1))+ωk0(2))(5.7)

如果考虑引入 x 0 = 1 x_0=1 x0=1,即式(5.2)可以被表示为,

(5.8) a j = ∑ i = 1 D ω j i ( 1 ) x i a_j = \sum_{i=1}^D \omega_{ji}^{(1)}x_i \tag{5.8} aj=i=1Dωji(1)xi(5.8)

则偏置可以被纳入求和公式,式(5.7)可以被简化为

(5.9) y k ( x , ω ) = σ ( ∑ j = 1 M ω k j ( 2 ) h ( ∑ i = 1 D ω j i ( 1 ) x i ) ) y_k(\boldsymbol{x},\boldsymbol{\omega})=\sigma\left ( \sum_{j=1}^M\omega_{kj}^{(2)}h \left ( \sum_{i=1}^D\omega_{ji}^{(1)}x_i \right ) \right ) \tag{5.9} yk(x,ω)=σ(j=1Mωkj(2)h(i=1Dωji(1)xi))(5.9)

式(5.9)即是前馈神经网络(feed-forward neural network),其规定结构中不能够存在环,即推理路径要求单独向前。
性质

  • 前馈神经网络的近似性质得到了广泛的研究,一种被广泛证实的观点是,

    一个带有线性输出的两层网络可以在任意精度下近似任何输入变量较少的连续函数,只要隐含但愿的数量足够多。这个结果对于一大类隐含单元激活函数都成立,但是不包括多项式函数。

  • 权空间对称性:前馈神经网络的一个性质是,对于多个不同的权向量 ω \omega ω的选择,网络可能产生同样的从输入到输出的映射函数。

    例如,我们考虑双曲正切面的激活函数,我们将某一隐含层单元的权值全部变号,考虑到双曲正切函数是一个奇函数,有 t a n h ( − a ) = − t a n h ( a ) tanh(-a)=-tanh(a) tanh(a)=tanh(a),这种变换可以通过改变所有从这个隐含单元到输出单元的权值的符号的方式进行精确补偿。

Network training


大多数的机器学习方法都是通过对误差函数进行最小化,从而完成对参数的学习,常用的误差函数有平方和误差函数、负对数似然误差函数等。在神经网络中,我们通过引入概率形式的表示,能够更好地一般化地表示神经网络模型的训练过程,并且进一步理解选择输出单元非线性函数以及选择误差函数的动机。

a. Regression Problem

考虑一元目标变量的回归问题,我们假定 t t t服从高斯分布,均值与 x \boldsymbol{x} x相关,由神经网络的输出确定,即

(5.10) p ( t ∣ x , ω ) = N ( t ∣ y ( x , ω ) , β − 1 ) p(t|\boldsymbol{x},\boldsymbol{\omega})=\mathcal{N}(t|y(\boldsymbol{x},\boldsymbol{\omega}),\beta^{-1}) \tag{5.10} p(tx,ω)=N(ty(x,ω),β1)(5.10)

给定一个由 N N N个独立同分布的观测组成的数据集 X = { x 1 , . . . , x N } \boldsymbol{X}=\{\boldsymbol{x}_1,...,\boldsymbol{x}_N\} X={x1,...,xN},以及对应的目标值 t = { t 1 , . . . , t N } \textbf{t}=\{t_1,...,t_N \} t={t1,...,tN},我们可以构造式(5.10)对应的似然函数,

(5.11) p ( t ∣ X , ω , β ) = ∏ n = 1 N p ( t n ∣ x n , ω , β ) p(\textbf{t}|\boldsymbol{X}, \boldsymbol{\omega}, \beta)=\prod_{n=1}^N p(t_n | \boldsymbol{x}_n,\boldsymbol{\omega},\beta) \tag{5.11} p(tX,ω,β)=n=1Np(tnxn,ω,β)(5.11)

考虑其负对数似然作为误差函数,

(5.12) β 2 ∑ n = 1 N { y ( x , ω ) − t n } 2 − N 2 l n β + N 2 l n ( 2 π ) \frac{\beta}{2}\sum_{n=1}^N\{ y(\boldsymbol{x},\boldsymbol{\omega}) - t_n \}^2 -\frac{N}{2}ln \beta + \frac{N}{2}ln(2\pi) \tag{5.12} 2βn=1N{y(x,ω)tn}22Nlnβ+2Nln(2π)(5.12)

在神经网络的文献中,一般使用的是最小化误差函数而不是最大化似然函数,尽管这两者在大多数条件下等价,因此为了遵循惯例,《PRML》中使用了前者,定义误差函数为,

(5.13) E ( ω ) = 1 2 ∑ n = 1 N { y ( x n , ω ) − t n } E(\boldsymbol{\omega}) = \frac{1}{2}\sum_{n=1}^N \{ y(\boldsymbol{x}_n, \boldsymbol{\omega})-t_n \} \tag{5.13} E(ω)=21n=1N{y(xn,ω)tn}(5.13)

式(5.13)是式(5.12)去除了相加的相乘的常数项的结果。一般地,通过最小化式(5.13)可以得到参数 ω \boldsymbol{\omega} ω的最优值 ω M L \boldsymbol{\omega}_{ML} ωML,然而,由于神经网络函数 y ( x n , ω ) y(\boldsymbol{x}_n, \boldsymbol{\omega}) y(xn,ω)的非线性的性质导致误差函数 E ( ω ) E(\boldsymbol{\omega}) E(ω)不是凸函数,因此在实际应用中可能寻找得到的并不是似然函数的全局最大值,对应误差函数的全局最小值。因此,我们需要使用下一节提到误差反向传播来解决这一问题。在这里,如果考虑局部最小值得到 ω M L \boldsymbol{\omega}_{ML} ωML,则 β \beta β为,

(5.14) 1 β M L = 1 N ∑ n = 1 N { y ( x n , ω M L ) − t n } 2 \frac{1}{\beta_{ML}} = \frac{1}{N}\sum_{n=1}^N\{ y(\boldsymbol{x}_n, \boldsymbol{\omega}_{ML}) -t_n \}^2 \tag{5.14} βML1=N1n=1N{y(xn,ωML)tn}2(5.14)

类似地,对于多元目标变量的回归问题,有

(5.15) p ( t ∣ x , ω ) = N ( t ∣ y ( x , ω ) , β − 1 I ) p(\boldsymbol{t}|\boldsymbol{x}, \boldsymbol{\omega}) = \mathcal{N}(\boldsymbol{t}|\boldsymbol{y}(\boldsymbol{x}, \boldsymbol{\omega}), \beta^{-1}\boldsymbol{I}) \tag{5.15} p(tx,ω)=N(ty(x,ω),β1I)(5.15)

(5.16) 1 β M L = 1 N K ∑ n = 1 N ∣ ∣ y ( x n , ω M L ) − t n ∣ ∣ 2 \frac{1}{\beta_{ML}} = \frac{1}{NK} \sum_{n=1}^N || \boldsymbol{y}(\boldsymbol{x}_n,\boldsymbol{\omega}_{ML}) - t_n|| ^2 \tag{5.16} βML1=NK1n=1Ny(xn,ωML)tn2(5.16)

考虑式(5.13)的误差函数,我们可以得到其与输出单元激活函数 a k a_k ak的关系,由于 y k = σ ( a k ) y_k = \sigma(a_k) yk=σ(ak),所以可以推导得出如下有用的性质,

(5.17) ∂ E ∂ a k = ∂ E ∂ y k ∂ y k ∂ a k = ( y k − t k ) y k ′ \frac{\partial E}{\partial a_k} = \frac{\partial E}{\partial y_k}\frac{\partial y_k}{\partial a_k} = (y_k - t_k)y_k' \tag{5.17} akE=ykEakyk=(yktk)yk(5.17)

因此有,

(5.18) ∂ E ∂ a k = y k − t k \frac{\partial E}{\partial a_k} = y_k - t_k \tag{5.18} akE=yktk(5.18)

式(5.18)在误差反向传播的推导中起着关键作用。

b. Classification Problem

考虑二分类的情形,我们有单一目标变量 t t t,当 t = 1 t=1 t=1时表示类别 C 1 \mathcal{C_1} C1,当 t = 0 t=0 t=0时表示类别 C 2 \mathcal{C}_2 C2。与第四章中分类模型一致,我们使用logistic sigmoid作为激活函数,从而有 0 ≤ y ( x , ω ) ≤ 1 0 \leq y(\boldsymbol{x},\boldsymbol{\omega}) \leq 1 0y(x,ω)1,我们可以把 y ( x , ω ) y(\boldsymbol{x},\boldsymbol{\omega}) y(x,ω)表示为条件概率 y ( C 1 ∣ x ) y(\mathcal{C}_1|\boldsymbol{x}) y(C1x),则 y ( C 2 ∣ x ) y(\mathcal{C}_2|\boldsymbol{x}) y(C2x) 1 − y ( x , ω ) 1-y(\boldsymbol{x},\boldsymbol{\omega}) 1y(x,ω)。如果给定了输入,则目标变量的条件概率分布可以被表示为伯努利分布,形式为,

(5.19) y ( t ∣ x , ω ) = y ( x , ω ) t { 1 − y ( x , ω ) } 1 − t y(t|\boldsymbol{x},\boldsymbol{\omega}) = y(\boldsymbol{x},\boldsymbol{\omega})^t\{ 1-y(\boldsymbol{x},\boldsymbol{\omega}) \}^{1-t} \tag{5.19} y(tx,ω)=y(x,ω)t{1y(x,ω)}1t(5.19)

考虑其负对数形式作为误差函数有,

(5.20) E ( ω ) = − ∑ n = 1 N { t n l n y n + ( 1 + t n ) l n ( 1 − y n ) } E(\boldsymbol{\omega}) = -\sum_{n=1}^N \{ t_n lny_n + (1+t_n)ln(1-y_n) \} \tag{5.20} E(ω)=n=1N{tnlnyn+(1+tn)ln(1yn)}(5.20)

对于标准的多分类问题,其中每个输入被分到 K K K个互斥的类别中,二元目标变量 t k ∈ { 0 , 1 } t_k \in \{0,1\} tk{0,1}使用“1-of-K”表达方式来表示类比啊,从而 y k ( x , ω ) = p ( t k = 1 ∣ x ) y_k(\boldsymbol{x},\boldsymbol{\omega})=p(t_k=1|\boldsymbol{x}) yk(x,ω)=p(tk=1x),因此误差函数为,

(5.21) E ( ω ) = − ∑ n = 1 N ∑ k = 1 K t n k l n y k ( x n , ω ) E(\boldsymbol{\omega}) = -\sum_{n=1}^N\sum_{k=1}^K t_{nk}ln y_k(\boldsymbol{x}_n,\boldsymbol{\omega}) \tag{5.21} E(ω)=n=1Nk=1Ktnklnyk(xn,ω)(5.21)

对于多分类,输出单元的激活函数采用softmax函数,

(5.22) y k ( x , ω ) = e x p ( a k ( x , ω ) ) ∑ l e x p ( a k ( x , ω ) ) y_k(\boldsymbol{x},\boldsymbol{\omega}) = \frac{exp(a_k(\boldsymbol{x},\boldsymbol{\omega}))}{\sum_lexp(a_k(\boldsymbol{x},\boldsymbol{\omega}))} \tag{5.22} yk(x,ω)=lexp(ak(x,ω))exp(ak(x,ω))(5.22)

无论是回归问题还是分类问题,其误差函数关于激活的导数都有形如式(5.18)的形式。

c. Parameter optimization

与线性模型一致的是,神经网络模型也需要寻找得到误差函数的最小值,但与之不同的是,由于误差函数与权值和偏置参数是高度非线性的,因此权值空间中会有多梯度为零的点,即存在多个局部最小值点,而这些点并不一定是全局最小值点。

对于神经网络来说,可能没有必要找到全局最小值点(通常也并不知道是否找到了全局最小值),而是通过比较几个局部极小值就能够得到足够好的解。同时,由于无法找到误差函数梯度为零的解析解,通常会采用迭代的方法处理权值,

(5.23) ω ( τ + 1 ) = ω ( τ ) + Δ ω ( τ ) \boldsymbol{\omega}^{(\tau+1)} = \boldsymbol{\omega}^{(\tau)}+\Delta \omega^{(\tau)} \tag{5.23} ω(τ+1)=ω(τ)+Δω(τ)(5.23)

d. Local quadratic approximation

局部二次近似(local quadratic approximation)的主要目的是利用权值参数的二次导数,对其一阶导梯度的变化情况进行修正。一般地,对于下降步为 ϵ \epsilon ϵ,如果二阶导数是负数,函数曲线向下凹陷(向上凸出),则代价函数将下降得比 ϵ \epsilon ϵ多;如果二阶导数是正数,函数曲线是向上凹陷(向下凸出),则代价函数将下降得比 ϵ \epsilon ϵ少。

因此,我们可以利用二阶导数预期一个梯度下降步骤能表现得多好。考虑误差函数 E ( ω ) E(\boldsymbol{\omega}) E(ω)在权空间某点 ω ^ \hat{\boldsymbol{\omega}} ω^处的泰勒展开式为,

(5.24) E ( ω ) ≃ E ( ω ^ ) + ( ω − ω ^ ) T g + 1 2 ( ω − ω ^ ) T H ( ω − ω ^ ) E(\boldsymbol{\omega}) \simeq E(\hat{\boldsymbol{\omega}})+(\boldsymbol{\omega}-\hat{\boldsymbol{\omega}})^T\boldsymbol{g}+\frac{1}{2}(\boldsymbol{\omega}-\hat{\boldsymbol{\omega}})^T\boldsymbol{H}(\boldsymbol{\omega}-\hat{\boldsymbol{\omega}}) \tag{5.24} E(ω)E(ω^)+(ωω^)Tg+21(ωω^)TH(ωω^)(5.24)

其中 g \boldsymbol{g} g为误差函数的梯度, H \boldsymbol{H} H为误差函数在 ω ^ \hat{\boldsymbol{\omega}} ω^处的Hessian矩阵。当新的点 ω = ω − ϵ g \boldsymbol{\omega}=\boldsymbol{\omega}-\epsilon \boldsymbol{g} ω=ωϵg时,则式(5.24)可以变为,

(5.25) E ( ω − ϵ g ) = E ( ω ^ ) − ϵ g T g + 1 2 ϵ 2 g T H g E(\boldsymbol{\omega}-\epsilon \boldsymbol{g}) = E(\hat{\boldsymbol{\omega}})-\epsilon \boldsymbol{g}^T\boldsymbol{g}+\frac{1}{2}\epsilon^2 \boldsymbol{g}^T \boldsymbol{H} \boldsymbol{g} \tag{5.25} E(ωϵg)=E(ω^)ϵgTg+21ϵ2gTHg(5.25)

从式(5.25)可以看出,等式右边第一项表示函数的初始值,第二项为函数斜率导致的预期改善,第三项表示函数曲率导致的校正。

f. Gradient descent optimization

使用梯度信息进行模型迭代训练的一个好处是,能够使得训练的计算复杂度降低一个数量级。考虑不使用式(5.24)的误差函数,每一次计算,我们都需要考虑 W ( W + 3 ) 2 \frac{W(W+3)}{2} 2W(W+3)个独立元素,

(5.26) ( W 2 2 − W ) + W = W ( W + 3 ) 2 (\frac{W^2}{2}-W) + W = \frac{W(W+3)}{2} \tag{5.26} (2W2W)+W=2W(W+3)(5.26)

上式中, W W W表示 ω \boldsymbol{\omega} ω的维度(即网络中所有可调节参数的综述)。可以看到,模型训练依赖于 O ( W 2 ) O(W^2) O(W2)个参数,因此,我们需要进行 O ( W 2 ) O(W^2) O(W2)个步骤,每次计算需要 O ( W ) O(W) O(W)个步骤,即计算复杂度为 O ( W 3 ) O(W^3) O(W3)

考虑使用梯度更新的方式计算式(5.24),则对于每次计算梯度 ∇ E \nabla E E都会带来 W W W条信息,因此需要计算 O ( W ) O(W) O(W)次梯度,通过使用误差反向传播算法,每个这样的计算需要 O ( W ) O(W) O(W)步,因此计算复杂度为 O ( W 2 ) O(W^2) O(W2)

梯度下降中,每次权值更新都是负梯度方向上的一次小的移动,即

(5.27) ω ( τ + 1 ) = ω τ − η ∇ E ( ω ( τ ) ) \boldsymbol{\omega}^{(\tau+1)}=\boldsymbol{\omega}^{\tau}-\eta \nabla E(\boldsymbol{\omega}^{(\tau)}) \tag{5.27} ω(τ+1)=ωτηE(ω(τ))(5.27)

其中 η > 0 \eta > 0 η>0被称为学习率(learning rate)。每次更新权值后,梯度会使用新的权值向量不断重复更新直至收敛。可以看到,误差函数是关于训练集定义的,因此为了计算 ∇ E \nabla E E,每一步都需要处理整个数据集,当数据集很大的时候,这会造成速度过慢的问题,

因此,一般采用的是批处理技术,即每一次仅仅使用训练集的一部分对权值进行更新,这一方法更加迅速且更加鲁棒。另一种更加适应在线训练的梯度下降被称为顺序梯度下降,能够在每一次利用一个单独的数据点进行梯度更新,其误差函数和更新式由(5.28)和(5.29)给出。

(5.28) E ( ω ) = ∑ n = 1 N E n ( ω ) E(\boldsymbol{\omega}) = \sum_{n=1}^N E_n(\boldsymbol{\omega}) \tag{5.28} E(ω)=n=1NEn(ω)(5.28)

(5.29) ω ( τ + 1 ) = ω ( τ ) − η ∇ E n ( ω ( τ ) ) \boldsymbol{\omega}^{(\tau + 1)} = \boldsymbol{\omega}^{(\tau)} - \eta \nabla E_n(\boldsymbol{\omega}^{(\tau)}) \tag{5.29} ω(τ+1)=ω(τ)ηEn(ω(τ))(5.29)

Error Backpropagation


大部分模型的训练算法涉及到一个迭代的步骤用于误差函数的最小化,通常这一迭代可以通过梯度信息方便的得到,但由于神经网络复杂的多层结构,我们必须使用偏导数的链式法则反向对各层的权值进行更新。一般地,我们可以将这样的迭代过程分为两个不同的阶段,

  • 第一阶段:计算误差函数关于权值的导数;
  • 第二阶段:第一阶段的导数用于计算权值的调整量。

a. Evaluation of error-function derivatives

在一个一般的前馈神经网络中,每个单元都会计算输入的一个加权和,形式为,

(5.28) a j = ∑ i ω j i z i a_j = \sum_i \omega_{ji}z_i \tag{5.28} aj=iωjizi(5.28)

其中 z i z_i zi是一个单元的激活,或者是输入,它向单元 j j j发送一个链接, w j i w_{ji} wji是与这个链接关联的权值。通常我们还会使用激活函数 h h h对式(5.28)中进行变换传递到下一层作为新的激活,

(5.29) z j = h ( a j ) z_j = h(a_j) \tag{5.29} zj=h(aj)(5.29)

因此,当我们需要计算误差函数关于权值的导数时,利用偏导数的链式法则可以得到,

(5.30) ∂ E ∂ w j i = ∂ E ∂ a j ∂ a j ∂ w j i \frac{\partial E}{\partial w_{ji}} = \frac{\partial E}{\partial a_j}\frac{\partial a_j}{\partial w_{ji}} \tag{5.30} wjiE=ajEwjiaj(5.30)

现在,我们引入记号 δ j \delta_j δj

(5.31) δ j ≡ ∂ E ∂ a j \delta_j \equiv \frac{\partial E}{\partial a_j} \tag{5.31} δjajE(5.31)

其中 δ \delta δ通常被称为误差,使用公式(5.28)可以得到,

(5.32) ∂ a j ∂ w j i = z i \frac{\partial a_j}{\partial w_{ji}} = z_i \tag{5.32} wjiaj=zi(5.32)

因此,式(5.30)可以被简化为,

(5.33) ∂ E ∂ w j i = δ j z i \frac{\partial E}{\partial w_{ji}} = \delta_j z_i \tag{5.33} wjiE=δjzi(5.33)

从公式(5.33)的形式,可以看出,要找的导数可以通过简单地权值输出单元的 δ \delta δ值,与权值输入端的 z z z值相乘的方式得到(对于偏执的情形, z = 1 z=1 z=1)。式(5.33)仅仅只针对了一个隐含层单元的一条输入,考虑其所有输入的情况,可以计算得到,

(5.34) δ j ≡ ∂ E ∂ a j = ∑ k ∂ E ∂ a k ∂ a k ∂ a j = h ′ ( a j ) ∑ k w k j δ k \delta_j \equiv \frac{\partial E}{\partial a_j} = \sum_k \frac{\partial E}{\partial a_k} \frac{\partial a_k}{\partial a_j} = h'(a_j) \sum_k w_{kj}\delta_k \tag{5.34} δjajE=kakEajak=h(aj)kwkjδk(5.34)

式(5.34)中的求和式的作用对象是所有向单元 j j j发送链接的单元 k k k。我们知道激活函数的返函数被定义为链接函数,当我们使用标准的链接函数作为输出单元的激活函数时,对于输出单元,有形如式(5.18)的定义,

(5.35) δ k = y k − t k \delta_k = y_k - t_k \tag{5.35} δk=yktk(5.35)

综上,误差反向传播算法可以被归纳为,

反向传播算法
1、 对于网络的一个输入向量,利用(5.28)和(5.29)进行正向传播,找到所有的隐含单元和输出单元的激活;
2、使用公式(5.35)计算所有的输出单元的 δ k \delta_k δk
3、使用公式(5.34)反向传播 δ \delta δ,获得网络中所有隐含单元的 δ j \delta_j δj
4、使用公式(5.33)计算各个权值的导数

b. Jacobian matrix & Hessian matrix

雅可比矩阵(Jacobian matrix)被定义为输出关于输入的函数,

(5.36) J k i ≡ ∂ y k ∂ x i J_{ki} \equiv \frac{\partial y_k}{\partial x_i} \tag{5.36} Jkixiyk(5.36)

可以看到,雅可比矩阵是输出关于输入的一阶导数形式,其度量了输出对于每个输入变量的改变的敏感性,因此,可以利用这一矩阵,允许输入的任意误差 Δ x i \Delta x_i Δxi在训练过的网络中传播,从而评估其对于输出误差 Δ y k \Delta y_k Δyk的贡献,

(5.37) Δ y k ≃ ∑ i ∂ y k ∂ x i Δ x i \Delta y_k \simeq \sum_i \frac{\partial y_k}{\partial x_i} \Delta x_i \tag{5.37} ΔykixiykΔxi(5.37)

海森矩阵(Hessian matrix)被定义为输出关于输入的二阶导数,对于误差函数和其权值,Hessian矩阵被定义为,

(5.38) ∂ 2 E ∂ w j i ∂ w l k \frac{\partial^2 E}{\partial w_{ji}\partial w_{lk}} \tag{5.38} wjiwlk2E(5.38)

Hessian矩阵在神经网络中具有一些重要的作用,包括:

  • 一些用来训练神经网络的非线性最优化算法是基于误差曲面的二阶性质的,这些性质由Hessian矩阵控制;
  • 对于训练数据的微小改变,Hessian矩阵构成了快速重新训练钱亏神经网络的基础;
  • Hessian矩阵的逆矩阵用来鉴别神经网络中最不重要的权值,这是网络“剪枝”算法的一部分;
  • Hessian矩阵是贝叶斯神经网络的拉普拉斯近似的核心,它的逆矩阵用来确定训练过的神经网络的预测分布,它的特征值确定了超参数的值,它的行列式用来计算模型证据

Regularization in Neural Networks


与一般的线性模型类似,神经网络也会出现过拟合的情况,一般地,考虑到输入输出的单元数量通常由数据集决定,因此,我们的正则化策略也主要针对隐含单元的数量 M M M。最简单的正则化策略是给权值天价一个二次的正则化项,即误差函数变为,

(5.39) E ~ ( ω ) = E ( ω ) + λ 2 ω T ω \tilde{E}(\boldsymbol{\omega})=E(\boldsymbol{\omega})+\frac{\lambda}{2}\boldsymbol{\omega}^T\boldsymbol{\omega} \tag{5.39} E~(ω)=E(ω)+2λωTω(5.39)

与之前第三章的类似式(5.39)被称为权值衰减(weight decay), λ \lambda λ被称为正则化系数。

a. Consistent Gaussian priors

相容性要求(Consistent requirement)指经过线性变换后的数据集训练得到的网络,与原始数据集训练得到的网络等价,差别仅仅在于给出权值的线性变换。很显然,相容性要求很重要,如果正则化项不满足相容性要求,模型就会倾向于选择某个解而忽略另外的等价的解。

显然,简单的权值衰减(5.39)不满足这一相容性要求,因为其把所有的权值和偏置同等对待。于是,我们需要寻找一个正则化项,他对于权值重新缩放不变对于偏置的平移不变,即

(5.40) λ 1 2 ∑ ω ∈ W 1 ω 2 + λ 2 2 ∑ ω ∈ W 2 ω 2 \frac{\lambda_1}{2}\sum_{\omega \in \mathcal{W}_1}\omega^2 + \frac{\lambda_2}{2}\sum_{\omega \in \mathcal{W}_2}\omega^2 \tag{5.40} 2λ1ωW1ω2+2λ2ωW2ω2(5.40)

其中 W 1 \mathcal{W}_1 W1表示第一层的权值集合, W 2 \mathcal{W}_2 W2表示第二层的权值集合,偏置未出现在求和式中。

b. Early stopping

另一种控制网络的复杂度的正则化方法是早停止(early stopping)。在模型训练中,一个普遍的现象是,对于验证集上度量的误差,通常首先见效,接下来随着过拟合的发生而增大。早停止的思想即是在过拟合前停止模型的训练。

c. Invariances

不变性(invariances)是一种很符合直觉的策略,例如,一幅图像的类别应该与其位置无关,即无论是旋转还是平移都不能影响其分类结果,这被称作平移不变形(translation invariance);也不应该因为其大小而影响其分类结果,这被称为缩放不变性(scale invariance)。我们的模型应该不受这种输入空间变换的影响,一般地,我们有四种主要的策略实现这一点,

  • 通过给定要求的不变性变换,对数据集进行相应的变换,复制扩充数据集进行训练;
  • 在误差函数上加上一个正则化项,从而惩罚输入变换时,输出发生的改变。这一思路的典型代表是切线传播(tangent propagation);
  • 通过抽取在要求的变换下不发生改变的特征,不变性被整合到了预处理过程中。任何后续的使用这些特征作为输入的系统就会具有不变性;
  • 通过把不变性整合到神经网络的构建过程中,或者整合到核函数中,以实现不变性。这一思路的典型代表时卷积神经网络。

d. Tangent propagation

切线传播(tangent propagation)是一种典型的通过正则化项来实现模型不变性的方法,通过惩罚输入变化时,输出发生的改变,以实现不变性。考虑对于特定的输入 x n x_n xn,定义其上的变换由单一参数 ξ \xi ξ控制,该变换作用于 x n x_n xn产生向量 s ( x n , ξ ) s(x_n,\xi) s(xn,ξ),且 s ( x , 0 ) = x s(x,0)=x s(x,0)=x。这样,我们可以定义其变换后输入空间为 M \mathcal{M} M,该空间上的在点 x n x_n xn处的切线向量为,

(5.41) τ n = ∂ s ( x n , ξ ) ∂ ξ \tau_n=\frac{\partial s(x_n,\xi)}{\partial \xi} \tag{5.41} τn=ξs(xn,ξ)(5.41)

对于输入向量进行变换之后,网络的输出通常会发生变化,输出 k k k关于 ξ \xi ξ的导数为,

(5.42) ∂ y k ∂ ξ = ∑ i = 1 D ∂ y k ∂ x i ∂ x i ∂ ξ = ∑ i = 1 D J k i τ i \frac{\partial y_k}{\partial \xi} = \sum_{i=1}^D \frac{\partial y_k}{\partial x_i}\frac{\partial x_i}{\partial \xi}=\sum_{i=1}^D J_{ki}\tau_i \tag{5.42} ξyk=i=1Dxiykξxi=i=1DJkiτi(5.42)

其中 J k i J_{ki} Jki表示Jacobian矩阵 J J J的第 ( k , i ) (k,i) (k,i)个元素。公式(5.42)给出了用于修改标准的误差函数,使得数据点的领域之内具有不变性,通过给原始的误差函数 E E E增加一个正则化函数 Ω \Omega Ω,得到新的误差函数,

(5.43) E ~ = E + λ Ω \tilde{E} = E + \lambda \Omega \tag{5.43} E~=E+λΩ(5.43)

其中 λ \lambda λ为正则化系数,且

(5.44) Ω = 1 2 ∑ n ∑ k ( ∂ y n k ∂ ξ ) 2 = 1 2 ∑ n ∑ k ( ∑ i = 1 D J n k i τ n i ) 2 \Omega = \frac{1}{2}\sum_n\sum_k \left( \frac{\partial y_{nk}}{\partial \xi} \right)^2=\frac{1}{2}\sum_n\sum_k\left( \sum_{i=1}^D J_{nki}\tau_{ni} \right)^2 \tag{5.44} Ω=21nk(ξynk)2=21nk(i=1DJnkiτni)2(5.44)

e. Convolutional neural network

卷积神经网络(convolutional neural network, CNN)已经被广泛的运用于图像处理领域,并且已经取得了非常优秀的成果。卷积神经网络考虑一个关键性质,即距离较近的像素的相关性要远大于距离较远的像素的相关性,因此卷及神经网络提供了三种技术将不变性与模型结构相结合,即局部接受野(local respected field)、权值共享(weight sharing)、下采样(subsampling)。

  • 局部感受野:在前馈神经网络中,我们将输入与隐藏层的所有节点进行全链接,在图像识别领域,由于像素过多,使用全链接往往训练时间冗长。因此,考虑到图像的局部性质,局部感受野使用非全链接的形式,使得图像的局部与隐藏层节点进行链接,这样就大大降低了所需的参数数量;
  • 权值共享:在前馈神经网络中,由于采用输入到输出的全链接,因此,参数众多服从 O ( n 2 ) O(n^2) O(n2),卷积神经网络中使用局部链接,并且对于单一隐藏层的所有节点,局部感受野的权值共享;
  • 下采样:卷积单元的输出构成了网络的下采样层的输入,其目的是进一步提炼信息,降低维度。例如,对于卷机单元的输出,考虑2 * 2单元的区域使用平均下采样或最大下采样,使得信息更加抽象,更加精炼。

在CNN中,还有一个较为重要的概念特征图(feature map),其在只有二维时与局部接受野一致,能够对图像的局部进行特征提取,然而图像中往往具有多个特征,因此就会构成多个特征图,即形成了三维的特征图,用于提取多个特征。

f. Soft weight sharing

在CNN的实际应用中,权值共享通过对权值分组,每一组内的权值相等实现权值共享,这是一种只适用于限制的形式可以事先确定问题的方法。因此,对于限制不能事先确定的方法,我们需要采取软权值共享(soft weight sharing)的策略,即分组内的权值倾向于相等。

在CNN中,对于一层隐藏层,权值共享规定,对于每一个节点的所有局部链接的参数都相等;软权值共享规定,对于每一个节点的所有局部链接的参数近似相等;前馈审计网络规定,每一个节点的全链接都是相互独立的。

Mixture Density Networks


混合密度网络(mixture density networks)的主要目的解决多对一问题的逆问题,即一对多的多峰分布问题。一般地,我们引入混合高斯分布的多峰性质,可以得到,

(5.45) p ( t ∣ x ) = ∑ k = 1 K π k ( x ) N ( t ∣ μ k ( x ) , σ k 2 ( x ) I ) p(\boldsymbol{t}|\boldsymbol{x})=\sum_{k=1}^K \pi_k(\boldsymbol{x})\mathcal{N}(\boldsymbol{t}|\boldsymbol{\mu}_k(\boldsymbol{x}),\boldsymbol{\sigma}_k^2(\boldsymbol{x})\boldsymbol{I}) \tag{5.45} p(tx)=k=1Kπk(x)N(tμk(x),σk2(x)I)(5.45)

其中参数混合系数为 π k ( x ) \pi_k(\boldsymbol{x}) πk(x)、均值 μ k ( x ) \boldsymbol{\mu}_k(\boldsymbol{x}) μk(x)以及方差 σ k 2 ( x ) \boldsymbol{\sigma}_k^2(\boldsymbol{x}) σk2(x),这些参数控制了以 x \boldsymbol{x} x作为输入的神经网络的输出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值