前向传播和反向传播_深度学习之DNN与反向传播算法总结

深度学习

DNN与反向传播算法

关键词:深度神经网络算法

P1

前言

在深度神经网络(DNN)模型与前向传播算法中,我们对DNN的模型和前向传播算法做了总结,这里我们更进一步,对DNN的反向传播算法(Back Propagation,BP)做一个总结

P2

反向传播需要解决的问题

在了解DNN的反向传播算法前,我们先要知道DNN反向传播算法要解决的问题,也就是说,什么时候我们需要这个反向传播算法? 

回到我们监督学习的一般问题,假设我们有m个训练样本:{(x1,y1),(x2,y2),...,(xm,ym)},其中x为输入向量,特征维度为n_in,而y为输出向量,特征维度为n_out。我们需要利用这m个样本训练出一个模型,当有一个新的测试样本(xtest,?)来到时, 我们可以预测ytest向量的输出。 

如果我们采用DNN的模型,即我们使输入层有n_in个神经元,而输出层有n_out个神经元。再加上一些含有若干神经元的隐藏层。此时我们需要找到合适的所有隐藏层和输出层对应的线性系数矩阵W,偏倚向量b,让所有的训练样本输入计算出的输出尽可能的等于或很接近样本输出。怎么找到合适的参数呢?

如果大家对传统的机器学习的算法优化过程熟悉的话,这里就很容易联想到我们可以用一个合适的损失函数来度量训练样本的输出损失,接着对这个损失函数进行优化求最小化的极值,对应的一系列线性系数矩阵W,偏倚向量b即为我们的最终结果。

在DNN中,损失函数优化极值求解的过程最常见的一般是通过梯度下降法来一步步迭代完成的,当然也可以是其他的迭代方法比如牛顿法与拟牛顿法。对DNN的损失函数用梯度下降法进行迭代优化求极小值的过程即为我们的反向传播算法。

P3

反向传播的基本思路

在进行DNN反向传播算法前,我们需要选择一个损失函数,来度量训练样本计算出的输出和真实的训练样本输出之间的损失。DNN可选择的损失函数有不少,为了专注算法,这里我们使用最常见的均方差来度量损失。即对于每个样本,我们期望最小化下式:

dd2557e30afcdb543a34fd41aa0359e9.png

其中,aL和y为特征维度为n_out的向量,而||S||2为S的L2范数。现在我们开始用梯度下降法迭代求解每一层的W,b。首先是输出层第L层。注意到输出层的W,b满足下式:

2342d7bd1a1b74a3d17d823854e314e7.png

这样对于输出层的参数,我们的损失函数变为:

0ea27e5a33b7ee287a0fb2cd6c8139a7.png

求解W,b的梯度:

24f1ce34f572db0e42a0d5df180e95ed.png

现在我们把输出层的梯度算出来了,那么如何计算上一层L−1层的梯度,上上层L−2层的梯度呢?这里我们需要一步步的递推,注意到对于第l层的未激活输出zl,它的梯度可以表示为:

e9cbede8e78b187d12ace567a58d8fed.png

如果我们可以依次计算出第l层的δl,则该层的Wl,bl很容易计算?为什么呢?注意到根据前向传播算法,我们有:

f317b2a72299cfcbb07d3189f2a8738d.png

可以很方便的计算出第l层的Wl,bl的梯度如下:

4721a2cf584484437c2c981273819e0d.png

很容易求出:

565cb253904fdea072b5ffe796b4e821.png

将上式带入上面δl+1和δl关系式我们得到:

1ed2090c8796358b0747b658102e0486.png

P4

算法过程

由于梯度下降法有批量(Batch),小批量(mini-Batch),随机三个变种,为了简化描述,这里我们以最基本的批量梯度下降法为例来描述反向传播算法。实际上在业界使用最多的是mini-Batch的梯度下降法。不过区别仅仅在于迭代时训练样本的选择而已。

输入: 总层数L,各隐藏层与输出层的神经元个数,激活函数,损失函数,迭代步长α,最大迭代次数MAX与停止迭代阈值ϵ

输出:各隐藏层与输出层的线性关系系数矩阵W和偏倚向量

1 ) 初始化各隐藏层与输出层的线性关系系数矩阵W和偏倚向量b的值为一个随机值。

2)for iter to 1 to MAX:

2-1) for i =1 to m:

a) 将DNN输入a1设置为xi

      b) for l=2 to L,进行前向传播算法计算

         c) 通过损失函数计算输出层的δi,L

d) for l= L to 2, 进行反向传播算法计算

    2-2) for l = 2 to L,更新第l层的Wl,bl:

79f4644e7fe22a22172e20302dd43585.png

    2-3) 如果所有W,b的变化值都小于停止迭代阈值ϵ,则跳出迭代循环到步骤3。

3)输出各隐藏层与输出层的线性关系系数矩阵W和偏倚向量b。

P5

小结

有了DNN反向传播算法,我们就可以很方便的用DNN的模型去解决各种监督学习的分类回归问题。当然DNN的参数众多,矩阵运算量也很大,直接使用会有各种各样的问题。有哪些问题以及如何尝试解决这些问题并优化DNN模型与算法,我们在以后涉及。

【END】

版权声明

本文内容采编自极智能,版权归原作者所有,沣云平台不拥有其著作权,亦不承担相应法律责任。如果本文涉及版权问题,请联系工作人员删除,感谢。

往期 · 推荐

自然语言处理之隐式马尔科夫模型浅析

畅聊AI赢奖品,我在沣云社区等你~

Hello,能和我们谈谈你身边的人工智能吗?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值