人工智能课程编程实践环节的体系化设计与构建
2021-11-14俞璐王琳武欣嵘曾维军
俞璐 王琳 武欣嵘 曾维军
摘要:我国人工智能发展战略对高端人工智能人才的培养提出了迫切需求,高等院校为相关专业研究生开设人工智能课程成为大势所趋。作者所在课程组面向学院应用型研究生的培养目标和定位,着眼研究生编程实践能力的培养和提高,立足学院现有人工智能相关课程,跨越课程界限,体系化设计实践教学环节,提出了基础编程实践、经典算法实现、算法综合应用、实践创新竞赛共四个层次的编程实践内容。同时,课程组还探索了与之相适应的实践教学模式与方法,并在多年的教学过程中加以实践,取得了良好的教学效果。
关键词:人工智能;编程实践;体系化
中图分类号:G424.1 文献标识码:A 论文编号:1674-2117(2021)21-0093-04
前言
人工智能的迅速发展正在深刻和深远地改变着人类社会的生产、生活,甚至改变着世界格局。 要想构筑我国人工智能发展的先发优势,必须抢抓人工智能发展的重大战略机遇。2017年我国颁布的《新一代人工智能发展规划》中明确指出,“加快培养聚集人工智能高端人才”是当前的重点任务之一。[1]对为数众多的暂时没有条件建立人工智能学院和增设人工智能学科、人工智能专业的工科高等院校而言,开设人工智能课程是培养人工智能应用型人才、拓宽人工智能专业教育内容、形成“人工智能+X”复合专业培养新模式最有效和直接的手段。
概述
人工智能课程的“理论实践相结合”特点非常鲜明,在理论指导编程实践的同时,编程实践会促进和加深对理论知识的理解。人工智能课程的基础理论部分较为系统和完善,有大量体系化的教学资源和规范化的教学案例可供参考与效仿。相对而言,人工智能课程中的实践环节可借鉴的成熟范例并不多见,而且实践环节较多地依赖于学生的专业背景和学校的培养目标,更能体现复合专业培养新模式的特色,因此吸引了众多教育工作者开展了深入的研究与探讨。[2-6]
笔者所在课程组以学院研究生开设的人工智能相关课程为内容展开研究,不囿于单门课程,而是结合学院办学定位和人才培养目标,进行跨课程的顶层设计,通过构建人工智能课程体系化的编程实践环节,提高学生动手实践能力和人工智能应用能力,为科教兴国和科技强军贡献力量。
学院研究生培养的现状
为了更好地适应国家对专业人才的需求和新型陆军对军事人才的需求,学院研究生人才培养的目标定位正逐渐从研究型人才向应用型人才转变。无论是军人研究生还是地方研究生,无论是学术学位研究生还是专业学位研究生,对其应用能力的需求都被提高到前所未有的高度。相对于传统的研究型人才,应用型人才培养更加重视学生的动手实践能力和学以致用的能力,突出培养学生应用理论知识动手解决实际问题的能力。
学院研究生培养包括信息与通信工程、电子科学与技术、计算机科学与技术三个学硕专业和计算机应用、电子信息两个专硕专业。这些专业与人工智能密切相关,培养的研究生或者直接研究人工智能,或者结合专业领域拓展人工智能的应用。目前,学院针对研究生开设了“模式识别”“深度学习”“网络运维与数据分析”等人工智能課程,此外,“最优化理论与方法”“智能计算”课程也与人工智能具有较强的关联。鉴于这些课程理论知识的相关性和培养能力的一致性,如何突破不同课程的限制,从高处着眼,统一设计和构建这些课程的编程实践环节,使得对学生编程实践能力和人工智能应用能力的培养过程具有持续性,是值得深入思考和研究的问题。
人工智能课程编程实践内容的层次化设计
课程组针对研究生的应用型培养目标,开设了人工智能相关课程,统一设计了如下的编程实践内容并在教学中进行了探索式应用。
学院绝大多数研究生在本科阶段已经学习过Python或者matlab,具备一定的编程知识。以此为基础,课程组为人工智能相关课程设计了基础编程实践、经典算法实现、算法综合应用、实践创新竞赛共四个层次的编程实践内容,任课教师可根据需要选择。四部分内容的层次关系如下图所示。
1.基础编程实践
在研究生基础课阶段,拟从事人工智能相关研究与应用的学生通常会选修“最优化理论与方法”和“智能计算”课程。这两门课程分别介绍传统规划方法和智能优化算法,为人工智能后续课程的学习奠定了必要的数学基础,同时锻炼了学生的编程实践能力。课程组根据理论教学内容设计了基本优化算法的编程实践环节,包括传统的线性、非线性规划算法(图中“基础编程实践”层次模块的虚线以下)和智能优化算法(图中“基础编程实践”层次模块的虚线以上)两类,其中智能优化算法以群体智能算法(蚁群、鱼群、蜂群、狼群、粒子群等)为重点。这些实践环节要求学生独立编程实现算法每一个步骤,不调用现成的工具包,不参考网上程序,旨在加深学生对算法原理的理解,并扎实培养学生对编程语言的灵活运用能力,以期提高编程技巧。
2.经典算法实现
这部分内容是人工智能课程系列实践环节的重点,依托“模式识别”和“深度学习”两门课程。实践环节分为独立自主编程与基于平台编程两类。独立自主编程主要实现机器学习中最基本最经典的算法,包括感知器、Fisher判别、线性回归、Logistic回归、决策树、PCA(Principle Component Analysis,主成分分析)、EM(Expectation Maximization,期望最大化)算法、Adaboost、Q学习等,不依赖计算平台,不参考网上程序,旨在加深对算法原理细节的理解。基于平台编程允许调用现成的工具包和模块,如SVM(Support Vector Machine,支持向量机)应用、HMM(Hidden Markov Model,隐Markov模型)应用考查学生调用现有工具包完成分类任务的能力,关注对调用接口的熟悉和参数选择的技巧。分类和聚类是“模式识别”课程中的两个重要内容,相对而言,聚类算法分配的课时较少,对学生的要求是能够在理解聚类算法原理的基础上根据实际问题选择合适的聚类算法。鉴于聚类算法种类众多而课时有限,课程组设计了聚类算法的比较实验,允许学生调用平台自带的聚类算法,针对特定聚类任务进行性能的分析和比较。“深度学习”课程的实践环节都是基于平台的编程,毕竟一个深度网络的完全自主编程实现超过了学院大部分硕士研究生的能力。课程组选择了应用最为广泛的CNN(Convolution Neural Network,卷积神经网络)、LSTM(Long-Short Term Memory,长短期记忆网络)、VAE(Variational Auto Encoder,变分自编码器)和GAN(Generative Adversarial Network,生成对抗网络)作为实验对象,要求学生基于深度学习平台(Tensorflow或者Pytorch)搭建神经网络解决分类和样本生成任务。
3.算法综合运用
完成了经典算法实现环节,就可以进行算法综合运用的实践环节了。这部分内容依托“网络运维与数据分析”课程,主要是在公开的网络数据集上完成网络运维中的数据分析问题,如网络流量分类/预测、网络异常检测/预测、网络态势分析展示等任务。参考的方法通常是KDD(Knowledge Discovery and Data Mining,知识发现与数据挖掘)、ICML(International Conference on Machine Learning,国际机器学习会议)等顶级会议上发表的最前沿的研究成果。有了此前机器學习基本算法的基础,学生理解并实现这些顶级会议上的方法成为可能。课程组设计了多个实战编程环节,教师可根据实际情况选用。
4.创新实践竞赛
在完成了人工智能相关课程的学习之后,笔者鼓励学生走出去参加包括数学建模竞赛和人工智能竞赛在内的创新实践竞赛,这些竞赛对于检验和提高学生的理论指导实践能力、发现和解决问题的能力大有裨益。对于全国研究生数学建模竞赛和研究生军事数学建模竞赛,学院是统一组队参加的,近十年来的题目中人工智能题目占据的比例越来越大,还有一些问题本身不是人工智能问题,但其解决方案中人工智能方法也占据一席之地。除了历史悠久的数学建模竞赛,各种人工智能竞赛平台近年来也相继问世。这些竞赛面向实际应用中各种类型的任务和难题,以实测数据上的性能为评比标准。竞赛题目通常与人工智能课程契合度很高,如PRCV(Pattern Recognition and Computer Vision)竞赛中的“短视频实时分类”“大规模行人检索”“车纹识别”“高速低功耗视觉理解”等题目都是经典机器学习算法的综合运用,对检验和锻炼学生学以致用的能力很有帮助。
人工智能课程实践环节的教学方法
“内容为王”,但是内容不是全部。科学合理的实验内容也要依靠科学合理的教学模式和方法才能取得最佳的教学效果。配合实践环节的体系化层次化设计,课程组在实践环节中采用了如下的教学方法。
1.灵活多样的考核机制
针对不同层次不同类型的实践环节,采用不同的验收标准。对于旨在提高编程能力的“基础编程实践”,以及“经典算法实现”中的自主编程,验收的标准主要是编程技巧,matlab中是否善用矩阵、Python中善用高级的数据结构、实现同样的功能用了多少行代码及时间复杂度多少等都是评价编程质量的指标。对于“经典算法实现”中的基于平台编程以及“算法综合运用”环节,验收的标准是对平台、对算法、对模块的选择、分析和评判能力,针对具体的问题能否在短时间内选定适合的算法,并基于平台迅速搭建起模型,是考查的重点。对于“创新实践竞赛”,最直接的评价标准就是是否获奖,当然,参赛的收获与感悟也是我们关心的。对于一些需要比较的算法实现,如聚类的各种算法、VAE和GAN等,算法实现过后对实验结果的分析和比较通常更能反映出学生对理论知识的思考和理解,也是实践环节验收的重要指标。
与以上的实验验收标准相对应,课程组设计了灵活多样的考核机制。对于选课人数不超过20人的小班,可以采用逐人逐实验现场验收的形式,针对性地进行个性化提问以了解学生的付出和收获。对于人数较多的班次,可以采用实验报告的形式,随机挑选一些学生和一些实验进行现场提问和验收。在课程学习期间,如果参加了创新竞赛并获奖,可以作为附加分以资鼓励。
2.因人而异的实践任务
选修同一门课程的学生在基础和研究方向上可能有较大差异,学习课程的目的和要求也各不相同,对此课程组在布置实践任务时采用了因人而异、一人一议的方式。在课程开设之初,任课教师会了解每一名学生的专业和研究方向。对于只是应用人工智能方法来辅助毕业课题的学生,可以降低“基础编程实践”以及“经典算法实现”中自主编程的要求,允许调用平台提供的模块完成任务。“创新实践竞赛”也只需鼓励他们参加数学建模竞赛,而不是纯粹的人工智能竞赛。对于计算机科学与技术专业的学生,通常是研究人工智能方法而不是简单应用,那么他们需要高标准完成全部实践环节,而且在实验验收时还要侧重考查他们对人工智能理论的理解。
3.持续长效的反馈机制
编程能力的提高不是一时之功,有时也不是在一门课程中就能显现。为了检验实践环节的设置以及教学模式方法是否科学合理、提高学生编程实践能力的目标是否达成,需要有持续长效的反馈机制,不限于一门课的学习期间,甚至不限于学生的在校时间。对于人工智能相关的几门课程,同一位学生后续课程中表现出的编程实践能力是对此前课程编程实践环节的反馈,创新实践竞赛的成绩是对课程实践环节的反馈。任课教师和学生的导师之间也应建立起经常性的联系,学生在课题研究阶段的表现,甚至是毕业后工作期间的心得体会也可以作为人工智能课程所有实践环节的反馈。通过这种持续长效的反馈机制,课程组可以不断地修正调整实践内容和教学方法,以期获得更好的教学效果,实现应用型人才培养的目标。
结语
人工智能的迅速发展和广泛应用大幅提高了工科院校人工智能相关课程开设、建设和改革的紧迫性。结合笔者所在学院应用型研究生的培养目标,课程组跨越课程界限,统一设计了人工智能相关课程的实践教学环节,并探索了与之配套的教学模式和方法。教学实践表明,体系化的实践教学环节和针对性的教学方法取得了良好的教学效果。
参考文献:
[1]国务院.新一代人工智能发展规划[R].2017.
[2]柯永振,王瑞昆,杨帅.普通高校计算机专业研究生编程能力培养的思考和实践[J].计算机教育,2019(01):52-54.
[3]王金龙.人工智能编程教育课程区域化实践研究[J].现代职业教育,2021(16):204-205.
[4]杨其峰.人工智能与编程教育校本课程化研究与实施[J].教学管理与教育研究, 2019(18):98-99.
[5]王少青.人工智能应用型人才培养课程体系构建[J].计算机时代,2020(07):93-95.
[6]徐圆圆.“人工智能”专业教学与实验系统的研究与实现[D].北京:北京邮电大学,2019.