人, 既无虎狼之爪牙,亦无狮象之力量,却能擒狼缚虎,驯狮猎象,无他,唯智慧耳。
全部博文(167)
分类: 大数据
2015-04-24 19:26:16
今天我们要谈的多层感知器其实是一种人工神经网络结构,属于非参数估计,可以用于解决分类和回归问题。我们先来了解下神经网络的背景,然后再来介绍下感知器。
人工神经网络,顾名思义起源于模拟人脑,其目的是理解人脑功能,认知科学家和神经学家共同构建了神经网络模型,并开展了模拟研究。这项技术与工程结合之后,可以帮助我们建立更好的计算机系统。
Marr认为理解一个信息处理系统具有三个层面,总称为分析层面(levels of analysis),即:
这里需要注意的是,对于同一个计算理论,可以有多种表示和算法;而对于同一种表示和算法,可以有多种硬件实现。比如对于自然和人工飞行器,计算理论都是可以“飞行”,算法就是利用“空气动力学”,而实现方式一个是“拍打翅膀”,一个是“发动引擎”。
人脑可以看作是学习或模式识别的一种硬件实现。如果我们可以逆向分析,从这种实现中提取出人脑使用的表示和算法,并且进一步获得计算理论,那么我们就可以考虑使用另一种表示和算法,然后得到更适合我们掌握的计算机硬件的实现。
神经网络可以应用于并行处理。常见的并行架构有单指令多数据(SIMD)机和多指令多数据(MSMD)机, 一种是所有的处理器执行相同的指令处理不同的数据;一种是不同的处理器执行不同的指令处理不同的数据。SIMD实现较为简单,但是应用意义小;MIMD实现复杂,但是现实中多数为此种情况。
神经网络提出了一种介于中间的模式,即引入了中间的少量局部存储器,使用处理器的指令在存储器上输入不同来实现不同的功能。其中每个处理器对应一个神经元,局部参数对应它的突出权重, 而整个结构就是一个神经网络。所以,人工神经网络是一种我们可以实用当前技术构建的、利用并行硬件的方法。
感知器(Perception)是基本的处理元素,它具有输入、输出,每个输入关联一个连接权重(connection weight),然后输出是输入的加权和。
上图就是一个单层的感知器,输入分别是X0、X1、X2,输出Y是输入的加权和:
Y = W0X0 + W1X1 + W2X2
在实际的使用中,我们的主要任务就是通过数据训练确定参数权重。在训练神经网络时,如果未提供全部样本二室逐个提供实例,则我们通常使用在线学习,然后在每个实例学习之后立刻调整网络参数,以这种方式使得网络缓慢得及时调整。具体收敛可是使用梯度下降算法。
感知器具有很强的表现力,比如布尔函数AND和OR都可以使用上面的单层感知器实现。但是对于XOR操作则不行,因为单层感知器只能模拟线性函数,对于XOR这种非线性函数,我们需要新型的感知器。
对于XOR这种非线性函数的模拟,我们需要采用多层感知器,即在最初的输入和输出层之间隐藏着一到多个层,比如:
多层感知器(Multiayer perceptrons, MLP)可以实现非线性判别式,如果用于回归,可以逼近输入的非线性函数。其实MLP可以用于“普适近似”,即可以证明: 具有连续输入和输出的任何函数都可以用MLP近似 ,已经证明,具有一个隐藏层(隐藏节点个数不限)的MLP可以学习输入的任意非线性函数。
训练MLP常用的是向后传播(backpropagation),这主要是因为在我们收敛误差函数的时候,使用链接规则计算梯度:
Refer: 《机器学习导论》,Ethen Alpaydin(土耳其),机械工业出版社