反向传播算法(过程及公式推导)_深度学习(Deep Learning)系列三:使用伴随法推导反向传播...

反向传播算法(过程及公式推导)_深度学习(Deep Learning)系列三:使用伴随法推导反向传播..._第1张图片
这是关于深度学习这一系列的最后一篇文章。在上一篇文章中,我们使用链式法则来推导反向传播。这篇文章中,我们指出深度学习其实可以看做是一种逆问题(Inverse Problems),可以放在逆问题的框架下进行考虑。这里,我们使用逆问题中常用的伴随法,来推导反向传播的公式。

1. 简介

根据本系列之前两篇文章(神经网络简介随机梯度下降与反向传播)的介绍,我们再回顾一下使用神经网络模型来完成监督学习任务的整个过程。我们首先获得了

个训练样本
,其中
为输入数据,而
为输入为
时的输出数据(在分类任务中,我们可以将
作为
所属的类型),我们的目的就是要找到一个函数
,使得
能描述
之间的函数关系,之后,在输入非训练样本中的数据
时,我们可以用
来预测
所属的类型。寻找函数
时,我们使用神经网络模型来构建一个
的形式。如下图所示,我们使用
层的神经网络。

反向传播算法(过程及公式推导)_深度学习(Deep Learning)系列三:使用伴随法推导反向传播..._第2张图片

层的神经网络

在此神经网络中,我们使用矩阵

来表示第
层需要的权重。矩阵中的元素
表示第
层的第
个元素(即图
中,第
层从上往下数第
个)对第
层第
个神经元的输出值的权重。类似地,我们用向量
表示第
层的偏移值,即
的分量
表示第
层的第
个神经元的偏移值。假设神经网络的输入为
。记每一层神经网络的输出为向量
,每个神经元使用
函数来处理输入生成输出。因此,我们有下列迭代公式

其中,

。完成计算后,
即为整个神经网络的输出。因此,我们需要寻找的函数
具有下列形式

我们的目标,就是要确定所有与

相关的参数
,从而确定整个神经网络。为此,我们使用最小二乘法。我们求得参数
,使得对所有的
的距离足够近,即我们要求解下列优化问题

如果使用上一篇文章(随机梯度下降与反向传播)中的随机梯度下降算法来求解

,我们选取任意一个样本
来更新
中目标函数对参数的梯度。因此,对于单个样本,我们定义损失函数(我们去掉了符号中对于
的依赖)

结合

和条件
,我们需要求解下列限制优化问题

为了方便描述,我们将

按某种顺序组合成向量
。使用梯度下降法,我们需要求解下列迭代式

其中

为更新步长。 因此,从
可以看出,使用梯度下降的关键步骤在于求解损失函数
对于参数
的偏导数。在《
随机梯度下降与反向传播》中,我们使用反向传播来求函数
对于参数
的偏导数,并且我们从链式法则的角度来推导反向传播公式。这里,我们使用伴随法来推导反向传播。首先,我们简介一下伴随法,然后使用伴随法来推导反向传播公式。

2. 伴随法简介

伴随法通常出现在逆问题的求解中。在“前向问题”中,我们输入参数,并使用指定的函数求得函数的值。而逆问题处理的情况恰好相反,我们有观测到的值,并希望根据观测到的值来计算模型的参数。例如,在物理中,我们观察波的振动,来推测波的波长。我们注意到在神经网络中,我们根据观测到的训练样本的值,来推测神经网络的参数。因此,神经网络的问题可以看做一种逆问题,因而我们可以将神经网络放在逆问题的框架下考虑。

下面,我们描述一下逆问题的一般框架。假设我们的模型由

个方程组成的方程组
来表示,并且函数
依赖于输入的状态
以及参数
,例如在波的传播问题中,
表示的是波的传播方程,
表示波的振动位置,
表示波的传播速度。在“前向问题“中,我们给定参数
求解
得到状态
,例如给定波的传播速度
,通过求解
得到波的振动
。而在逆问题中,我们通过观察状态
的值,来求解参数
,例如观察波的振动位置,即得到
的观测值
,来推测波的传播速度。如何做呢?我们可以想到下面的思路。首先猜一个参数
的值
,然后求解
,得到
的值,记为
,我们看
是否离
很远,如果很远,我们需要调整
的值,得到
,求解
,得到状态值
,再将
进行比较,如此反复,直到第
步求得的状态值
很接近为止,这时,我们可以将求得的
作为我们想要求得的参数
的近似值。为此,我们需要一个度量函数
(依赖于参数
与状态
)来度量在参数为
时,求得的状态
与其观测值的距离。上面描述的求解参数
的过程,实质上在寻找一个参数
使得
求出的状态参数
与我们观测到的
的值的距离最小,即
的值最小。因此,逆问题中,我们求解下列优化问题

通过比较,我们可以发现

中的逆问题的构造与
中的神经网络的构造是类似的,我们可以将
中的函数
看做是
中的消耗函数
,而
中的
看做
中的神经网络中每一层的输出数据的传递情况。

回到上一段中我们描述的求解

的方法,其中最关键的一步在于如何在第
步迭代更新
的值。我们可以使用梯度下降法,即

因此,我们要求

的导数。使用全导数法则,我们有

因为我们知道

的公式,因此,在上述式子当中,
对于
的导数是容易求得的。而未知的,是需要求
对于
的导数,即需要知道状态如何依赖于参数变化的。我们考虑式子
中的限制条件,将
求导数。我们得到

因此,我们有

结合

,我们得到

观察

,我们知道先计算
会使得计算量更小。因此,我们记
,因此
等价于

我们将

中的
叫做伴随变量,而将
称为伴随等式。

公式

还有另外一种更加有用的推导方法。我们引入拉格朗日乘子向量
,构造拉格朗日等式

因为我们有

,因此我们可以取任意的
,并且,我们有
。所以,我们有

因为我们可以任意取

的值,因此,我们取
,即我们得到了
,将
带入
,我们得到了

3. 伴随法推导反向传播

我们观察到问题

与问题
是相似的,即我们可以将神经网络的问题看作是逆问题。因此,我们用逆问题中的伴随法来解决
的问题。

使用上一节中我们介绍的伴随法的拉格朗日推导的形式,我们对神经网络的每一层

,
,引入拉格朗日量
。因此,定义拉格朗日函数

为了方便书写,我们定义中间变量

因此,

变为

我们将

求导数,得到(我们使用了《
深度学习(Deep Learning)系列二:随机梯度下降与反向传播》中的的向量相乘的符号

我们对

进行整理,将具有相同的
的值的
的项合并到一起,得到

中我们可知,
是一个固定值,因此

所以

等式中右边的第三项为
。因为我们可以任意取
的值,并且求
对于
的偏导数非常的困难,因此,在
中,我们选取
的值使得
之前的系数为
,这样我们能避免求
对于
的偏导数。这样处理后,我们从
中得到

接下来,我们考虑

的更新。同理,我们将具有相同
的值的
的项合并,我们得到

因为

为常数,因此,
,所以
等式右边的第三项为
。同时,结合
,我们可知
等式右边第一、二项为
,因此,我们有

综合

,我们可知使用梯度下降来求解神经网络时候,我们可以使用下列式子来求损失函数
对神经网络中参数的梯度:

那么

中的计算方法与《
深度学习(Deep Learning)系列二:随机梯度下降与反向传播》中推导的反向传播算法有什么联系呢?其实他们是一模一样的,我们可以通过下面的变换来得到。我们记

因此,

让我们得到

我们注意到

的公式与《
深度学习(Deep Learning)系列二:随机梯度下降与反向传播》中反向传播计算损失函数对参数的导数的公式一致。因此,我们使用伴随法同样推出了反向传播的等价形式。

4. 总结

这是关于深度学习系列介绍文章的最后一篇。本文中,我们主要从逆问题的角度来思考深度学习,并使用求解逆问题的伴随法来求解神经网络中损失函数对参数的梯度,并且我们指出伴随法推导出的对参数的梯度的求解方法与使用链式法则推导的反向传播是等价的。同时,我们指出也可以使用伴随法来推导具有更复杂结构的神经网络的反向传播公式。虽然没有读过逆问题与深度学习之间关联的论文,但可以想到逆问题中的其他研究方法或许已经引入了神经网络的研究当中。

相关文章

深度学习(Deep Learning)系列一:神经网络简介

深度学习(Deep Learning)系列二:随机梯度下降与反向传播

你可能感兴趣的:(反向传播算法(过程及公式推导))