1.3 神经网络简史
神经网络的概念来自生物学科,人脑中错综复杂的生物神经网络承担着对人自身庞大的生物信息的处理工作。之后出现的人工神经网络其实是科学家根据人脑中生物神经网络的工作原理而抽象出的一种可以用数学进行定义的模型,但这个抽象的过程仅限于认知领域,因为在实际情况下生物神经网络的工作机理会比用数学定义的人工神经网络的表达式复杂许多。即便如此,人工神经网络在处理问题时效果却非常出众。如图1-3所示是我们对机械脑和人脑的一个臆想。
图1-3
1.3.1 生物神经网络和人工神经网络
构成生物神经网络系统和功能的基本单位是生物神经细胞,也叫作生物神经元,一个生物神经元由细胞核、树突、轴突、突出等组织构成,而一个完整的生物神经网络系统由成千上万个生物神经元构造而成。如图1-4所示就是一个生物神经元的简单图例。
图1-4
在图1-4中左边类似于树枝的是树突,树突是神经元的信息输入端,一个神经元通过树突就可以接收来自外部神经元的信息传入;图中中间的长条是轴突,轴突是神经元的信息输出端,神经元通过轴突可以把神经元中已处理完成的信息传递到突触;图中右边同样类似于树枝但是带有小圆点的是突触,突触是本神经元和外部神经元之间的连接接口。大量的神经元通过树突和突触互相连接,最后构造出一个复杂的神经网络。生物神经元的信息处理流程简单来说是先通过本神经元的树突接收外部神经元传入本神经元的信息,这个信息会根据神经元内定义的激活阈值选择是否激活信息,如果输入的信息最终被神经元激活,那么会通过本神经元的轴突将信息输送到突触,最后通过突触传递至与本神经元连接的其他神经元。
1.3.2 M-P模型
在知道生物神经元的工作机理后,我们来看一个经典的人工神经元模型。人工神经元的基础模型是由W.S.McCulloch和W.Pitts这两位科学家于1943年根据生物神经元的生物特性和运行机理发明的,这个经典的模型被命名为M-P模型,M和P分别是这两位科学家的名字的首字母。如图1-5所示是一个M-P模型的结构示意图。
图1-5
在图1-5中从左向右看,首先是一列从x1到xn的参数,我们可以将从x1到xn看作类似于生物神经元中的树突接收到的来自外部神经元的信息,不过还需要对这些输入的信息进行相应的处理,处理方法是对信息中的每个参数乘上一个对应的权重值,权重值的范围是从w1j到wnj;图中的圆圈等价于在生物神经元中判断是否对输入的信息进行激活、输出的部分,M-P模型在判断输入的信息能否被激活及输出前会对输入的信息使用∑来完成求和处理,∑就是数学中的累加函数,然后将求和的结果传送给函数f,函数f是一个定义了目标阈值的激活函数,这个激活函数只有在满足目标阈值时才能将信息激活及输出;Oj类似于生物神经元中的轴突,用于承载输出的信息。
M-P模型的数学表达式如下:
为了更直观地理解M-P模型,我们通过一个简单的实例进行说明。假设某个神经元只有两个信息输入,分别是x1和x2,其中x1=5,x2=2,x1和x2对应的权重值分别是w1=0.5,w2=2,并且定义激活函数的阈值为θ=5,且激活函数f的激活条件为:x1×w1+x2×w2-θ的计算结果在大于等于0时输出1,在小于0时输出0。通过计算,我们可以得到最后的输出结果Oj为1。如果激活条件保持不变,则重新定义激活函数的阈值为θ=7,那么最终得到的输出结果就变成0了。
除了以上M-P模型的常规用法,我们还可以使用M-P模型轻易地构造出逻辑与门、逻辑或门和逻辑非门。首先看看如何构造逻辑与门,为了使效果更明显,我们设定三个输入参数x0、x1和x2,其中x0=1。
逻辑与门的M-P模型的输入输出规则如下:当输入x1=0且x2=0时,输出的结果为0;当输入x1=0且x2=1时,输出的结果为0;当输入x1=1且x2=0时,输出的结果为0;当输入x1=1且x2=1时,输出的结果为1。逻辑与门的M-P模型结构如图1-6所示。
图1-6
为了实现逻辑与门的功能,我们需要对模型中的权重w0、w1、w2的值和激活函数f进行定义。设定w0=-8、w1=5、w2=5,激活函数f的激活条件为:1×w0+x1×w1+x2×w2的计算结果在小于0时输出0,在大于等于0时输出1,这样就构造出了一个逻辑与门。值得注意的是,我们当前使用的权重值和激活函数激活条件的组合并不是逻辑与门的唯一定义方式,使用不同的参数组合也能达到相同的效果。
然后,我们看看如何构造逻辑或门。逻辑或门的M-P模型的输入输出规则如下:当输入为x1=0且x2=0时,输出的结果为0;当输入为x1=0且x2=1时,输出的结果为1;当输入为x1=1且x2=0时,输出的结果为1;当输入为x1=1且x2=1时,输出的结果为1。逻辑或门的M-P模型结构如图1-7所示。
图1-7
同样,为了实现逻辑或门的功能,我们需要对模型中的权重w0、w1、w2的值和激活函数f进行定义。设定w0=-5、w1=8、w2=8,激活函数f的激活条件为:1×w0+x1×w1+x2×w2的计算结果在小于0时输出0,在大于等于0时输出1,这样就构造出了一个逻辑或门。我们发现激活函数的激活条件和之前的逻辑与门的激活条件一样,这里我们重点改变了模型的权重值。同样,搭建逻辑或门使用的权重值和激活函数激活条件的组合也不是唯一的。
最后,我们看看如何构造逻辑非门。在逻辑非门中输入的参数只需有两个,分别是x0和x1,其中x0=1。逻辑非门的M-P模型的输入输出规则如下:当输入为x1=0时,输出的结果为1;当输入为x1=1时,输出的结果为0。逻辑非门的M-P模型结构如图1-8所示。
图1-8
为了实现逻辑非门的功能,在模型中定义的参数变成了权重w0、w1的值和激活函数f。我们设定w0=10、w1=-20,激活函数f的激活条件为:1×w0+x1×w1的计算结果在小于0时输出0,在大于等于0时输出1,这样就构造了一个逻辑非门。搭建逻辑非门使用的权重值和激活函数激活条件的组合仍然不是唯一的。
通过对逻辑与门、逻辑或门和逻辑非门进行任意组合,我们可以构造更复杂的神经网络结构,所以M-P模型具备非常实用的特性,当然,它仍有不足之处。
1.3.3 感知机的诞生
1957年,科学家Frank Rosenblatt提出了一种具有单层计算单元的神经网络模型,这种模型也叫作感知机(Perceptron),它在结构上和M-P模型极为相似,不同之处是感知机被使用的初衷是解决数据的分类问题,因为感知机本身就是一种能够进行二分类的线性模型。那么什么样的模型可被称作二分类线性模型呢?下面让我们通过图1-9来直观地感受一下。
图1-9
在图1-9中用到的数据都是二维的,一条直线将数据一分为二,这条直线就是一个二分类线性模型。在三维空间中同样可以对数据进行二分类,只不过在三维空间中划分数据的不是一条直线,而是一个平面。所以,只要被处理的数据线性可分,就能使用感知机模型不断地进行模型训练和参数优化,最后得到一个能够对数据进行二分类的模型。如果我们处理的数据是线性不可分的,在进行模型训练的过程中就会出现模型一直来回震荡的情况,也就得不到理想的结果了。感知机的数学表达式如下:
f(x)=sign(w·x+b)
其中,参数x为输入向量,w为输入向量对应的权重值,b为偏置,w·x是输入向量x和权重向量w的点积表示。sign为符号函数,符号函数的定义如下:
也就是说,当符号函数的输入值大于0时输出正1,当符号函数的输入值小于0时输出负1。然后,我们使用w·x+b来代替以上公式中的x,得到如下新的公式:
这样就更直观了。如果输入向量x是我们要进行分类的数据,那么输出结果值负1和正1就可以被看作数据经过模型计算后输出的对应标签,这样我们就将输入向量x划分成两类了。如果处于二维空间中,那么w·x+b=0对应的就是对输入数据进行二分类的那条直线,在感知机中我们也把这条直线叫作分割超平面(Separating Hyperplane)。不过感知机也存在极为明显的优缺点,优点是很容易处理线性可分问题,缺点是不能处理异或问题,也就是说不能处理非线性问题。所以,之后出现了能够处理非线性问题的多层感知机模型,如图1-10所示就是一个多层感知机模型的结构图。
图1-10
多层感知机和单层感知机的最大区别是多层感知机在它的输入层(Input Layer)和输出层(Output Layer)之间加入了新的网络层次,这个新的网络层次叫作隐藏层(Hidden Layer),我们能够自定义隐藏层的层次数量,层数通常会是一层或者多层。同时,多层感知机具备了一种后向传播能力,我们可以暂时将后向传播理解为多层感知机模型进行自我学习和优化的一种方法。
1.3.4 你好,深度学习
多层感知机的出现使神经网络模型在解决问题的能力上得到很大的提升,而且通过累加多层感知机的网络层次,模型有了能够解决现实世界的复杂问题的能力。因此,难免有人误以为只需对网络层次进行机械性累加,就可以得到一个有强泛化能力的多层感知机模型,最后得到的模型效果却差强人意,还引发了新的问题。模型的深度是一把双刃剑,随着模型深度的不断增加,模型本身会面临许多新的问题,最典型的就是通过机械性累加得到的深层次神经网络模型在进行后向传播的过程中会出现梯度消失的问题,梯度消失就意味着我们搭建的神经网络模型已经丧失了自我学习和优化的能力,所以在搭建神经网络模型时并不是网络的层次越深效果就越好。对于深层次神经网络模型,我们必须有特别的优化和控制手段。
对于在深层次神经网络模型训练中出现的梯度消失问题,科学家一直在探索解决方法,在2006年,由Geoffrey E. Hinton提出了一种有效的解决方案,就是通过无监督预训练对权值进行初始化和有监督训练微调模型,这也是本书着重使用的深度学习(Deep Learning)方法。不过随着历史的发展,深度学习方法中的有监督训练微调模型更受到人们的青睐,这种方法利用现有的样本数据,通过科学的方法不断微调模型参数,使模型的预测结果和真实结果之间的误差值不断减小。
在深度学习方法被提出后,科学家们通过不断改进和创新,开发出了基于深度学习方法的众多全新模型,这些模型在解决相关领域的问题的效果上比传统的机器学习方法要好出不少。