时间:2024-05-04
谢聪聪 孟莉
[摘 要] 随着人工智能算法的不断普及,基于数据驱动的数值算法成为一个学习的热门课程。在传统数值计算课程的基础上,从教学内容、教学模式以及课程评价体系等方面进行深度改进。主要的做法是面向大数据分析需求,结合Python等新兴算法语言的优势展开算法应用研究,藉此提高学生的学习热情以及学习效果;结合课堂训练和课后的算法实践,提高学生解决应用问题的能力,充分体现数值计算学以致用的特点。经过新一轮的教学改革和实践,取得较好的反馈。
[关键词] 最小二乘拟合;迭代法;梯度下降法
一、引言
数值计算是一门研究如何用计算机算法高效、准确地求解来源于不同学科问题数学模型的课程。同时,该课程需要密切结合应用中的实际问题背景,因此也具有很强的实践性。该课程不仅是信息与计算科学专业的专业必修课程,同时也是数学与应用数学专业、数据科学与大数据技术专业和计算机专业的重要基础课程。在大数据科学迅速发展的背景下,数值计算方法出现了一些更复杂的应用场景[1]。
首先,原有的数值计算教学内容主要侧重理论知识的讲解,欠缺应用实践的教学过程。在授课过程中往往对数学理论讲解、解题技巧传授的内容偏多,而如何培养和提高学生的分析和解决实际问题能力的环节偏弱。因此,在课程的内容上需要进行适当的调整,在原有教材内容的基础上增添一些应用性较强的内容,特别关注那些在图像识别、电商数据挖掘以及其他人工智能应用领域应用中所广泛采用的算法,将专业发展前沿的新动向及时补充到教学内容中去,以丰富学生的视野和提高学习的热情,并增强他们解决实际问题的能力。
其次,在课堂教学模式上的改革。传统的授课方式是一种静态的、注入式的教学模式。教学方法主要是以PPT讲解为主,板书为辅的比较单一化的教学模式。这类模式对数学和算法类课程来说,不足之处在于对学生的吸引力不足。在教学改革中,课堂上采用了多种形式的教学方法,比如:通过算法实时生成图表进行直观的演示;增加算法实践环节,利用事先准备好的基础算法模块,通过修改核心部分改善算法性能,这样可通过结果的对比增强知识点的直观印象;引导学生提出自己的疑问、独立思考并探究解决方法。此外,也采用问题式的教学方法,提高学生上课的兴趣和听课的效率。
二、課程具体的改革方法与策略
1.在课程内容设置上做适当调整,同时基于原有自编教材[2]的基础,增加了一些实用型算法。首先,针对理论知识部分实施化繁为简的改进,略去了一些过于晦涩且不常用的推导与证明过程,并在简化给出结论后给出了具备更详细介绍的参考文献,以方便感兴趣的读者进一步学习。其次,注重将理论知识与实践教学相结合,比如:进一步强化了矩阵QR分解和奇异值分解的内容,强调如何利用QR迭代法去求解矩阵特征值问题、如何通过奇异值(SVD)分解去理解数据分析中常用的主成分分析(PCA)的本质。进一步地,为了说明特征值和特征向量的重要性,上课过程中还增加了计算机视觉处理中的人脸识别问题、图像特征提取和图像压缩等应用问题的介绍[3]。此外,在偏微分数值解的有限差分方法基础上,增加金融工程领域应用广发的Black-Scholes期权定价模型的求解[4],并趁机介绍三维数据科学计算可视化、与实际数据进行比较等数值模拟研究中常用的技术手段。
2.教学过程中通过图像动态直观地去演示一些结果,提高教学可视化水平,能够很好地将抽象的数学知识理论直观地呈现在学生面前,将理论知识与实验教学相结合。比如在讲解不动点迭代的收敛性问题时,先根据具体函数的几何图形,来形象地演示收敛过程,从而给出收敛性分析定理。又比如在讲解高次插值带来的龙格现象这一部分内容时,利用图形来直观地解释高次插值出现不稳定的原因。在图1中,实线是原函数,短虚线是6个节点的5次插值多项式,长虚线是11个节点的10次插值多项式,从图形上很容易能够看出,10次插值多项式在区间端点处逼近的效果很差,引起强烈的震荡,而在内部节点0附近逼近效果比5次插值要好。通过图形来演示数值结果,让学生一目了然。
3.采用问题式的教学方法培养学生的主动参与、独立思考和自主学习的能力。在上面提到的高次插值带来的龙格现象这一问题中,通过图像让学生了解到在引起不稳定的原因是因为在端点附近引起震荡,从而导致逼近效果差。这时候,可以提出问题,如何解决这个震荡现象?有学生提出引入分段低次插值,也有学生提出改变节点,课后学生根据自己的方案设计程序,给出数值结果和图形。学生有了思考的过程,就会提高实际动手和学习的兴趣。
另外,在讲解Lagrange插值多项式的时候,课本是直接给出了n+1个节点的Lagrange基函数,从而构造出Lagrange插值多项式,完全是植入式给出结果。在上课过程中,先从最简单的2个节点出发,构造相应的插值多项式和对应的Lagrange基函数,学生理解和掌握了整个构造过程,就可以举一反三,写出3个节点,甚至n+1个节点的Lagrange插值多项式。这样的模式,不只是让学生能够高效率地掌握这部分知识,而且要印象深刻,学会举一反三。如果让具有主观能动性的学生成为乐学好学之人,无疑会对教学质量有大大地提高。
4.在上课过程中,结合最新科研成果,将本专业发展前沿的新动向及时补充到教学内容中去。前面学生通过不同节点来改善龙格现象,但是节点的给出没有规律可循,利用最新的科研论文,Trefethen[5]曾提出往往两头密集中间稀疏的节点能带来比较好的插值效果,并且不会出现龙格现象,比如Gauss节点、Chebyshev节点等。上课时我们将Chebyshev点用于高次插值,并通过图形来直观地显示。图2分别给出11个等距节点的插值多项式(蓝色长虚线)和11个Chebyshev点插值多项式(红色点虚线)的图形,从图中可以看出Chebyshev点的10次插值多项式在端点处并没有出现龙格现象。图3则分别给出了11个和21个Chebyshev点构造的10次插值多项式(红色点虚线)和20次插值多项式(蓝色实线),20次插值多项式逼近程度非常完美。这些内容在大部分数值计算的教科书上是没有的,增加最新科研成果进课堂,可以让学生耳目一新,并且能够推动学生主动去查找科研文献,培养科学探索的能力。
5.适当增加部分学生感兴趣的实用编程技术,如介绍一些基于典型数据集的分类回归等应用时,采用基于Python的代码进行分析和实现。这一做法的好处是多方面的,其中最重要的一点是有利于突出数值算法的教学重点。基于大数据的应用虽然是一个新的趋势,但对于数值计算来说我们只需关注算法部分。就数据分析领域的应用来说,开源社区中提供的大量Python程序库的实现往往会比传统的Matlab方便许多,这可以让学生更好地专注于学习算法这一主要目的上去。下面所述是数据分析领域中经典的例子:
改进算例:基于一个典型18层卷积神经网络(RESNET18)进行猫狗图像分类问题中,如图4所示是读取图片并转化为向量的Python脚本,而图5则给出了训练算法的详细步骤。
通过这一简单案例的对比容易发现:开源社区所提供的算法实现,事实上提供了比Matlab更开放、更详细的算法实现接口,十分有利于算法学习者进行学习或更深入的修改,同时丰富的数据处理接口也比Matlab更适用于当下流行的大数据分析案例的入口。除增加梯度下降法之外,这一版的改进内容还包括数据拟合的最小二乘法与非线性迭代法等经典数值算法的Python实现,并以课后练习的形式来巩固相关理论知识点。
6.完善合理的過程性评价,调整课程评价方式,将传统的期末考试和平时作业简单组合的评价模式改为多方面的综合评价(见图6)。传统的成绩按期末80%和平时20%的方式给出,期末比例太大,大部分学生在整个学习过程中,平时散漫,靠期末考之前突击去参加考试。现在将传统的模式改为多方面的综合评价,在平时增加两次课堂测验(0%)和一次期中测试(20%)。增加一次实践作业(10%),跟实际应用相结合,学生可以通过查阅文献、建立模型、选择算法、编程实现,最后以报告的形式上交。加上平时作业成绩10%,期末成绩占比从80%减到50%,让学生能将课程的学习时间更加均匀地分布在平时,而不是集中在期末考试那几周。经过两轮的教学实践,更改后的综合评价方式更合理,学生学习的积极性和成绩也都有很大的提高。
三、结语
我们通过推进数值计算课程传统模式的改革,来适应大数据时代计算人才的要求。该课程经过在信息与计算科学和数学与应用数学两个专业的教学改革实践,改善了教学内容和教学模式,完善了教学评价,提高了学生成绩和自主学习的热情,取得了比较明显的教学成效。
参考文献
[1]J.Nathan Kuta.数据驱动建模及科学计算——复杂系统和大数据处理方法[M].吕丽刚,等,译.北京:电子工业出版社,2017.
[2]陆建芳,谢聪聪,练晓鹏.数值计算基础[M].北京:科学出版社,2013.
[3]刘衍琦,詹福宇,蒋献文,周华英.Matlab计算机视觉与深度学习实战[M].北京:电子工业出版社,2017.
[4]Manfred Gilli,Dietmar Maringer,Enrico Schumann.Numerical Methods and Optimization in Finance[M]Elsevier,2013.
[5]Lioyd N.Trefethen,Is Gauss Quadrature Better than Clenshaw-Curtis?[J]SIAM Review,2008,V50(1):67-87.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!