人工神经网络,英文全称为Arificial Neural Networks,简称ANN。它的意义在于从样例中进行学习后,为我们提供一个普遍实用的目标函数(输出可为实数、离散值或向量)。目前ANN已广泛应用于视觉场景分析、语音识别、手写识别、机器人控制等多个领域。
一、从生物模型到数学模型
生物模型:生物学家估计人类大脑是由 1 0 11 10^{11} 1011个互相连接的神经元组成的异常复杂的网络,平均一个神经元与其他约 1 0 4 10^{4} 104个神经元互连,人在收到外部刺激后,经过大脑中复杂神经网络后做出响应。现在知道的神经网络中最快的神经元转换时间在 1 0 − 3 10^{-3} 10−3秒级别,相比于计算机 1 0 − 10 10^{-10} 10−10慢很多,但却能做出复杂度惊人的决策,如我们认出我们的母亲大约需要 1 0 − 1 10^{-1} 10−1秒,此时被激发的神经元序列不长于数百步,因此很多人推测这得益于大量神经元的高度并行处理。
图1
数学模型:受人脑神经元的高度并行处理的启发,模拟神经网络的结构和连接,构建出人工神经网络。ANN由一个输入层、多层隐藏层、一个输出层构成,每个单元在层中,层与层之间彼此关联。
图2
注1:ANN只是受到神经网络的启发,并非完全等同于人脑神经网络,有许多复杂的生物神经系统特征,它并未模拟。而且ANN很多特征与人脑神经网络并不一致,如ANN中每个单元输出单一的不变值,而生物神经元则输出的复杂的时序脉冲。因此目前衍生出两派研究者:一派热衷于使用ANN研究和模拟生物真实的学习过程;另一派则旨在获取高效的机器学习算法,不考虑算法是否反映生物过程。
注2:大多数的ANN软件在串行机器上进行,而更快的版本已经在高度并行机和专门为ANN设计的硬件上实现了。
二、典型案例
Pomerleau(1993)教授的ALVINN(Autonomous Land Vehicle In A Neural Network)系统是神经网络(Neural Network)控制陆地自动驾驶汽车的第一次尝试。通过训练5分钟学习到的ANN,实现在高速公路上以70英里/小时驾驶了90英里(左车道行驶,同时还有其他车辆)。
图3
上图为ALVINN系统一个版本使用过的神经网络表示,第一层输入层为从图像中获取的30x32个像素,第二层隐藏层共有4个单元(其输出作为第三层的输入),第三层输出层30输出单元分别代表30个输出方向,输出单元中概率最大的为最强烈推荐的驾驶方向。
上图中右侧的黑白矩阵和黑白长条,代表ANN学习到的权重,分别代表第一层输入层(所有单元,共30x32个)对第二层隐藏层单元(一个)的权重和第二层隐藏层(一个)对第三层输出层(所有单元,共30个)的权重。
上图所有单元的分层互连形成了一个有向无环图。ANN的图可以无环或有环,可以有向或无向。大多数实际应用采用的都是采用类似上图的无环前馈网络。
三、适合神经网络的学习问题
- ANN实例为很多“属性-值”对表示的:要学习的目标函数是定义在用向量描述的实例之上,向量由预先定义的特征组成如ALVINN中的像素值。输入属性之间可以相关也可以独立。
- ANN输出可为实数、离散值或向量:如ALVINN输出为30个属性的向量。
- ANN的训练集可能包含错误:ANN具有对训练数据中的错误非常好得鲁棒性的特征。
- ANN可容忍长时间的训练:训练时间可以从几秒到几小时,由网络中的权值数量、训练实例数量以及不同的学习算法参数设置等因素决定。
- ANN可能需要快速输出目标函数值:虽然ANN学习的时间可能会很长,但是对于学习到ANN应用后续实例却要求很快,如ALVINN在车辆真实驾驶时,需要快速响应,每秒要应用ANN若干次。
- 人类是否理解目标函数不重要:神经网络学习到的权值经常是人类难以解释的,学习到的规则人类也很难理解。
参考:
1、《机器学习》(美)卡内基·梅隆大学著 曾华军 张银奎等译 60-63页
2、中国大学MOOC 《人工智能与信息社会》北京大学 陈斌 主讲