迁移学习在活跃理工科课堂中的尝试

2021-06-22 04:07朱真峰吴云鹏
教育教学论坛 2021年16期
关键词:迁移学习互动教学

朱真峰 吴云鹏

[摘 要] 与文科课程相比,理工科课程知识点的分析需要有较强的逻辑思维,不易理解和掌握。这种现象使得理工科教学课堂普遍较为沉闷,在一定程度上会影响知识的传授效果。针对这一教学实际,以信息学科中的“C语言程序设计”教学为例,利用联系的普遍性原理,尝试通过迁移学习方法,对课本知识点进行深度挖掘和广度拓展,通过这两个维度的剖析,深入浅出地进行知识讲解,从而激发学生的学习热情,引发学生的思考,改善知识传授和技能提升效果。

[关键词] 迁移学习;知识拓展;C语言程序設计;互动教学

[基金项目] 2020年度国家自然科学基金青年科学基金项目“视频中复杂交互集体行为识别及语义分析研究”(62002330)

[作者简介] 朱真峰(1980—),男,河南南阳人,博士,郑州大学信息工程学院副教授,主要从事机器学习、数据挖掘及计算机视觉研究;吴云鹏(1987—),男,浙江兰溪人,博士,郑州大学信息工程学院讲师(通信作者),主要从事模式识别与数据挖掘研究。

[中图分类号] G642   [文献标识码] A   [文章编号] 1674-9324(2021)16-0149-04    [收稿日期] 2021-01-27

在授课过程中,照本宣科式的教学无疑会引发学生的不满。对于同样是理工科出身的教师而言,如何能够既讲解清楚理工学科相对严谨的知识体系,又能活跃课堂气氛,这着实是一种挑战。教学过程是教与学的统一[1]。在目前的课程教学过程中,教师如果能够在相对丰富的知识体系基础上,对学生学习进行引导,不但能够活跃课堂学习气氛,引发学生的思考,也能够引导学生度过积极、充实的大学学习生活[2]。为了在一定程度上解决或者缓解上述教学问题,基于多年教学实践,本文探讨采用迁移学习方法的教学模式。迁移学习,不管是作为机器学习方法还是人类学习知识的方法,都是一种在已有知识或者技能的基础上,通过知识迁移,相比非迁移方法,更加高效地解决当前问题的方法[3-6]。

迁移学习在教学过程中也有广泛的应用。段礼祥[7]利用跨专业研究生熟悉的领域知识,把医学领域的体检、听诊器等概念迁移到“机械故障诊断”课程的教学之中。马芳等[8]提出通过迁移学习激发研究生的探究兴趣和创新意识,同时说明教师也需要不断更新知识体系和提升创新能力。陈智等[9]提出在翻转课堂教学中,促进正迁移,避免负迁移,以提高学生的应用能力、学习能力和创新能力,等等。

本文通过丰富的实例探讨迁移学习方法在理工科课堂教学中的应用。

一、基于知识迁移的“C语言程序设计”教学

本节通过涉及哲学、数学等学科的多个C语言知识点教学实例,说明知识迁移在丰富教学内容,活跃教学氛围中的作用和效果[ 10 ]。

(一)基本概念

本节主要说明编程课中的一些基础知识。例如,变量,双目运算和标识符等。

1.变量模型。在进行C语言编程时,首先需要对可能使用的变量进行定义。定义变量除了自定义标识符外,还需要遵循两个原则:见名知意、量体裁衣。例如,在C语言中,采用int age可以定义整型变量age,表示年龄。因为年龄是整数形式,所以定义成了整型。至于年龄为何要定义成整型,涉及建模的问题。只要活着,年龄一直在增加,应该定义成浮点数更加准确。但是,多数的应用并不需要过于精确的年龄格式。所以,把年龄变量简化成时间的阶梯函数,每过一年在整体上增加一岁,反而比较方便。如果需要,可以用结构体定义出生的年月日,从中可推算出当前年份更加准确的年龄。

看似简单的变量定义,会直接影响随后的数据加工过程及结果。这也隐含了数据在变化过程中的不变性:内在连贯性或者类型一致性,这涉及具体问题的建模。

2.双目运算。C语言中存在类型转换问题:当多个不同类型的数进行数学运算时,较低类型的数据会自动转换成较高类型的数据,从而让它们在同一级别下参加计算,得到相应的结果。

讲解此处时,笔者会在课堂上引入一个形象的问题:

1个橘子+1个苹果=? (1)

有的同学反应会很快:两个水果!这样的拓展锻炼了学生的抽象思维,同时在师生互动中活跃了课堂气氛。进一步地,对于抽象思维问题,也可以再引入其他问题。例如,引导学生思考台球与弓、弩、弹弓和枪支等的内在关系[ 11 ]。这能够引导学生思考事物之间的共性,以及具体问题具体分析等。

3.三类标识符。C语言中有标识符的概念,并分成了三类:关键字标识符、预定义标识符和用户自定义的标识符。关键字标识符在C语言系统中有特定含义,程序设计者不得重新定义。如char,break,sizeof等。预定义标识符有库函数和预编译命令。如printf,include等。用户最好也不要赋予这类标识符新的含义。否则,这些标识符会失去原有的含义,造成编程混乱。用户自定义的标识符一般是编程者按照标识符的命名规则定义的一些变量,可以根据需要随意定义和使用。

这三类标识符中。类似古代王朝,第一类可以认为是皇室成员的名字,不能乱用。第二类是朝中大臣的名字,最好也不要乱用。否则,会带来很多麻烦。第三类相当于普通百姓,只要满足近亲忌讳重名等方面的要求,使用时可以相对灵活。

(二)深层概念

本节主要说明编程中的几个重要概念。例如,结构化,模块化,复杂度等。

1.结构化程序设计。结构化编程涉及顺序、条件和循环三种基本结构。此处可从人类大脑的工作方式或者学生生活中的做事习惯讲起。学生的日常工作体现着以时间为顺序的做事方式。如果有同学来访,有些事情可能就需要调整。从更长的时间跨度观察,做的事情总是在周而复始地向前推进。看似是在重复上课,但知识逐渐得到积累。从这些生活中的例子可以看出,三种基本结构源于生活。

这看似简单的模式,在理论上已经证明:顺序、选择和循环三种结构可以解决任意的结构化编程问题[ 12 ]。事实上,这三种基本结构符合奥卡姆剃刀(Occams Razor)原理。该理论认为,在建模时,如无必要,勿增实体。道家也有类似的观点:大道至简。这条原理也可以描述为:在能解决问题的前提下,方法越简单越好,浓缩成四个字:简约实用。

2.模块化与分形。结构化编程需要对问题自顶向下,逐层分解,最终形成若干模块;每个模块会对应一个(子)函数,这些函数在主函数的统一调用下形成一个有机的整体,能够解决初始的编程问题。

如果把主函数和所有被调用的子函数绘制在一起,会形成一棵调用树。一般地,每个函数由三部分组成:输入部分、处理部分和输出部分,它们的结构大致相同。所以,从任何一个调用树的结点看,它的子结点形成的树和整个调用树结构相似。相同或者相似的结构在微观上不断重复,这就是分形(fractal)模式。所以,可以认为模块化的编程具有分形结构。

3.复杂度与优化问题。“C语言”或者“数据结构”课程涉及算法时间复杂度和空间复杂度等概念。这两种复杂度存在一定的相互制约关系,对解决同一个问题的多种算法,如果空间复杂度较高,时间复杂度往往会较低;反之,如果时间复杂度较高,空间复杂度往往会较低。所以,针对不同的实际需求,可以对两种方案进行折中处理。这和數学中带约束的最优化问题相似。而且,问题和约束条件一般可以相互转换。例如造桥问题,在造价不高于某项建设经费的情况下,如何建造尽可能坚固的大桥;或者,在坚固程度不低于某种标准的情况下,如何让造价尽可能低。还有商品出售价和销售量之间的制约关系问题等。

(三)编程案例的深入分析

本节深入分析了几个编程实例,内容涉及哲学和数学等方面的知识。

1.方程的求解。高中时有一道经典的方程问题:

ax■2+bx+c=0. (2)

其中,a,b和c是系数,是x未知数。

任课教师把式子(2)书写在黑板上,让学生考虑进行编程计算时的思路或者步骤。这个方程并没有说明a≠0,不能直接用韦达定理;所以,需要分情况讨论。该编程示例可以训练学生的严谨思维能力。换言之,看问题要全面。

另外,可以进一步引导学生注意或者思考事物的两面性。当任课教师认为直接用不加清洗的鸡蛋看上去不卫生,却会增加人体免疫力时,相信即使是内向的学生也会逐渐变得开朗,会积极地应对学习和生活中的各种事情,更加懂得全面地看问题的重要性。

2.循环结构的深意。有许多问题,一次性解决比较困难。如果通过一个多次重复计算,每次向前推进一些,经过若干轮处理(优化)后,一般能够相对容易地得到预期结果。这种解决问题的思路对应编程中的循环结构。例如,数据计算常常采用迭代法计算开方[ 13 ]:

x■=■ (3)

式(3)把数值2的开方问题归结为简单的除法和加法两种基本运算。对于任意的初始化的正数x■,上式可以计算出后继数x■,进而是x■,x■,…每次迭代把结果向前推进一点,通过几次迭代计算,式(3)最终会收敛到了■。对式(3)进行深入分析,我们还可以得知此式收敛的原因。进一步地,对式(3)进行分析和扩展后,还可以解决更复杂的开方问题[ 14 ]。

循环结构以化繁为简,小步推进的方式进行工作,可以认为是一种量变引起质变的过程。简单的问题重复做,就可以获得不一样的结果。

3.素数判定算法的循环上限。通过循环进行素数的判定是“C语言程序设计”教学中的经典案例之一。一般都是从素数的定义出发,计算除了1和该数本身以外,是否存在其他可以整除的数。对于正整数n(n>=3),依次除以从2到n-1的所有数。如果都除不尽,n就是素数;否则,n是合数。

上述计算方法最多进行n-2次除法,就可得到结果。经过分析,除数的上限可以下调至■,最多进行■-1次除法即可。

此处可以引导学生思考其中的原因。如果需要提示,可以让学生根据合数的特点进行分析。还可以引导学生思考:如果输入的数据就是合数,这个下调的上限是否有用;输入素数时又如何。进一步地,还有孪生素数的判定问题。

二、教研学相长

在“C语言”等专业课的教学过程中,上述的扩展教学方式也在一定程度上得到了学生的认可。在对任课教师的教学评价环节,学生普遍会认为任课教师知识面比较广,上课比较风趣,会鼓励有新颖想法的同学,不会轻易否定学生。这本身也是一种正能量的迁移,有助于学生身心的健康发展。

一般地,任课教师如果具备相对宽泛的知识结构,会更容易达到寓教于乐的效果。这种教学效果也给教师提出了不断进修的要求,如同迁移学习的别名:终身学习。终身学习也是工程教育专业认证中的一项要求。要想培养出具有终身学习能力的学生,任课教师首先要具备终身学习能力,并能将其贯穿于专业课程的教学实践之中。

教研成果也可以进一步拓展学生对知识理解的深度和宽度。例如,论文[ 14 ]在数值计算中采用迭代法实现开方[ 13 ]的基础上,采用泛化的不等式结论,通过循环结构,实现了对实数开任意正整数次方的运算。朱真峰等[ 15 ]从数据库定义角度,提出了“系统化原理”课程中众多知识点的整体思维导图。这些内容可以拓展学生的知识面,加深对基础知识的理解,充分认知数学的重要性,培养学生的全局性思维,等等。

三、结语

本文采用迁移学习思想,在“C语言”课程中引入与课程内容相关的丰富实例,对课本知识进行深度和广度的拓展。这种方式能够引发学生思考,活跃课程气氛,更加有效地传授知识。本文结合“C语言”课程的上述分析,在随后的教学过程中有待进一步丰富和完善。

参考文献

[1]杨斌鑫,王希云.数据计算及应用专业的建设与实

践——信息与计算科学专业在大数据时代下的内涵式发展[J].教育教学论坛,2020(53):382-384.

[2]李文骞.基于OBE理念的程序设计类课程教学改革初探[J].教育教学论坛,2020(28):288-289.

[3]王雪松,潘杰,程玉虎.知识迁移学习方法及应用[M].北京:科学出版社,2016:1.

[4]Yang Qiang, Zhang Yu, Dai Wenyuan, et al. Transfer Learning[M]. Cambridge: Cambridge University Press, 2020:7-11.

[5]Sinno Jialin Pan, Yang Qiang. A Survey on Transfer Lear-

ning[J]. IEEE Transactions on Knowledge and Data Enginee-

ring(TKDE),2010(22):1345-1359.

[6]ZHU Zhen-feng, ZHU Xing-quan, GUO Yue-fei, et al. Transfer Incremental Learning for Pattern Classification[C]. The 19th ACM International Conference on Information and Knowledge Management (CIKM),2010:1709-1712.

[7]段禮祥.迁移学习在专业课程教学中的实践研究[J].课程教育研究,2017(46):55-56.

[8]马芳,马学.探索迁移学习促进研究生课堂教学的实践应用[J].中国高等医学教育,2018(4):86-87.

[9]陈智,梁娟,谢兵.学习迁移理论在翻转课堂教学中的应用[J].教育现代化,2018(5):233-235.

[10]赵娜,覃科,何金花.以程序设计能力培养为核心的C语言教学改革[J].教育教学论坛,2020(46):171-173.

[11]朱真峰,孙建新.台球运动中计算主球进攻方向的精确模型及实用方法[J].河南师范大学学报,2014(42):172-174.

[12]唐稚松.论指令系统的递归性[J].数学学报,1965(15):842-860.

[13][美]Scheid Francis,罗亮生,包雪英.数值分析(2版)[M].王国英,译.北京:科学出版社,2002:1.

[14]朱真峰.迭代算法的可行性及实用性[J].郑州师范教育,2015(4):23-25.

[15]朱真峰,田侦.基于思维导图的数据库原理课程总体认知分析[J].计算机教育,2020(4):92-97.

Role of Transfer Learning in Activating Science and Engineering Classroom Teaching: Taking C Language Programming Course as an Example

ZHU Zhen-feng, WU Yun-peng

(School of Information Engineering, Zhengzhou University, Zhengzhou, Henan 450001, China)

Abstract: Compared with liberal art courses, understanding knowledge points in science and engineering courses requires strong logical thinking, and it is difficult to understand and master for students. This phenomenon makes the teaching atmosphere of science and engineering courses dull and reduces the effect of teaching to some extent. In view of the teaching practice, taking the C Language Programming course of the information discipline as an example, and inspired by the principle of universal connectivity, this paper attempts to expand the depth and breadth of knowledge of the textbook by adopting transfer learning method. Through the analysis of these two dimensions, we try to explain profound theories in simple language, so as to stimulate students' enthusiasm for learning, arouse students' thinking, and improve the knowledge imparting and skills improvement effect.

Key words: transfer learning; expansion of knowledge; C Language Programming; interactive teaching

猜你喜欢
迁移学习互动教学
迁移学习研究综述
从认知角度探讨大学英语网络教学模式
奇异值分解与移移学习在电机故障诊断中的应用
互动教学在语文教学中的有效运用
数学教学中的互动教学策略探究
高中政治互动教学有效应用研究
《数据库高级应用》教学创新方法研究
大数据环境下基于迁移学习的人体检测性能提升方法