Deep_Learning学习笔记——深度神经网络(DNN)实现手写数字识别

深度神经网络(Deep Neural Networks, 以下简称DNN)是深度学习的基础,而要理解DNN,首先我们要理解DNN模型,下面我们就对DNN的模型与前向传播算法做一个总结。

从感知机到神经网络

感知机接收多个输入信号,输出一个信号。如下图所示:

输出和输入之间学习到一个线性关系,得到中间输出结果:


$$
x_i代表人们选择的输入信号,w_i为感知机的内部参数,称为权重,上图中的○通常称为“神经元”或“节点”。
$$
感知机的多个输入都有各自的权重,权重越大,对应信号的重要性就越高。

接着是一个神经元激活函数:

当输出1时,称此神经元被激活,其中w是体现输入信号重要性的参数,而偏置b是调整神经元被激活的容易程度的参数。有时将w,b统称为权重。

这个模型只能用于二元分类,且无法学习比较复杂的非线性模型,因此在工业界无法使用。而神经网络则在感知机的模型上做了扩展,总结下主要有三点:

  1. 加入了隐藏层:隐藏层可以有多层,增强模型的表达能力,如下图实例,当然增加了这么多隐藏层模型的复杂度也增加了好多。
  2. 输出层的神经元也可以不止一个输出,可以有多个输出,,这样模型可以灵活的应用于分类回归,以及其他的机器学习领域比如降维和聚类等。多个神经元输出的输出层对应的一个实例如下图,输出层现在有4个神经元了。
  3. (3)对激活函数做扩展,感知机的激活函数是sign(z) ,虽然简单但是处理能力有限,因此神经网络中一般使用的其他的激活函数,比如我们在逻辑回归里面使用过的Sigmoid函数,即:

$$
f(z)=\frac{1}{1+e^{-z}}
$$

还有后来出现的tanx, softmax,和ReLU等。通过使用不同的激活函数,神经网络的表达能力进一步增强。

DNN基本结构

神经网络是基于感知机的扩展,而DNN可以理解为有很多隐藏层的神经网络。多层神经网络和深度神经网络DNN其实也是指的一个东西,DNN有时也叫做多层感知机(Multi-Layer perceptron,MLP)。

从DNN按不同层的位置划分,DNN内部的神经网络层可以分为三类,输入层,隐藏层和输出层,如下图示例,一般来说第一层是输入层,最后一层是输出层,而中间的层数都是隐藏层。

层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。虽然DNN看起来很复杂,但是从小的局部模型来说,还是和感知机一样,即一个线性关系 加上一个激活函数

首先看线性关系系数w的定义。以下图一个三层的DNN为例,第二层的第4个神经元到第三层的第2个神经元的线性关系定义为.上标3代表线性系数w所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。你也许会问,为什么不是呢?这主要是为了便于模型用于矩阵表示运算,如果是而每次进行矩阵运算是,需要进行转置。将输出的索引放在前面的话,则线性运算不用转置,即直接为。第i−1层的第k个神经元到第l层的第j个神经元的线性系数定义为。注意,输入层是没有w参数的。

再看偏倚b的定义。还是以这个三层的DNN为例,第二层的第三个神经元对应的偏倚定义为$b^2_3$.其中,上标2代表所在的层数,下标3代表偏倚所在的神经元的索引。同样的道理,第三层的第一个神经元的偏倚应该表示为$a^3_1$ .输出层是没有偏倚参数的。

DNN反向传播算法

在进行DNN反向传播算法前,我们需要选择一个损失函数,来度量训练样本计算出的输出和真实的训练样本输出之间的损失。

损失函数

在神经网络中,衡量网络预测结果$y=F(x)$与真实值$y$之间差别的指标称为损失函数。损失函数值越小,表示神经网络的预测结果越接近真实值。神经网络进行分类和回归任务时会使用不同的损失函数,下面列出一些常用的分类损失和回归损失。

分类损失函数

  1. Logistic损失:

$$
loss(\widehat{y},y) = \prod_{i=1}^{N}\widehat{y}_i^{y_i}·{(1-\widehat{y}_i)}^{1-y_i}
$$

  1. 负对数似然损失

  2. 交叉熵损失

回归损失函数

  1. 均方误差,也称L2损失
  2. 平均绝对误差,也称L1损失
  3. 均方对数差损失
  4. HUber损失
  5. Log-Cosh损失函数

DNN反向传播算法过程

由于梯度下降法有批量(Batch),小批量(mini-Batch),随机三个变种,为了简化描述,这里我们以最基本的批量梯度下降法为例来描述反向传播算法。实际上在业界使用最多的是mini-Batch的梯度下降法。区别仅仅在于迭代时训练样本的选择。

输入:总层数L,以及各隐藏层与输出层的神经元个数,激活函数,损失函数,迭代步长a,最大迭代次数max与停止迭代阈值$\varepsilon$,输入的m个训练样本

输出:各隐藏层与输出层的线性关系系数矩阵W和偏倚向量。