思想海洋的远航分享 http://blog.sciencenet.cn/u/xying 系统科学与数学水手札记

博文

了解点机器学习 精选

已有 15459 次阅读 2017-1-25 09:14 |个人分类:科普|系统分类:科普集锦| 人工智能, 模式识别, 机器学习, 分类

2016年开启了人工智能的时代。在这一年里,AlphaGo围棋胜了人类;微软报告ASR语音识别结果好过专业速记员;日本NHK电视报道,IBM机器Watson只花10分钟完成41名病人的诊断,这通常是医生两周的工作;它读取大量资料和病人DNA后,救了一位医者束手无策的白血病人;特斯拉自动驾驶汽车已挤进车流,还发生了车祸;机器创作歌曲、绘画、诗歌、小说、电影也有了不俗的成绩。GoogleIBMFacebookAmazonMicrosoft组成人工智能联盟,研究AI行业的规范标准。美国白宫发布了《准备迎接人工智能未来》和《国家人工智能研究发展战略计划书》。现在的人工智能核心是机器学习,它不是过去那种,依人类知识为规则来作答的专家系统,而是通过样本来获得知识,自己作判断的机器。

这篇简单介绍机器学习的工作原理。希望只要懂的线性代数、最小二乘法和统计概念的读者,便能通过数学原理了解机制,破除神秘给自己解惑,对此有兴趣的人能抓住要点启发应用。

什么是机器学习?简单地说,计算机利用输入的大量样本数据,调整表示规律和分类通用数学模型的参数,然后以调好的模型作答。通常用线性函数的组合来表示数值规律和划分类别模式,实用中的线性函数参数是以万计到百亿计的数量。这样的数学模型虽然很简单,却因参数数量的巨大能够实现复杂的功能,足以涵盖各种预测和辨识情况。在数学上,这调整模型参数及应用模型的计算机制,都是精确有效的,但也因变量个数的巨大,难以分析归纳成像物理规律那样简单明晰的因果性机制,无法从人脑逻辑推演的角度来理解。

测试人的IQ,是让人回答几十道题,每道题列出几张图形,或几组数字,或几个词作为样本,让你从一组可能的选项中挑出一个最“合理”的答案,以此来评估人的智商。这与你拥有的知识内容无关,测定的是大脑从样本来类比判断的能力。计算机和学习算法,模仿人脑这种能力,赋予机器智商。人类具有智商,可以通过学习获得知识。样本的数据潜藏着大量的信息,通过训练给予了机器知识,让机器表现出判断和预测的智能。

机器学习基本分成无监督学习和监督学习两类。无监督学习是从样本数据分布中,按它们的聚集来分类,例如用大量的人民币硬币尺寸和重量作为样本的数据,它们在2维空间的分布聚集在几个地方。人们看后,知道它们是分成几类,依此知识判断新给的硬币类别。机器可以通过数据点间距离的计算(K-means),自动将聚类分成几组。得到各组的中心和分布范围后,以此判别新输入硬币所对应的组别。许多事物看来杂乱无章,其实分属不同类别,例如学生潜力,绘画风格,只要用足够多特征属性来描述就可以把它们区分,但对于许多的特征属性,人类需要研究归纳抽取出能理解其含义的少量特征,很难利用非常多的特征属性来分类,机器却很容易做到。在你现在的工作中,也可能应用现成的N维自动分类程序,在已经拥有数据中发现潜藏的分类。

无监督学习就像无师自通的领悟,效率较差。有老师教学就会快得多。监督学习是最广泛最成功应用的机器学习,用我们知识来标记样本,去“教”机器学会回答问题。这个问答在数学上,是从问题的属性空间映射到答案空间的一个函数。机器学习的基本算法是从一族候选函数中,比如说线性函数,通过计算选取出与预测样本标记误差最小的函数。这个选取多是通过迭代法,沿着减小误差的梯度方向,不断修正候选函数的参数来实现。这个过程称为训练。

对于数值结果的问题,线性回归几乎是最基本的机器学习,几百年前人们就用它从实验数据中导出经验公式。采用最小二乘法,求出与它们误差最小的直线或超平面。它有公式解,在线性代数上称为“正规方程(Normal Equation)”的线性方程解。然而,商业应用中的机器学习模型未知参数数量巨大,公式解要求非常大的计算机内存和计算量来实现,通常是用梯度法迭代求出近似解。这是被应用最广泛的数值预测的学习方法。

输入属性x与答案y不能用一个线性式子表示怎么办?通过增加一些与输入x是非线性关系的项,例如x2, x3,…,有可能把它们表达成一个线性式子,这在样条函数逼近理论上,已有很好的数学研究。在应用上,它相应于选取足够多的输入属性表达。例如房价的估值,所在的地区和房子的面积是基本的属性,当它用线性回归误差较大时,加入与已有属性是非线性关系的邻居平均房价,房间卫浴个数,装修等级等来扩充属性空间的维数,便可取得较好模型精度。

对于分类模式的判断,逻辑回归是基本的算法。在直观上是用一个超平面把输入属性空间分成两半,逻辑上对应着01。超平面用一个线性函数表示,输出对应于这线性函数值是否大于0。多个的超平面将属性空间分成多类。能够这样归类的数据称为是线性可分的。上世纪五十年代AI热潮中的感知器(Perceptron),用一个Sigmoid作用函数 S(z)=1/(1+exp(-z)) 加在线性函数之后,即 y = S (w, x- b),让输出结果基本饱和在01,并且易于导出修正误差的梯度。它模拟了一个神经元的功能,它们组成的单层神经网络,能很好处理线性可分的模式识别。对于不是线性可分的模式,可以采用上述增加输入特征属性的方法,让它在高维空间上线性可分。

机器学习强大的功能来自巨量的可调参数,它的学习算法并不难理解,基本是向量和矩阵的线性运算,关键之处是巨量的样本数据的获得和计算巨量未知数的技术实现。

支持向量机(SVM)采用内积的“核函数(Kernelfunction)”,将输入经过非线性变换映射到高维空间,实现线性可分。用分段线性函数代替神经元里的Sigmoid作用函数,这样调整间隔分类超平面的参数就只跟较少的点有关,既可以大大减少计算量,又把计算转化成二次函数在线性约束下求极值的问题。实践中的应用涉及到巨大稀疏矩阵的计算,1998Microsoft ResearchJohn C. Platt提出SMO算法,可以很有效地处理巨量的变量和样本数据,这使得SVM获得广泛的应用。支持向量机有清晰数学理论的支持,能有效地控制训练结果,有着许多语言实现的软件包可用,相对于多层神经网络,它所要求的机器资源较少,但要求有应用领域知识的人力合作来选取合适的核函数。它成功地应用在许多分类领域,如文本、图像、蛋白质、垃圾邮件分类和手写体字识别等等。

人工神经网络对每一层输入都用线性来分类,由于sigmoid作用函数,每层的输入和输出是个非线性变换,因此能通用地实现各种数据的分类。多层神经网络具有极大的适应性和潜力解决复杂的问题,但多于三层的神经网络,采用向后传播误差的梯度法来训练,较难控制学习的结果,所以较难简单地应用来处理非常复杂的情况。

相对于前面单纯机制的机器学习数学模型,深度学习像是一种综合的工程设计,它基本架构是深层的神经网络,具有处理非常复杂模式的能力。为了提高训练的效果和效率,设计不同层次网络构造,例如在底层应用“先天”预设功能的卷积网络层,来获取特征,在深层网络中分层采用无监督的预先学习和随后的监督学习,来提高学习效率。今天深度学习的神经网络已有百亿个神经联接参数,具有极强的智商,它需要巨大的计算机资源和信息的支持,在大公司研究突破性的应用和探索人工智能的未来。

机器学习的算法都以取得与样本最小误差为学习的目标,如果仅仅是这样,让机器简单记忆这些样本就行了,而现实的不同往往是无穷多的,有限的样本怎么能用来判别无限的可能?

答案是:严格上说是不能,但在很大概率上是可能的。

输出只有01是最基本的判断学习,机器学习是用样本调整候选函数的参数,以获得合适供作判别的模型。只要候选函数族不会细到足以区分属性空间任何的点,用足够多随机选取的样本来训练,那么它预测误差也以足够大的概率收敛于训练样本的误差率。这个Vapnik-Chervonenkis bound公式是:

P ( |Ein(h) – Eout(h)|> ε| hH ) 4mH(2N)exp( -ε2 N/8)

这里P是概率,ε是任给的一个小数值,H是候选函数族,h是训练后选出的函数,N是训练样本的个数,Ein(h)h函数训练样本预测失误率,Eout(h)是样本之外预测失误率(数学期望),mH(2N)是与候选函数族有关的上界估算。VC维度的理论说,只要候选函数族不会细到足以区分任何样本,这个上界至多按比NVC维数的多项式速度增大。那么不等式的右边随N增大趋于0.  VC维数大致等于函数族中自由变量的数目,例如2个输入的感知器Perceptron,有3个可调参数,它的VC维是3,即是线性函数的参数变量数目。这式子说明数学模型越简单,即参数变量少VC维数小,用非常多的样本训练后,它预测的准确性就越容易接近于在训练样本上检测到的精度。另一方面,数学模型越复杂,训练的结果对样本集的失误率Ein(h)就越小,它对样本的适应性就越好。成功的机器学习要求这两者都小,机器学习的实践工程是在模型的复杂程度上取得均衡,尽量用简单的模型取得满意的样本训练结果。

由此可以看到,机器学习可行性依赖于两个条件:第一,数据必须有规律模式。无规律随机分布的数据无从预测,表现为学习过程不收敛。第二,拥有巨量的随机样本数据。统计公式的基本假设是样本的随机性,只有足够多随机无偏的样本,这个概率估计的式子才成立。越是复杂的辨识问题,概率的样本空间越大,就需要越多数量的样本才足以满足要求。它们不仅用来减小对训练样本的误差,也用以保证有足够大的概率取得精确预测。这要求有巨量的数据,以及支持这个巨量计算的计算机功能,这就是为什么一直到了大数据时代,人工智能的突破才到来。

介绍了一般原理和抽象公式,讲些具体的数据,给大家一个直观的印象。上世纪80年代末,我在科学院研究生院讲授“人工神经元网络”时,所里计算机的功能还不及现在的手机。手写体字识别研究,只能用较小的网络和几百个样本串行迭代学习来进行,无论算多少小时,结果都不理想。作为比较,前几天我用斯坦福大学Andrew Ng公开课里练习项目里的数据,用PC训练手写数字的辨识,算法与20多年前几乎一样,但样本是5000个,用批量计算更新参数,经过50轮迭代,PC运行不到10分钟就训练好了模型,取得95.26%的判别的准确率。注意这里用的只是简单400x25x10节点的三层网络,已经有了1万多个待定的参数,输入样本是400x5000的矩阵。这只是个辨识10个数字图像的小项目;斯坦福大学李菲菲教授的机器学习,用了1500万张照片的数据库,涵盖22000种物品,对2400万个节点,150亿个联接的神经网络进行训练,能够让计算机看懂了照片,描述图里的场景。机器学习后的智能来自大数据、算法和有处理这些数据能力的计算机。

计算机犹如蒸汽机的发明,只有工业化才改变了大众的职业,现在各种条件已经成熟,机器学习将智力劳动工业化,我们正在这新时代的开端。

【参考资料】

  1. 腾讯科“技盘点2016年人工智能的十大创意项目”http://tech.qq.com/a/20161230/030073.htm

  2. White House report PREPARING FOR THE FUTURE OF ARTIFICIAL INTELLIGENCE  https://obamawhitehouse.archives.gov/sites/default/files/whitehouse_files/microsites/ostp/NSTC/preparing_for_the_future_of_ai.pdf

  3. Stanford University Andrew Ng coursera “Machine Learning” https://www.coursera.org/learn/machine-learning

  4. Caltech course Yaser S.Abu-Mostafa“Learning From Datahttp://work.caltech.edu/telecourse.html




https://blog.sciencenet.cn/blog-826653-1029786.html

上一篇:能学习的机器正盯着你的职位
下一篇:重修线性代数1——历史
收藏 IP: 50.156.25.*| 热度|

40 尤明庆 蒋迅 康建 苏德辰 张春路 彭真明 王宏琳 张云 黄荣彬 侯沉 张学文 胡峰 赵明 白图格吉扎布 岳雷 周春雷 刘全慧 刘辉 赵斌 李竞 徐令予 强涛 朱豫才 王建昌 易会广 李红雨 张士伟 肖鹏 林涛 王林平 徐明昆 杜江平 梁进 晏成和 xlsd xiyouxiyou gaut icgwang aliala yangb919

该博文允许注册用户评论 请点击登录 评论 (52 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-12-22 22:45

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部