面向人工智能的Python语言教学探索

2021-06-28 01:28葛动元刘恩辰罗海萍
电气电子教学学报 2021年3期
关键词:人工智能函数语言

葛动元, 靳 龙, 王 晨, 刘恩辰, 罗海萍

(1. 广西科技大学 机械与交通工程学院, 广西 柳州 545006 2. 广西科技大学 电气与信息工程学院, 广西 柳州 545006)

0 引言

人工智能AI(artificial intelligence)是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,胜任一些需要人类智能才能完成的复杂工作。人工智能由不同的领域组成,如机器学习,计算机视觉等等。自人工智能诞生以来,其理论和技术日益成熟,应用领域不断扩大,是一门极富挑战性的科学。自2006年深度学习算法的提出,人工智能处于高速发展时期,并取得了技术性突破,已经有很多人工智能研究的成果融入人们的日常生活。据有关统计,人工智能领域的人才缺口达80万,AI时代各行各业都缺人工智能人才,涵盖互联网、金融、通信、制造、建筑、广告、媒体等行业。随着大数据、云计算、深度学习等技术的快速发展,作为人工智能开发研究工作之一的Python语言,受到业界人士的广泛关注[1]。

1 Python语言概述

Python 语言是1989年荷兰人Guido Van Rossum(吉多. 范. 罗苏姆)在ABC 语言和Modula-3的基础上开发起来的,随着不断地更新与新功能的添加,在2004年以后Python语言的使用率便直线上升。2015年教育部高等学校大学计算机课程教学指导委员会编制的《大学计算机基础课程教学基本要求》的“典型课程实施案例”章节中,其中之一就是“程序设计基础(Python语言)”;教育部考试中心于2017年10月发布通知,决定自 2018年3月起,在计算机二级考试加入了Python 语言程序设计科目。Github发布的2018年全球编程语言排行榜,Python语言位居第三位[2~4]。

Python 语言是一种解释型语言与动态型语言,程序运行不需要进行编译,也不需要说明变量类型。Python语言具有可扩展性及可嵌入性,支持面向过程的函数编程以及面向对象的抽象编程;支持通过组合与继承的方式定义类。Python作为开源语言,用户可以自由地修改、复制及再分发源代码;基本上可以在所有的主流计算机平台上不加修改地运行[5~6]。Python 语言几乎实现任何方向的技术编程,如爬虫、科学运算、云计算、人工智能、和金融分析等,Python中都有相应的库为其提供全方位的支持,如深学习框架Tensorflow就是利用Python语言实现的[7]。

2 Python课程的教学实践

2.1 新型教学模式与机器学习框架

互联网信息时代背景下,涌现出百度、搜狗和谷歌等众多强大的搜索引擎,以及智能手机的普及和移动上网的便利,知识获得的渠道越来越多,致使传统的知识点堆积的、程式的授课方式与大学生的学习期望不协调。比如我们学生在安装与学习Tensorflow、numpy等遇到困难时,学习主动的学生基本上可以从网上中找到解决方案,教师不再是学生的唯一依赖。其实教师遇到同类问题也是从网上寻找解决的办法,学生甚至比教师更能得心应手的运用网上的学习资料。通过这种自主地学习方式,使得同学们体会到获得成功后的舒畅喜悦,与探索期间的艰难曲折形成鲜明的对比,促使他自发期待下一次的美好体验,并因此继续努力;另一方面也可以将那些被手机的无聊信息占有、甚至沉迷游戏中的同学从困境中摆脱出来。

Hinton等人于2006年提出的深度学习算法,通过多层处理,逐渐将组合“低层”特征转换为抽象“高层”属性类别,具有认知过程逐层进行,逐步抽象的特性。深度学习开源框架如TensorFlow、Theano、Keras、caffe2、Pytorch等不断涌现出来,为从事人工智能、机器学习领域的学生、研发人员等提供了便捷的优越平台。

2.2 智慧教学与稳健教学生态链

本课题组成员来源于机械与交通工程院、国际教育学院,以及电信学院的教师,以智能制造、机械制造及其自动化,以及人工智能专业的本科层次学生为对象,根据人工智能的需求开展Python语言的教学工作。作为一门新开的课程,相对于以前的计算机类课程的教学,如单片机教学,由于实验设备的紧缺,上机训练不充分,同学们感到很抽象而吃力。而C语言的教学,教学案例集中于数字排序、程求解、递归运算等,似乎与工程实际不密切。由于人工智能的研究成果在人们的日常生活,以及工程实际中广泛应用,如火车站进站的刷脸、商场的刷脸支付等;通过高科技的体念,给学生的学习、生活带来了前所未有的新感受,也体念到人工智能神奇的力量。而网上的相关人工智能的学习资料多如牛毛,其研究成果很多也在网上开放,丰富了教学案例,给Python语言的教学提供了很多的便利条件,也给Python语言的教学提出的变革需求,这对教师而言是一个新的挑战,新的形势需要采取与之相适应的方案,需要不断地改进教学方式与调整教学内容,形成新型的教学生态[8]。我们在课堂教学中,从基础知识、基本概念、基本原理,到重点知识、难点知识,有层次地由浅入深地循序进行。为配合理论教学,巩固同学们所学的基本原理,在实践教学环节,以课题驱动的形式,结合机器学习框架,依照实验设计与相应原理复习、程序编写、系统搭建与调试等的级联教学链模式顺序开展。为活跃学习气氛,由教师定期组织课外活动与研讨会,并建立联系交流群,让大学高年级学生与低年级学生,大学生与研究生,还有已经毕业在专业工作中遇到困难的学生,大家相互探讨与合作,形成思维的碰撞。并注重加强学术交流,了解人工智能的前沿动态,如推荐学生观看2017年、2018年的“未来论坛年会:未来科学大奖颁奖典礼”等科学盛会的视频录像,让同学们与教师在探索未知世界的时候从中获得突破边界的灵感与启示。

总之,这种新型的、多种力量相辅相成,多种教学方式交叉进行,多种教学资源相互补充,多种专业背景、基础的学生相互合作,共同形成纵横交错的、稳健的教学生态链,具有较强的抗干扰优势。

3 分层阶梯式的项目驱动

TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源库; 2015年11月,在DistBelief的基础上,谷歌大脑完成了对第二代机器学习系统TensorFlow的开发并对代码开源。

3.1 基于TensorFlow的正弦函数曲线的拟合

本文以大学生对正弦函数y=sin(x)在[-3.14, 3.14]区域的拟合为例进行演示。采用基于Tensorflow框架的Python语言拟合程序可从https://github.com/gordon399-GDY/Sine-function 下载,对应的程序如图1所示。

图1 拟合程序

该程序运行的界面如图2所示。图2中,圆状的点表示真实的数据,该训练数据添加了幅度在区间[-03, 0.3]之间的随机噪声;粗曲线表示是预测的数据。在程序运行500次Epochs之后,得到正弦曲线在[-3.14, 3.14]的区间内的拟合方程为:

y=8.6582×10-1x+4.65×10-4x2-9.5283×10-2x3+8.7859×10-3

(1)

从图2可见,所拟合的曲线与实际的曲线基本一致,说明所设计的网络具有较好的鲁棒性。

图2 程序运行界面及拟合曲线散点图

由于变量w1、w2、w3以及b的初始值为随机的,而所采用的神经网络容易陷入局部最优解,重新运行该程序时,可得到该正弦函数的拟合方程为:

y=8.7377×10-1x+5.2352×10-3x2-9. 4642×10-2x3-2.5552×10-3

(2)

从程序的运行结果可知,损失函数也是接近0,其对应的曲线图形也与式(1)的拟合曲线一样,都可作为y=sin(x)的拟合方程。

另外,TensorFlow开发了一个功能强大的可视化工具包:TensorBoard,既可以显示网络结构,又可以显示训练和测试过程中各相关参数的变化情况,是现实神经网络流程图。本拟合程序在当前目录生成一个名为JEEE的文件夹,日志被保存在该文件夹中。然后打开系统的cmd终端,并在终端输入命令tensorboard——logdir=JEEE,其中的JEEE为日志保存的文件夹名称,敲回车键Enter,运行后就可以生成一个链接,在google浏览器(或火狐浏览器)等的网址粘贴该链接,按回车键打开链接,可得到对应的可视化信息界面,如图3所示。

图3 计算图Main Graph

同时用scalar_summary()展示损失函数的标量信息,本程序采用函数:tf.summary.scalar (‘LOSS_GXSUT’,loss)即可实现损失函数的显示。

3.2 高精度的实时人脸检测:FaceBoxes

根据同学们的专业基础实际与人工智能在工程实践中的广泛应用,指导高年级大学生与硕士研究生研读深度学习中典型的案例,比如基于深度学习的minst手写体数字识别,人脸识别、汽车识别等。本文以同学们参加科技创新竞赛中涉及到人工智能的部分为例,阐述相关的各项工作。在课题开展过程中,首先让他们查阅与收集资料,研读相关学术论文,根据要求设计一个网络,如图4所示。检测系统包括快速消化卷积层(RDCL)、多尺度卷积层(MSCL),以及Anchor加密策略等部分组成。并采用Concatenated ReLU激活函数,以减少输出通道数,提高检测速度;同时提出一种加密锚策略,即不同建议检测框的尺度具有相同的密度,从而提高小目标的召回率。系统的损失函数由softmax分类损失函数与回归平滑损失函数的两部分组成。

图4 人脸检测结果

人脸识别的程序设计参照Shifeng Zhang提供的源代码(https://github.com/sfzhang15/FaceBoxes)[9],系统训练完成后,对某一图像进行人脸检测,得到的界面如图5所示。

在图5中,人的脸部被检测出来,检测框的左上角的位置坐标为:(149.77538, 75.81494),右下角的坐标为(304.25357, 267.68936),单位为Pixel。

图5 人脸识别网络结构

3.3 教学数据

在实践教学中,我们所采取的阶梯分层的模式,具体的教学类型、项目数、参加人数、教学效果等如表1所示。

表1 教学数据

通过对教学内容的分析,将基本原理、重点内容与难点内容的实践活动分别归到基本训练、与进阶训练,综合训练的内容还处于调整阶段,竞赛课题基本根据大赛的要求,结合同学们的专业基础进行选题。由于人工智能引人入胜的应用前景,同学们的学习兴趣浓厚,能够认真预习、提出问题,课后能够认真总结,并提出自己的想法与设想,巩固了所学的专业知识,从不同角度加深对理论认识的理解,也让同学们能够体会到专业知识在系统开发中支撑作用。

4 结语

在面向人工智能的Python语言的教学实践中,与课题组成员一道着力打通机械、自动化与人工智能等学科专业的壁垒。在课题的开展过程中,以课题驱动的形式,作为第一指导教师指导学生参加以人工智能为主题的竞赛多项,完成一项并获奖,正在进行的三项课题进展顺利,正在申报的课题一项。这种通过案例教学的方式,提高了学生的兴趣,更好地掌握Python语言,具备初步的人工智能系统的研发能力。通过多种教学方式交叉进行,多种教学资源相互补充,多种专业背景、专业基础的学生相互合作,共同形成的纵横交错的、稳健的教学生态链,促进学生的专业发展,为智慧教学提供一个有效的解决方案。

致谢

在本研究的开展过程中得到了华南理工大学姚锡凡老师与广西科技大学韦建军老师的指导与关心,在此一并表示诚挚的谢意;对在课题开展期间担任助教工作的高秀龙、吴泳佐、许智斌三位硕士研究生的刻苦努力表示由衷的欣慰。

猜你喜欢
人工智能函数语言
二次函数
第3讲 “函数”复习精讲
二次函数
函数备考精讲
语言是刀
2019:人工智能
人工智能与就业
让语言描写摇曳多姿
数读人工智能
累积动态分析下的同声传译语言压缩