05 反向传播

反向传播

  上一篇博客介绍了从输入 X 样本开始,通过一组 w w w 参数,得到了一个得分值,然后又将得分值经过 y = e x y = e^x y=ex 函数的变换和归一化操作得到一个概率,然后又通过 y = − l o g x y = -logx y=logx 函数求出了 Loss 值。有了 Loss 值之后,就可以进行最优化的操作。

在这里插入图片描述
  
  我们通常把从开始到得到 Loss 的过程称为前向传播。 通常神经网络是由 BP 算法求解的,那什么是 BP 算法呢?BP 算法就是说通过前向传播求出 Loss 值,然后经过一次反向传播再次优化这些权重参数( W W W)。
  
  其实神经网络可以由两部分组成,一部分为前向传播,另一部分就是反向传播。那么这个反向传播应该怎样更新这些权重参数呢?
  

  下面就举个例子说明反向传播。假设现在有三个样本点 x = − 2 x = -2 x=2 y = 5 y = 5 y=5 z = − 4 z = -4 z=4,然后通过 f ( x , y , z ) = ( x + y ) z f(x, y, z) = (x + y)z f(x,y,z)=(x+y)z 得到值 -12。

在这里插入图片描述
  
  假设现在 -12 是我们求出的一个损失值,有了这个损失值之后,我想知道 x x x y y y z z z 分别对 f f f 做了多大贡献?我们可以想象一下,我们之前是要优化 w w w,我们要算 w w w L o s s Loss Loss 之间的关系, 有些 w w w 可能会使得 L o s s Loss Loss 值变大。比如说,现在有一个 w w w 增大之后, L o s s Loss Loss 值也增大,那么此时我们就需要将 w w w 值减小才能使得 L o s s Loss Loss 尽可能小。但是如果另外一个 w w w 增大之后, L o s s Loss Loss 减小了,那么此时我们需要将 w w w 增大。那么我们现在就计算一下 x x x y y y z z z 这些权重参数对 f f f 函数产生了多大影响。

  首先我们分析 f ( x , y , z ) = ( x + y ) z f(x, y, z) = (x + y)z f(x,y,z)=(x+y)z,第一步计算 x + y x + y x+y,在这里我们将指定一个额外的元素 q q q,使得 q = x + y q = x + y q=x+y,那么 f = q ∗ z f = q*z f=qz。那么现在就可以计算 z z z f f f 做了多大贡献,那么只需要计算 z z z f f f 的偏导:

在这里插入图片描述
  
  偏导数等于 3 意味着如果说 z z z 增大一倍,那么 f f f 就会增大 3 倍。但是现在我是想 f f f 减小,所以 z z z 应该往减小的方向去发展。那么接下来就计算 x x x y y y f f f 做了多大贡献。首先 x x x y y y 经过了 q = x + y q = x + y q=x+y 这样的组合,所以要想求出 x x x y y y,必须先求出 q q q f f f 产生了多大影响。

   f = q ∗ z f = q*z f=qz 那么 f f f q q q 的偏导数就是:
在这里插入图片描述

  偏导数等于 -4 意味着如果说 q q q 增大一倍,那么 f f f 就会减小 4 倍,所以 q q q 应该朝着增大的方向发展。而 q = x + y q = x + y q=x+y,那么要想算出 x x x y y y f f f 的影响,就要先算出 x x x y y y q q q 的影响,那么就要分别算出 x x x y y y 分别对 q q q 的偏导数。

在这里插入图片描述

  那么就可以理解为当 x x x 增大一倍, q q q 就增大一倍; y y y 增大一倍, q q q 也增大一倍。那么现在我算 x x x f f f 产生多大影响,这个时候在反向传播当中有一个链式法则,链式法则的意思就是假设要算 x x x 对最终结果做了多大贡献,那最终结果中间肯定有很多步,我们需要一步一步将梯度传下来。比如在这个例子中, q q q f f f 做的贡献是 -4, x x x q q q 做的贡献为 1,那么 x x x f f f 做的贡献就是 -4 * 1 = -4,遵循链式法则。也就是说 x x x 增大一倍, f f f 就相应减小 4 倍,所以 x x x 应该向增大的方向发展。要求 y y y f f f 的贡献同理, q q q f f f 做的贡献是 -4, y y y q q q 做的贡献为 1,那么 y y y f f f 做的贡献就是 -4 * 1 = -4,也就是说 y y y 增大一倍, f f f 就相应减小 4 倍,所以 y y y 也应该向增大的方向发展。

  下面这张图就很明显说明了反向传播的过程。我们要想算出 x x x y y y L L L 的梯度,首先得先算出 z z z L L L 的梯度,再算出 x x x y y y 分别对 z z z 的梯度。不能用一步直接求出 x x x y y y z z z 的导数,首先第一步肯定是通过 L L L 传到 z z z,再由 z z z 传到 x x x y y y,这就是反向传播的过程。
  
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值