当前位置:首页 期刊杂志

PyTorch与开源数据挖掘工具在人工智能教学中的应用

时间:2024-05-04

王婧文,张思萌,祁薇

(海军大连舰艇学院,辽宁大连 116018)

0 引言

随着当今社会上各个领域对智能机器建设需求的持续增加,各高校也陆续开设了人工智能基础类课程,此类课程成为计算机科学与技术专业的专业基础课程之一。课程内容涵盖复杂算法知识、统计学知识、概率论知识和近似理论,是一门多学科交叉的课程[1]。该课程的侧重点为各种理论算法,包括逻辑回归、随机森林、神经网络、支持向量机(Support Vector Machine)、BP算法等。高校开设此类课程的目的其一是要学生通过学习和实验掌握基础的机器学习和深度学习算法原理,并通过技术解决实际问题;其二是在熟练掌握各类算法的基础上进行算法的改进,为人工智能领域发展新的技术。

目前,高校中进行人工智能基础课程教学主要是通过理论授课与实验相结合的方式进行,在前期的基础实验过程中多是依靠Matlab 平台对多维数据进行分析,该方式完全依靠程序代码,且要学习Matlab 语法,与前期课程所学编程语言衔接程度不深,而数据也是由学校直接提供,不仅难以激发学生的学习兴趣,且与企业的需求有一定程度的脱节。在此值得注意的是,许多知名企业都先后推出了人工智能深度学习框架以及数据处理的可视化工具,若能充分利用此类工具和平台,以与时俱进的方式进行教学,让学生尽早接触先进的深度学习平台,对培养学生的学习兴趣以及知识的广度与深度都非常有益。而不同的深度学习框架的特点不尽相同,提供的学习资源和侧重的方向亦有所差异,与先前所学知识的衔接程度也有不同。因此,若能够根据课程的难易程度与时间安排,选择合适的平台设计互补合理的实验内容,将引导与探索式教学相结合,可以在一定程度上提升学生的学习的效率以及积极性。

为此,本文提出Facebook所开发的人工智能框架——PyTorch与开源可视化数据挖掘工具WEKA在教学中的综合应用,其互补教学方式以及优势将在本文中做详细介绍。

1 开源工具WEKA的引入

WEKA(Waikato Environment for Knowledge Analysis)是一款开源免费的机器学习以及数据挖掘软件,该平台是可视化平台,集合了大量基础和经典的机器学习算法,包括对数据进行预处理、分类、聚类、回归等功能都可以通过平台的操作实现[2]。因WEKA已经是一个较为成熟的开源软件,具备完备的学习资料以及文献文档,综合其属于操作应用级平台、无需编程、可视化界面操作的特征,较容易学习和掌握使用方法。

因当前课程学科交叉性强,需要在学习中拓宽思维方式、追求深度和广度的特点,在教学过程中,若仅从理论上阐述,学生的实际操作能力无法得到锻炼,不易于真正理解;若立刻以编程的方式开展实验,学生会因前期的数据分析处理过程冗长,而自己在技术上能力有限,从而产生畏难情绪。因此,在课程前期,讲述机器学习的训练步骤、训练方法时,可借助WEKA平台的可视化操作界面为学生做具体演示,该方式更容易为初学者搭建思路框架,令所学的算法理论有的放矢。而在操作过程中引入对不同训练方式(如变换训练集数量、训练算法以及增加噪声数据等)所构建出模型正确率的思考,更能激发学生学习的兴趣,加深学生对算法和源数据处理的认识。例如,分类(Classify)类选项卡中提供了各种用于创建训练模型的可选训练方式,包括比例分割(percentage split)、交叉验证(cross-validation)、使用训练集(use training set)等[3],且当前选项卡中的分类器输出栏可以显示结果的测试指标,通过点击右键可以得到图形化的结果界面,学生在实验中通过观察选取不同的训练方式进行训练和建模所导致的不同结果,可以了解到不同训练形式的适用范围以及其优缺点。而选择属性(select attributes)选项卡则利用可视化界面集成了多种用于选择样本特征的方法,例如信息增益、信息增益比或选择部分指定的特征来进行分析等方式,通过多种特征选择下的分析结果进行可视化对比,可以为学生展示特征的选取对训练模型构建的重要性。

WEKA作为一个将算法、特征选择及数据预处理功能集成到可视化界面的开源工具,在实验中令学生更容易看到更多不同的结果,在控制变量的实验方式下易激发学生的好奇心和兴趣,以此种方式可以培养学生的实际动手能力,使学生熟悉数据挖掘和处理的流程,为更困难的算法学习打下基础。在一些入门级的算法实践上,可以考虑用WEKA 平台作为实验环境。

2 人工智能框架PyTorch的引入

PyTorch 是2017 年Facebook 人工智能研究院(FAIR)团队在GitHub 上开源的深度学习框架[4],其充分考虑到了Python语言的诸多优势,为使用者提供了Python 语言的接口,并且对Tensor 之上的所有模块进行了重构,同时新增了最先进的自动求导系统,是当下流行的动态图框架。

PyTorch 与其他的深度学习框架相比有诸多优点,其一是它支持Python 语言,支持Python 中的各种功能函数,可以直接使用Python 的类库,令数据处理的过程更为简单,同时,Python 语言在前置课程的学习中已被学生所熟悉,不需要为本门课程的实验重新学习一门语言,学生更易上手。其二是PyTorch 采用了追求最少的封装的设计方式,简洁的设计带来的另外一个好处就是代码易于理解,更少的抽象、更直观的设计使得PyTorch 的源码更加易于分析、阅读以及学习[5]。其三,支持动态图的创建也是PyTorch的一大优势,当前的深度学习平台绝大多数都是采用静态图模型方式,包括TensorFlow、Caffe、Theano 以及Keras等,静态图定义的缺陷是在处理数据前必须定义好完整的一套模型,能够处理所有的边际情况,而动态图模型允许用户先定义好一套基本的框架再根据数据来实时修正模型,在训练模型时具备极强的灵活性,除了进行实验,深入理解深度学习算法的思想之外,一定程度上也方便学生未来在深度学习领域提高研究的深度和广度。另外,PyTorch 的环境配置和搭建较TensorFlow 而言也更加简单,对于初学者而言更加友好。

3 教学实践计划

在教学实施之中,考虑将两个平台结合起来,发挥各自的优势和特色进行互补式教学。在课程的第一阶段,学习的内容是一些基础的算法,对于基础的算法,如决策树、线性回归、支持向量机(SOM)以及梯度下降损失函数可以采用WEKA平台进行课上演示,并布置实验作业,给出实验数据集。由于在此平台上,学生只需要载入数据集,在可视化界面上设置适合的参数即可得到实验结果,相对较容易实现,因此在每次实验中可以布置多个思考题,要求学生通过可视化分析得出结论,并总结各个训练方式的结果产生差距的原因,思考是什么原因造成了过拟合现象等。同时,在实验中要求学生以不同的特征数据作为训练集,观察其模型表现上的优劣,培养学生对于特征(feature)以及特征选取(feature selection)的敏感程度,在此基础上适当给出一些降维算法(如经典PCA 算法)以及文本挖掘领域的典型特征作为自学内容,培养学生触类旁通的能力,对于部分对文本挖掘领域有兴趣的同学,也可以做一个浅层的了解,为后续课程铺垫,提升知识的广度。在整个实验过程中学生通过对实验数据的清洗,对特征的重新处理,以及对算法和验证方式的选择,了解机器学习算法从数据准备到构建模型全步骤的处理流程,通过基础的简单的操作,在实践中构建出宏观的机器学习思维。

在第二个阶段,可以引入PyTorch框架进行实验,在此阶段的学习之前,学生需要对Python语言具备一定的基础。该部分实验可以开展在正式学习卷积神经网络之前,以最简单的神经元的方式去描述线性回归问题,提前提出正向传播(forward)和反向传播(backward)的概念(如图1)。通过简单的神经网络,可以直观又不复杂地理解到神经网络工作的流程,避免在最初接触神经网络就与复杂的矩阵运算相关联,使学生产生畏难情绪。

图1 神经网络实现线性模型训练流程

该部分实验使学生在了解神经网络原理的同时也熟悉PyTorch平台的使用,了解Tensor的含义,熟悉平台的基本语法,为后续的深度学习打下基础。在实践过简单的神经网络后,可要求学生完成卷积神经网络和循环神经网络等实验。需要注意的是,在Py-Torch 平台的实验需要编程和调试程序,难度系数增大,需要根据实际情况给出一些代码的提示,以填空的模式或者给出一些简单场景的实现代码。实验总共安排9次(如表1)。

表1 基于多平台融合的人工智能课程实验设计

在实验过程中,所有的实验数据集将全部从Kaggle平台获取。Kaggle是主要为开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台[6],其数据都是从真正的运营网站中获取,具备真实、全面、准确的特征,有许多能应用于多种场合的数据集,或简单如药品销售、食品销量及评价,或庞杂重要如空气污染数据。这些数据取自现实世界,存在真实的噪声和冗余,使学生在真实的数据下进行实验,更具实际意义。

4 教学实施注意事项

在教学实践中,应该着重完善以下环节:

1)重视对学生的实验辅导,每次实验除了布置实验内容之外,更要有足够的资料、文献或案例提前下发到学生手中,让学生提早预习实验内容,或对理论课讲授的知识点做适当的补充,完善整个知识体系中细节的部分,使学生在实验的过程中做到有的放矢。实验任务书中提供的案例要严谨,最好是学生按照步骤一步一步操作即可完成的内容,难度上要比实验内容简单,在课前让学生熟悉整个流程,也增强学生实验的信心和满足感。

2)在课程简介中要标注好在选修本门课程之前应当具备一定的Python基础,避免选修课程的学生没有编程的基础,不具备计算思维,花费过多时间在编程语言的语法和调试上,忽视课程的主题内容。另外,在理论课堂上要抽出一学时来介绍PyTorch平台,内容包括平台的下载安装、环境配置以及一些基本的功能和操作,这部分内容可以安排在神经网络的理论课之前。

3)对于基础的,在WEKA可视化平台上就能完成的实验,多设置思考题对训练过程的细节知识点进行深度挖掘,如让学生实践多种交叉验证方法(HoldOut、K-Fold、分层K-Fold 等),比较其结果差异,自行总结各种验证方法适合的场景,或比较不同数据量、不同的特征训练出的模型表现的优劣,让学生总结原因等,使每次实验的效能达到最大。

4) 对于难度较大的编程实验,如卷积神经网络等,按需要在实验指导书上提供程序的部分源代码,在难点处可采用程序填空的方式,必要时加以注释,让学生的重点放在理解算法核心思想上,而非程序的调试。

5)课程的分数构成设置为100分满分,50分实验分数,50 分笔试分数的模式。在期末考试试卷内,设置实验结果分析的题目,促使学生思考结果产生的原因以及改进措施,注重对学生动手能力的培养和考察。

5 结束语

在人工智能的课程中引入WEKA 数据挖掘工作平台和PyTorch 深度学习框架,采取双平台融合教学的方式进行实验设计。通过实时检测学生对人工智能经典算法以及训练方式的掌握程度,发现大部分学生不仅能在规定的时间内完成实验,且观察、分析和解决问题的能力均有所提升,与此同时,部分学生有意愿在实验的基础上做一些更具深度和广度的拓展研究,较以往具有更强的学习积极性和探索能力。另外,学生在课程实验中接触到的PyTorch 深度学习平台在各大互联网企业中运用广泛,是当前一项热门的技术,与市场需求紧密贴合,有利于就业或深造。下一个阶段,在完善教学模式的基础上,不断融入更具社会讨论度、更有趣的案例,探索开展更有效的教学,进一步提升学生的满意度。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!