深度神经网络(Deep Neural Networks, 以下简称DNN)是深度学习的基础
DNN网络结构
DNN内部的神经网络层可以分为三类,输入层,隐藏层和输出层,如下图示例,一般来说第一层是输入层,最后一层是输出层,而中间的层数都是隐藏层。
一般说到神经网络的层数是这样计算的,输入层不算,从隐藏层开始一直到输出层,一共有几层就代表着这是一个几层的神经网络,例如上图就是一个三层结构的神经网络。
层与层之间是全连接的,也就是说,第i
层的任意一个神经元一定与第i+1
层的任意一个神经元相连。虽然DNN看起来很复杂,但是从小的局部模型来说,还是和感知机一样,即一个线性关系
加上一个激活函数𝜎(𝑧)
。
首先我们来看看线性关系系数的定义。
以下图一个三层的DNN为例,第二层的第4个神经元到第三层的第2个神经元的线性系数定义为。上标3代表线性系数所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。
为什么不是, 而是呢?这主要是为了便于模型用于矩阵表示运算,如果是而每次进行矩阵运算是,需要进行转置。
将输出的索引放在前面的话,则线性运算不用转置,即直接为。总结下,第𝑙−1层的第k个神经元到第𝑙层的第j个神经元的线性系数定义为。注意,输入层是没有𝑤参数的。
偏倚类似于。还是以这个三层的DNN为例,第二层的第三个神经元对应的偏倚定义为。其中,上标2代表所在的层数,下标3代表偏倚所在的神经元的索引。同样的道理,第三个的第一个神经元的偏倚应该表示为。同样的,输入层是没有偏倚参数的。
正向传播
假设我们已经有除输出层之外所有层的所有参数,那我们就可以根据根据输入值依次得到每个神经元的值即正向传播
正向传播(forward-propagation)是指对神经网络沿着从输入层到输出层的顺序,依次计算并存储模型的中间变量(包括输出)
反向传播(BP)
反向传播(back-propagation)指的是计算神经网络参数梯度的方法。总的来说,反向传播依据微积分中的链式法则,沿着从输出层到输入层的顺序,依次计算并存储目标函数有关神经网络各层的中间变量以及参数的梯度。
由正向传播经过所有的隐藏层到达输出层,会得到一个输出结果,然后根据这个带入loss funcation中,利用SGD
算法进行最优化求解,其中每次梯度下降都会使用一次BP来更新各个网络层中的参数值,这就是BP回传误差的意思。
在这里插入图片描述
- 正向传播求损失,BP回传误差。
- 根据误差信号修正每层的权重。对各个w进行求导,然后更新各个w
- 链式依赖损失函数:
为什么说神经网络是端到端的网络?
端到端学习(end-to-end)是一种解决问题的思路,与之对应的是多步骤解决问题,也就是将一个问题拆分为多个步骤分步解决,而端到端是由输入端的数据直接得到输出端的结果。
就是不要预处理和特征提取,直接把原始数据扔进去得到最终结果。
特征提取包含在神经网络内部,所以说神经网络是端到端的网络。
优点:
- 通过缩减人工预处理和后续处理,尽可能使模型从原始输入到最终输出,给模型更多可以根据数据自动调节的空间,增加模型的整体契合度。
缺点:
- 它可能需要大量的数据。要直接学到这个𝑥到𝑦的映射,你可能需要大量(𝑥, 𝑦)数据。
- 它排除了可能有用的手工设计组件。