2016年开启了人工智能的时代。在这一年里,AlphaGo围棋胜了人类;微软报告ASR语音识别结果好过专业速记员;日本NHK电视报道,IBM机器Watson只花10分钟完成41名病人的诊断,这通常是医生两周的工作;它读取大量资料和病人DNA后,救了一位医者束手无策的白血病人;特斯拉自动驾驶汽车已挤进车流,还发生了车祸;机器创作歌曲、绘画、诗歌、小说、电影也有了不俗的成绩。Google、IBM、Facebook、Amazon和Microsoft组成人工智能联盟,研究AI行业的规范标准。美国白宫发布了《准备迎接人工智能未来》和《国家人工智能研究发展战略计划书》。现在的人工智能核心是机器学习,它不是过去那种,依人类知识为规则来作答的专家系统,而是通过样本来获得知识,自己作判断的机器。
这篇简单介绍机器学习的工作原理。希望只要懂的线性代数、最小二乘法和统计概念的读者,便能通过其机制破除神秘自己解惑,对此有兴趣的人能抓住要点启发应用。
什么是机器学习?简单地说,计算机利用输入的大量样本数据,调整表示规律和分类通用数学模型的参数,然后以调好的模型作答。通常用线性函数的组合来表示数值规律和划分类别模式,实用的线性函数参数是以万计到百亿计的数量。这样的数学模型虽然很简单,却因参数数量的巨大能够实现复杂的功能,足以涵盖各种预测和辨识情况。在数学上,这调整模型参数及应用模型的计算机制,都是精确有效的,但也因变量个数的巨大,难以分析归纳成像物理规律那样简单明晰的因果性机制,从人脑的逻辑推演的角度来理解。
测试人的IQ,是让人回答几十道题,每道题列出几张图形,或几组数字,或几个词作为样本,让你从一组可能的选项中挑出一个最“合理”的答案,以此来评估人的智商。这与你拥有的知识内容无关,测定的是大脑从样本来类比判断的能力。计算机和学习算法,模仿人脑这种能力,赋予机器智商。人类具有智商,可以通过学习获得知识。样本的数据潜藏着大量的信息,通过训练给予了机器知识,让机器表现出判断和预测的智能。
机器学习基本分成无监督学习和监督学习两类。无监督学习是从样本数据分布中,按它们的聚集来分类,例如用大量的人民币硬币尺寸和重量作为样本的数据,它们在2维空间的分布聚集在几个地方。人们看后,知道它们是分成几类,依此知识判断新给的硬币类别。机器可以通过数据点间距离的计算(K-means),自动将聚类分成几组。得到各组的中心和分布范围后,以此判别新输入硬币所对应的组别。许多事物看来杂乱无章,其实分属不同类别,例如学生潜力,绘画风格,只要用足够多特征属性来描述就可以把它们区分,但对于非常多的特征属性,人类需要研究归纳抽取出能理解其含义的少量特征,很难利用非常多的特征属性来分类,机器却很容易做到。在你现在的工作中,也可能应用现成的N维自动分类程序,在已经拥有数据中发现潜藏的分类。
无监督学习就像无师自通的领悟,效率较差。有老师教学就会快得多。监督学习是最广泛最成功应用的机器学习,用我们知识来标记样本,去“教”机器学会回答问题。这个问答在数学上,是从问题的属性空间映射到答案空间的一个函数。机器学习的基本算法是从一族候选函数中,比如说线性函数,通过计算选取出与预测样本标记误差最小的函数。这个选取多是通过迭代法,沿着减小误差的梯度方向,不断修正候选函数的参数来实现。这个过程称为训练。
对于数值结果的问题,线性回归几乎是最基本的机器学习,几百年前人们就用它从实验数据中导出经验公式。采用最小二乘法,求出与它们误差最小的直线或超平面。它有公式解,在线性代数上称为“正规方程(Normal Equation)”的线性方程解。然而,商业应用中的机器学习模型未知参数数量巨大,公式解要求巨大的计算机内存和计算量来实现,通常是用梯度法迭代求出近似解。这是被应用最广泛的数值预测的学习方法。
输入属性x与答案y不是线性关系怎么办?通过增加一些输入x的非线性函数值作为新添的属性,例如x2, x3,…,来扩充属性空间的维数,可以把它们的对应表达成线性关系,这在样条函数逼近理论上,已有很好的数学研究。在应用上,它相应于选取足够多的输入属性表达。例如房价的估值,所在的地区和房子的面积是基本的属性,当它用线性回归误差较大时,加入与已有属性是非线性关系的邻居平均房价,房间卫浴个数,装修等级等来扩充属性空间的维数,便可取得较好模型精度。
对于分类模式的判断,逻辑回归是基本的算法。在直观上是用一个超平面把输入属性空间分成两半,逻辑上对应着0和1。超平面用一个线性函数表示,输出对应于这线性函数值是否大于0。多个的超平面将属性空间分成多类。能够这样归类的数据称为是线性可分的。上世纪五十年代AI热潮中的感知器(Perceptron),用一个Sigmoid作用函数S(z)=1/(1+exp(-z))加在线性函数之后,即y=S (〈w, x〉- b),让输出结果基本饱和在0和1,并且易于导出修正误差的梯度。它模拟了一个神经元的功能,它们组成的单层神经网络,能很好处理线性可分的模式识别。对于不是线性可分的模式,可以采用上述增加输入特征属性的方法,让它在高维空间上线性可分。
机器学习强大的功能来自巨量的可调参数,它的学习算法并不难理解,基本是向量和矩阵的线性运算,关键之处是巨量的样本数据和计算巨量未知数的技术实现。
支持向量机(SVM)采用内积的“核函数(Kernelfunction)”,将输入经过非线性变换映射到高维空间,实现线性可分。用分段线性函数代替神经元里的Sigmoid作用函数,这样调整间隔分类超平面的参数就只跟较少的点有关,既可以大大减少计算量,又把计算转化成二次函数在线性约束下求极值的问题。这涉及到巨大稀疏矩阵的计算,1998年Microsoft Research的John C. Platt提出SMO算法,可以很有效地处理巨量的变量和样本数据。支持向量机有清晰数学理论的支持,能有效地控制训练结果,有着许多语言实现的软件包可用,相对于多层神经网络,它所要求的机器资源较少,但要求有经验的人力合作来选取合适的核函数。它成功地应用在许多分类领域,如文本、图像、蛋白质、垃圾邮件分类和手写体字识别等等。
人工神经网络对每一层输入都用线性来分类,由于sigmoid作用函数,每层的输入和输出是个非线性变换,因此能通用地实现各种数据的分类。多层神经网络具有极大的适应性和潜力解决复杂的问题,但多于三层的神经网络,采用向后传播误差的梯度法来训练,较难控制学习的结果,所以较难处理非常复杂的情况。
相对于前面单纯机制的机器学习数学模型,深度学习像是一种综合的工程设计,它基本架构是深层的神经网络,具有处理非常复杂模式的能力。为了提高训练的效果和效率,设计不同层次网络构造,例如在底层应用“先天”预设功能的卷积网络层,来获取特征,在深层网络中分层采用无监督的预先学习和随后的监督学习,来提高学习效率。今天深度学习的神经网络已有百亿个神经联接参数,具有极强的智商,它需要巨大的计算机资源和信息的支持,在大公司研究突破性的应用和探索人工智能的未来。
机器学习的算法都以取得与样本最小误差为学习的目标,如果仅仅是这样,让机器简单记忆这些样本就行了,而现实的不同往往是无穷多的,有限的样本怎么能用来判别无限的可能?
答案是:严格上说是不能,但在很大概率上是可能的。
输出只有0和1是最基本的判断学习,机器学习是用样本调整候选函数的参数,以获得合适供作判别的模型。只要候选函数族不会细到足以区分属性空间任何的点,用足够多随机选取的样本来训练,那么它预测误差也以足够大的概率收敛于训练样本的误差率。这个Vapnik-Chervonenkis bound公式是:
P ( |Ein(h) – Eout(h)|> ε| ∃h∈H ) ≤ 4mH(2N)exp( -ε2 N/8)
这里P是概率,ε是任给的一个小数值,H是候选函数族,h是训练后选出的函数,N是训练样本的个数,Ein(h)是h函数训练样本预测失误率,Eout(h是样本之外预测失误率(数学期望),mH(2N)是与候选函数族有关的上界估算。VC维度的理论说,只要候选函数族不会细到足以区分任何样本,这个上界至多按比N小VC维数的多项式速度增大。那么不等式的右边随N增大趋于0. VC维数大致等于函数族中自由变量的数目,例如2个输入的感知器Perceptron,它的VC维是3,即大致是线性函数的参数变量数目。这式子说明数学模型越简单,即参数变量少VC维数小,用非常多的样本训练后,它预测的准确性就越接近于在训练样本上检测到的精度。另一方面,数学模型越复杂,训练的结果对样本集的失误率Ein(h)就越小,它对样本的适应性就越好。成功的机器学习要求这两者都小,机器学习的实践是在模型的复杂程度上取得均衡,尽量用简单的模型取得满意的样本训练结果。
由此可以看到,机器学习可行性依赖于两个条件:第一,数据必须有规律模式。无规律随机分布的数据无从预测,表现为学习过程不收敛。第二,拥有巨量的随机样本数据。统计公式的基本假设是样本的随机性,只有足够多随机无偏的样本,这个概率估计的式子才成立。越是复杂的辨识问题,概率的样本空间越大,就需要越多数量的样本才足以满足要求。它们不仅用来减小对训练样本的误差,也用以保证有足够大的概率取得精确预测。这要求有巨量的数据,以及支持这个巨量计算的计算机功能,这就是为什么一直到了大数据时代,人工智能的辉煌才到来。
介绍了一般原理和抽象公式,讲些具体的数据,给大家一个直观的印象。上世纪80年代末,我在科学院研究生院讲授“人工神经元网络”时,所里计算机的功能还不及现在的手机。手写体字识别研究,只能用较小的网络和几百个样本串行迭代学习来进行,无论算多少小时,结果都不理想。前几天作为比较,我用斯坦福大学Andrew Ng公开课里练习项目里的数据,用PC训练手写数字的辨识,算法与20多年前几乎一样,但样本是5000个,用批量计算更新参数,经过50轮迭代,PC运行不到10分钟训练好的模型,便取得95.26%的判别的准确率。注意这里用的只是简单400x25x10节点的三层网络,已经有了1万多个待定的参数,输入样本是400x5000的矩阵。这只是个辨识10个数字图像的小项目;斯坦福大学李菲菲教授的机器学习,用了1500万张照片的数据库,涵盖22000种物品,对2400万个节点,150亿个联接的神经网络进行训练,能够让计算机看懂了照片,描述图里的场景。机器学习的智商来自大数据,算法和有处理这些数据能力的计算机。
计算机犹如蒸汽机的发明,只有工业化才改变了大众的职业,现在各种条件已经成熟,机器学习将智力劳动工业化,我们正在这新时代的开端。
【参考资料】
-
腾讯科“技盘点2016年人工智能的十大创意项目”http://tech.qq.com/a/20161230/030073.htm
-
White House report :PREPARINGFOR THE FUTURE OF ARTIFICIAL INTELLIGENCEhttps://obamawhitehouse.archives.gov/sites/default/files/whitehouse_files/microsites/ostp/NSTC/preparing_for_the_future_of_ai.pdf
-
Stanford University Andrew Ng coursera“Machine Learning”https://www.coursera.org/learn/machine-learning
-
Caltech course Yaser S.Abu-Mostafa“learning from data”http://work.caltech.edu/telecourse.html