深度神经网络模型(DNN)与前向传播过程

一:从感知机到神经网络

感知机模型由若干个输入和一个输出组成,模型如下:
深度神经网络模型(DNN)与前向传播过程_第1张图片
输入和输出之间呈线性关系,得到输出结果
在这里插入图片描述
接着是一个神经元激活函数(符号函数):
在这里插入图片描述
最终得到输出结果1或者-1,也就是分类结果。
神经网络模型则在感知机模型的基础之上做了扩张,总结为以下三点:
1,增加了隐层,也就是输入和输出之间的层,隐层可以有很多层,增加了隐层的好处就是模型的表征能力增强,如下图,当然隐层的增加同时也会带来计算复杂度的增加。
深度神经网络模型(DNN)与前向传播过程_第2张图片
2,输出层的神经元可以不止一个。可以有多个输出。这样模型可以灵活的处理分类和回归的问题,也可以用于其他机器学习领域,例如降维和聚类等。多神经元输出模型如下:
深度神经网络模型(DNN)与前向传播过程_第3张图片
3,激活函数选择范围扩大。在mlp算法中我们只使用了符号函数sign作为激活函数,然而在实际应用中,我们常用的激活函数,其实是sigmoid,笔者在第一个接触算法项目的时候,采用的就是sigmoid函数。更多的激活函数笔者将会在后面用专门的文章来阐述每个激活函数的优缺点。sigmoid函数如下:
在这里插入图片描述

二. DNN的基本结构

由上面阐述可知,神经网络是mlp的扩展,而DNN可以理解为有很多个隐层的神经网络,DNN有时候也叫做多层感知机。DNN模型如下:
深度神经网络模型(DNN)与前向传播过程_第4张图片
层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。虽然DNN看起来很复杂,但是从小的局部模型来说,还是和感知机一样,即一个线性关系z=∑wixi+b加上一个激活函数σ(z)。由于DNN层数多,则我们的线性关系系数w和偏倚b的数量也就是很多了,那么参数又是如何定义的呢?
W的定义
以下图的三层DNN为例,如下图,第二层的第四个神经元到第三层的第二个神经元的线性系数为W324,其中,上标3代表线性系数w所在的层数,下标2和4分别代表的是输出层的第二个神经元和输入层的第四个神经元 ,有人会为为啥不是W342呢,这主要是为了模型便于用于矩阵预算,如果是W342的话,每次进行矩阵运算时,计算的是wtx+b,需要对w矩阵进行转置。将输出的索引放在前面的饿话,矩阵运算计算的就会wx+b ,则不需要进行转置运算,即直接为wx+b.总结来说,,第l−1层的第k个神经元到第l层的第j个神经元的线性系数定义为wljk。注意,输入层是没有w参数的。
深度神经网络模型(DNN)与前向传播过程_第5张图片
b(偏倚,也叫偏置)的定义:
。还是以这个三层的DNN为例,第二层的第三个神经元对应的偏倚定义为b23。其中,上标2代表所在的层数,下标3代表偏倚所在的神经元的索引。同样的道理,第三个的第一个神经元的偏倚应该表示为b31。同样的,输入层是没有偏倚参数b的。
深度神经网络模型(DNN)与前向传播过程_第6张图片

三. DNN前向传播算法数学原理

在上一节,我们已经介绍了DNN各层线性关系系数w,偏倚b的定义。假设我们选择的激活函数是σ(z),隐藏层和输出层的输出值为a,则对于下图的三层DNN,利用和感知机一样的思路,我们可以利用上一层的输出计算下一层的输出(将上层的输出作为下层的输入,再来计算下层的输出),也就是所谓的DNN前向传播算法。
深度神经网络模型(DNN)与前向传播过程_第7张图片
深度神经网络模型(DNN)与前向传播过程_第8张图片
 将上面的例子一般化,假设第l−1层共有m个神经元,则对于第l层的第j个神经元的输出alj,我们有:
 在这里插入图片描述
其中,如果l=2,则对于的a1k即为输入层的xk。从上面可以看出,用数学去表达每一个输出非常麻烦,如果用矩阵就比较简单了。用矩阵法表示第L层的输出为:
在这里插入图片描述

四. DNN前向传播算法

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

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

输出:输出层的输出aL
    1) 初始化a1=x
    2) for l=2 to L, 计算:
al=σ(zl)=σ(Wlal−1+bl)

最后的结果即为输出aL

五,总结

本文从mlp 讲到神经网络再到DNN,最后到DNN的前向传播,后面作者会讲反向传播,以及激活函数等等,最后会跟大家做一些概念性的区别和阐述,不至于混淆。

你可能感兴趣的:(神经网络,dnn,深度学习)