神经网络——反向传播算法公式推导

前言

本文基于三层神经网络结构,对神经网络的反向传播算法进行简单的公式推导,旨在加深对反向传播算法原理的理解。如有错误,欢迎指正。
首先对公式推导中的一些常量和符号进行定义:

网络层下标神经元数量
输入层il
隐含层jm
输出层kn

简化结构图如下:
三层神经网络结构图

除此之外,权重记为w,如输入层到隐含层的权重为 w i j w_{ij} wij,隐含层到输出层的权重为 w j k w_{jk} wjk; 偏置记为b,如隐含层的偏置记为 b j b_j bj,输出层的偏置记为 b k b_k bk;误差记为Eu代表权重与输入的乘积,y代表输入u经过激励函数 f 而得到的结果,即 y = f(u) 。
定义 δ = ∂ E ∂ y ⋅ ∂ y ∂ u = ∂ E ∂ u = \frac{∂E}{∂y}·\frac{∂y}{∂u} = \frac{∂E}{∂u} =yEuy=uE

在反向传播开始之前,神经元的损失函数与激励函数已经确定,训练过程中只有权重 w 与 b 在动态变化,故对于输出层: ∂ E ∂ y k \frac{∂E}{∂y_k} ykE ∂ y k ∂ u j k \frac{∂y_k}{∂u_{jk}} ujkyk皆为定值,即 δ k = ∂ E ∂ y k ⋅ ∂ y k ∂ u k = ∂ E ∂ u k = 常量 δ_k = \frac{∂E}{∂y_k}·\frac{∂y_k}{∂u_k} = \frac{∂E}{∂u_k} = 常量 δk=ykEukyk=ukE=常量

一、输出层梯度推导

在这里插入图片描述

注意:图中的u_k代表 u k u_k uk,y_k代表 y k y_k yk

权重

输出层梯度推导过程如下:
∂ E ∂ w j k = ∂ E ∂ y k ⋅ ∂ y k ∂ w j k = ∂ E ∂ y k ⋅ ∂ y k ∂ u k ⋅ ∂ u k ∂ w j k = δ k ⋅ ∂ u k ∂ w j k = δ k ⋅ ∂ ( ∑ q = 1 m y q w q k + b k ) ∂ w j k = δ k ⋅ y j \frac{∂E}{∂w_{jk}} = \frac{∂E}{∂y_k}·\frac{∂y_k}{∂w_{jk}} = \frac{∂E}{∂y_k}·\frac{∂y_k}{∂u_k}·\frac{∂u_k}{∂w_{jk}} = δ_k·\frac{∂u_k}{∂w_{jk}} \\ = δ_k · \frac{∂(\sum_{q=1}^m y_q w_{qk}+b_k)}{∂w_{jk}} = δ_k·y_j wjkE=ykEwjkyk=ykEukykwjkuk=δkwjkuk=δkwjk(q=1myqwqk+bk)=δkyj

偏置

∂ E ∂ b k = ∂ E ∂ y k ⋅ ∂ y k ∂ b k = ∂ E ∂ y k ⋅ ∂ y k ∂ u k ⋅ ∂ u k ∂ b k = δ k ⋅ ∂ u k ∂ b k = δ k ⋅ ∂ ( ∑ q = 1 m y q w q k + b k ) ∂ b k = δ k ⋅ 1 = δ k \frac{∂E}{∂b_k} = \frac{∂E}{∂y_k}·\frac{∂y_k}{∂b_k} = \frac{∂E}{∂y_k}·\frac{∂y_k}{∂u_k}·\frac{∂u_k}{∂b_k} = δ_k·\frac{∂u_k}{∂b_k} \\ = δ_k· \frac{∂(\sum_{q=1}^m y_q w_{qk}+b_k)}{∂b_k} = δ_k· 1 = δ_k bkE=ykEbkyk=ykEukykbkuk=δkbkuk=δkbk(q=1myqwqk+bk)=δk1=δk

( δ k δ_k δk在前言中已知为常量)

二、隐含层梯度推导

神经网络反向传播算法中间层结构

权重

∂ E ∂ w i j = ∂ E ∂ y j ⋅ ∂ y j ∂ w i j = ∂ E ∂ y j ⋅ ∂ y j ∂ u j ⋅ ∂ u j ∂ w i j = δ j ⋅ ∂ u j ∂ w i j = δ j ⋅ ∂ u j ∂ w i j = δ j ⋅ ∂ ( ∑ p = 1 l y p w p j + b j ) ∂ w i j = δ j ⋅ y i \frac{∂E}{∂w_{ij}} = \frac{∂E}{∂y_j}·\frac{∂y_j}{∂w_{ij}} = \frac{∂E}{∂y_j}·\frac{∂y_j}{∂u_j}·\frac{∂u_j}{∂w_{ij}} = δ_j·\frac{∂u_j}{∂w_{ij}} \\ = δ_j·\frac{∂u_j}{∂w_{ij}} = δ_j· \frac{∂(\sum_{p=1}^l y_p w_{pj}+b_j)}{∂w_{ij}} = δ_j·y_i wijE=yjEwijyj=yjEujyjwijuj=δjwijuj=δjwijuj=δjwij(p=1lypwpj+bj)=δjyi
其中,
δ j = ∂ E ∂ u j = ∂ E ∂ y j ⋅ ∂ y j u j = ( ∑ k = 1 n ∂ E ∂ u k ⋅ ∂ u k ∂ y j ) ⋅ ∂ y j ∂ u j = ( ∑ k = 1 n δ k ⋅ ∂ u k ∂ y j ) ⋅ ∂ y j ∂ u j = ( ∑ k = 1 n δ k ⋅ ∂ ( y 1 w 1 k + y 2 w 2 k + . . . + y n w n k + b k ) ∂ y j ) ⋅ ∂ y j ∂ u j = ( ∑ k = 1 n δ k ⋅ w j k ) ⋅ ∂ y j ∂ u j δ_j = \frac{∂E}{∂u_j}= \frac{∂E}{∂y_j}·\frac{∂y_j}{u_j} =(\sum_{k=1}^n\frac{∂E}{∂u_k}·\frac{∂u_k}{∂y_j})·\frac{∂y_j}{∂u_j} \\ = ( \sum_{k=1}^n δ_k· \frac{∂u_k}{∂y_j}) · \frac{∂y_j}{∂u_j} \\ = (\sum_{k=1}^n δ_k ·\frac{∂( y_1w_{1k} + y_2 w_{2k}+...+y_n w_{nk}+b_k)}{∂y_j}) · \frac{∂y_j}{∂u_j} \\ =( \sum_{k=1}^n δ_k · w_{jk}) · \frac{∂y_j}{∂u_j} δj=ujE=yjEujyj=(k=1nukEyjuk)ujyj=(k=1nδkyjuk)ujyj=(k=1nδkyj(y1w1k+y2w2k+...+ynwnk+bk))ujyj=(k=1nδkwjk)ujyj

注意:将求和公式的下标记为k是为了直接与 k 层相关联,使表达式更清晰。

至此,求得
∂ E ∂ w i j = δ j ⋅ y i = ( ( ∑ k = 1 n δ k ⋅ w j k ) ⋅ ∂ y j ∂ u j ) ⋅ y i \frac{∂E}{∂w_{ij}} = δ_j·y_i = ( (\sum_{k=1}^n δ_k · w_{jk} )· \frac{∂y_j}{∂u_j}) · y_i wijE=δjyi=((k=1nδkwjk)ujyj)yi

偏置

∂ E ∂ b j = ∂ E ∂ u j ⋅ ∂ u j ∂ b j = δ j ⋅ ∂ ( y 1 w 1 j + y 2 w 2 j + . . . + y l w l j + b j ) ∂ b j = δ j ⋅ 1 = δ j = ( ∑ k = 1 n δ k ⋅ w j k ) ⋅ ∂ y j ∂ u j \frac{∂E}{∂b_j} = \frac{∂E}{∂u_j}·\frac{∂u_j}{∂b_j} = δ_j · \frac{∂(y_1w_{1j}+y_2w_{2j}+...+y_lw_{lj}+b_j)}{∂b_j}=δ_j ·1 = δ_j \\ = ( \sum_{k=1}^n δ_k · w_{jk}) · \frac{∂y_j}{∂u_j} bjE=ujEbjuj=δjbj(y1w1j+y2w2j+...+ylwlj+bj)=δj1=δj=(k=1nδkwjk)ujyj

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值