反向传播算法

反向传播算法

约定

首先我们对数学符号做一些约定。

  • 粗体的小写字母表示列向量,如 x,xi,δ 等;
  • 粗体的大写字母表示矩阵,如 A,W,Δ 等;
  • 常规字体表示标量或函数,如 α,i,xjp,f 等;
  • x 表示神经网络的某一层的激活前的值时,我们用 x¯¯¯ 表示激活后的值;
  • 上标指示神经网络的层数。例如 xi 表示神经网络的第 i 层的激活前的值;
  • 下标作为向量或矩阵的索引,例如xi表示向量 x 的第 i 个元素,Wij表示矩阵 W (i,j) 元; W,i 表示矩阵 W 的第 i 列,Wi,表示矩阵 W 的第 i 行;为简单起见,Wi, 可简记为 Wi ;
  • 左上标指示样本实例,例如 ix 表示第 i 个实例。
  • 以上表示是可以组合的,如果组合后有意义的话。例如jxi¯¯¯¯¯表示输入第 j 个实例时,神经网路的第i层的输出。

标准前馈神经网络

我们首先考虑简单的情况:前馈神经网络,如图 ??? 所示。我们先假设任意两层之间没有权值共享。方向传播算法本质上就是梯度下降算法,所以我们要对损失函数关于每个参数求导。设单个输入实例 x 损失函数为 J(x) , 那么我们要求解 JWi Jbi , i=1,2,,n . 对 J 关于bi求导是容易的,直接使用链式法则
图一

Jbi=xibiJxi=IJxi=Jxi(1)

我们可以证明
JWi=Jxix(i1)¯¯¯¯¯¯¯¯T(2)

这是因为
==JWipq=xiWipqJxijxijWipqJxijxi1q¯¯¯¯¯¯Jxip

所以关键是求解 Jxi . 由链式法则(注意这里是使用的标量函数对矩阵或向量求到的链式法则,求导顺序不可交换),有
Jxi=xnxi====xnxiJxnxn1xixnxn1xn2xixn1xn2xnxn1 xi+1xixi+2xi+1xnxn1(3)(4)

所以,由公式 (1), (3) 和 (4) 得

Jbi=Jxi=xi+1xixi+2xi+1xnxn1Jxn(5)

由公式 (2)–(4) 得
JWi=xi+1xixi+2xi+1xnxn1AiJxnδnx(i1)¯¯¯¯¯¯¯¯T(6)

其中
xj+1xj=diag(f˙j(xj))W(j+1)T

公式 (6) 中 δn 的计算是容易的,因为 xn 靠近网络的输出端,一般而言 J xn 的一个在形式上比较简单的函数。对给定的损失函数,我们可以直接写出其表达式。
公式 (6) 中 Ai 是一系列的Jaccobian矩阵的乘积。结合图1,我们可以从网络的输出端到输入端的方向依次计算这些Jaccobian矩阵,并累乘之得到 Aj,j=n1,n2,,1 . 但是这样做的计算量太大,因为它涉及一列的矩阵与矩阵的乘积,我们不会显示的计算矩阵 Ai , 而是依次计算 δj,j=n1,n2,,1
δj=xj+1xjδj+1=diag(f˙j(xj))W(j+1)Tδj+1

最后得到
JWi=Jbi=δix(i1)¯¯¯¯¯¯¯¯Tδi

另一点值得注意是,通常我们不会每观察到一个实例就更新权值,而是对每 m>1 个实例计算一次梯度,更新一次权值。例如,我们从训练集中每抽取 m 个样本 {1x,2x,,mx} 更新一次参数。对这 m 个样本,损失函数为L=1mmi=1J(ix). 于是
Lbi=LWi=1mj=1mAiJ(jx)xn1mj=1mAiJ(jx)xnjx(i1)¯¯¯¯¯¯¯¯¯¯T(7)(8)

在实践中,我们一般都是按照 (7) 和 (8) 上面两式求参数的梯度,进而更新网络的权值。注意矩阵按不同的顺序求值,时间复杂度是不同的,千万不要显示的计算 Ai .
如果定义
Xi=Δi=(1xi,2xi,,mxi)(1δi,2δi,,mδi)

那么
JWi=Jbi=ΔiX(i1)TΔi

非标准前馈神经网络

权值共享情况

下面我们考虑有权值共享的情况。我们可以证明,当有权值共享的时候,网络可以如同没有权值共享一样地更新。如图 2 所示,不失一般性,不妨假设除了图 2 所示的 z 层和 y 层共享权值矩阵 W 之外,没有其他权值共享;设所有的激活函数都是 f .
图二

=========JWpq=zWpqJziziWpqJzii(Wih¯¯¯+bi)WpqJziiWih¯¯¯WpqJzii(WiWpqWih¯¯¯Wi+h¯¯¯WpqWih¯¯¯h¯¯¯)Jzihq¯¯¯¯Jzp+h¯¯¯WpqiWTiJzihq¯¯¯¯Jzp+h¯¯¯WpqWTJzhq¯¯¯¯Jzp+yWpqhyh¯¯¯hzh¯¯¯Jzhq¯¯¯¯Jzp+yWpqJyhq¯¯¯¯Jzp+xq¯¯¯¯Jyp

所以

JW=Jzh¯¯¯T+Jyx¯¯¯T

同理,如果偏置共享的话,对偏置的导数也有类似的性质。
因为 JW 可以写为没有权值共享时,损失函数关于对应位置的权值矩阵的导数之和,所以对该网络更新权值,可以如同没有权值共享一样地更新。

图结构的前馈神经网络

未完待续……

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值