1 深度前馈网络
深度前馈网络(deep feedforward network),也叫作前馈神经网络(feedforward neural network)或者多层感知机(multilayer perceptron,MLP)。对深度前馈网络的理解,从感知机的角度可能更易。感知机又被成为最简单的神经网络,顾名思义,多层感知机就是在感知机的基础上设计添加了更多层。
前馈网络的目标是近似一个函数,意思是说对于目标函数,网络学习的最终目标是输出一个函数,并且尽可能接近。举个例子,一个二分类器会将输入映射到一个类别,前馈网络会定义一个新的映射,然后通过学习参数的值,使得新的映射能够得到最佳的函数映射。
图1.1 一个典型的前馈网络模型对于深度前馈网络,如图1.1,由输入层、隐藏层、输出层和各层之间的连接组成,其中隐藏层根据模型的大小和复杂程度可以设计成数量任意的多层,各层之间的连接一般实际表示特征的权重。“深度”是指一个神经网络模型通常是由不止一层组成的,设计的层数越多,深度就越大,模型也越复杂。对于前馈网络中的“前馈”,因为网络中的数据流向是单向的, 只会按照输入层-隐藏层-输出层的顺序流动,即数据流经当前一层处理后,只会作为下一层的输入流入,而不会对上一层有任何影响和反馈。如果当前层会对前面一层给出反馈或影响,这样的网络模型叫做循环神经网络。
神经网络之所以被成为“网络”,是因为我们可以认为这样的一个模型是由许多不同的函数复合在一起组成的,也就是说神经网络的每一层可以认为是一个函数,加上层与层之间的连接,就表示了多个函数复合在一起的过程。例如,对于一组输入,我们希望得到的输出是,现在有三个函数,那么经过的复合,就能产生近似的输出,其中每一个函数就可以认为是神经网络的一层。我们只关注模型的输入和输出,而对于具体的复合过程,也就是层与层之间的连接细节并不关注,因此将这层处理的层成为“隐藏层”。
2 从感知机到多层感知机
深度前馈网络又叫多层感知机,那么从很早就被提出的感知机模型到多层感知机,有怎样的区别和变化呢?
感知器(英语:Perceptron)是Frank Rosenblatt在1957年就职于康奈尔航空实验室(Cornell Aeronautical Laboratory)时所发明的一种人工神经网络。它可以被视为一种最简单形式的前馈神经网络,是一种二元线性分类器。
感知机最大的局限是只能处理线性的样本空间,如图2.1左,而对于线性不可分的数据无能为力。为了将线性不可分的样本空间变换到线性可分,从而可以利用线性函数近似,就引入了隐藏层,即通
图2.1 左:线性可分 右:线性不可分过隐藏层的处理,原有的样本空间就变成了新的可以使用线性模型处理的样本空间。
3 XOR问题
异或问题是指对于给定的两个二进制输入,通过异或逻辑门得到一个预测输出,当输入不相等时输出1,否则输出0。图3.1展示了异或函数所有可能结果。
图3.1 异或问题为什么这里是解决异或问题,而不是与、或问题?前者的样本空间是非线性的,而与、或问题的样本空间都是线性可分的,即通过引入一个线性函数就能解决,如图3.2。
图3.2 与、或、异或问题本问题的全部样本空间是四个样本点:(0,0)(0,1)(1,0)(1,1),首先需要选取损失函数,这里我们使用均方误差函数(MSE)
训练一个神经网络模型与其他机器学习算法一样,一般都需要三个步骤:选择一个优化模型、确定代价函数和输出单元的形式。那么,我们应该怎样选取优化模型呢?一般说来,线性模型是优先被考虑的,假如是线性函数,包含和,那么模型可以定义为:
使用正规方程,可以解得。我们发现线性模型在任意一点都输出0.5,所以线性模型不能用来表示XOR函数。根据已有经验,我们总是希望能够通过使用一个线性模型来解决问题,但XOR问题的特征空间不允许这样做,如果能够使用一个模型来学习一个不同的特征空间,在这个新学得的空间上线性模型能够表示这个解,那么问题就能得到解决,这样的思路正是神经网络隐藏层的设计需要达到的目的。
为了学的一个新的特征空间,我们引入一个非常简单的前馈神经网络,如图3.3。该神经网络含
图3.3 含有一层隐藏层的前馈神经网络有一层隐藏层,包含两个单元,对于输入,神经网络将其变换到一个新的特征空间,在新学得的空间中,使用一个线性模型就能得到期望的输出。
完整的模型是
现在是明确的使用线性模型,那么应该是那种函数呢?
如果是线性的,那么前馈网络作为一个整体对于输入依然是线性的,因此必须是非线性的。
神经网络通过仿射变换之后紧跟一个被成为激活函数的固定非线性函数来实现。定义:,其中是权重矩阵,是偏置。
现代神经网络中,默认推荐使用定义的整流线性单元作为激活函数。那么我们问题的整体模型就是:
至此,我们已经导出了使用含有一层隐藏层的前馈神经网络解决异或问题的完整模型。最后给出XOR问题的一个解。
网友评论