李宏毅机器学习课程梳理【六】:Backpropagation

摘要

利用Logistic Regression做Feature Transformation,并适当叠加层数来构建神经网络。本文介绍Backpropagation这一常见的方法,构建一个反向神经网络,可以高效计算。

1 深度学习理解

  • 深度学习第一步:定义函数集,也就是确定神经网络的结构;第二步:定义损失函数;第三步:选出最佳函数。
  • 含输入输出的一个激活函数看作一个neuron,我们的工作是手动设计neuron的连接方式,即确定structure
  • 最常见的连接方式Fully Connect Feedforward Network
  • 一个给定结构的Neuron Network就决定一个function set,如果 θ \theta θ已经全部设定,则为一个function
  • 神经网络的计算可以写成做矩阵运算,可以使用GPU加速矩阵运算

2 Backpropagation

2.1 定义

Backpropagation是一个高效地计算梯度下降法中百万级数量的参数的偏微分的方法。

2.2 计算推导

第二步需要计算 L ( θ ) = ∑ n = 1 N C n ( θ ) L(\theta)=\displaystyle\sum_{n=1}^N C^n(\theta) L(θ)=n=1NCn(θ),第三步需要计算total lost对某一个参数的偏微分 ∂ L ( θ ) ∂ w = ∑ n = 1 N ∂ C n ( θ ) ∂ w \dfrac{\partial L(\theta)}{\partial w}=\displaystyle\sum_{n=1}^N \dfrac{\partial C^n(\theta)}{\partial w} wL(θ)=n=1NwCn(θ),将问题转化为算出一笔data的 ∂ C n ( θ ) ∂ w \dfrac{\partial C^n(\theta)}{\partial w} wCn(θ)再求和。

根据链式法则 ∂ C ∂ w = ∂ C ∂ z ⋅ ∂ z ∂ w \dfrac{\partial C}{\partial w}=\dfrac{\partial C}{\partial z} \cdot \dfrac{\partial z}{\partial w} wC=zCwz,由于 z = x 1 ⋅ w 1 + x 2 ⋅ w 2 + b z=x_1\cdot w_1+x_2\cdot w_2+b z=x1w1+x2w2+b,所以Forward pass = ∂ z ∂ w = x =\dfrac{\partial z}{\partial w}=x =wz=x,只需找到该参数的输入数据。Backward pass相对复杂,示意图如图1所示。
1
利用链式法则计算 ∂ C ∂ z \dfrac{\partial C}{\partial z} zC
设a为一个neuron的输出,且a同时为下一层neuron的输入,计算 ∂ C ∂ a \dfrac{\partial C}{\partial a} aC,如图2所示。
在这里插入图片描述
得到 ∂ C ∂ z = σ ′ ( z ) [ w 3 ∂ C ∂ z ′ + w 4 ∂ C ∂ z ′ ′ ] \dfrac{\partial C}{\partial z}=\sigma'(z)[w_3\dfrac{\partial C}{\partial z'}+w_4\dfrac{\partial C}{\partial z''}] zC=σ(z)[w3zC+w4zC]

∂ C ∂ z ′ \dfrac{\partial C}{\partial z'} zC ∂ C ∂ z ′ ′ \dfrac{\partial C}{\partial z''} zC
情况1: z ′ z' z z ′ ′ z'' z是输出层激活函数的输入,如图3所示。
3
∂ C \partial C C容易计算
情况2:不是输出层,如图4所示。
4
类似递归,利用 ∂ C ∂ z = σ ′ ( z ) [ w 3 ∂ C ∂ z ′ + w 4 ∂ C ∂ z ′ ′ ] \dfrac{\partial C}{\partial z}=\sigma'(z)[w_3\dfrac{\partial C}{\partial z'}+w_4\dfrac{\partial C}{\partial z''}] zC=σ(z)[w3zC+w4zC]公式的原理,一直推导到输出层,求得 ∂ C \partial C C再代入。

2.3 利用Backpropagation计算

先计算输出层偏微分,再利用公式 ∂ C ∂ z = σ ′ ( z ) [ w 3 ∂ C ∂ z ′ + w 4 ∂ C ∂ z ′ ′ ] \dfrac{\partial C}{\partial z}=\sigma'(z)[w_3\dfrac{\partial C}{\partial z'}+w_4\dfrac{\partial C}{\partial z''}] zC=σ(z)[w3zC+w4zC]向前计算,如图5所示。
5
总结:相当于建立一个反向同结构的神经网络
6

3 总结与展望

文章介绍了Backpropagation这一常见的方法,构建一个反向神经网络,可以高效计算。接下来将对DNN的训练提出一些优化方法,并且进入CNN的学习。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值