首页 » python机器学习 » python机器学习全文在线阅读

《python机器学习》12.1.2 多层神经网络架构简介

关灯直达底部

在本节,我们将看到如何将多个单独的神经元连接为一个多层前馈神经网络(multi-layer feedforward neural network)。这种特殊类型的网络也称作多层感知器(multi-layer perceptron,MLP)。下图解释了三层MLP的概念:一个输入层、一个隐层,以及一个输出层。隐层的所有单元完全连接到输入层上,同时输出层的单元也完全连接到了隐层中。如果网络中包含不止一个隐层,我们则称其为深度人工神经网络。

我们可以向MLP中加入任意数量的隐层来创建更深层的网络架构。实际上,可以将神经网络中的隐层数量及各单元看作是额外的超参,可以使用第6章中介绍过的交叉验证针对特定问题对它们进行优化。

不过,随着增加到网络中的隐层越来越多,通过反向传播算法计算得到的梯度误差也将变得越来越小。这个接近于不存在的梯度问题使得模型的学习非常具有挑战性。因此,特别发展出了针对此类深层神经网络架构的预处理算法,亦即所谓的深度学习。

如前面的图所示,我们将第l层中第i个激励单元记为,同时激励单元和为偏置单元(bias unit),我们均设定为1。输入层各单元的激励为输入加上偏置单元:

对于l层中的各单元,均通过一个权重系数连接到l+1层中的所有单元上。例如,连接第l层中第k个单元与第l+1层中第j个单元的连接可记作。请注意,中的上标i代表是第i个样本,而不是第i层。为了简洁起见,后续段落中我们将忽略上标i。

虽然对于二类别分类来说,输出层包含一个激励单元就已足够,但在前面的图中我们可以发现一个更加通用的神经网络形式,通过一对多技术(One-vs-ALL,OvA),可以将它推广到多类别分类上。为了更好理解它是如何工作的,请回忆一下我们在第4章中介绍的使用独热(one-hot)法来表示分类变量。例如,我们可以将鸢尾花数据集中的三个类标(0=Setosa,1=Versicolor,2=Virginica)表示如下:

通过独热向量表示方法,我们可以处理数据集中包含任意多个类别的分类任务。

如果读者是第一次接触到神经网络表示方法,起初可能会对术语符号的标记(上标和下标)感到困惑。也许会疑惑为什么我们不使用,而是使用来表示连接第l层中第k个单元和第l+1层中第j个单元的权重系数。这些乍看好像很古怪的内容在后续小节中,当使用向量来表示神经网络时将会非常有用。例如,我们将使用矩阵来表示连接输入层和隐层之间的权重,其中h为隐层的数量,而m+1为隐层中节点及偏置节点数量之和。真正理解并消化这种标识方法对于学习本章后续内容至关重要,我们通过下图来解释一下前面介绍过的3-4-3多层感知器: