这里具体写一下摘要及感想
1、DNN(深度神经网络)简介:
从DNN按不同层的位置划分,DNN内部的神经网络层可以分为三类,输入层,隐藏层和输出层,如下图示例,一般来说第一层是输入层,最后一层是输出层,而中间的层数都是隐藏层。
输入层的每个神经元输入样本数据x的一维
层与层之间是全连接的,也就是说,第层的任意一个神经元一定与第层的任意一个神经元相连。虽然DNN看起来很复杂,但是从小的局部模型来说,还是和感知机一样,即一个线性关系加上一个**函数。
2、参数定义
由于DNN层数增多,则线性关系系数和偏倚的数量就会很多,具体的定义方法如下:
首先我们来看看线性关系系数的定义。以下图一个三层的DNN为例,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为
上标 3 代表线性系数所在的层数,而下标对应的是输出的第三层索引 2 和输入的第二层索引 4 。你也许会问,为什么不是 而是呢,如果是而每次进行矩阵运算是, 需要进行转置。将输出的索引放在前面的话,则线性运算不用转置,即直接为。总结下,第层的第个神经元到第层的第个神经元的线性系数定义为。注意,输入层是没有参数的。
再来看看偏倚的定义。还是以这个三层的DNN为例,第二层的第三个神经元对应的偏倚定义为。其中,上标代表所在的层数,下标代表偏倚所在的神经元的索引。同样的道理,第三个的第一个神经元的偏倚应该表示为。同样的,输入层是没有偏倚参数的。
3、传播公式
从上面可以看出,使用代数法一个个的表示输出比较复杂,而如果使用矩阵法则比较的简洁。假设第层共有个神经元,而第层共有个神经元,则第层的线性系数组成了一个的矩阵, 第层的偏倚组成了一个的向量 , 第层的的输出组成了一个的向量,第层的的未**前线性输出组成了一个的向量, 第层的的输出组成了一个的向量。则用矩阵法表示,第l层的输出为:矩阵化:
4、前向传播过程
所谓的DNN的前向传播算法也就是利用我们的若干个权重系数矩阵,偏倚向量来和输入值向量进行一系列线性运算和**运算,从输入层开始,一层层的向后计算,一直到运算到输出层,得到输出结果为值。
输入: 总层数,所有隐藏层和输出层对应的矩阵,偏倚向量,输入值向量
输出:输出层的输出
1) 初始化
2) for l=2 to L, 计算:
最后的结果即为输出。