机器学习日益增长的重要性给计算机科学教育带来了挑战性的问题。
现在,机器学习被广泛应用于大多数领域,从语音识别系统到搜索引擎、自动驾驶汽车及监狱判刑系统。许多曾经由人类设计和编写的应用程序已经将人工编写的组件与从数据中学习到的行为相结合。这种转变给计算机科学(Computer Science, CS)从业者和教育者带来了新的挑战。在本专栏中,我们考虑机器学习如何改变我们所认为的计算机科学的核心知识和技能,以及这将如何影响机器学习课程和更广泛的计算机科学大学课程的设计。
不要数学家思维,而要像科学家那样思考
计算机教育工作者[1,6]历来认为:计算机科学的核心是用数据结构和算法表示的人类可理解的抽象的集合。确定的和逻辑上可验证的算法一直是计算机科学知识论和实践的中心。
随着机器学习(Machine Learning,ML)的发展,这种情况发生了变化:首先,典型的模型可能是由数百万参数组成的不透明组合,而不是人类可读的算法。第二,验证过程不是正确性的逻辑证明,而是有效性的统计证明。正如兰利(Langley)[5]所观察到的,机器学习是一门经验科学,它与物理和化学等领域共享知识论方法。
传统软件是由描述完成目标所需步骤(如何实现)的人类程序员构建的,而典型的机器学习系统是通过描述系统尝试最大化的目标(实现什么)来构建的。学习过程使用样本集来确定实现目标最大化的模型。训练好的模型扮演着数据结构和算法的角色。每个参数所扮演的角色对人类来说并不清楚,这些计算解决方案不再反映人类对问题域的概念性描述,而是作为数据概括的函数,这些数据概括只能根据它们的经验可测度性能来理解。
为了使机器学习取得好的效果,许多学生将不再专注于算法开发,而专注于数据采集、数据清理、模型选择和统计测试。
计算机科学教育中的机器学习教育
机器学习历来是计算机科学的一个专业领域,但现在从计算机体系结构到操作系统[3]与核心计算机科学学科越来越相关。甚至可以公平地说,现在机器学习是计算机科学的一个核心领域,它为用于定义和推理计算系统的λ演算提供了平行的理论基础。因此,机器学习日益增加的重要性为计算机科学教育带来了具有挑战性的问题:如何将机器学习的实践和理论主题整合到本科课程中?如何在保持本科学位培养计划(undergraduate degree programs)总时长相对固定的前提下,以增强而不是取代经典计算机科学技能的方式,为扩充的机器学习内容留出空间?
对入门过程的改变。大多数计算机科学本科培养计划是从强调编程技能发展的入门课程开始的,涵盖诸如控制结构、函数的定义和使用、基本数据类型以及简单算法的设计与实现等内容[4]。
在许多情况下,这些课程中的作业是利用现有的库函数,例如读写数据到文件系统中。学生不需要完全理解这些库和底层硬件是如何工作的,甚至不需要使用这些库提供的接口。入门课程的目标是培养学生开发用于推理计算机如何执行程序的概念机[2],以及编写和调试计算机可执行程序的实用技能。
这两个目标也可以描述以机器学习为核心的领域的入门课程。我们不认为机器学习方法会取代这类课程中的符号编程,但它们为学生程序中函数行为的定义和调试提供了可供替代的方法。学生将在早期学习两种概念机——经典逻辑计算机和统计模型。他们将学习为每种概念机编写、测试和调试程序的方法,并学习在软件系统中组合这两种模型。
我们设想未来的入门课程将通过利用对初学者友好的程序编辑器、库和作业将机器学习包含进来,这些程序编辑器、库和作业鼓励学生用机器学习来定义一些函数,然后将这些函数集成到使用更传统方法编写的程序中。例如,学生可以拿出他们以前使用经典编程技术创建的游戏作业,然后使用机器学习技术创建一个手势界面(例如,使用智能手机的加速计,网络摄像头的姿势信息或麦克风的音频信息)将游戏中的玩家角色向上、下、左、右移动。这样的作业将鼓励学生参与创建或组织训练样例,度量他们训练模型的性能,以及通过调整训练数据或对学习算法和特征的选择来调试模型。
这些活动不需要深入理解机器学习算法,就像使用高级API从文件系统读取文件不需要深入了解计算机硬件或操作系统一样。然而,这些活动可以将计算机科学专业的新生吸引到机器学习的核心认识论实践中,为在其他背景下再次遇到机器学习奠定了基础(无论是机器学习理论类选修课,还是计算机视觉、体系结构或专业软件开发高级选修课)。这样的活动还能够创建新的、吸引人的软件类型(例如,由实时传感器或社交媒体数据驱动的系统),对于新手程序员(甚至是专家)而言,这些软件类型在没有机器学习的情况下很难创建。
对高级课程核心的改变。在大多数计算机科学学位培养计划中,入门课程的学习之后是一系列更高级的课程学习。那么考虑到机器学习,高级课程的核心应该怎样变化呢?
目前软件检验和认证的课程强调两点:正确性验证和对验证程序布尔属性的测试。但在机器学习应用中,其重点在于实验设计和实验结果的统计推断。未来的课程应该包括数据驱动的软件测试方法,例如测试套件的开发。当使用特定数据训练时,此测试套件可以评估软件工具的执行是否可接受,并且可以监控随时间变化的可测度回归(measurable regressions)。
人机交互(HCI)课程可能会被扩展延伸,用于反映机器学习如何改变可创建的面向人类技术的性质以及这些技术被创建和评估的过程。例如:机器学习能够创建可以动态适应其使用数据的应用程序。人机交互教育目前强调利用心理学和人类学的经验方法来理解用户的需求和评估新技术;现在,将机器学习应用于记录用户与产品交互的日志数据的能力可以推动了解用户体验并将其转化为设计建议的新方法。未来的人机交互课程将需要包括这些基于机器学习的系统设计和评估方法。
操作系统课程为内存分配和过程调度等任务描述了最佳实践。一般来说,这些任务的关键参数值是根据经验来进行选择的。但如果使用机器学习,可以允许参数值甚至整个方法根据实际运行的任务而改变,从而使系统更有效,更适应于变化的工作负载,甚至是设计人员无法预见的工作负载。为了动态优化系统性能,未来的操作系统课程可能需要包括机器学习技术[3]。
对先修课程和并发期望的改变。计算机科学的课程体系(CS curricula)通常要求包括计算机科学系以外的课程,如数学和物理课程。许多情况下,特别是在工科院校制定计算机科学培养计划(CS programs)时,要求强调微积分课程。许多培养计划里还包括概率和统计学方面的课程,不过值得注意的是:2013 ACM-IEEE联合计算机课程体系(ACM and IEEE’s joint Computing Curricula 2013)的作者们“认为没有必要为所有计算机科学培养计划里的所有专业都开设概率论方面的完整课程。”[4]
这些建议仍然适用吗?许多培养计划需要概率和统计学方面的课程,这是我们热心鼓励的,因为它们对理解机器学习算法设计和分析背后的理论以及有效地使用机器学习中某些强有力的方法来说是至关重要的。和优化相关知识一样,线性代数对于机器学习从业者和研究人员来说也是必不可少的。因此,机器学习的基本知识既广泛,又区别于取得计算机科学学位的传统要求。那么,培养未来计算机科学家的必要条件应该是什么呢?
结论
2013 ACM-IEEE计算机科学课程体系[4]确定了18个不同的知识领域(KAs),包括算法和复杂性,体系结构和组织,离散结构和智能系统。对KAs的定义和建议的关注时限反映了计算机科学的经典观点,机器学习仅在一些建议的选修课程中提及。我们认为,在过去的几年中,计算机科学中机器学习应用的迅速崛起表明需要重新考虑这样的指导性文件以及计算机系教育课程的相应变化。
此外,关于人们如何学习机器学习的研究是迫切需要的。几乎所有已发表的计算学科教育文献都是关于经典的计算方法。正如我们在本专栏前面提到的,机器学习系统与传统的数据结构和算法从根本上不同,因此必须以不同的方式进行推理和学习。来自于数学和统计教育研究的许多见解可能与机器学习教育研究相关,但这些领域的研究人员很少与计算学科教育研究人员产生交互。因此,我们呼吁资助机构和像ACM这样的专业社团,利用其号召力将计算学科教育研究人员和数学学科教育研究人员聚集在一起,支持开发关于机器学习教学和学习的丰富知识库。
读者评论及作者回复
迈赫兰·萨哈米(Mehran Sahami)(2018年10月30日 12:51)
我为这篇文章的作者鼓掌。虽然我完全同意作者的总体观点,但我想指出一些2013 ACM-IEEE计算机科学课程体系(CS2013)中关于概率和机器学习讨论的不准确描述。
例如,作者写到“值得注意的是:CS2013的作者们‘认为没有必要为所有计算机科学培养计划里的所有专业都开设概率论方面的完整课程。’”查看引号中句子所出自的完整句子是有启发性的,“同样的,虽然我们注意到一个越来越明显的趋势——概率论和统计学在计算学科上的运用(这个趋势反映在知识体系中关于这些主题的核心课时数的增加),并且相信这一趋势很可能在未来持续下去,但是我们仍然认为没有必要为所有计算机科学培养计划里的所有专业都开设概率论方面的完整课程。”
引号中的话的重点并不是强调概率论对于计算机科学专业不重要,正如上文作者们在文章中所建议的那样,恰恰相反,概率论的重要性与日俱增并将继续持续下去。尽管如此,在2013年(或许直到今天),并不是计算机科学的所有专业都需要一门完整的概率论课程,尤其是在那些对本科专业所需课程数量有严格限制的学院。例如,一些计算机科学专业的学生(也许那些在培养计划中不强调人工智能的学生可以将概率论作为离散数学课程的一部分来考虑),而其他学生(那些专注于人工智能的学生)将被要求修满(或更多的)概率论课。值得注意的是,在CS2013中,离散结构知识领域中包含8个完整的概率论核心课时。CS2013还包含一些“示范课程”,展示了包括一部分概率内容的“离散结构/数学”以及全部“计算机科学家的概率论”课程,说明了这两种模型在本科课程中的可能性。
此外,作者还提到在CS2013中,“机器学习只在少数建议的选修课程中被提及。”这是不正确的。在“智能系统”知识领域,有两个核心课时的“基础机器学习”。虽然我们完全承认两个核心课时并不多,但将它们包括进来表明在2013年我们就已经意识到计算机科学专业的学生应该接触一些机器学习课程。此外,包括一个(公认是选修的)“高级机器学习”知识单元意在强调,对于专注于人工智能相关领域的学生来说,他们确实应该学习更多机器学习课程。正如贯穿CS2013所提到的,核心课时是学生应该满足的“最低”要求,大多数培养计划包括许多超出核心课时的课程,从而形成一个完整的课程体系。对于从事任何与人工智能相关工作的学生来说,他们当然应该有更多机会而不仅仅是依靠特定的核心课时来学习概率论和机器学习。事实上,为了达到这个目的,CS2013中有6个范例课程展示了涵盖智能系统领域的不同模型,所有这些模型都包括了核心课时要求以外的很多课程。
即使那样,我重申:上文作者在文章中的观点是言之有理的。机器学习是一个将被继续提高重要性的领域,更多内容被纳入本科课程体系将有利于计算机科学培养计划。CS2013在五年前就已经试图突出这一趋势,它将机器学习的核心课时包括了以前的课程体系指南中不存在的部分,并为以前不存在的高级机器学习创建了一个更全面的选修领域,还包括用来说明如何将这些内容纳入计算机科学课程实例的课程范例。
本杰明·夏皮罗(2018年10月31日 05:59)
亲爱的迈赫兰:
感谢你周到细致的回复。我们承认你所提的机器学习是课程体系核心的观点是有效的。而且,我们同意一些学校确实给机器学习提供了良好的覆盖范围,但请注意,ACM-IEEE核心课程体系并不要求它们这样做。
我们的论点的本质是,机器学习不再是计算机科学中的一个边缘话题,而是转移成了新的计算机科学家需要知道的核心内容。从这个角度来看,在ACM-IEEE联合课程推荐中,将机器学习作为选修课的处理目前是不合适的。虽然范例选修课的描述对于说明各院系如何纳入机器学习是有用的,但如果他们选择这些课,这些范例课仍然是选修课,而不是课程体系的核心要求。我们希望未来计算机课程体系的修订把机器学习作为核心,同时对概率和统计教育的建议进行相应的修改。
CS2013将其内容要求和建议分为三个部分:核心一级(Core Tier-1)、核心二级(Core Tier-2)和选修课(Elective)。CS2013第29页将这些术语描述如下:“计算机科学课程体系应该涵盖所有的核心一级主题,所有或几乎所有的核心二级主题,并在许多选修主题中具有明显的深度(例如:对于计算机科学的本科学位来说,光有核心主题是不够的)。随后,CS2013还说:“核心二级主题通常对于一个计算机科学本科学历来说是必需的。要求它们中的绝大多数是一个最低期望,如果一个培养计划覆盖所有二级主题,我们鼓励他们这样做。计算机科学课程体系的目标应该是覆盖90%~100%的核心二级主题,至少也要达到80%。”
核心一级主题和核心二级主题的本质区别在于:二级列出的主题是强烈推荐的,但不是必需的。换句话说,CS2013有两类选修课:强烈推荐的选修课和推荐的选修课。所有智能系统的核心内容都在核心二级中,在ACM推荐的308课时的核心课程中占了2课时,并且院系可以选择采用。
一个院系可以根本不选择智能系统的课程,或者选择只排除机器学习部分,并且仍然满足ACM课程体系要求。因此,我们认为我们所提的机器学习是CS2013中的选修内容的说法是准确的。
致以亲切的问候。
本杰明·夏皮罗
丽贝卡·菲布林克
彼得·诺维格
译者介绍
刘如意 •CCF专业会员。 •西安电子科技大学讲师。 •主要研究方向为计算机视觉、深度学习等。 |
|
|
史媛媛 •西安电子科技大学硕士研究生。 •主要研究方向为计算机视觉等。 |
苗启广 CCF理事、CCCF编委。西安电子科技大学计算机科学与技术学院副院长、教授。主要研究方向为计算机视觉、深度学习、大数据分析等。 |
|
* 本文译自Communications of the ACM, “ How Machine Learning Impacts the Undergraduate Computing Curriculum”, 2018,61(11): 27~29 一文。
参考文献
[1] Aho A V. Computation and computational thinking[J]. The Computer Journal, 2012, 55(7): 832-835.
[2] Boulay B D, O’Shea T, and Monk J. The black box inside the glass box: Presenting computing concepts to novices[J/OL]. International Journal of Man-Machine Studies, 1981, 14(3): 237-249. https://doi.org/10.1016/S0020-7373 (81)80056-9.
[3] Dean J, Patterson D, and Young C. A new golden age in computer architecture: Empowering the machine-learning revolution[J]. IEEE Micro, 2018, 38(2): 21-29.
[4] Joint Task Force on Computing Curricula, Association for Computing Machinery, IEEE Computer Society (2013). Computer science curricula 2013[OL]. https://bit.ly/2E6dDGR
[5] Langley P. Machine learning as an experimental science[J]. Machine Learning, 1998, 3(1):5-8.
[6] Wing J M. Computational thinking[J]. Commun. ACM, 2006, 49(3): 33-35.
中国计算机学会
长按识别二维码关注我们
CCF推荐
【精品文章】
点击“阅读原文”,查看详情。