机器学习笔记之前馈神经网络(四)反向传播算法[数学推导过程]

机器学习笔记之前馈神经网络——反向传播算法[数学推导过程]

  • 引言
    • 回顾:感知机算法
    • 非线性问题与多层感知机
    • 反向传播算法( BackPropagation,BP \text{BackPropagation,BP} BackPropagation,BP)
      • 场景构建
      • 求解各权重更新量
      • 图示描述反向传播过程
    • 总结

引言

上一节介绍了 M-P \text{M-P} M-P神经元模型,并介绍了感知机算法 ( Perceptron ) (\text{Perceptron}) (Perceptron)的参数调整过程。本节将介绍多层前馈神经网络,并介绍反向传播算法

回顾:感知机算法

关于感知机算法,它本质上是一个仅包含一个 M-P \text{M-P} M-P神经元的神经网络模型。以基本逻辑运算为例,它们对应感知机算法的网络模型表示如下:
需要注意的是,这里的 x 1 , x 2 x_1,x_2 x1,x2是输入层,它们均表示‘样本特征的随机变量’,因而它们仅是‘接收外部信号的载体’,并不是 M-P \text{M-P} M-P神经元模型。
机器学习笔记之前馈神经网络(四)反向传播算法[数学推导过程]_第1张图片
对应计算流程表示如下:
Y o u t = f ( W 1 ⋅ x 1 + W 2 ⋅ x 2 − θ ) \mathcal Y_{out} = f \left(\mathcal W_1 \cdot x_1 + \mathcal W_2 \cdot x_2 - \theta \right) Yout=f(W1x1+W2x2θ)
对于上述计算流程中的权重 W 1 , W 2 \mathcal W_1,\mathcal W_2 W1,W2阈值 θ \theta θ,可将阈值 θ \theta θ视作一个固定输入的哑结点( Dummy Node \text{Dummy Node} Dummy Node)与对应权重的线性组合,从而使学习过程统一为权重的学习过程
Y o u t = f ( W 1 ⋅ x 1 + W 2 ⋅ x 2 + W Dum ⋅ x Dum ⏟ Fixed ) \mathcal Y_{out} = f(\mathcal W_1 \cdot x_1 + \mathcal W_2 \cdot x_2 + \mathcal W_{\text{Dum}} \cdot \underbrace{x_{\text{Dum}}}_{\text{Fixed}}) Yout=f(W1x1+W2x2+WDumFixed xDum)
关于感知机算法权重学习过程的参数调整使用梯度下降法。针对逻辑计算,本质上是二分类问题。感知机算法关于策略的构建动机是策略驱动
{ L True ( W ) = ∑ ( x ( i ) , y ( i ) ) ∈ D y ^ ( i ) ( W T x ( i ) ) arg ⁡ max ⁡ W L True ( W ) { L False ( W ) = − ∑ ( x ( i ) , y ( i ) ) ∈ D y ( i ) ( W T x ( i ) ) arg ⁡ min ⁡ W L False ( W ) \begin{aligned} & \begin{cases} \mathcal L_{\text{True}}(\mathcal W) = \sum_{(x^{(i)},y^{(i)}) \in \mathcal D} \hat y^{(i)} \left(\mathcal W^Tx^{(i)}\right) \\ \mathop{\arg\max}\limits_{\mathcal W} \mathcal L_{\text{True}}(\mathcal W) \end{cases} \\ & \begin{cases} \mathcal L_{\text{False}}(\mathcal W) = -\sum_{(x^{(i)},y^{(i)}) \in \mathcal D} y^{(i)} \left(\mathcal W^Tx^{(i)}\right) \\ \mathop{\arg\min}\limits_{\mathcal W} \mathcal L_{\text{False}}(\mathcal W) \end{cases} \\ \end{aligned} LTrue(W)=(x(i),y(i))Dy^(i)(WTx(i))WargmaxLTrue(W) LFalse(W)=(x(i),y(i))Dy(i)(WTx(i))WargminLFalse(W)
关于感知机权重的调整过程可表示为:
W ( t + 1 ) ⇐ W ( t ) − η ⋅ ∇ W L ( W ) = W ( t ) − η ⋅ [ ∂ L False ( W ) ∂ W + ∂ L True ( W ) ∂ W ] = W ( t ) − η ⋅ ∑ ( x ( i ) , y ( i ) ) ∈ D ( y ^ ( i ) − y ( i ) ) x ( i ) = W ( t ) + η ⋅ ∑ ( x ( i ) , y ( i ) ) ∈ D ( y ( i ) − y ^ ( i ) ) x ( i ) \begin{aligned} \mathcal W^{(t+1)} & \Leftarrow \mathcal W^{(t)} - \eta \cdot \nabla_{\mathcal W} \mathcal L(\mathcal W) \\ & = \mathcal W^{(t)} - \eta \cdot \left[\frac{\partial \mathcal L_{\text{False}}(\mathcal W)}{\partial \mathcal W} + \frac{\partial \mathcal L_{\text{True}}(\mathcal W)}{\partial \mathcal W}\right] \\ & = \mathcal W^{(t)} - \eta \cdot \sum_{(x^{(i)},y^{(i)}) \in \mathcal D} \left(\hat y^{(i)} - y^{(i)}\right) x^{(i)} \\ & = \mathcal W^{(t)} + \eta \cdot \sum_{(x^{(i)},y^{(i)}) \in \mathcal D} \left(y^{(i)} - \hat y^{(i)}\right) x^{(i)} \end{aligned} W(t+1)W(t)ηWL(W)=W(t)η[WLFalse(W)+WLTrue(W)]=W(t)η(x(i),y(i))D(y^(i)y(i))x(i)=W(t)+η(x(i),y(i))D(y(i)y^(i))x(i)

其中 η \eta η表示学习率( Learning Rate \text{Learning Rate} Learning Rate)。关于迭代结束的标志:当关于样本特征 x ( i ) x^{(i)} x(i)的预测结果 y ^ ( i ) \hat y^{(i)} y^(i)真实标签 y ( i ) y^{(i)} y(i)相等,此时 W ( t ) ⇒ W ( t + 1 ) \mathcal W^{(t)} \Rightarrow \mathcal W^{(t+1)} W(t)W(t+1)不会发生变化,迭代可以停止。

非线性问题与多层感知机

在前馈神经网络——非线性问题中已经对解决非线性问题的方式进行了介绍,这里不再赘述。这里仅从 M-P \text{M-P} M-P神经元模型的角度重温一下处理亦或问题的多层感知机结构:
机器学习笔记之前馈神经网络(四)反向传播算法[数学推导过程]_第2张图片
很明显,这是一个两层感知机,其中包含输入层结点 x 1 , x 2 x_1,x_2 x1,x2输出层结点 Y \mathcal Y Y以及隐含层( Hidden Layer \text{Hidden Layer} Hidden Layer)结点 h 1 , h 2 h_1,h_2 h1,h2

相比于感知机算法,上述多层感知机明显由 3 3 3 M-P \text{M-P} M-P神经元模型嵌套组合的结构。并且神经元之间不存在同层连接,也不存在跨层连接。这种神经网络结构被称作多层前馈神经网络( Multi-Layer Feed-Forward Neural Network \text{Multi-Layer Feed-Forward Neural Network} Multi-Layer Feed-Forward Neural Network)。
以上述结构为例,输入层不算网络层数,因而上述结构被称作‘两层网络’。但如果将隐藏层、输出层区分开,也可以将其称作:单隐层网络。

上述模型需要学习的权重参数有:
Θ = { W 11 , W 12 , W 21 , W 22 , θ 1 , θ 2 , θ 3 } \Theta = \{\mathcal W_{11},\mathcal W_{12},\mathcal W_{21},\mathcal W_{22},\theta_1,\theta_2,\theta_3\} Θ={W11,W12,W21,W22,θ1,θ2,θ3}

反向传播算法( BackPropagation,BP \text{BackPropagation,BP} BackPropagation,BP)

虽然上述的神经网络结构能够处理非线性问题,但关于权重参数 Θ \Theta Θ学习过程,仅使用如错误驱动这种简单策略是不够的。
由于 M-P \text{M-P} M-P神经元的嵌套,使得网络结构变得更加复杂,仅通过随机调整参数去观察 y ( i ) − y ^ ( i ) y^{(i)} - \hat y^{(i)} y(i)y^(i)的计算代价是极大的。

针对于多层神经网络反向传播算法就是其中最杰出的代表。下面通过示例对梯度的反向传播过程进行描述。

场景构建

关于数据集合 D \mathcal D D的描述表示如下:
这里为了泛化起见,并没有将标签 y ( i ) ( i = 1 , 2 , ⋯   , N ) y^{(i)}(i=1,2,\cdots,N) y(i)(i=1,2,,N)约束为标量,而是一个包含 l l l个随机变量的向量形式。
D = { x ( i ) , y ( i ) } i = 1 N x ( i ) ∈ R d ; y ( i ) ∈ R l \mathcal D = \{x^{(i)},y^{(i)}\}_{i=1}^N \quad x^{(i)} \in \mathbb R^{d};y^{(i)} \in \mathbb R^l D={x(i),y(i)}i=1Nx(i)Rd;y(i)Rl
上述条件已经给出了输入层输出层的规模分别是 d , l d,l d,l,基于此构建一个含一个隐藏层的、隐藏层内神经元个数为 q q q单隐层前馈神经网络
机器学习笔记之前馈神经网络(四)反向传播算法[数学推导过程]_第3张图片

观察上图,除了输入层,隐藏层、输出层的结点均是 M-P \text{M-P} M-P神经元模型

  • 其中隐藏层神经元的阈值分别表示为: { γ 1 , γ 2 , ⋯   , γ q } \{\gamma_1,\gamma_2,\cdots,\gamma_q\} {γ1,γ2,,γq}输出层神经元的阈值分别表示为: { θ 1 , θ 2 , ⋯   , θ l } \{\theta_1,\theta_2,\cdots,\theta_l\} {θ1,θ2,,θl}
  • 输入层结点 { x 1 , x 2 , ⋯   , x d } \{x_1,x_2,\cdots,x_d\} {x1,x2,,xd}指向隐藏层 h h h个神经元 b h b_h bh权重分别表示为: { v 1 h , v 2 h , ⋯   , v d h } \{v_{1h},v_{2h},\cdots,v_{dh}\} {v1h,v2h,,vdh};同理,隐藏层神经元 { b 1 , b 2 , ⋯   , b q } \{b_1,b_2,\cdots,b_q\} {b1,b2,,bq}指向输出层 j j j个神经元 y j y_j yj权重分别表示为: { w 1 j , w 2 j , ⋯   , w q j } \{w_{1j},w_{2j},\cdots,w_{qj}\} {w1j,w2j,,wqj}
  • 关于隐藏层神经元 b h b_h bh接收到的输入 α h \alpha_h αh可表示为:
    α h = v 1 h ⋅ x 1 + ⋯ + v d h ⋅ x d = ∑ i = 1 d v i h ⋅ x i \alpha_h = v_{1h} \cdot x_1 + \cdots + v_{dh} \cdot x_d = \sum_{i=1}^d v_{ih} \cdot x_i αh=v1hx1++vdhxd=i=1dvihxi
  • 关于输出层神经元 y j y_j yj接收到的输入 β j \beta_j βj可表示为:
    β j = w 1 j ⋅ b 1 + ⋯ + w q j ⋅ b q = ∑ i = 1 q w i j ⋅ b i \beta_j = w_{1j} \cdot b_1 + \cdots + w_{qj} \cdot b_q = \sum_{i=1}^q w_{ij} \cdot b_i βj=w1jb1++wqjbq=i=1qwijbi

这里假设隐藏层、输出层神经元使用 Sigmoid \text{Sigmoid} Sigmoid函数作为激活函数。并以回归任务为例,针对某一具体样本 ( x ( k ) , y ( k ) ) ∈ D (x^{(k)},y^{(k)}) \in \mathcal D (x(k),y(k))D进行计算。

求解各权重更新量

针对具体样本 ( x ( k ) , y ( k ) ) (x^{(k)},y^{(k)}) (x(k),y(k)),将样本特征 x ( k ) = ( x 1 ( k ) , x 2 ( k ) , ⋯   , x d ( k ) ) T x^{(k)} = (x_1^{(k)},x_2^{(k)},\cdots,x_d^{(k)})^T x(k)=(x1(k),x2(k),,xd(k))T带入到神经网络中,从 M-P \text{M-P} M-P神经元的角度观察,对应神经网络的输出 y ^ ( k ) = ( y ^ 1 ( k ) , y ^ 2 ( k ) , ⋯   , y ^ l ( k ) ) T \hat y^{(k)} = (\hat y_1^{(k)},\hat y_2^{(k)},\cdots,\hat y_l^{(k)})^T y^(k)=(y^1(k),y^2(k),,y^l(k))T表示为:

  • 这里实际上描述的并不准确,因为 β j , θ j \beta_j,\theta_j βj,θj仅表示泛化的样本 x x x作为输入层的输入,对应的接收结果和阈值。如果针对真实样本 ( x ( k ) , y ( k ) ) (x^{(k)},y^{(k)}) (x(k),y(k)),应该写作 β j ( k ) , θ j ( k ) \beta_j^{(k)},\theta_j^{(k)} βj(k),θj(k),这里为了节约符号,直接用 β j , θ j \beta_j,\theta_j βj,θj替代。
  • 这里仅描述了神经元 y j y_j yj的输出信息。
    y ^ j ( k ) = f ( β j − θ j ) = f ( ∑ i = 1 q w i j ⋅ b i − θ j ) j = 1 , 2 , ⋯   , l \hat y_j^{(k)} = f(\beta_j - \theta_j) = f \left(\sum_{i=1}^q w_{ij} \cdot b_i - \theta_j\right) \quad j=1,2,\cdots,l y^j(k)=f(βjθj)=f(i=1qwijbiθj)j=1,2,,l

由于是回归任务,因而这里使用 均方误差( Mean-Square Error,MSE \text{Mean-Square Error,MSE} Mean-Square Error,MSE)来描述神经网络输出 y ^ ( k ) \hat y^{(k)} y^(k)真实标签 y ( k ) y^{(k)} y(k)之间的误差关系。关于 ( x ( k ) , y ( k ) ) (x^{(k)},y^{(k)}) (x(k),y(k))的误差结果 E ( k ) \mathcal E^{(k)} E(k)表示如下:

  • 这里由于只有 1 1 1个样本,均值部分 1 1 \frac{1}{1} 11就直接省略掉了。
  • 系数 1 2 \frac{1}{2} 21仅是为后续求导便利使用。对其求解梯度过程中,仅改变梯度大小,梯度方向不会发生变化。
    E ( k ) = 1 2 ( y ( k ) − y ^ ( k ) ) 2 = 1 2 ∑ j = 1 l ( y j ( k ) − y ^ j ( k ) ) 2 \begin{aligned} \mathcal E^{(k)} & = \frac{1}{2} (y^{(k)} - \hat y^{(k)})^2 \\ & = \frac{1}{2} \sum_{j=1}^l (y_j^{(k)} - \hat y_j^{(k)})^2 \end{aligned} E(k)=21(y(k)y^(k))2=21j=1l(yj(k)y^j(k))2

重新观察 y ^ ( k ) \hat y^{(k)} y^(k),想通过上述神经网络得到一个具体预测结果,需要学习的权重有:
这里说的权重,包含阈值。

  • 输入层隐藏层之间所有连接的权重信息:一共 q × d q \times d q×d个;
  • 隐藏层输出层之间所有连接的权重信息:一共 q × l q \times l q×l个;
  • 隐藏层自身的阈值数量: q q q个;
  • 输出层自身的阈值数量: l l l个;

总共包含 ( d + l + 1 ) × q + l (d + l + 1) \times q + l (d+l+1)×q+l权重需要学习。这里以输出层某神经元 y j y_j yj隐藏层某神经元 b h b_h bh之间的连接权重 W h j \mathcal W_{h_j} Whj为例,计算该权重的更新量
需要注意的是,该操作仅仅是梯度下降的操作,而不是反向传播算法。
{ W h j ( t + 1 ) = W h j ( t ) + △ W h j ( t ) △ W h j ( t ) = − η ⋅ ∂ E ( k ) ∂ W h j ( t ) \begin{cases} \mathcal W_{hj}^{(t+1)} = \mathcal W_{hj}^{(t)} + \triangle \mathcal W_{hj}^{(t)} \\ \triangle \mathcal W_{hj}^{(t)} = - \eta \cdot \frac{\partial \mathcal E^{(k)}}{\partial \mathcal W_{hj}^{(t)}} \end{cases} Whj(t+1)=Whj(t)+Whj(t)Whj(t)=ηWhj(t)E(k)

观察上图, W h j \mathcal W_{hj} Whj首先影响的是输出层的第 j j j M-P \text{M-P} M-P神经元 y j y_j yj,基于神经元 y j y_j yj接收到的输入 β j \beta_j βj,对应输出特征 y ^ j ( k ) \hat y_j^{(k)} y^j(k)。使用链式求导法则,将 ∂ E ( k ) ∂ W h j ( t ) \frac{\partial \mathcal E^{(k)}}{\partial \mathcal W_{hj}^{(t)}} Whj(t)E(k)表示为如下形式:
∂ E ( k ) ∂ W h j ( t ) = ∂ E ( k ) ∂ y ^ j ( k ) ⋅ ∂ y ^ j ( k ) ∂ β j ⋅ ∂ β j ∂ W h j ( t ) \frac{\partial \mathcal E^{(k)}}{\partial \mathcal W_{hj}^{(t)}} = \frac{\partial \mathcal E^{(k)}}{\partial \hat y_j^{(k)}} \cdot \frac{\partial \hat y_j^{(k)}}{\partial \beta_j} \cdot \frac{\partial \beta_j}{\partial \mathcal W_{hj}^{(t)}} Whj(t)E(k)=y^j(k)E(k)βjy^j(k)Whj(t)βj
插一句,由于激活函数 Sigmoid \text{Sigmoid} Sigmoid函数,关于它的导数可以表示为如下形式:
f ′ ( x ) = [ 1 1 + e − x ] ′ = 1 + e − x − 1 [ 1 + e − x ] 2 = 1 1 + e − x ⋅ [ 1 − 1 1 + e − x ] = f ( x ) ⋅ [ 1 − f ( x ) ] \begin{aligned} f'(x) & = \left[\frac{1}{1 + e^{-x}}\right]' \\ & = \frac{1 + e^{-x} - 1}{\left[1 + e^{-x}\right]^2} \\ & = \frac{1}{1 + e^{-x}} \cdot \left[1 - \frac{1}{1 + e^{-x}}\right] \\ & = f(x) \cdot [1 - f(x)] \end{aligned} f(x)=[1+ex1]=[1+ex]21+ex1=1+ex1[11+ex1]=f(x)[1f(x)]
因而关于链式求导法则中的各项表示如下:

  • 第一项 ∂ E ( k ) ∂ y ^ j ( k ) \begin{aligned}\frac{\partial \mathcal E^{(k)}}{\partial \hat y_j^{(k)}}\end{aligned} y^j(k)E(k)
    将不含 y ^ j ( k ) \hat y_j^{(k)} y^j(k)的项,视作常数。
    ∂ E ( k ) ∂ y ^ j ( k ) = ∂ ∂ y ^ j ( k ) [ 1 2 ∑ j = 1 l ( y j ( k ) − y ^ j ( k ) ) 2 ] = ∂ ∂ y ^ j ( k ) { 1 2 [ ∑ ≠ j l ( y j ( k ) − y ^ j ( k ) ) 2 ⏟ = 0 + ( y j ( k ) − y ^ j ( k ) ) 2 ] } = ∂ ∂ y ^ j ( k ) [ 1 2 ( y j ( k ) − y ^ j ( k ) ) 2 ] = − ( y j ( k ) − y ^ j ( k ) ) \begin{aligned} \frac{\partial \mathcal E^{(k)}}{\partial \hat y_j^{(k)}} & = \frac{\partial}{\partial \hat y_j^{(k)}} \left[\frac{1}{2} \sum_{j=1}^l \left(y_j^{(k)} - \hat y_j^{(k)}\right)^2\right] \\ & = \frac{\partial}{\partial \hat y_j^{(k)}} \left\{\frac{1}{2} \left[\underbrace{\sum_{\neq j}^l \left(y_j^{(k)} - \hat y_j^{(k)}\right)^2}_{=0} + \left(y_j^{(k)} - \hat y_j^{(k)}\right)^2\right]\right\} \\ & = \frac{\partial}{\partial \hat y_j^{(k)}} \left[\frac{1}{2} \left(y_j^{(k)} - \hat y_j^{(k)}\right)^2\right] \\ & = -(y_j^{(k)} - \hat y_j^{(k)}) \end{aligned} y^j(k)E(k)=y^j(k)[21j=1l(yj(k)y^j(k))2]=y^j(k) 21 =0 =jl(yj(k)y^j(k))2+(yj(k)y^j(k))2 =y^j(k)[21(yj(k)y^j(k))2]=(yj(k)y^j(k))
  • 第二项 ∂ y ^ j ( k ) ∂ β j \begin{aligned}\frac{\partial \hat y_j^{(k)}}{\partial \beta_j}\end{aligned} βjy^j(k)
    需要注意的点,不要将阈值忘掉,并且 y ^ j ( k ) = Sigmoid ( β j − θ j ) \hat y_j^{(k)} = \text{Sigmoid}(\beta_j - \theta_j) y^j(k)=Sigmoid(βjθj)
    ∂ y ^ j ( k ) ∂ β j = ∂ ∂ β j [ Sigmoid ( β j − θ j ) ] = y ^ j ( k ) ⋅ [ 1 − y ^ j ( k ) ] \begin{aligned} \frac{\partial \hat y_j^{(k)}}{\partial \beta_j} & = \frac{\partial}{\partial \beta_j} \left[\text{Sigmoid}(\beta_j - \theta_j)\right] \\ & = \hat y_j^{(k)} \cdot \left[1 - \hat y_j^{(k)}\right] \end{aligned} βjy^j(k)=βj[Sigmoid(βjθj)]=y^j(k)[1y^j(k)]
  • 第三项 ∂ β j ∂ W h j \begin{aligned}\frac{\partial \beta_j}{\partial \mathcal W_{hj}}\end{aligned} Whjβj。根据 β j \beta_j βj W h j \mathcal W_{hj} Whj之间的关系:
    其中只有一项 W h j ⋅ b h \mathcal W_{hj} \cdot b_h Whjbh W h j \mathcal W_{hj} Whj相关.
    β j = ∑ i = 1 q W i j ⋅ b i = W 1 j ⋅ b 1 + ⋯ + W h j ⋅ b h + ⋯ + W q j ⋅ b q \begin{aligned} \beta_j & = \sum_{i=1}^q \mathcal W_{ij} \cdot b_i \\ & = \mathcal W_{1j}\cdot b_1 + \cdots + \mathcal W_{hj} \cdot b_h + \cdots + \mathcal W_{qj} \cdot b_q \end{aligned} βj=i=1qWijbi=W1jb1++Whjbh++Wqjbq
    因而有:
    ∂ β j ∂ W h j = b h \begin{aligned} \frac{\partial \beta_j}{\partial \mathcal W_{hj}} = b_h \end{aligned} Whjβj=bh

至此,关于 W h j \mathcal W_{hj} Whj更新量 △ W h j \triangle \mathcal W_{hj} Whj可表示为:
△ W h j = − η ⋅ ∂ E ( k ) ∂ W h j = − η ⋅ ∂ E ( k ) ∂ y ^ j ( k ) ⋅ ∂ y ^ j ( k ) ∂ β j ⋅ ∂ β j ∂ W h j ( t ) = − η ⋅ [ − ( y j ( k ) − y ^ j ( k ) ) ] ⋅ y ^ j ( k ) ⋅ [ 1 − y ^ j ( k ) ] ⋅ b h = η ⋅ y ^ j ( k ) ⋅ ( 1 − y ^ j ( k ) ) ⋅ ( y j ( k ) − y ^ j ( k ) ) ⋅ b h \begin{aligned} \triangle \mathcal W_{hj} & = - \eta \cdot \frac{\partial \mathcal E^{(k)}}{\partial \mathcal W_{hj}} \\ & = -\eta \cdot \frac{\partial \mathcal E^{(k)}}{\partial \hat y_j^{(k)}} \cdot \frac{\partial \hat y_j^{(k)}}{\partial \beta_j} \cdot \frac{\partial \beta_j}{\partial \mathcal W_{hj}^{(t)}} \\ & = - \eta \cdot \left[-(y_j^{(k)} - \hat y_j^{(k)})\right] \cdot \hat y_j^{(k)} \cdot \left[1 - \hat y_j^{(k)}\right] \cdot b_h \\ & = \eta \cdot \hat y_j^{(k)} \cdot (1 - \hat y_j^{(k)})\cdot(y_j^{(k)} - \hat y_j^{(k)}) \cdot b_h \end{aligned} Whj=ηWhjE(k)=ηy^j(k)E(k)βjy^j(k)Whj(t)βj=η[(yj(k)y^j(k))]y^j(k)[1y^j(k)]bh=ηy^j(k)(1y^j(k))(yj(k)y^j(k))bh
同理,其他权重更新量 △ θ j , △ γ h , △ v i h ( k ) \triangle \theta_j,\triangle \gamma_h,\triangle v_{ih}^{(k)} θj,γh,vih(k)的求解过程分别表示为:

  • θ j \theta_j θj权重更新量 △ θ j \triangle \theta_j θj
    θ j \theta_j θj △ W h j \triangle \mathcal W_{hj} Whj仅相差一个 − b h -b_h bh.
    △ θ j = − η ⋅ ∂ E ( k ) ∂ θ j = − η ⋅ ∂ E ( k ) ∂ y ^ j ( k ) ⋅ ∂ y ^ j ( k ) ∂ θ j = − η ⋅ [ − ( y j ( k ) − y ^ j ( k ) ) ] ⋅ y ^ j ( k ) ⋅ ( 1 − y ^ j ( k ) ) ⋅ ( 0 − 1 ) = − η ⋅ y ^ j ( k ) ⋅ ( 1 − y ^ j ( k ) ) ⋅ ( y j ( k ) − y ^ j ( k ) ) \begin{aligned} \triangle\theta_j & = -\eta \cdot \frac{\partial \mathcal E^{(k)}}{\partial \theta_j} \\ & = -\eta \cdot \frac{\partial \mathcal E^{(k)}}{\partial \hat y_j^{(k)}} \cdot \frac{\partial \hat y_j^{(k)}}{\partial \theta_j} \\ & = - \eta \cdot \left[-(y_j^{(k)} - \hat y_j^{(k)})\right] \cdot \hat y_j^{(k)} \cdot \left(1 - \hat y_j^{(k)}\right) \cdot (0-1) \\ & = - \eta \cdot \hat y_j^{(k)} \cdot (1 - \hat y_j^{(k)})\cdot(y_j^{(k)} - \hat y_j^{(k)}) \\ \end{aligned} θj=ηθjE(k)=ηy^j(k)E(k)θjy^j(k)=η[(yj(k)y^j(k))]y^j(k)(1y^j(k))(01)=ηy^j(k)(1y^j(k))(yj(k)y^j(k))
  • γ h \gamma_h γh权重更新量 △ γ h \triangle \gamma_h γh
    其中 b h ( k ) b_h^{(k)} bh(k)表示隐藏层的输出,其与 α h , γ h \alpha_h,\gamma_h αh,γh之间的关系如下
    b h ( k ) = Sigmoid ( α h − γ h ) = Sigmoid ( ∑ i = 1 d v i h ( k ) ⋅ x i ( k ) ) \begin{aligned} b_h^{(k)} & = \text{Sigmoid}(\alpha_h - \gamma_h) \\ & = \text{Sigmoid} \left(\sum_{i=1}^d v_{ih}^{(k)} \cdot x_i^{(k)}\right) \end{aligned} bh(k)=Sigmoid(αhγh)=Sigmoid(i=1dvih(k)xi(k))
    同上,关于隐藏层第 h h h个神经元的阈值 γ h \gamma_h γh具体是指 γ h ( k ) \gamma_h^{(k)} γh(k),这里为简化符号,不做修改.
    并且隐藏层神经元输出 b h b_h bh与输出层的所有神经元之间均存在关联关系,因此需要加上 ∑ j = 1 l \sum_{j=1}^l j=1l.
    △ γ h = − η ⋅ ∂ E ( k ) ∂ γ h = − η ⋅ ∂ E ( k ) ∂ b h ( k ) ⋅ ∂ b h ( k ) ∂ γ h = − η ⋅ ∑ j = 1 l ( ∂ E ( k ) ∂ y ^ j ( k ) ⋅ ∂ y ^ j ( k ) ∂ β j ⋅ ∂ β j ∂ b h ( k ) ) ⋅ ∂ b h ( k ) ∂ γ h = − η ⋅ ∑ j = 1 l y ^ j ( k ) ⋅ ( 1 − y ^ j ( k ) ) ⋅ [ − ( y j ( k ) − y ^ j ( k ) ) ] ⋅ W h j ⋅ [ − b h ⋅ ( 1 − b h ) ] = − η ⋅ [ b h ⋅ ( 1 − b h ) ] ⋅ ∑ j = 1 l [ W h j ⋅ y ^ j ( k ) ⋅ ( 1 − y ^ j ( k ) ) ⋅ ( y j ( k ) − y ^ j ( k ) ) ] \begin{aligned} \triangle \gamma_h &= -\eta \cdot \frac{\partial \mathcal E^{(k)}}{\partial \gamma_h} \\ & = -\eta \cdot \frac{\partial \mathcal E^{(k)}}{\partial b_h^{(k)}} \cdot \frac{\partial b_h^{(k)}}{\partial \gamma_h} \\ & = -\eta \cdot \sum_{j=1}^l\left(\frac{\partial \mathcal E^{(k)}}{\partial \hat y_j^{(k)}} \cdot \frac{\partial \hat y_j^{(k)}}{\partial \beta_j} \cdot \frac{\partial \beta_j}{\partial b_h^{(k)}}\right) \cdot \frac{\partial b_h^{(k)}}{\partial \gamma_h} \\ & = -\eta \cdot \sum_{j=1}^l \hat y_j^{(k)} \cdot \left(1 - \hat y_j^{(k)}\right)\cdot \left[-(y_j^{(k)} - \hat y_j^{(k)})\right] \cdot \mathcal W_{hj} \cdot \left[-b_h \cdot (1 - b_h)\right] \\ & = - \eta \cdot [b_h \cdot(1 -b_h)] \cdot \sum_{j=1}^l \left[\mathcal W_{hj} \cdot \hat y_j^{(k)} \cdot (1 - \hat y_j^{(k)})\cdot (y_j^{(k)} - \hat y_j^{(k)})\right] \end{aligned} γh=ηγhE(k)=ηbh(k)E(k)γhbh(k)=ηj=1l(y^j(k)E(k)βjy^j(k)bh(k)βj)γhbh(k)=ηj=1ly^j(k)(1y^j(k))[(yj(k)y^j(k))]Whj[bh(1bh)]=η[bh(1bh)]j=1l[Whjy^j(k)(1y^j(k))(yj(k)y^j(k))]
  • v i h ( k ) v_{ih}^{(k)} vih(k)权重更新量 △ v i h ( k ) \triangle v_{ih}^{(k)} vih(k)
    需要注意的点: ∂ b h ( k ) ∂ α h \begin{aligned}\frac{\partial b_h^{(k)}}{\partial \alpha_h}\end{aligned} αhbh(k) ∂ b h ( k ) ∂ γ h \begin{aligned}\frac{\partial b_h^{(k)}}{\partial \gamma_h}\end{aligned} γhbh(k)都是 Sigmoid \text{Sigmoid} Sigmoid函数的导数,只不过差一个负号; ∂ y ^ j ( k ) ∂ β j \begin{aligned}\frac{\partial \hat y_j^{(k)}}{\partial \beta_j}\end{aligned} βjy^j(k) ∂ y ^ j ( k ) ∂ θ j \begin{aligned}\frac{\partial \hat y_j^{(k)}}{\partial \theta_j}\end{aligned} θjy^j(k)也是如此。
    △ v i h ( k ) = − η ⋅ ∂ E ( k ) ∂ v i h ( k ) = − η ⋅ ∂ E ( k ) ∂ α h ⋅ ∂ α h ∂ v i h ( k ) = − η ⋅ ∑ j = 1 l ( ∂ E ( k ) ∂ y ^ j ( k ) ⋅ ∂ y ^ j ( k ) ∂ β j ⋅ ∂ β j ∂ b h ( k ) ⋅ ∂ b h ( k ) ∂ α h ) ⋅ ∂ α h ∂ v i h ( k ) = η ⋅ [ b h ⋅ ( 1 − b h ) ] ⋅ ∑ j = 1 l [ W h j ⋅ y ^ j ( k ) ⋅ ( 1 − y ^ j ( k ) ) ⋅ ( y j ( k ) − y ^ j ( k ) ) ] ⋅ x i ( k ) \begin{aligned} \triangle v_{ih}^{(k)} & = - \eta \cdot \frac{\partial \mathcal E^{(k)}}{\partial v_{ih}^{(k)}} \\ & = -\eta \cdot \frac{\partial \mathcal E^{(k)}}{\partial \alpha_h} \cdot \frac{\partial \alpha_h}{\partial v_{ih}^{(k)}} \\ & = -\eta \cdot \sum_{j=1}^l \left( \frac{\partial \mathcal E^{(k)}}{\partial \hat y_j^{(k)}} \cdot \frac{\partial \hat y_{j}^{(k)}}{\partial \beta_j} \cdot \frac{\partial \beta_j}{\partial b_h^{(k)}} \cdot \frac{\partial b_h^{(k)}}{\partial \alpha_h}\right) \cdot \frac{\partial \alpha_h}{\partial v_{ih}^{(k)}} \\ & = \eta \cdot [b_h \cdot(1 -b_h)] \cdot \sum_{j=1}^l \left[\mathcal W_{hj} \cdot \hat y_j^{(k)} \cdot (1 - \hat y_j^{(k)})\cdot (y_j^{(k)} - \hat y_j^{(k)})\right] \cdot x_i^{(k)} \end{aligned} vih(k)=ηvih(k)E(k)=ηαhE(k)vih(k)αh=ηj=1l(y^j(k)E(k)βjy^j(k)bh(k)βjαhbh(k))vih(k)αh=η[bh(1bh)]j=1l[Whjy^j(k)(1y^j(k))(yj(k)y^j(k))]xi(k)

图示描述反向传播过程

假设 t t t次迭代隐藏层神经元 b h b_h bh、输出层神经元 y j y_j yj的正向执行过程表示如下:
依然以某一具体样本 ( x ( k ) , y ( k ) ) ∈ D (x^{(k)},y^{(k)}) \in \mathcal D (x(k),y(k))D,并以预测结果的第 j j j个分量 y j ( k ) y_j^{(k)} yj(k)的反向传播作为示例进行描述.
{ α h = ∑ i = 1 d v i h ( k ) ⋅ x i ( k ) b h ( k ) = Sigmoid ( α h − γ h ) β j = ∑ h = 1 q W h j ⋅ b h y ^ j ( k ) = Sigmoid ( β j − θ j ) \begin{aligned} \begin{cases} \alpha_h = \sum_{i=1}^d v_{ih}^{(k)} \cdot x_i^{(k)} \\ b_h^{(k)} = \text{Sigmoid}(\alpha_h - \gamma_h) \\ \beta_j = \sum_{h=1}^q \mathcal W_{hj} \cdot b_h \\ \hat y_j^{(k)} = \text{Sigmoid}(\beta_j - \theta_j) \end{cases} \end{aligned} αh=i=1dvih(k)xi(k)bh(k)=Sigmoid(αhγh)βj=h=1qWhjbhy^j(k)=Sigmoid(βjθj)

  • 首先,针对预测结果 y ^ j ( k ) \hat y_j^{(k)} y^j(k)真实标签 y j ( k ) y_j^{(k)} yj(k)之间的误差结果对 y ^ j ( k ) \hat y_j^{(k)} y^j(k)梯度 ∂ E ( k ) ∂ y ^ j ( k ) \begin{aligned}\frac{\partial \mathcal E^{(k)}}{\partial \hat y_j^{(k)}}\end{aligned} y^j(k)E(k)进行计算:
    机器学习笔记之前馈神经网络(四)反向传播算法[数学推导过程]_第4张图片
  • 梯度 ∂ E ( k ) ∂ y ^ j ( k ) \begin{aligned}\frac{\partial \mathcal E^{(k)}}{\partial \hat y_j^{(k)}}\end{aligned} y^j(k)E(k)计算完成后,神经元 y j y_j yj获取相应梯度,将该梯度传递给阈值 θ j \theta_j θj以及各隐藏层神经元 y j y_j yj的连接权重 ∂ E ( k ) ∂ θ j , ∂ E ( k ) ∂ W h j ( k ) \begin{aligned}\frac{\partial \mathcal E^{(k)}}{\partial \theta_j},\frac{\partial \mathcal E^{(k)}}{\partial \mathcal W_{hj}^{(k)}}\end{aligned} θjE(k),Whj(k)E(k)
    这里以隐藏层神经元 b h b_h bh为关注点描述反向传播过程,因而仅点亮一条连接权重 W h j \mathcal W_{hj} Whj;但实际上与 y j y_j yj相关联的权重均被点亮。
    机器学习笔记之前馈神经网络(四)反向传播算法[数学推导过程]_第5张图片
  • 传递到神经元 b h b_h bh后,首先对该神经元的预测结果 b h ( k ) b_h^{(k)} bh(k)求解梯度;紧接着对神经元的阈值 γ h \gamma_h γh连接权重 α h \alpha_h αh求解梯度 ∂ E ( k ) ∂ b h ( k ) , ∂ E ( k ) ∂ γ h , ∂ E ( k ) ∂ α h \begin{aligned}\frac{\partial \mathcal E^{(k)}}{\partial b_h^{(k)}},\frac{\partial \mathcal E^{(k)}}{\partial \gamma_h},\frac{\partial \mathcal E^{(k)}}{\partial \alpha_h}\end{aligned} bh(k)E(k),γhE(k),αhE(k)
    机器学习笔记之前馈神经网络(四)反向传播算法[数学推导过程]_第6张图片
    最终,当梯度传递至 α h \alpha_h αh后,对输入层隐藏层的连接权重求解梯度 ∂ E ( k ) ∂ v i h ( k ) \begin{aligned}\frac{\partial \mathcal E^{(k)}}{\partial v_{ih}^{(k)}}\end{aligned} vih(k)E(k)
    这里以 i = 2 i=2 i=2为例,实际上所有与神经元 b h b_h bh相关联的权重均被点亮。
    机器学习笔记之前馈神经网络(四)反向传播算法[数学推导过程]_第7张图片
    至此,经过上述过程后,所有神经元结点以及相关权重,均更新了梯度。而且该示例中每个隐藏层的神经元结点每次计算过程中均更新了 l l l次权重,这与下一层结点(这里是指输出层结点)数量相关。

下一次迭代( t + 1 t+1 t+1)使用更新后的权重参数进行正向传播过程。

总结

总观反向传播算法,实际上就是一个链式求导法则的工具:

  • 它自身没有具体的目标函数/策略,这里的目标函数是均方误差 E ( k ) ( k = 1 , 2 , ⋯   , N ) \mathcal E^{(k)}(k=1,2,\cdots,N) E(k)(k=1,2,,N)提供的;
  • 它自身也不属于算法,这里的算法(更新量的作用,使用学习率 η \eta η)是梯度下降法

因此,反向传播算法是将传播过程的更新量计算出来,其余操作并未参与。因而,它并不算是真正意义上的算法,它的迭代次数是人为决定的;它自身也不存在收敛性。

相关参考:
机器学习(周志华著)

你可能感兴趣的:(深度学习,机器学习,机器学习,反向传播算法,链式求导法则,前馈神经网络,深度学习)