Deep Learing 之 反向传播

Deep Learing

Step1、define a set of function(其实就是Neural Network)

Step2、goodness of function

Step3、pick the best function

deep = Many hidden layers

在这里插入图片描述

普遍性定理:

一个N维向量只需要一个隐藏层就可以转为M维向量,只要给与足够的隐藏神经元。

Backpropagation 反向传播

如果要处理一个音频,它可能有上百万维组成,name对这个向量进行求偏微分得到的gradient也是百万维级别的,显然直接求导是工作量巨大的,这时候我们可以使用反向传播来解决这个问题。

反向传播也是Gradient Desencent,它只是一个好的计算方法。

我们设 y ^ n \hat{y}^n y^n是实际的结果,那么通过计算输入 x n x^n xn经过神经元得到的 y n y^n yn与实际结果之间的距离差距记作 C n C^n Cn,将 C n C^n Cn累计求和就得到了Loss Function。此模型就是要通过不断的计算得到合适的一系列w和b,从而得到适合此测试数据集的神经网络。

在这里插入图片描述

通过链式规则,得到下式,此时我们进行计算 ∂ z ∂ w \frac{\partial z}{\partial w} wz是正推法、 ∂ C ∂ z \frac{\partial C}{\partial z} zC是逆推法

在这里插入图片描述

显然, ∂ z ∂ w \frac{\partial z}{\partial w} wz得到的结果就是输入的x,即经过一层神经层的结果对权值进行求导,得到的结果是输入值【由权重连接的输入值】

在这里插入图片描述

*** 计算 ∂ C ∂ z \frac{\partial C}{\partial z} zC**

∂ C ∂ z = ∂ a ∂ z ∂ C ∂ a ​ \frac{\partial C}{\partial z} = \frac{\partial a}{\partial z}\frac{\partial C}{\partial a}​ zC=zaaC

其中,输入z,通过激活函数sigmoid得到输出a,因此上式中,前者其实就是sigmoid求偏微分。函数图形见下图。

在这里插入图片描述

计算 ∂ C ∂ a \frac{\partial C}{\partial a} aC

我们知道,C是距离实际的距离,因此每一个输出 z ′ 、 z ′ ′ z^{'}、z^{''} zz都会影响到C,而每一个输出都是由输入a影响得到的(当然,这个a是z的输出),因此可以有下面的链式规则

在这里插入图片描述
当然,图中只有两项,若有N个神经元,则此链式规则应有N项

显然, ∂ z ′ ∂ a \frac{\partial z^{'}}{\partial a} az = w 3 w_3 w3 ∂ z ′ ′ ∂ a \frac{\partial z^{''}}{\partial a} az = w 4 w_4 w4 问题转换为求每项的后面的偏微分。

假设我们已经算出了 ∂ C ∂ z ′ \frac{\partial C}{\partial z^{'}} zC ∂ C ∂ z ′ ′ \frac{\partial C}{\partial z^{''}} zC

那么我们就可以得到 ∂ C ∂ z \frac{\partial C}{\partial z} zC

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

Backpropagation - Backward pass

如果存在这样的neural:

在这里插入图片描述

输入是** ∂ C ∂ z ′ \frac{\partial C}{\partial z^{'}} zC ∂ C ∂ z ′ ′ \frac{\partial C}{\partial z^{''}} zC** , σ ′ ( z ) \sigma^{'}(z) σ(z)是常数【因为z已经在正向传递中确定了】

输出就可以是** ∂ C ∂ z \frac{\partial C}{\partial z} zC **。【这个假设为了方便理解下面的情况2】

那我们继续接着图1的算式进行最后两项的计算。需要分情况讨论

Case1、Output Layer

在这里插入图片描述

其中** ∂ C ∂ y 1 \frac{\partial C}{\partial y_1} y1C ∂ C ∂ y 2 \frac{\partial C}{\partial y_2} y2C​**是可以简单计算得到的。因为C可以是y通过交叉熵或者其他方法得到的。而y对z的偏微分则是图中红色的neural,它是已知的。

Case2、Not Output Layer

就是上图中,红色的neural后面并不是输出层,而是还有其他的东西.

在这里插入图片描述

我们可以按照上面的思路,前面的偏微分永远可以通过后面的偏微分计算获得,也就是相当于每次计算的时候,相当于假设前面的偏微分是已知的。那么直到递归到最后的输出层,就全都已知了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值