BP神经网络推导过程

1. 符号定义

  • 本文以单隐藏层的神经网络结构,均方误差为损失函数为例来详细推导各个参数的梯度更新。
  • 给定训练集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , x i ∈ R d , y i ∈ R l D=\left\{\bm{(x_1, y_1), (x_2, y_2),...,(x_m, y_m)}\right\}, \bm{x}_i\in \Bbb R^d, \bm y_i \in \Bbb R^l D={(x1,y1),(x2,y2),...,(xm,ym)},xiRd,yiRl, 即输入示例由 d d d个属性描述,输出 l l l维实值向量。为便于讨论图1给出了一个拥有 d d d个输入神经元、 l l l个输出神经元、 q q q个隐层神经元的多层前馈网络结构,其中输出层第 j j j个神经元的阀值用 θ j \theta_j θj表示,隐层第 h h h个神经元的阔值用 γ h \gamma_h γh 表示。输入层第 i i i个神经元与隐居第 h h h个神经元之间的连接权为 v i h v_{ih} vih,隐层第 h h h个神经元与输出层第 j j j个神经元之间的连接权为 w h j w_{hj} whj
  • 记隐层第 h h h个神经元接收到的输入为 α h = ∑ i = 1 d v i h x i \alpha_h= \sum_{i=1}^d v_{ih} x_i αh=i=1dvihxi,输出层第 j j j个神经元接收到的输入为 β = ∑ h = 1 q w h j b h \beta=\sum_{h=1}^q w_{hj} b_h β=h=1qwhjbh,其中 b h b_h bh为隐层第 h h h个神经元的输出。假设隐层和输出层神经元都使用 S i g m o i d Sigmoid Sigmoid函数 f ( x ) = 1 1 + e − x f(x)=\frac{1}{1+e^{-x}} f(x)=1+ex1
  • 对训练例 ( x k , y k ) \bm{(x_k, y_k)} (xk,yk),假定神经网络的输出为 y ^ k = ( y ^ 1 k , y ^ 2 k , . . . , y ^ l k ) \bm{\hat y}_k=(\hat y_{1}^k, \hat y_{2}^k,...,\hat y_{l}^k) y^k=(y^1k,y^2k,...,y^lk),即
    y ^ j k = f ( β j − θ j ) (1) \hat y_{j}^k=f(\beta_j-\theta_j) \tag{1} y^jk=f(βjθj)(1)
    网络在 ( x k , y k ) \bm{(x_k, y_k)} (xk,yk)上的均方误差为
    E k = 1 2 ∑ j = 1 l ( y ^ j k − y j k ) 2 (2) E_k=\frac{1}{2} \sum_{j=1}^l {(\hat y_{j}^k-y_{j}^k) \tag{2}}^2 Ek=21j=1l(y^jkyjk)2(2)
    在这里插入图片描述
    图1 BP 络及算法中的交量符号
    BP算法基于梯度下降(gradient descent)策略,以目标的负梯度方向对参数进行更新。任意参数 v v v的更新估计式为
    v ← v + Δ v v \leftarrow v+ \Delta v vv+Δv

2. 隐藏层到输出层的权重更新

本节对图1中的隐层到输出层的连接权重 w h j w_{hj} whj的更新进行推导。
对公式(1)的误差 E k E_k Ek,给定学习速率 η \eta η,有权重 w h j w_{hj} whj的更新公式为
Δ w h j = − η ∂ E k ∂ w h j (3) \Delta w_{hj}=-\eta \frac{\partial E_k}{\partial w_{hj}} \tag{3} Δwhj=ηwhjEk(3)
根据图1可知, w h j w_{hj} whj先影响到第 j j j个输出层神经元的输入值 β j \beta_j βj,然后 β j \beta_j βj再影响到该神经元的输出值 y ^ j k \hat y_{j}^k y^jk,最后 y ^ j k \hat y_{j}^k y^jk影响到 E k E_k Ek,因此 E k E_k Ek w h j w_{hj} whj的偏导数可改写为
∂ E k ∂ w h j = ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j ⋅ ∂ β j ∂ w h j (4) \frac {\partial E_k}{\partial w_{hj}}=\frac{\partial E_k}{\partial \hat y_{j}^k} \cdot \frac{\partial \hat y_{j}^k}{\partial \beta_j} \cdot \frac{\partial \beta_j}{\partial w_{hj}} \tag{4} whjEk=y^jkEkβjy^jkwhjβj(4)
根据 β j \beta_j βj的定义,显然有
∂ β j ∂ w h j = ∂ w h j ( ∑ h = 1 q w h j b h ) = b h (5) \frac {\partial \beta_j}{\partial w_{hj}}=\frac{\partial}{w_{hj}} (\sum_{h=1}^q w_{hj} b_h)=b_h \tag{5} whjβj=whj(h=1qwhjbh)=bh(5)
由于 S i g m o i d Sigmoid Sigmoid函数有一个很好的性质:
f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) (6) f^{\prime}(x)=f(x)(1-f(x)) \tag{6} f(x)=f(x)(1f(x))(6)
因此根据公式(1)和(2),有
g j = − ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j = − ( y ^ j k − y j k ) f ′ ( β j − θ j ) = − ( y ^ j k − y j k ) y ^ j k ( 1 − y ^ j k ) = y ^ j k ( 1 − y ^ j k ) ( y j k − y ^ j k ) (7) \begin{aligned} g_j &= - \frac{\partial E_k}{\partial \hat y_j^k} \cdot \frac{\partial \hat y_j^k}{\partial \beta_j} \\ &=-(\hat y_j^k-y_j^k) f^{\prime} (\beta_j-\theta_j)\\ &=-(\hat y_j^k-y_j^k) \hat y_j^k (1-\hat y_j^k)\\ &=\hat y_j^k (1-\hat y_j^k) (y_j^k-\hat y_j^k) \tag{7} \end{aligned} gj=y^jkEkβjy^jk=(y^jkyjk)f(βjθj)=(y^jkyjk)y^jk(1y^jk)=y^jk(1y^jk)(yjky^jk)(7)

将公式(5)和(7)带入公式(4),再带入公式(3),就得到了BP算法中关于权重 w h j w_{hj} whj的更新公式
Δ w h j = η g j b h (8) \Delta w_{hj}=\eta g_j b_h \tag{8} Δwhj=ηgjbh(8)

3. 输出层神经元阈值更新

对于输出层第 j j j个神经元的阈值 θ j \theta_j θj,它首先影响到该神经元的输出值 y ^ j k \hat y_j^k y^jk,再影响到 E k E_k Ek,因此有
Δ θ j = − η ∂ E k ∂ θ j = − η ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ θ j = − η ( y ^ j k − y j k ) f ′ ( β j − θ j ) = − η ( y ^ j k − y j k ) [ − y ^ j k ( 1 − y ^ j k ) ] = − η [ y ^ j k ( 1 − y ^ j k ) ( y j k − y ^ j k ) = − η g j (9) \begin{aligned} \Delta \theta_j &=-\eta \frac{\partial E_k}{\partial \theta_j}\\ &=-\eta \frac{\partial E_k}{\partial \hat y_j^k} \cdot \frac{\partial \hat y_j^k}{\partial \theta_j}\\ &=-\eta (\hat y_j^k-y_j^k) f^{\prime} (\beta_j-\theta_j)\\ &=-\eta (\hat y_j^k - y_j^k) [-\hat y_j^k (1-\hat y_j^k)]\\ &=-\eta[\hat y_j^k (1-\hat y_j^k) (y_j^k-\hat y_j^k) \\ &=-\eta g_j \tag{9} \end{aligned} Δθj=ηθjEk=ηy^jkEkθjy^jk=η(y^jkyjk)f(βjθj)=η(y^jkyjk)[y^jk(1y^jk)]=η[y^jk(1y^jk)(yjky^jk)=ηgj(9)

4. 输入层到隐藏层的权重更新

对于输入层的第 i i i个神经元到隐藏层的第 h h h个神经元的权重值 v i h v_{ih} vih,它首先影响到隐藏层第 h h h个神经元的输入值 α h \alpha_h αh,然后 α h \alpha_h αh再影响到第 h h h个神经元的输出值 b h b_h bh,最后 b h b_h bh再影响到 E k E_k Ek。以下推导 E k E_k Ek v i h v_{ih} vih的偏导数:
∂ E k ∂ v i h = ∂ E k ∂ b h ⋅ ∂ b h ∂ α h ⋅ ∂ α h ∂ v i h (10) \frac {\partial E_k}{\partial v_{ih}} = \frac{\partial E_k}{\partial b_h} \cdot \frac{\partial b_h}{\partial \alpha_h} \cdot \frac{\partial \alpha_h}{\partial v_{ih}} \tag{10} vihEk=bhEkαhbhvihαh(10)
首先考虑第三项:
∂ α h ∂ v i h = x i (11) \frac {\partial \alpha_h}{\partial v_{ih}}=x_i \tag{11} vihαh=xi(11)
其次考虑第一项和第二项的乘积,如公式(12)所示,先考虑第二项的导数结果:
∂ E k ∂ b h ⋅ ∂ b h ∂ α h = ∂ E k ∂ b h ⋅ f ′ ( α h + γ h ) = ∂ E k ∂ b h ⋅ b h ( 1 − b h ) (12) \begin{aligned} & \frac{\partial E_k}{\partial b_h} \cdot \frac{\partial b_h}{\partial \alpha_h}\\ &=\frac{\partial E_k}{\partial b_h} \cdot f^{\prime}(\alpha_h+\gamma_h)\\ &= \frac{\partial E_k}{\partial b_h} \cdot b_h(1-b_h) \tag{12} \end{aligned} bhEkαhbh=bhEkf(αh+γh)=bhEkbh(1bh)(12)

下面考虑 E k E_k Ek b h b_h bh的偏导数,据图1可知 b h b_h bh先影响到 β j \beta_j βj,然后 β j \beta_j βj影响到 y ^ j k \hat y_j^k y^jk。由于 β j = ∑ h = 1 q w h j b h = w 1 j b 1 + . . . + w h j b h + . . . + w q j b q \beta_j=\sum_{h=1}^q w_{hj} b_h=w_{1j}b_1+...+w_{hj}b_h+...+w_{qj}b_q βj=h=1qwhjbh=w1jb1+...+whjbh+...+wqjbq,因此 b h ( h = 1 , . . . , q ) b_h (h=1,...,q) bh(h=1,...,q)会对所有的 β j ( j = 1 , . . . , l ) \beta_j (j=1,...,l) βj(j=1,...,l)产生影响,需对所有的 β j \beta_j βj求和:

∂ E k ∂ b h = ∑ j = 1 l ∂ E k ∂ β j ⋅ ∂ β j ∂ b h = ∑ j = 1 l ( ∂ E k ∂ y ^ j k ⋅ ∂ y ^ j k ∂ β j ) ⋅ w h j = − ∑ j = 1 l g j w h j (13) \begin{aligned} \frac {\partial E_k}{\partial b_h} &=\sum_{j=1}^l \frac{\partial E_k}{\partial \beta_j} \cdot \frac{\partial \beta_j}{\partial b_h}\\ &=\sum_{j=1}^l (\frac{\partial E_k}{\partial \hat y_j^k} \cdot \frac{\partial \hat y_j^k}{\partial \beta_j} ) \cdot w_{hj} \\ &=-\sum_{j=1}^l g_j w_{hj} \tag{13}\end{aligned} bhEk=j=1lβjEkbhβj=j=1l(y^jkEkβjy^jk)whj=j=1lgjwhj(13)

将公式(13)带入(12)中有
∂ E k ∂ b h ⋅ ∂ b h ∂ α h = − b h ( 1 − b h ) ⋅ ∑ j = 1 l g j w h j (14) \frac{\partial E_k}{\partial b_h} \cdot \frac{\partial b_h}{\partial \alpha_h}= -b_h(1-b_h) \cdot \sum_{j=1}^l g_j w_{hj} \tag{14} bhEkαhbh=bh(1bh)j=1lgjwhj(14)

e h = − ∂ E k ∂ b h ⋅ ∂ b h ∂ α h = b h ( 1 − b h ) ⋅ ∑ j = 1 l g j w h j (15) e_h=- \frac{\partial E_k}{\partial b_h} \cdot \frac{\partial b_h}{\partial \alpha_h}=b_h(1-b_h) \cdot \sum_{j=1}^l g_j w_{hj} \tag{15} eh=bhEkαhbh=bh(1bh)j=1lgjwhj(15)

将公式(15)和公式(11)带入公式(10)中有
∂ E k ∂ v i h = e h x i (16) \frac {\partial E_k}{\partial v_{ih}} = e_h x_i \tag{16} vihEk=ehxi(16)
进一步可得
Δ v i h = η e h x i (17) \Delta v_{ih}=\eta e_h x_i \tag{17} Δvih=ηehxi(17)

5. 隐藏层神经元阈值更新

对于隐藏层第 h h h个神经元的阈值 γ h \gamma_h γh, 它首先影响到
∂ E k ∂ γ h = ∂ E k ∂ b h ⋅ ∂ b h ∂ γ h = ∂ E k ∂ b h ⋅ f ′ ( α h + γ h ) = ∂ E k ∂ b h ⋅ b h ( 1 − b h ) (18) \begin{aligned} \frac {\partial E_k}{\partial \gamma_h} &=\frac {\partial E_k}{\partial b_h} \cdot \frac{\partial b_h}{\partial \gamma_h}\\ &=\frac {\partial E_k}{\partial b_h} \cdot f^{\prime}(\alpha_h + \gamma_h)\\ &=\frac {\partial E_k}{\partial b_h} \cdot b_h(1-b_h) \tag{18}\end{aligned} γhEk=bhEkγhbh=bhEkf(αh+γh)=bhEkbh(1bh)(18)

将公式(13)带入(18)有
∂ E k ∂ γ h = − b h ( 1 − b h ) ⋅ ∑ j = 1 l g j w h j = − e h (19) \frac {\partial E_k}{\partial \gamma_h}=-b_h(1-b_h) \cdot \sum_{j=1}^l g_j w_{hj} = -e_h \tag{19} γhEk=bh(1bh)j=1lgjwhj=eh(19)
因此有
Δ γ h = − η ∂ E k ∂ γ h = η e h (20) \Delta \gamma_h=-\eta \frac {\partial E_k}{\partial \gamma_h}=\eta e_h \tag{20} Δγh=ηγhEk=ηeh(20)

参考资料:
周志华《机器学习》5.3节BP神经网络内容

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值