人工智能/机器学习基础知识——反向传播

Backpropagation Algorithm

李宏毅

反向传播算法,分为两个部分:Forward passBackward pass

在这里插入图片描述
在这里插入图片描述

  • L ( w 1 , w 2 , w 3 , . . . , w n ) L(w_1,w_2,w_3,...,w_n) L(w1,w2,w3,...,wn)为Loss函数, z = x 1 w 1 + x 2 w 2 + b z = x_1w_1+x_2w_2+b z=x1w1+x2w2+b为前向传播(Forwardpropagation)公式, a = σ ( z ) a = σ(z) a=σ(z)为激活函数,代表下一个神经元的值。

  • 由以上假设,根据梯度下降法,需计算出每个权重 w i w_i wi对于损失函数 L L L的偏导,然后进行参数更新,即 ∂ L ∂ w i \frac{∂L}{∂w_i} wiL这种方式在参数量较少,网络结构不复杂的情况下很容易便可求得。但在复杂网络如神经网络中,损失函数 L L L是一个包含千百万数量级参数的一个复合函数,想要直接对某个 w i w_i wi求得偏导比较困难。所以,反向传播简化了这一直接求偏导的过程,利用链式法则间接反向逐步求得每个参数 w i w_i wi的偏导,实现梯度传播以及参数更新。

  • Forward pass
    根据链式法则简化上述求导公式: ∂ L ∂ w 1 = ∂ L ∂ z ∂ z ∂ w 1 \frac{∂L}{∂w_1} = \frac{∂L}{∂z}\frac{∂z}{∂w_1} w1L=zLw1z公式右边后半部分可以直接求得: ∂ z ∂ w 1 = x 1 \frac{∂z}{∂w_1} = x_1 w1z=x1所以,原式可简化为: ∂ L ∂ w 1 = x 1 ∂ L ∂ z \frac{∂L}{∂w_1} = x_1\frac{∂L}{∂z} w1L=x1zL

  • Backward pass
    ∂ L ∂ z \frac{∂L}{∂z} zL进一步分解得到: ∂ L ∂ z = ∂ L ∂ a ∂ a ∂ z \frac{∂L}{∂z} = \frac{∂L}{∂a}\frac{∂a}{∂z} zL=aLza该式右边后半部分 ∂ a ∂ z = σ ′ ( z ) \frac{∂a}{∂z} = σ'(z) za=σ(z)由于激活函数都是已知的,所以该项也可以很容易算出。所以原式变为: ∂ L ∂ z = σ ′ ( z ) ∂ L ∂ a \frac{∂L}{∂z} = σ'(z)\frac{∂L}{∂a} zL=σ(z)aL假设该节点后继续通过两个分支连着一个神经元(如图),则可进一步得到: ∂ L ∂ z = σ ′ ( z ) [ ∂ L ∂ z ′ ∂ z ′ ∂ a + ∂ L ∂ z ′ ′ ∂ z ′ ′ ∂ a ] \frac{∂L}{∂z} = σ'(z)[\frac{∂L}{∂z'}\frac{∂z'}{∂a}+\frac{∂L}{∂z''}\frac{∂z''}{∂a}] zL=σ(z)[zLaz+z′′Laz′′]由于此时 z ′ = a w 3 + b ′ z' = aw_3+b' z=aw3+b z ′ ′ = a w 4 + b ′ ′ z'' = aw_4+b'' z′′=aw4+b′′所以,原式可简化为: ∂ L ∂ z = σ ′ ( z ) [ w 3 ∂ L ∂ z ′ + w 4 ∂ L ∂ z ′ ′ ] \frac{∂L}{∂z} = σ'(z)[w_3\frac{∂L}{∂z'}+w_4\frac{∂L}{∂z''}] zL=σ(z)[w3zL+w4z′′L]从而有: ∂ L ∂ w 1 = x 1 ∂ L ∂ z = x 1 σ ′ ( z ) [ w 3 ∂ L ∂ z ′ + w 4 ∂ L ∂ z ′ ′ ] \frac{∂L}{∂w_1} = x_1\frac{∂L}{∂z} = x_1σ'(z)[w_3\frac{∂L}{∂z'}+w_4\frac{∂L}{∂z''}] w1L=x1zL=x1σ(z)[w3zL+w4z′′L]
    该式为反向传播算法核心公式,其表明了当前神经元上参数的梯度可由后一个神经元上参数的梯度求得。所以,只要从输出层算起,就可以一步步反向推出前面各层的参数梯度。

自动求导

人工计算麻烦,框架内自带自动求导

数值微分

Numerical Differentiation

  • 用数值方法来计算函数𝑓(𝑥)的导数.函数𝑓(𝑥)的点𝑥的导数定义为

    f ′ ( x ) = lim ⁡ Δ x → 0 f ( x + Δ x ) − f ( x ) Δ x f^{\prime}(x)=\lim _{\Delta x \rightarrow 0} \frac{f(x+\Delta x)-f(x)}{\Delta x} f(x)=Δx0limΔxf(x+Δx)f(x)
    要计算函数𝑓(𝑥)在点𝑥的导数,可以对𝑥加上一个很少的非零的扰动Δx,通过上述定义来直接计算函数𝑓(𝑥)的梯度

  • 不足

    • 舍入误差

    • 截断误差

    • 计算复杂度

符号微分

Symbolic Differentiation

  • 指用计算机来处理带有变量的数学表达式,符号计算的输入和输出都是数学表达式,一般包括对数学表达式的化简、因式分解、微分、积分、解代数方程、求解常微分方程等运算

自动微分

Automatic Differentiation,AD

  • 将模型分解基本模块,构建计算图(Computational Graph)
  • 25
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值