转载出处:http://blog.csdn.net/eternity1118_。
早前已经学习了感知器学习算法,主要通过对那些错分类的样本进行求和来表示对错分样本的惩罚,但明显的它是一个线性的判别函数;而且上节学到了感知器神经元(阈值逻辑单元),对于单个的感知器神经元来说,尽管它能够实现线性可分数据的分类问题(如与、或问题),但是却无法解决非线性问题,如逻辑学里的异或(XOR)问题甚至是高阶,那么这样的问题该如何利用简单学习机器来解决呢?
回想下前面在非线性分类器中提到的分段线性判别,它的目的是为了将非线性函数拟合成多段线性函数的组合,同样,关于上述问题,我们也可以采用这一思想,对于任意复杂形状的分类区域,总可以用多个神经元组成一定的层次结构来实现,如图,也即多个感知器神经元的组合:
(1) (这里
依然指的是阶跃函数,用作传递函数)
上图中的模型其实就是:前一层神经元的输出是后一层神经元的输入,最后一层只有一个神经元,它接收来自前一层的n个输入,给出作为决策的一个输出。
尽管我们有了这种多层学习模型的惊喜发现,但是遗憾的是,之前在线性判别里学到的感知器学习算法并不能直接应用在这种多层学习模型的参数学习上(为什么呢,因为要使用梯度下降法训练更新权值,而在该模型,看公式(1),神经元的传递函数为阶跃函数,输出端的误差只能对最后一个神经元的权系数求梯度,无法对其他神经元的权系数求梯度,所以无法使用这种梯度下降算法学习其他神经元的权值;),因此上世纪60年代,多层学习模型的提出者Rosenblatt随即给出了解决方案:除了最后一个神经元外,预先固定其他所有神经元的权重,学习过程就变成只是用感知器学习算法来寻找最后一个神经元的权系数。事实上,这样做相当于通过第一层神经元把原始的特征空间变换到一个新的空间,且第一层的每个神经元构成这个新空间的每一维,其中每一维取值为二值,然后再在这个新空间里用感知器学习算法构造一个线性分类器;显然,由于第一层神经元的权重值由人为确定,因此该模型的性能好坏很大程度上直接取决于第一层神经元权重值的是否选取适当,即第一层怎样设计才最恰当,而这些又直接取决于输入的数据性质,但是不幸的是,在当时还没有人能给出针对任意问题求解第一层参数的方法,于是就这样仅仅因为无法对参数进行学习的瓶颈,导致了人们对感知器的研究就这样停滞了大约有25年之久,直道25年后一种全新且至今广为传用的学习算法‘BP’的出现(作为后续的学习),才打破了僵局。
但是,不管神经网络模型的研究停滞不前了多久,多层感知器模型都是NN研究上的一个火光性的亮点,后续的一系列模型及学习算法(如当今火热的深度学习,还有经典的BP学习算法)都是基于此的,这么多年过去人们一提到NN,仍然会首先想到感知机模型,不仅是因为它简单,更因为它的历史贡献性无可替代。