大家好啊,谁开发了一个深度神经网络dnn?
以下内容来自刘建平, pinard-博客园,研究笔记,总结如下:
深度神经网络(DNN)是深度学习的基础。要了解DNN,首先要了解DNN的模式。现在我们来总结一下DNN模型和前向传播算法。
1从感知器到神经网络
感知机模型,是一个多输入一输出的模型,如下图:所示
学习一个输出和输入的线性关系,得到中间输出结果:
然后是神经元激活功能:
从而获得1或-1的期望结果。
这种模型只能用于二元分类,不能学习复杂的非线性模型,因此不能用于工业。神经网络扩展了感知器的模型,主要有三点:
(1)增加隐藏层,可以有多层,增强模型的表达能力。比如下图,隐藏层那么多的模型复杂度增加了很多。
(2)输出层的神经元也可以有一个以上的输出和多个输出,因此该模型可以灵活应用于分类回归等降维、聚类等机器学习领域。下图是多个神经元输出的输出层对应的一个例子。现在输出层有4个神经元。
(3)扩展激活功能。感知器的激活函数为[公式],简单但处理能力有限。因此,神经网络中常用的其他激活函数,如我们在逻辑回归中使用的Sigmoid函数,有:
[公式]
还有后来的tanx,softmax,ReLU等等。通过使用不同的激活函数,进一步增强了神经网络的表达能力。
2 DNN的基本结构
神经网络是基于感知器的扩展,而DNN可以理解为一个具有许多隐含层的神经网络。多层神经网络和深度神经网络DNN实际上指的是同一个东西,而DNN有时被称为多层感知器,MLP)。
根据DNN不同层的位置,DNN的神经网络层可以分为三类:输入层、隐藏层和输出层。如下图所示,一般来说,第一层是输入层,最后一层是输出层,中间层是隐藏层。
层与层之间是完全连通的,也就是说,I层中的任何一个神经元都必须与i 1层中的任何一个神经元相连。虽然DNN看起来很复杂,但是从一个很小的局部模型来看,它和感知器是一样的,就是一个线性关系[公式]加上一个激活函数[公式]。
由于DNN层数多,我们的线性关系系数w和偏差b的数量也很大。在DNN,具体参数是如何定义的?先看线性关系系数w的定义,以下图中的一个三层DNN为例,第二层的第四个神经元和第三层的第二个神经元之间的线性关系定义为[公式]。上标3表示线性系数w所在的层数,而下标对应于输出的第三层索引2和输入的第二层索引4。你可能会问,为什么不【公式】?这主要是为了便于模型用于矩阵表示运算。如果是[公式],每次矩阵运算都是[公式],就需要转置。如果输出指标放在前面,线性运算就不用转置了,就是直接[公式]。从l层的第k个神经元到l层的第jth个神经元的线性系数定义为[公式]。注意输入图层没有w参数。
看偏置b的定义,以这个三层DNN为例,第二层第三个神经元对应的偏置定义为[公式],其中上标2表示层数,下标3表示偏置所在神经元的指数。同理,第三层第一个神经元的偏置应该用[公式]表示。输出层没有偏置参数。
3 DNN前向传播算法的数学原理
假设选择的激活函数为[公式],隐藏层和输出层的输出值为[公式],对于下图中的三层DNN,我们可以用上一层的输出来计算下一层的输出,称为DNN前向传播算法。
从上面可以看出,用代数方法逐个输出的表象比较复杂,而用矩阵法则则比较简单。假设L611层有m个神经元,L层有n个神经元,则L层的线性系数W形成nm矩阵[公式]。L-level的偏置B构成公式的向量,l-1-level的输出构成公式的向量,L-level激活前的线性输出Z构成公式的向量,L-level的输出构成公式的向量根据矩阵方法,L层的输出为:如果您有互联网问题,也可以咨询我,谢谢!如果你也想一起学习人工智能,欢迎留言交流。
我的其他文章: