首页 > 应用 > 人工智能

浅层神经网络

2019-06-11

每当我们听到神经网络的大名时,就会认为它里面有许许多多的隐藏层,但其实还有一种只有少量隐藏层的神经网络,浅神经网络只包含一到两层隐藏层。对浅神经网络的研究可以加强我们对深度神经网络内部运行机制的理解。本文将介绍什么是浅神经网络以及它的数学原理。下图所示是一个只包含一个隐藏层、一个输入层和一个输出层的浅神经网络。DF8电子头条

 DF8电子头条

QQ截图20190611165241.jpgDF8电子头条

 DF8电子头条

 神经元DF8电子头条

神经元是神经网络中的原子单元。给定神经元一个输入,它将得到对应的输出,并将其作为下一层的输入。一个神经元可以认为是以下两部分的结合:DF8电子头条

QQ截图20190611165255.jpgDF8电子头条

 DF8电子头条

第一部分根据输入和权重来计算得到Z 。DF8电子头条

第二部分在Z上施加激活函数得到神经元的最终输出A。DF8电子头条

  DF8电子头条

隐藏层DF8电子头条

隐藏层由许多神经元组成,每一个都会执行上述两步运算。在上图的浅层神经网络中,隐藏层的四个神经元进行如下计算:DF8电子头条

 DF8电子头条

QQ截图20190611165304.jpgDF8电子头条

 DF8电子头条

在上面的方程中:DF8电子头条

 DF8电子头条

  1. 下标i表示第i层,下标j表示该层的第j个神经元。
  2. X是包含3个特征的输入向量。
  3. W[i]j是第i层第j个神经元的权值。
  4. b[i]j 是第i层第j个神经元的偏置。
  5. Z[i]j 是第i层第j个神经元的中间输出。
  6. A[i]j 第i层第j个神经元的最终输出。
  7. Sigma 是sigmoid激活函数。它的数学定义是:

 DF8电子头条

 DF8电子头条

QQ截图20190611165310.jpgDF8电子头条

 DF8电子头条

显而易见,上述四个方程比较冗长,因此我们把它们进行向量化:DF8电子头条

 DF8电子头条

QQ截图20190611165315.jpgDF8电子头条

 DF8电子头条

第一个方程用一个矩阵乘法计算所有的中间输出Z。DF8电子头条

 DF8电子头条

第二个方程用一个矩阵运算计算所有的激活函数输出A。DF8电子头条

 DF8电子头条

 浅层神经网络DF8电子头条

神经网络通常由若干隐藏层构建。现在我们已经知道了某一层的计算方法,接下来学习如何在整个神经网络中根据给定输入X计算输出。以下这些方程也称为前向传播方程。DF8电子头条

 DF8电子头条

QQ截图20190611165320.jpgDF8电子头条

 DF8电子头条

第一个方程计算第一个隐藏层的中间输出Z[1]。DF8电子头条

 DF8电子头条

第二个方程计算第一个隐藏层的最终输出A[1]。DF8电子头条

 DF8电子头条

第三个方程计算输出层的中间输出Z[2]。DF8电子头条

 DF8电子头条

第四个方程计算输出层的最终输出A[2],也就是整个神经网络的最终输出。DF8电子头条

 DF8电子头条

 激活函数DF8电子头条

我们知道,一个神经网络根本上来说就是一组数学方程和权重的集合。为了提高神经网络的鲁棒性,从而在各种不同的场景下都能得到很好的效果,我们使用了激活函数。这些激活函数为神经网络引入了非线性特性。接下来在浅层神经网络的基础上理解激活函数的重要性。DF8电子头条

 DF8电子头条

如果没有激活函数,我们的浅层神经网络可以被表示成:DF8电子头条

 DF8电子头条

QQ截图20190611165333.jpgDF8电子头条

 DF8电子头条

将方程一中的Z[1]代入方程2得到如下方程:DF8电子头条

 DF8电子头条

QQ截图20190611165337.jpgDF8电子头条

 DF8电子头条

显而易见,输出将是一个新权重矩阵W、输入X和新偏置矩阵b线性组合,意味着隐藏层中的神经元及其权重都失去了意义。因此,我们需要用激活函数为网络引入非线性特性。DF8电子头条

 DF8电子头条

激活函数有许多种,包括Sigmoid、Tanh、ReLU等等,并且可以在每层使用不同的激活函数。你可以在下面这篇文章中得到关于激活函数的更多信息。DF8电子头条

 DF8电子头条

  权值初始化DF8电子头条

神经网络的权重矩阵通常是随机初始化的。那么为什么不能将它初始化为0或者其它什么值呢?接下来通过我们的浅层神经网络来理解这个问题。DF8电子头条

 DF8电子头条

让我们用0或者其它值来初始化第一层的权重矩阵W1,和第二层的权重矩阵W2。现在,如果权重矩阵保持不变,那么隐藏层中神经元的激活函数也相同,激活函数的导数也相同。因此,该隐藏层中的各个神经元的权值将被修改为类似的值,从而某一隐藏层无需再包含多于一个神经元。然而这并非我们想要的。相反,我们希望隐藏层中的每一个神经元都独一无二,拥有不同的权重并且作为一个独立的方程来运算。因此,我们需要随机初始化权值。DF8电子头条

 DF8电子头条

最好的初始化方法是Xavier初始化。它的数学定义是:DF8电子头条

 DF8电子头条

QQ截图20190611165347.jpgDF8电子头条

 DF8电子头条

方程表明,第l层的权重矩阵W的值由正态分布生成,其中均值μ= 0、方差sigma² 是第l-1层神经元数量的倒数。所有层的偏置b均初始化为0.DF8电子头条

 DF8电子头条

  梯度下降DF8电子头条

神经网络的权重是随机初始化的。为了用神经网络进行正确预测,我们需要更新这些权值,用于更新权值的方法称之为梯度下降。以下通过计算图来进行理解。DF8电子头条

 DF8电子头条

 DF8电子头条

QQ截图20190611165355.jpgDF8电子头条

 DF8电子头条

上图中,前向传播(黑线所示)用于根据给定输入X计算输出。反向传播(红线所示)对计算图中每一步的输入计算其导数,从而更新权重矩阵W[1]、W[2]和偏置b[1]、b[2]。损失函数L定义如下:DF8电子头条

 DF8电子头条

QQ截图20190611165403.jpgDF8电子头条

 DF8电子头条

根据上式所示损失函数L,隐藏层和输出层采用sigmoid激活函数,利用导数的链式法则可以计算出:DF8电子头条

 DF8电子头条

QQ截图20190611165409.jpgDF8电子头条

 DF8电子头条

上面的方程可能看起来有点迷惑,但是它们在梯度下降中应用非常好。在计算dZ[1]的方程中,*表示点积,σ’ 表示sigma的导数。DF8电子头条

 DF8电子头条

“我强烈建议懂微积分的读者亲自计算一下上述方程,从而对于梯度下降的运行方式有一个更好的理解。”DF8电子头条

 DF8电子头条

在本文中,我们学习了浅层神经网络的数学原理。尽管我已经尽可能详细的解释了其中的所有内容,如果你感觉欠缺某些知识,请查看我之前的帖子,或者在下面的评论区中提问。DF8电子头条