Python可视化技术在BP神经网络教学中的应用

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:iceman923
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:该文从几何的视角来看待感知机和神经网络,采用两个简单、便于演示的例子来解释感知机和BP神经网络的分类功能,并结合Python动画演示其权值、偏置值在训练中逐步收敛的过程。本文介绍的方法在教学实践中收到了较好的效果,可以帮助学生对感知机和BP神经网络产生感性认识。
  关键词:Python;可视化;感知机;BP神经网络;教学实践
  中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)19-0178-03
  Abstract: In this paper, we perceive the perceptron and BP neural network from a geometric perspective. We explain the classification function of perceptron and neural network with two examples that simple and easy to visualize. We also use python animation to demonstrate how the weights and biases converge gradually. The method introduced in this paper has good effect in the teaching practice, and can help students to build perceptual knowledge of the perceptron and the BP neural network.
  Key words: Python; visualization; perseptron; BP neural network;teaching practice
  深度学习在图像、语音、自然语言识别,文本分类等方面展现出强大的功能,而深度学习的基础是神经网络。神经网络的原理和训练方法在教学中向来是难点、重点。学生在学习中往往感觉抽象、不易理解掌握。传统的教学中往往着重对原理进行阐述,对权值更新公式进行推导。这种围绕原理和公式为中心的教学方式不够直观,难以让学生对网络的运行过程产生感性的认识。
  本文提出的教法围绕两个易于可视化的案例来展开教学。这两个案例基于二维向量,易于用Python语言实现,可以用动画方式来展示神经网络的训练、收敛过程,能方便地修改初始参数,让学生观察不同的初始化数据对网络训练产生的影响。相比传统教学方式,有直观、灵活性强的优点。在教学实践中,收到了较好的效果。
  1 Python和matplotlib库介绍
  作为一种语法简练的动态语言,Python[1]非常适合初学编程者,可以让初学者把精力集中在编程对象和算法实现上,而不被复杂的语法、变量类型等细节因素干扰思维。Python作为一种脚本语言,非常适合开发小应用,尤其是在课堂教学中用来演示软件模型的结构和功能。
  当然,Python也有着运行效率低的缺点。由于是动态语言,还是解释型,所以运行速度比半编译半解释的Java还慢,更不必说以性能见长的C/C 了。其运行时需要占用更多的内存、处理器资源。但对于当前PC机动辄4G、8G,服务器100多G的内存,以及双核、四核甚至32核的处理器来讲,用这点性能损失换取高度的可读性、灵活性和扩展性是非常值得的。
  基于Python语言的上述优点,目前有大量的深度学习框架基于Python语言进行开发。例如最早的深度学习框架Theano[2]就是基于Python语言开发的。谷歌公司的开源框架TensorFlow[3]支持Python和C 。图像、视频处理方面的优秀深度学习框架Caffe[4]也提供Python接口。在Python学习热潮的影响下,Facebook公司将原本用Lua语言开发的深度学习框架Torch[5],用Python语言实现,推出了PyTorch。Python的深度学习模块scikit-learn提供了几乎所有的机器学习主流算法。因此,采用Python作为神经网络教学语言,不但能在学习中获得丰富的支持,也能让学生接触技术市场中的主流技术,減少学习成本。
  Python中的matplotlib库中包含丰富的绘图函数模块,pyplot模块中的subplot()函数可以将感知机和神经网络权值、偏置值变化过程用一系列的子图绘制出来,加深学生对训练过程的理解。animation模块则提供了动画功能,通过实现init()、animate()函数和调用FuncAnimation()函数,可以进一步把感知机和神经网络权值、偏置值变化过程以更直观的动画的方式演示出来,给学生更加直观的感受。
  2 感知机的可视化教学
  如图2-1,符号"x"表示分类为-1的元素,符号" "表示分类为1的元素。如果感知机的参数正确,则标"x"的点应位于直线下方,标" "的点应位于直线上方。很明显,当前直线不能正确的将两类点分开,存在3个误分类点。图2-2中,算法选择错误分类点(-1,0)来更新权值和偏置值(每次选中的错误分类点在图2中用菱形标出),使直线移动到了点(-1,0)的上方,该点成为正确分类点。这次更新也让直线越过了点(0,0),使其成为正确分类点,只留下了点(2,0)尚未正确分类。图2-3中,算法使用唯一的一个错误分类点(2,0)来更新权值和偏置值,将直线向(2,0)移动,但这次更新移动距离较小,并未让直线越过该点,该点还是错误分类点。图2-4中,算法继续使用点(2,0)来更新权值和偏置值,直线继续向点(2,0)的方向移动,并成功越过该点。此时得到的感知机参数对7个训练数据完成了分类工作。
  对于三维数据,可以用三维图形来演示。对于三维以上的数据,目前无法用图形方式直接表示。但对学生而言,只要彻底理解了二维和三维的感知机算法,更高纬度的算法仅仅是增加了维度,属于量变,其原理本质上是相同的。   3 BP神经网络的可视化教学
  为了便于学生理解,教学中可以采用最简单的两层网络来做演示,选择经典的异或问题来训练网络。异或运算Z=X⊕Y,即不带进位的二进制加法,真值表如下:
  将输入X、Y作为坐标,将Z作为分类号的话,則这四个点无法通过一条直线将其分为两类,即非线性可分。该问题单层的感知机无法处理,需要用两层神经网络来解决。
  神经网络的构造如图所示:
  图4-1是原始输入对应的四个点,这四个点是线性不可分的;随机初始化的输出层权值、偏置值确定的直线无法将其正确分类。图4-2中,四个输入点经过了隐藏层的处理,映射到了新的位置,因为随机初始化权值和偏置值都是接近0的量,所以隐藏层两个节点计算求和的值也接近0,而sigmoid(0)的值是0.5,表现在图4-2中就是经过隐藏层处理后的新位置都在点(0.5,0.5)附近。随着算法继续进行,新的权值和偏置值对原位置的改变越来越大,直到图4-6,变换后的四个点变得线性可分,而此时输出层权值和偏置值确定的直线也调整到了合适的位置,将这四个点成功分为两类。
  通过动画序列可以直观地看出:两层的神经网络学习算法中,原始的4个输入点在中间层权值矩阵和偏置向量的作用下,每个输入点被映射到了新的位置,使得原本线性不可分的两组点,变得线性可分。而隐藏层只有一个节点,本质上就是一个感知机,其权值和偏置值确定的直线可以将映射变换后线性可分的四个点正确的划分为两类。通过动画演示过程,学生可以加深对BP神经网络的理解。
  4 结束语
  感知机和神经网络是在计算机和相关专业中的重要课程,其原理抽象、和数学结合紧密。随之而来的是教学中难度大,学生不易理解、不易掌握。本文以数形结合、动画演示的方式来讲解感知机和神经网络的原理和训练过程,为该课程的教学方法做出了一点探索。文中所使用的代码和gif动态图片,可以通过baidu网盘https://pan.baidu.com/s/1brlQ0Jd下载。
  由于可视化在教学方面的巨大优势,Google深度学习部门Google Brain的资深工程师Jeff Dean开发了神经网络的可视化工具:Tensorflow游乐场(网址http://playground.tensorflow.org),该工具提供了四种形态的待分类数据,通过网页的形式和用户交互,能灵活的调整网络结构、网络参数和数据特征。对于希望做进一步学习的学生,可以利用该可视化工具来研究其他形态数据在神经网络中训练的情况。
  参考文献:
  [1] Chun W. Core Python Programming[J].Prentice Hall Ptr Core.2006.
  [2] Team T T D,Al-Rfou R, Alain G, et al. Theano: A Python framework for fast computation of mathematical expressions[J]. ArXiv e-prints.2016.
  [3] Abadi M, Agarwal A, Barham P, et al. TensorFlow: Large-Scale Machine Learning on Heterogeneous Distributed Systems[J]. 2016.
  [4] Jia, Yangqing, Shelhamer, et al. Caffe: Convolutional Architecture for Fast Feature Embedding[J]. 2014: 675-678.
  [5] Collobert R, Bengio S, Marithoz J. Torch: A Modular Machine Learning Software Library[J]. Idiap. 2002.
  [6] Rosenblatt. The perception: a probabilistic model for information storage and organization in the brain[J]. Psychological Review. 1958, 65(6): 386.
  [7] 焦李成. 神经网络系统理论[M]. 西北工业大学出版社, 1990.
其他文献
哮喘是呼吸道一种常丌尢的非特异性慢性炎症,是由多种细胞,特别是肥大细胞,嗜酸粒细胞和淋巴细胞参与的慢性气道炎性反应,使气道呈高反应性,引起支气管痉挛,导致通气功能障碍。本文
幽门螺杆菌(HP)感染与许多血液系统疾病的关系被人们逐渐认识,临床证实感染幽门螺杆菌的胃黏膜相关淋巴瘤患者经清除该茵治疗后,胃淋巴瘤治愈了。近些年研究发现HP感染与特发性血
在费县保护地栽培京秀葡萄,11月中旬覆盖棚膜,1月3日开始升温,4月2日开花,5月25日果实成熟,较露地栽培提前50天。
二叉树支持向量机(SVM)是一种针对多类问题的有效分类器,具有结构简单、训练快的特点,但二叉树SVM容易出现误差积累,且不能输出识别结果的置信度。文中设计了一种基于隶属度计
全面建设小康社会对农村变革提出了新的要求,农民素养的培养是新农村建设的根本,开展"农民大学生培养计划"精品课程是提高农民素质的有效途径,文章在深入分析开展"农民大学生培
缺血性眼病(ischemic ophthalmopathy,IOP)是眼缺血的总称,它是眼科常见病,多发病。眼是全身血流量最大的器官之一,其脉络膜血流量是脑血流量的3倍,肝血流量的2倍,相当于。肾血流量。
随着社会的经济的发展,我国小学的英语教学模式也在不断的创新和改革。由于社会的发展,对于人才的定义也有了新的标准,需要其具有创造性思维以及主观能动性。对此,小学英语教
目的探讨卡孕栓预防剖宫产术中子宫出血。方法将剖宫产术分为两组,研究组420例,在胎儿娩出后即刻舌下含服卡孕栓1mg;对照组406例,在胎儿娩出后宫体注射催产素20IU,观察产后出血量
采用红双味、乍娜等早熟葡萄品种的营养袋芽苗进行日光温室栽培.定植后,加大肥水供应,采用篱架独龙或双龙干整枝,并反复摘心,促进主蔓生长和冬芽分化.11月初扣棚,12月初提温
近年来随着MATLAB等计算机辅助设计软件的快速发展,将仿真软件应用与基础理论知识结合已成为大学工科专业课程改革的趋势。该文针对"控制系统仿真与CAD"课程教学过程中存在的问题,结合建筑类应用型本科院校的实际情况,对课程教学的改革进行了探索性研究,并应用于实际教学中,达到了良好的效果。