前向传播和反向传播_深度学习,读懂反向传播

背景

深度学习属于机器学习,机器学习的三个步骤就是:模型,策略和计算方法。比如LR,模型使用的LR模型(LR是基于伯努利假设,伯努利属于指数分布族,指数分布族属于广义线性模型),策略使用的是联合概率分布最大,计算方法是梯度下降法或拟牛顿法等。

深度学习的模型是神经网络,如下图:

cd6bebdb4a5e72ab90a42cf312af45de.png

策略就是我们说的损失函数,cost function,反映了模型的预测误差,如交叉熵、均方误差等。给定N个训练数据集:

21779d6e2b75c631537d26daacb75b1f.gif

基于训练集找到一组最佳的参数

5228b8dea1dd4247fc588d3d93d9b0f1.gif

使得C(θ)最小;

4a0324c2693d3b2532d2139fe37c70f3.gif
ba6a3078ea79aec07034a4cf9e7c421c.gif
3e17742f08004a8593287920998ef7b7.gif

具体表示方法是什么?这就需要明白神经网络模型如何表示的,如下图所示,对于l层来说:

f3ddf1176a798d6239a8ac8f23fa8279.png

第l层的第i个神经元的输入Zi,它是上一层所有神经元的输入之和:

c6318797fdd2c4587c7c1e575d58d377.gif

第l层的第i个神经元的输出ai,是zi经过非线性变化(我们称为激活函数,如ReLu,sigmoid等):

744b2b5509be1f2707bb943be806674f.gif

因此,我们说的θ就是所有的

2b84a4c4378ca0541452e3af1b32400d.gif

,则损失函数的偏导

3e17742f08004a8593287920998ef7b7.gif

就是求出所有的

46c7061496eea3f21e6043fa6d94ee15.gif

93a568201b0387e2d1e185fe30a53115.gif

一般地,我们求出

46c7061496eea3f21e6043fa6d94ee15.gif

93a568201b0387e2d1e185fe30a53115.gif

,会更新参数,即

91b9f719f292dd82715cce83859eaaba.gif

。但神经网络的参数非常多,比如很简单的alexnet的参数个数在千万级别,一个一个地求是不切实际的,所以,这里需要用到反向传播:back propagation!

反向传播优化模型参数

46c7061496eea3f21e6043fa6d94ee15.gif

求解之前,需要了解一下链式法则,就是g(f(x))对x的求导,会等于 g对f的求导 乘 f对x的求导。由于z是w的函数,所以:

9aae6691896d30cecc4bfc7958abc6ea.gif
ba505a0519ab27608b5fe600b8d61956.gif
8e21c548679e3ed7a517d168a2ac7434.gif

可以通过前向传播求出(即,是已知的不用求)

接下来求解

dae4ebba0d79bd9af07192c763435d93.gif

。令

a50d66b2c839c649882550240ec3a002.gif

表示

dae4ebba0d79bd9af07192c763435d93.gif

,(不表示也可以,它有对应的实际的意义,不知道实际的意义也没关系,因为这是我们一步一步推导下来的)。求解

a50d66b2c839c649882550240ec3a002.gif

会比较困难,因为

a50d66b2c839c649882550240ec3a002.gif

-->

0a4b54ede2270404796108e6dfec195a.gif

-->...-->

069f540f207b39ea4d2142edf4eaf116.gif

。这是层层传递下去的。

如果,我们能够知道如何层层传递,即l层第i个神经元

a50d66b2c839c649882550240ec3a002.gif

和l+1层

0a4b54ede2270404796108e6dfec195a.gif

(会影响所有神经元)的关系,然后又能算出最后一层L的

069f540f207b39ea4d2142edf4eaf116.gif

,是不是就可以了?所以,我们需要解决2个问题:

(1)最后一层L的

069f540f207b39ea4d2142edf4eaf116.gif

如何计算?

(2)

a50d66b2c839c649882550240ec3a002.gif

0a4b54ede2270404796108e6dfec195a.gif

的关系?

8337374beddd0ad74b20183c78a9ce58.png

对于问题(1),

069f540f207b39ea4d2142edf4eaf116.gif

是一个向量,我们看看如何求其中一个值n,

5a510d599fdf645b6079194a51d0e19a.gif

, 而

cd3b0ac7b7ac375848f439e349e3c50e.gif

就是最后的输出值

9a2037c7995512da48ac950d1a1546c8.gif

(对于多分类问题,比如分10类,最后一层的节点数是10个,激活函数是softmax)

16595309f08b5ec20fad2efa632d57db.gif

,

97b9905457eae22f4efdc4c4104b9432.gif

为最后一层采用的激活函数(多分类一般是softmax),

1bf5ccab1c3cc73763429ef3f93c84c1.gif

是激活函数的一级导数。

2ef0b119a4ddcb10339c9204f3d800ae.gif

取决于采用的损失函数,如果采用的是均方误差,则

c6908b727bb432988e0f968b60feb4f0.gif

(能够直接得到)

综上:

e2c2dab17493e71865429c6238500c0e.gif

可以求得。

对于问题(2),第l层的第i个神经元是如何影响到l+1层所有的神经元呢?

34545334c00d48c6c9bf8e47729cfde5.gif
b750be6e2e4fc9d79b0f4040923006ba.gif

97b9905457eae22f4efdc4c4104b9432.gif

为激活函数(一般是ReLu),

1bf5ccab1c3cc73763429ef3f93c84c1.gif

是激活函数的一级导数,可以直接求得。

f2be288f1ae5ab7f76e5b0476b006943.gif

如何求?可以这么理解,

a2bd9ba34e6e6c7ea0515bec8527d82f.gif

会影响[

c1dadfecc2edb313f54973cbb12a47d0.gif

],而[

c1dadfecc2edb313f54973cbb12a47d0.gif

]影响C(θ)。

ad69e606cd0b53e8ea5a469cec971322.gif
500b673086245c5492cb179498839dae.png
fba5691ce2dbe286b99442437b78805a.png
eefe8ab9bde5fdde491a0e7e172ed5b8.gif

综上:

9fde5fa8ab81445f9e919fdb34740121.gif

总结

额?辛苦码的那么多,不知道怎么没了,好吧,再打一遍吧~

神经网络的训练说白了就是给你N个训练集,然后让你选择一组参数θ使得在这N个训练集上的损失C(θ)最小。如果找到这组参数呢?用梯度下降法找到这些参数。

梯度下降法就是随机取一组参数,然后每次迭代都朝下降最快的方向更新,即:

9d6426832f0206f44e4c29c28a18cb2d.gif

有因为θ其实是由很多的参数组成,这些参数分别是权重w和偏差b,权重

aeb83011078ff23c78420700bd01f3bd.gif

表示第l-1层的第j个神经元的输出,对第l层的第i个神经元的输入的贡献。

06e6a23d887b93518a32713c63bce460.gif
6ccf97b1dd83a9ef78c677bd72d4cb86.gif

根据推导,前者等于

ba65100527bc6b6e7229107688b3362b.gif

,可通过反向传递求得,后者等于

8e21c548679e3ed7a517d168a2ac7434.gif

后者通过前向传播求得,如下图所示:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值