DNN反向传播详解
2018-03-07 20:18
323 查看
目前的深度神经网络模型中,主要都是依赖传统BP的反向传播方式来计算梯度,由于tensorflow等牛逼框架的存在,目前梯度的计算方式被很多人都忽略掉了,本文旨在给大家详细推导下在不考虑dropout及特殊结构的情况下,全连接DNN模型是如何梯度下降的。
首先,给出深度神经网络的一般结构形式:
说明下推导过程中一些基本变量及参数的含义:
:表示第l层的第i个节点与第l-1层的第j个节点连接的权重w;
:表示第l层第i个节点的偏置;
:表示第l层第i个节点的输出;
:表示第l层第i个节点的输入
由全连接神经网络的前向传播的理论可以知道:
其中N表示第l-1层的节点的数量,delta表示节点使用的激活函数。
首先明确我们的目标,是得到参数矩阵w和b的梯度,即求解w和b在损失函数中的导数,一般采用对数损失函数来衡量,这里方便起见,用L表示DNN的损失函数。
熟悉的朋友应该知道,这里的计算会用到链式求导,为了简化表示,首先定义一个重要的中间变量:
我们期望的是,通过中间变量,来用传递的方式得到每层的相关参数的梯度,因此,我们希望的是每一层的中间变量之间有一定的关系,考虑第l-1层的中间变量:
首先来解释下这个等式,可能很多人不理解为什么不是直接链式求导,而是求导后还求了和,原因是第l层的第i个节点的输入和第l-1层输入之间的关系,不是一对一,而是第l-1层的每个输入都对第l层第i个输入有影响,具体通过神经网络图不难看出。为了计算上面的l-1层的中间变量,首先给出两层z之间的关系:
由(5)可知,第l-1层的中间变量:
这个等式计算的是每个单独的中间变量之间的关系,如果用矩阵形式,应该怎么表示呢,我们可以来具体深入探讨下,将(6)式最后的结果用矩阵的乘法表示为:
对于7式,我们将第l-1层的所有中间变量进行排列:
这样,我们就得到了关键的两层之间的中间变量的关系式,可以看到,只与上层的W矩阵和激活函数的导数有关,计算起来将非常方便。废话不多说,有了中间变量之间的关系,100层的DNN都不怕了,接下来我们就给出各个参数的梯度计算:
首先对于参数矩阵W(取其中的第l层的某个w):
同样的方法,将单个w推广到整个第l层的W矩阵有(借助矩阵乘法的思想):
再对于每层的偏置b而言:
同样推广到整层的偏执b:
由式10和12,我们就得到了DNN在训练中利用梯度下降法得到每层梯度的方法,而式8保证了可以通过传播的方式得到每一层的梯度。
最后:总结一下不考虑正则、dropout等细节的全连接深度神经网络的训练方法:
首先,给出深度神经网络的一般结构形式:
说明下推导过程中一些基本变量及参数的含义:
:表示第l层的第i个节点与第l-1层的第j个节点连接的权重w;
:表示第l层第i个节点的偏置;
:表示第l层第i个节点的输出;
:表示第l层第i个节点的输入
由全连接神经网络的前向传播的理论可以知道:
其中N表示第l-1层的节点的数量,delta表示节点使用的激活函数。
首先明确我们的目标,是得到参数矩阵w和b的梯度,即求解w和b在损失函数中的导数,一般采用对数损失函数来衡量,这里方便起见,用L表示DNN的损失函数。
熟悉的朋友应该知道,这里的计算会用到链式求导,为了简化表示,首先定义一个重要的中间变量:
我们期望的是,通过中间变量,来用传递的方式得到每层的相关参数的梯度,因此,我们希望的是每一层的中间变量之间有一定的关系,考虑第l-1层的中间变量:
首先来解释下这个等式,可能很多人不理解为什么不是直接链式求导,而是求导后还求了和,原因是第l层的第i个节点的输入和第l-1层输入之间的关系,不是一对一,而是第l-1层的每个输入都对第l层第i个输入有影响,具体通过神经网络图不难看出。为了计算上面的l-1层的中间变量,首先给出两层z之间的关系:
由(5)可知,第l-1层的中间变量:
这个等式计算的是每个单独的中间变量之间的关系,如果用矩阵形式,应该怎么表示呢,我们可以来具体深入探讨下,将(6)式最后的结果用矩阵的乘法表示为:
对于7式,我们将第l-1层的所有中间变量进行排列:
这样,我们就得到了关键的两层之间的中间变量的关系式,可以看到,只与上层的W矩阵和激活函数的导数有关,计算起来将非常方便。废话不多说,有了中间变量之间的关系,100层的DNN都不怕了,接下来我们就给出各个参数的梯度计算:
首先对于参数矩阵W(取其中的第l层的某个w):
同样的方法,将单个w推广到整个第l层的W矩阵有(借助矩阵乘法的思想):
再对于每层的偏置b而言:
同样推广到整层的偏执b:
由式10和12,我们就得到了DNN在训练中利用梯度下降法得到每层梯度的方法,而式8保证了可以通过传播的方式得到每一层的梯度。
最后:总结一下不考虑正则、dropout等细节的全连接深度神经网络的训练方法:
相关文章推荐
- 神经网络反向传播算法公式推导详解
- YOLO源码详解(四)- 反向传播(back propagation)
- cs231n 卷积神经网络与计算机视觉 4 Backpropagation 详解反向传播
- YOLO源码详解(四)- 反向传播(back propagation)
- 梯度下降与反向传播详解
- 神经网络及反向传播(bp)算法详解
- YOLO源码详解(四)- 反向传播(back propagation)
- 详解神经网络中的反向传播
- LSTM详解 反向传播公式推导
- 详解卷积神经网络反向传播
- DNN反向传播推导过程
- BP神经网络计算过程详解,算一遍弄懂反向传播--Python计算过程
- DNN反向传播推导过程
- 神经网络快速入门:什么是多层感知器和反向传播?
- 【深度学习】梯度下降和反向传播
- Nginx搭建反向代理服务器过程详解
- CS231n 2016 通关 第四章-反向传播与神经网络(第一部分)
- 后向传播(backpropagtion)求导详解
- CNN反向传播和普通神经网络的联系和比较
- 实现属于自己的TensorFlow(二) - 梯度计算与反向传播