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