「每天一个数据分析师」第19期内容奉上,请享用~
编者按:
围棋人机大战一役,火的不仅是AlphaGo和李世石,还有机器学习。作为人工智能的一个分支,机器学习越来越受到瞩目。本期C君采访了计算机科学博士邹博老师,为有志于机器学习的小伙伴提供一些经验分享。
近期,CDA也邀请邹博老师开设了机器学习课程,开课在即,可在文尾扫码了解更多详情。
Question=DA
Answer=邹博
DA:能否简单地阐述一下机器学习的概念?
邹博:以机动车自动驾驶为例,假定已经完成了视频采集和信号转换的前提下,如果使用传统算法,一种思路是列举所有的交通规则,分为道路拥挤、行驶缓慢、较慢、畅通等情况,按照事先给定的规则对机动车操作完成各项动作,达到起步、加速、刹车、拐弯等功能。
很明显的是,由于路况信息复杂,穷尽所有情况是不可能的;因此,可以在给定一个响应模型的前提下,使用各种模拟的路况(即样本)训练这个模型,通过正负反馈对模型的参数进行调整。当参数收敛或者达到某要求时,我们认为训练结束。然后就可以在各种路况下做验证和测试了。
这个例子说明:让机器在给定大量样本的前提下,不断的调整参数——这个过程就像让机器来学习一样,这就是“机器学习”。多说一句的是,虽然我们举的例子是“机动车”,但Machine Learning中的Machine是指的分类器、模型的意思,只不过大家看到的自动驾驶、AlphaGO等是成型的产品,必然是某个“机器”罢了。如SVM(Support Vector Machine)中的字母M,就是Machine——在某些向量(点,vertor)的支持(support)下的一个分类器(machine)。
DA:经过人机围棋大战事件,很多人对人工智能产生了兴趣,机器学习与人工智能是一种怎么样的关系?
邹博:机器学习可以在一定程度上看成是人工智能的分支。让机器在给定大量样本的前提下,不断的调整参数,最终得到(近似)最优的参数值,从而具备预测、分类、决策等功能。
DA:在国内,机器学习的应用现状和前景是怎样的?
邹博:火爆!
DA:机器学习主要应用于什么行业?有哪些应用形式?
邹博:机器学习在图像处理、语音识别、自然语言处理方面发挥了越来越大的作用,如使用GBDT选择特征,配合Logistic做分类,已经成了点击率预估的经典模型。同时,机器学习也渗透到各个传统行业中产生巨大的社会价值。
举例来说,以前可以使用隐马尔科夫模做语音识别,说话人的语音信号可以转化成文字输出(这就为接下来的文本翻译、文字到语音两个步骤做了准备,即机器的“同声传译”问题);当前可以使用深度学习的方式,将错误率大幅度降低,逐步逼近实用化水平。
刚刚结束的AlphaGO和李世石的人机大战,就是经典的卷积网络的应用(再配合机器学习方法做快速预估);而这个模型最吸引人的是它的通用性——通过给定其他样本,AlphaGO学到参数后就可以用于医疗等其他领域,这和以往的AI模型(如深蓝DeepBlue)是不同的。
另外,在人脸识别、目标检测、拥塞预测等传统的数据处理领域,机器学习更是完全胜任。
DA:对于初学者来说,机器学习的难点在哪里?
邹博:对于机器学习的掌握,我觉得至少分为三个方向:
1.对机器学习的算法做理论分析和改进,推动学科发展。
达到这一要求,需要有深厚的理论功底和科研能力,大体上,或许需要优秀的博士经历(或与之相当的水平)加一点点天赋。但这决不是“与我无关”的一个发展方向,现在机器学习界中的中国人面孔越来越多,一定程度上说明中国人蛮适合做相关工作的。
2.团队的技术负责与核心。
如果达到这一点,需要:
(1)对数学有自己的理解——个人认为,对数学需要有“Gauss式的硬推导+Eular式的直观理解”;
(2)对机器学习的算法本身清晰理解——适用环境是什么、参数如何选择、优缺点有哪些、算法之间的横向比较等;
(3)编码实现能力。能够使用至少一种语言,把自己的想法付诸实践并根据数据本身做自适应的调整——不要认为大牛不会编码,世界上从来没有出现过不会编程的顶级人才;
(4)熟悉开源库和数据处理工具;熟练而恰当的使用工具,提高效率。
我想,这个职业要求是绝大多数人机器学习者的努力目标。
3.能够使用各项开源库,胜任项目和任务要求。
达到这个要求,是能够跟别人说“我是做机器学习的”最低要求;但这依然需要熟悉数据清洗、特征选择、算法调参、效果解释等内容,熟悉各种算法的适用条件,根据遇到的样本分布做最合理的选择或组合。如果能够熟悉各个算法本身的技术原理、时空复杂度,将有极大的帮助。
可以看出,每个方向有各个方向的要求,并且这3个方向没有先后难易之分。可以根据自己的兴趣和期望做最合适的规划。
DA:如果初学者想要进行机器学习,需要经过一个什么样的过程?
邹博:如果以刚才谈到的3个方向为基础,学习过程是不一样的。这就是有人认为“数学非常重要”,有人说“特征选择才是根本”的原因。其实,我觉得这个课程本身就是蛮好的学习过程,不是么?:)
DA:能否按照从入门到进阶的顺序,推荐一些参考书目、学习网站和博客等资料?
邹博:推荐看这几本:
Christopher M. Bishop, Pattern Recognition and Machine Learning, Springer-Verlag, 2006
Kevin P. Murphy, Machine Learning:A Probabilistic Perspective, The MIT Press, 2012
李航,统计学习方法,清华大学出版社,2012
Stephen Boyd,Lieven Vandenberghe, Convex Optimization, Cambridge University Press, 2004
Thomas M. Cover, Joy A. Thomas, Elements of Information Theory,2006
此外,各个章节有特定的经典论文,如:
Alex Rodriguez, Alessandro Laio, Clustering by fast search and find of density peaks, Science 344.6191, 2014
David M. Blei, Andrew Y. Ng, Michael I. Jordan, Latent Dirichlet Allocation, 2003
邹博:
北师大计算机博士毕业,在科学院从事机器学习和数据挖掘科研工作,主持完成三维计算几何行业建模软件,擅长方向为机器学习、数据挖掘、自然语言处理、计算几何。主持三维数字地质图制图技术及其应用、三维地质建模应用示范研究、遥感信息解译与像元增强研究等多项部级科研项目,对大型软件架构有深刻理解,改进了多项遥感图像的分割、分类、增强算法并用于实际。在多家大学和教育机构担任机器学习和数据挖掘讲师,实战经验丰富,算法推导细致透彻,广受学员好评。