嵌入式与神经网络(四):DNN算法

如题所述

第1个回答  2022-07-09
姓名:王央京    学号:18050100052   学院:电子工程学院

转自:https://zhuanlan.zhihu.com/p/29815081

【嵌牛导读】本文介绍了DNN中的前后向传播算法

【嵌牛鼻子】DNN(深度神经网络)

【嵌牛提问】对于DNN进行初步学习,需要了解的具体算法有哪些?

【嵌牛正文】

DNN前向传播算法数学原理

对于下图的三层DNN,利用和感知机一样的思路,我们可以利用上一层的输出计算下一层的输出,也就是所谓的DNN前向传播算法。

4 DNN前向传播算法

所谓的DNN前向传播算法就是利用若干个权重系数矩阵W,偏倚向量b来和输入值向量x进行一系列线性运算和激活运算,从输入层开始,一层层的向后计算,一直到运算到输出层,得到输出结果为值。

输入: 总层数L,所有隐藏层和输出层对应的矩阵W,偏倚向量b,输入值向量x

输出:输出层的输出。

5 DNN反向传播算法要解决的问题

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

可以用一个合适的损失函数来度量训练样本的输出损失,接着对这个损失函数进行优化求最小化的极值,对应的一系列线性系数矩阵W,偏倚向量b即为我们的最终结果。在DNN中, 损失函数优化极值求解的过程 最常见的一般是通过梯度下降法来一步步迭代完成的,也可以是其他的迭代方法比如牛顿法与拟牛顿法。

6 DNN反向传播算法的基本思路

在进行DNN反向传播算法前,我们需要选择一个损失函数,来度量训练样本计算出的输出和真实的训练样本输出之间的损失。

DNN可选择的损失函数有不少,为了专注算法,这里使用最常见的均方差来度量损失。即对于每个样本,我们期望最小化下式:

损失函数有了,用梯度下降法迭代求解每一层的w,b。

首先是输出层第 L层 。注意到输出层的W,b满足下式:

对于输出层的参数,损失函数变为:

求解W,b的梯度:

7 DNN反向传播算法过程

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

输入:总层数 L,以及各隐藏层与输出层的神经元个数,激活函数,损失函数,迭代步长 a,最大迭代次数 max与停止迭代阈值 ,输入的m个训练样本

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