卷积神经网络的特征范文

时间:2024-04-02 18:03:21

导语:如何才能写好一篇卷积神经网络的特征,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。

卷积神经网络的特征

篇1

关键词: 模式识别; 神经网络; 卷积; 文字识别

中图分类号: TN711?34; TP391.4 文献标识码: A 文章编号: 1004?373X(2014)20?0019?03

Large pattern online handwriting character recognition based on multi?convolution neural network

GE Ming?tao1, WANG Xiao?li1, PAN Li?wu2

(1. SIAS International School, Zhengzhou University, Zhengzhou 451150, China;

2. Henan University of Animal Husbandry and Economy, Zhengzhou 450011, China)

Abstract: Online handwriting character recognition is an important field in the research of pattern recognition. The traditional recognition method is based on the common convolutional neural networks (CNNs) technology. It has an efficient recognition rate for the small pattern character set online handwriting characters, but has low recognition rate for the large pattern character set recognition. A recognition method based on multi?convolutional neural networks (MCNNs) is presented in this paper to overcome the situation that the previous methods have the low recognition rate for large pattern character set and improve the recognition rate for the large pattern handwriting character set recognition. The stochastic diagonal Levenbert?Marquardt method is used in the system for training optimization. The experimental results show that the proposed method has the recognition rate of 89% and has a good prospect for online handwriting character recognition for large scale pattern.

Keywords: pattern recognition; neural network; convolution; character recognition

0 引 言

随着全球信息化的飞速发展和对自动化程度要求的不断提高 ,手写文字识别技术被广泛地应用到许多方面。特别是近几年拥有手写功能的手机、平板电脑等智能电子产品的普及,联机手写文字识别研究已经成为一个备受关注的主题。联机手写字符识别要求实时性较高,识别过程中要求特征空间的维数比较高,在进行特征样本训练时要求训练的数目很大,要匹配的特征值或特征对象比较多 [1?2]。

卷积神经网络(Convolutional Neural Networks,CNNs)的优点在于图像的识别过程中对视觉模式的获得是直接从原始图像中获得的,所以在设计系统时图像的预处理工作很少,与一般神经网络相比是一种高效的识别方法。卷积神经网络在模式识别的一些领域具有很好的鲁棒性,如在识别有变化的模式和对几何变形的识别方面。利用卷积神经网络的手写识别方法具有如下一些优点:对于要检测的图像可以与事先制定网络拓扑结构之间有较高的匹配率;特征提取和模式分类同时进行;训练参数往往是系统计算量的重要参数,而卷积神经网络中利用权值共享技术,这样就可以大大降低该参数,在设计系统结构时使得结构变得更简单,从而使得整个系统具有更好的适应性[3?5]。

目前,人机交互系统的手写字符识别、汽车车牌号识别和信息安全中常用的人脸识别等领域都有卷积神经网络的成功应用。文献[6]用一个4层的卷积神经网络LeNet?5对Mnist库进行识别实验,获得了98.4%的识别率,用2层的BP网络的识别率[4,6]是87%。许多学者对卷积神经网络在联机手写文字识别方面做了多方位的研究。 但是,这些成功的联机手写文字识别主要是针对小模式字符集,利用以往的这些方法对大规模模式分类的联机手写文字的识别依然有识别率不高的问题。本文介绍了卷积神经网络的基本概念和一种典型的卷积神经网络结构,给出了基于多重卷积神经网络的字符识别和词语识别模型。通过使用大字符集的UNIPEN数据库进行训练和测试,本文提出的方法在大模式联机手写识别上,取得了较高的识别速度和满意的识别率。

1 卷积神经网络

文献[6?7]中详细地描述了卷积神经网络如何保证图像对位移、缩放、扭曲鲁棒性能。典型的手写字符卷积神经网络LeNET 5的结构图如图1所示[6?7]。

图1 典型的卷积神经网络结构

在图1中,输入层接收要识别32×32的手写字符图像,经过简单的大小归一化和图像灰度处理,之后的结果作为一个采样层的图像;然后用一个可学习核进行卷积操作,卷积结果经过激活函数的输出形成这一层的神经元,每个神经元与输入图像的一个5×5的邻域相连接,从而得到由6幅特征图组成的第一个隐层(C1层)。每个特征图有25个权值(如方向线段,端点、角点等),考虑到边界效果,得到的特征图的大小是28×28,小于输入图层[3?9]。卷积层的数学计算过程可表示为:

[xlj=fi∈Mjxl-1j*kernellij+blj] (1)

式中:[l] 代表层数;kernel是卷积核;[Mj]代表输入特征图的一个选择。每个输出图有一个偏置[b]。

每个卷积层的结果作为下一个次采样层的输入,次采样层的作用是对输入信息进行抽样操作。如果输入的特征图为n个,则经过次采样层后特征图的个数仍然为n,但是输出的特征图要变小(例如,各维变为原来的50%)。因此隐层S2是由6个大小为14×14的特征图组成的次采样层。次采样层计算公式可以用式(2)表示:

[xlj=fβl-1jdown(xl-1j)+blj] (2)

式中down(・) 表示次采样函数。次采样函数一般是对该层输入图像的一个n×n大小的区域求和,因此,输出图像的大小是输入图像大小的[1n]。每一个输出的特征图有自己的β和b。

类似的,C3层有16个10×10的特征图组成的卷积层,特征图的每个神经元与S2网络层的若干个特征图的5×5的邻域连接。网络层S4是由16个大小为5×5的特征图组成的次采样层。特征图的每个神经元与C3层的一个2×2大小的邻域相连接。网络层C5是由120个特征图组成的卷积层。每个神经元与S4网络层的所有特征图的5×5大小的邻域相连接。网络层F6,包括84个神经元,与网络层C5进行全连接。最后,输出层有10个神经元,是由径向基函数单元(RBF)组成,输出层的每个神经元对应一个字符类别。RBF单元的输出yi的计算方法如式(3)所示:

[yi=j(xj-wij)2] (3)

很多研究人员通过对字符集作弹性训练,经测试发现在MNIST字符集上的识别率可以高达99%以上[6?7] 。卷积神经网络的优势主要是对小模式集上,如对数字或26个英文字母组成的集合都有着较高的识别率。然而,对大模式集的识别仍然是一个挑战,因为设计一个优化的并足够大的单一网络是比较困难的,且训练时间也较长。因此,本文的目的旨在通过组合多个对某一字符集有高识别率的卷积神经网络,从而构成多重卷积神经网络,进而提高卷积神经网络对大模式集手写字符的识别率。

2 多重卷积神经网络

2.1 多重卷积神经网络字符识别

根据传统卷积神经网络的运算过程以及其在处理大模式集手写字符时存在的不足,本文提出一种多重卷积神经网络来改进传统的卷积神经网络模型,用多个拥有高识别率的小卷积神经网络组成一个多重卷积神经网络。每一重小卷积神经网络对某一具体字符集有较高的识别率,另外,单重卷积神经网络除了有一个正式的输出集之外,还产生一个未知的输出(即难以识别的字符),即如果一个输入字符没有被正确识别,它将被输出为一个未知字符,然后输入模式转到下一重卷积神经网络进行识别。最后,通过一个拼写检查模块进行判断,选择最好的结果输出。系统的流程如图2所示。

其中CNN 1是识别手写数字的卷积神经网络,CNN 2是识别手写小写英文字母的卷积神经网络,该模型具有极强的扩展性,可以添加多任意模式的卷积神经网络(如中文,日文等)。

图2 多重卷积神经网络字符识别示意图

2.2 随机对角Levenberg?Marquardt训练方法

传统的结构比较简单、单一的卷积神经网络多采用基本的Back Propagation(BP)规则训练网络,往往需要几百次迭代,网络的收敛速度较慢。本文采用LeCun博士提出的随机对角Levenberg?Marquardt 算法对网络作训练,该算法需要的迭代次数明显比基本的BP 算法少[4,9]。随机对角Levenberg?Marquardt算法的公式为:

[ηki=ε?2E?w2ij+μ] (4)

式中[ε]是全局的学习率,一般取初始值0.01,太大会使网络无法收敛,太小则会降低收敛速度,且使网络更容易陷入局部极小值,训练过程中可以用启发式规则改变[ε]的值,本文取最下值为5e-005; [?2E?w2ij]是一个估计值,根据训练集的大小可以调整样本数量,文中随机选取200个样本估算它的值;[μ]用来避免[?2E?w2ij] 太小时[ηki]的变化过大 。

2.3 多重卷积神经网络词句识别

本文提出的多重卷积神经网络对手写词语的识别方法可以简单地描述为:首先对输入的手写图像进行预处理和分割,然后通过多重卷积神经网络模块分别进行识别,最后采用单词识别模块对识别结果进行判断,选择最好的结果输出。其过程如图3所示。

图3 多重卷积神经网络联机手写词句识别过程

本文提出的多重卷积神经网络联机手写文字识别方法克服了传统卷积神经网络文字识别的对字符集的限制,每一重卷积神经网络是一个针对小模式的卷积神经网络,易于训练和优化,更重要的是此方案的灵活性非常好易于调节参数,可扩展性强。每一重卷积神经网络都具有可重用能力,可以根据需要加载一个或多个网络,可以根据新的模式添加新的网络而不需改变或重建原来的网络。

3 训练和实验

为了评估多重卷积神经网络对基于大模式字符集的联机手写文字识别的性能,本系统采用MNIST和UNIPEN两种不同的手写字符训练集进行测试。UNIPEN数据库是在1992年举行的IEEE IAPR会议上提出并建立的,其目的是创建一个大型的手写体数据库用于为在线手写识别提供研究和开发的基础,得到了多个知名公司或研究所的支持并完成了UNIPEN的规范设计。在进行数据比对实验中,本文采用许多研究使用的MNIST手写数字数据库,该数据库是NEC 研究中心设计的,是NIST(The National Institute of Standards and Technology)数据库的一个子集,该训练集中有大量训练样本和测试用例。本文默认用以下定义:

[识别率=正确识别数样本总数×100%]

[失误率误识率=错误识别数样本总数×100%]

实验测试是在通用的台式电脑上进行的。整个识别原型系统采用C#编写,运行在.NetFrame 4.5平台上。经测试对MNIST训练集识别正确率可达[9]99%,对UNIPEN数字识别正确率可达97%,对UNIPEN数字和大写字母识别正确率可达89%(1a,1b) ,对UNIPEN小写字母识别正确率可达89%(1c) 。图4是对UNIPEN小写字母3次训练的均方误差比较。

图4 训练的误差数据

从图4中可以看出,在开始的几个训练周期内,均方误差(MSE)下降得很快,然后在第13个周期后神经网络达到一个稳定的值,约为0.148 5。也就是说,网络在第13个周期后,改善程度就很小。所以修改训练错误率的值为0.000 45后重新进行18代的第二次训练,均方误差有所降低。经过第三次的训练后趋于稳定,对UNIPEN小写字母识别正确率可达89%。经测试,通过使用随机对角Levenberg?Marquardt方法,收敛速度比基本BP算法快了许多,经过68代训练后识别正确率可达89%。

4 结 语

本文提出了基于多重卷积神经网络的联机手写字符的识别方法,通过使用多个识别率高的卷积神经网络和随机对角 Levenberg? Marquardt方法,可以适用于大模式联机手写识别。经过实验数据比较,该方法在大模式联机手写识别过程中具有很高的识别率,与此同时识别速度也很快,有很好的实时性,总体效果很好。在当今触摸屏应用遍及生产生活的各个方面的趋势下,该方法有着广阔的应用前景。同时此方法为今后多手写汉字识别的研究提供了很好的借鉴。

注:本文通讯作者为潘立武。

参考文献

[1] 吴鸣锐,张钹.一种用于大规模模式识别问题的神经网络算法[J].软件学报,2001,12(6):851?855.

[2] 张辉.大规模联机手写汉字识别数据库整理、统计与实验分析[D].广州:华南理工大学,2012.

[3] 徐姗姗,刘应安,徐,等.基于卷积神经网络的木材缺陷识别[J].山东大学学报:工学版,2013,43(2):23?28.

[4] 吕刚.基于卷积神经网络的多字体字符识别[J].浙江师范大学学报:自然科学版,2011,34(4):425?428.

[5] PHAM D V. Online handwriting recognition using multi convolution neural networks [M]. Berlin Heidelberg: Springer, 2012: 310?319.

[6] LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient?based learning applied to document recognition [C]// Proceeding of IEEE. USA: IEEE, 1998: 2278?2324.

[7] SIMARD P Y, STEINKRAUS Dave, PLATT John. Best practices for convolutional neural networks applied to visual document analysis [C]// International Conference on Document Analysis and Recognition (ICDAR). Los Alamitos: IEEE Computer Society, 2003: 958?962.

篇2

关键词:手写数字识别;卷积神经网络;应用

手写体数字识别在邮政、金融等领域应用广泛。对于数字识别,人们往往要求识别器有很高的识别可靠性,数字识别的错误所带来的影响比文字识别等其他识别所带来的影响更大,特别是有关金融方面的数字识别错误所带来的后果是无法想象的,识别错一个数字,这其中的差距可能是几的差距,也可能是几十、几百的差距,这些都还是小问题;但更有可能这一个数字代表的差距是几万、几千万甚至几亿乃至更多,那么这个错误造成的损失就无法估量了。因此,O计出有着高可靠性与高识别率的数字识别系统已经成为了字符识别领域一个非常重要的环节。

1 网络模型和数据库及学习算法的选择

1.1 关于Mnist数据库的介绍

首先,Mnist是NIST数据库的一个优化子集。它是一个有着60000个训练样本集与10000个测试样本集的手写体数字数据库。此数字库一共有4个文件。

此数字库的所有样本集都有图像文件以及标签文件。标签文件的作用是用来储存样本集中的每个样本的数值标签,而每一个样本的图像数据信息则是由图像文件存储着。此数据库的图像数据均保存在二进制文件之中,且每个样本图像的大小均为28*28。

1.2 数字识别的模型选择

手写体数字虽然只有0~9十个数字,但由于写法因人而异,不同地域同样一个数字有多种不同的写法,每个人都有自己的书写习惯。且一些纸质差异、笔画粗细、光线问题、位置、尺度大小等等多种因素都能对输入产生影响。考虑到这些因素,为让网络有良好的识别能力,我们这里采用在图像识别领域有着优秀表现的卷积神经网络作为此数字识别系统的训练模型。

1.3 学习算法的选择

一个优秀的网络模型必须具备良好的学习算法,每个学习网络都有着相对来说较为合适自己的学习算法,而并不是说越高端的算法就越好。在此文中,我选择的学习算法是较为成熟的BP算法。此算法在文字前面有些许介绍,此处不再多做说明。

2 基于卷积神经网络的数字识别系统的设计

2.1 输入层以及输出层设定

根据样本的特征与此网络的网络结构,可以大概判断出输入层与输出层该如何设置。隐含层的个数可以是一个,也可以是多个,这与要分类的问题有关。

前文提及到在mnist数据库中,所有的图像都是28*28大小的,且以整个图片的像素形式存储在数据文件之中。每张图像大小为28*28,故一个图片像素点个数为784个。这里,卷积神经网络的输入即为这784个像素点。

因为数字识别需要识别的是0~9这十个数字,即需要识别十种字符类别,所以将这个神经网络输出层的神经元节点数设置为10。

2.2 网络的中间层设置

卷积神经网络的中间层有两个部分,即卷积层(特征提取层)与下采样层(特征映射层),由第二章中图2-1所示,C1、C3为卷积层,S2、S4为降采样层。

1)激活函数选择

激活函数选择sigmoid函数。同样,在第二章有所提及。Sigmoid函数是严格递增函数,能较好的平衡线性与非线性之间的行为,比较贴近生物神经元的工作。相比于其他函数,sigmoid函数还存在着许多优势,比如光滑性、鲁棒性以及它的导数可以用它自身来表示。

sigmoid函数为:

(1)

其中,x为神经元净输入。

激活函数导数为:

(2)

2)卷积层设计

图像经过卷积核对特征图进行卷积,之后再经过sigmoid函数处理在卷积层得到特征映射图。特征映射图相比于原图像,其特征更为明显突出。

卷积运算其实就是一个加权求和的过程。离散卷积是本文所选取的方法,规定卷积核在水平和竖直两个方向每次都是移动一个像素,即卷积的步长为1。

3)下采样层的设计

根据图像局部相关性这一原理,为了降低网络的学习维度、减少需要处理的数据量且保留图像的有用信息,可以对卷积后的图像进行下采样。这里,我们采取的是取卷积层4个像素点平均值为下采样层的一个像素点的方法。这样可以降低网络规模。

2.3 网络总体结构CNN-0

根据LeNet-5结构,再结合上文中的对输入层、输出层、中间层的设计,完成了如图3-1所示的基本网络结构:

相比于LeNet-5,CNN-0做了一些修改,并非完全按照LeNet-5网络结构模型。Sigmoid函数是本网络中的激活函数,选择这个函数的好处在于可以让所有层得到的输出都在区间[-1,1]之内。网络训练的学习率固定值为1或者是衰减的学习速率。经过卷积后的一维向量与输出层没有沿用LeNet-5的径向基函数网络,而是采取全连接方式,省去了F6层。

3.3 卷积神经网络训练过程

在模式识别中,学习网络有无指导学习网络与有指导学习网络两个类别。无指导学习网络一般是用来进行聚类分析,本文采取的是有指导学习网络。

卷积神经网络其实就是从输入到输出的一种映射,它可以学量的映射关系,只需要用现有的模式对网络进行训练,网络就能具备映射能力。而不需要输入与输出之间的精确的关系。

训练算法与传统的BP算法相差无几(BP算法在第二章有做概述),主要可分为四个步骤,而这四个步骤可以归为向前传播阶段与向后传播阶段:相前传播:

1)随机的从样本集中获取一个样本(A, ),然后将A输入至网络中;

2)根据公式(3)计算出实际输出:

(3)

向后传播:

1)计算和理想输出之间的差;

2)根据极小化误差方法调整权值矩阵。

结语

在手写数字识别这一块,相对来说比较有难度的应该就是脱机自由手写字符识别了,不过本文所研究的并不是这一系统,本设计是一个基于卷积神经网络的手写数字识别系统,因卷积神经网络的局部感受野和降采样以及权值共享、隐性特征提取等优点,它在图像识别领域得到了非常广泛的应用。此程序是在Caffe这个框架上进行运行的,操作系统为Linux系统ubuntu14.04版本。Caffe是一个开源的深度学习框架,也可以说是一个编程框架或者模板框架,它提供一套编程机制。因此,本文所需要实际的卷积神经网络就可以根据这个框架来进行构建。

参考文献:

[1]张伟,王克俭,秦臻.基于神经网络的数字识别的研究[J].微电子学与计算,2006年第23卷第8期.

篇3

关键词:卷积神经网络;点击率预测;搜索广告

中图分类号:TP391.41 文献标识号:A 文章编号:2095-2163(2015)04-

Click-Through Rate Prediction for Search Advertising based on Convolution Neural Network

LI Siqin, LIN Lei, SUN Chengjie

(School of Computer Science and Technology, Harbin Institute of Technology, Harbin 150001, China)

Abstract: Click-Through Rate (CTR) prediction is the foundation of search advertising. Nowadays, lots of researches have been explored to predict CTR, and most of those researches either rely on liner model or employ method of recommendation system. However, the relations between different features in CTR predication have not been fully explored in previous works, and the relations between different features also cannot be fully embodied. In this paper, CTR prediction for search advertising based on convolution neural network is proposed, and process of convolution neural network simulating the process of human thought on feature learning is explained. Furthermore, the performance of different features have been analyzed in the task of predicting CTR. Experiments are conducted on the dataset of KDD Cup 2012 Track2 and the proposed method achieves 0.7925 in AUC, demonstrating the effectiveness of the proposed approach.

Keywords: Convolution Neural Network; Click-Through Rate Prediction; Search Advertising

0 引 言

随着Web搜索技术的成熟,搜索广告已经成为互联网行业的主要收入来源之一,其根据用户输入的查询词,在搜索的结果页面呈现出相应的广告信息。广告媒介的收益通过每次点击费用(CostPerClick,CPC)与广告点击率(Click-Through Rate,CTR)预测共同影响而得到,即CPC*CTR。由于用户点击广告的概率随着广告位的排放顺序呈递减趋势,因此对CTR进行准确高效的预测,并将CTR高的广告投放在搜索结果页面靠前的位置,不仅能增加广告媒介的收益,还能提高用户对搜索结果的满意程度。

广告点击率预测是广告算法中最核心的技术,近年来被学术界广泛关注。部分学者使用基于推荐方法的模型来解决CTR预测问题。霍晓骏等人[1]采用协同过滤算法,为页面找到与其相似的其他邻居页面,实现CTR的预测,以此作为基础进行广告推荐,但当相似页面的数量增加时,该方法的结果质量会严重下滑。Kanagal等人[2]提出了一种聚焦矩阵分解模型,针对用户对具体的产品的喜好以及相关产品的信息进行学习,解决因用户-产品交互活动少而造成的数据稀疏问题。在文献[2]的基础上,Shan等人[3]提出了一种立方矩阵分解模型,通过对用户、广告和网页三者之间关系的立方矩阵进行分解,利用拟合矩阵的值来预测CTR,虽然立方矩阵分解模型增加了一维交互关系,但所刻画的交互关系仍然十分局限,不能在CTR预测中充分挖掘广告所有特征之间的联系。

作为典型的预测问题,很多研究中通过将CTR预测问题看作分类或者回归问题来解决,其中最常见的是应用线性模型来预测CTR。Chapelle等人[4]使用动态贝叶斯网络,通过对用户产生的点击过程建立模型,考虑级联位置的信息模拟出特定位置与相近位置的相关性,以判断该位置上的广告是否满足用户搜索要求。Chakrabarti等人[5]利用点击反馈的相关性,通过在网页和广告词等特征上使用逻辑回归模型提高广告检索和预测的效果。Wu等人[6]基于融合的思想,将不同线性模型的实验效果相结合,来提高搜索广告CTR预测的结果。真实的场景中CTR的预测并非简单的线性问题,因此,一些学者开始使用非线性模型来解决CTR的预测。Dave等人[7]在搜索广告点击信息以及广告商账户信息上提取语义特征,使用基于投票思想的梯度提升决策树模型,提高了CTR预测的效果。Zhang等人[8]利用神经网络模型对影响搜索广告点击率的因素进行的探索,从特征因素方面提高CTR预测的结果,但是资源单一,数据交互的关系没有获得良好的利用。

本文对基于卷积神经网络(Convolution Neural Network,CNN)的CTR预测进行研究,通过卷积与亚采样操作的结合,能更好地学习出数据特征之间的关系,不仅解决了线性模型无法模拟真实广告数据场景的问题,也解决了浅层学习模型无法深入挖掘特征间相互关系的问题,并且较之于传统的神经网络,CNN能更好地理解特征之间的关系。在真实的数据集上的实验验证了本文的方法能够提高搜索广告中CTR预测的AUC值。

1卷积神经网络模型

1.1 卷积神经网络基本模型

卷积神经网络作为人工神经网络之一,目前已成为深度学习领域中研究的热点,权值共享以及局部窗口滑动的特点使之能更好地模拟出生物神经网络。卷积神经网络在结构上有两个重要的组成部分:卷积层和亚采样层。如图1所示。

图1 卷积层与亚采样层结构

Fig.1 Convolution layer and sub-sampling layer structure

在卷积层中,原始特征通过卷积核进行卷积得到输出的特征,使用不同的卷积核就可以得到一系列不同的输出特征。对卷积层的计算,有如下公式:

(1)

这里, 是sigmoid 函数, , ; 代表输入特征上选定的窗口,即在卷积过程中当前卷积核在计算时所对应在输入特征上的位置; 和 分别是第 层输入特征和第 层输出特征上相应的值; 是卷积核的权重值; 是特征的偏置,每一层对应一个。

卷积过程,一个卷积核通过滑动会重复作用在整个输入特征上,构建出新的特征。同一个卷积核进行卷积时,共享相同的参数,包括同样的权重和偏置,这也使要学习的卷积神经网络参数数量大大降低了。而当我们使用不同的卷积核进行卷积时,可以得到相应的不同的输出特征,这些输出特征组合到一起,构成卷积层的输出。

在亚采样层,前一个卷积层的输出将作为该层的输入特征,首先设定大小的窗口,然后通过滑动,用窗口区域中最大(或平均)的特征值来表示该窗口中的特征值,最后组合这些特征值得到降维后的特征。亚采样过程可表示如下:

(2)

这里,类似于卷积层, 和 分别是第 层输入特征和第 层输出特征上相应的值, 是特征的偏置; 表示取最大值 或者平均值 的函数。

典型的卷积神经网络通常由n(n>=1)个卷积层和亚采样层以及最末尾的m(m>=1)全连接层组合而成。一个亚采样层跟随在一个卷积层后出现,通过这若干卷积层和亚采样层后得到的特征,将经过全连接层与输出层相连。全连接层公式如下:

(3)

这里, 是sigmoid函数, 是计算第 层到第 层时的权重值。

1.2基于卷积神经网络的CTR预测模型

研究中使用卷积神经网络对搜索广告的CTR进行预测,网络结构如图2所示。

图2 卷积神经网络在搜索广告点击率预估中的应用

Fig.2 Convolution neural network in search ad click rate through prediction

实验中一共设置了两个卷积层、两个亚采样层以及一个全连接层。首先从历史日志中提取相应的特征构建出输入(Feature_Input),设置好卷积的窗口大小后根据公式(1)对输入特征进行卷积,每一次卷积是对窗口内所有值的组合,因此卷积过程相当于特征融合过程。对卷积后得到的特征,设置亚采样的窗口并根据公式(2)进行最大值-采样,选取出窗口中的最有表达能力的特征值(最大特征值)表示整个窗口的特征,因此亚采样过程相当于特征的萃取过程。整个卷积和亚采样过程的结合,模拟出了人对事物的理解和总结的过程。最后将特征经过一层全连接后连接到输出,得到最终的预测结果。

在一次特定的卷积(或亚采样)全过程中即训练的一次迭代过程中,权值并不会随着窗口的滑动而改变,即在计算中,所有窗口滑过的特征享受同样的权值。这也是CNN区别于其他神经网络的特点――权值共享。如此即使得CNN更方便训练,更能多角度地对特征进行学习。

2特征构建

本文所采用的实验数据集为KDD Cup 2012中Track 2提供的数据集。该数据由腾讯公司下的搜索品牌搜搜(SOSO)搜索引擎提供,因为涉及公司商业信息,数据经过哈希处理。实验数据集中,每条记录包含12个属性,各属性详解如表1所示。

研究按照实际含义将这12个属性构造了四大类特征:历史点击率特征、相似度特征、位置特征和高影响力特征。

2.1基于卷积神经网络的CTR预测模型

历史点击率特征是不同类别ID在历史数据中的点击率,虽然比较简单但十分有效,因为历史点击率在一定程度上代表了类别ID对某个广告感兴趣程度的高低,当一个ID对某个广告的历史点击率高时,意味着其对这个广告更感兴趣,后续点击的概率也更大。

历史点击率( )是点击数( )与展示数( )之比,在统计计算过程发现有很多情况下有些类别信息没有点击实例,因此研究采用了平滑方法解决零值问题,根据公式(4)来计算平均点击率。计算公式如下:

(4)

公式中的 和 是调节参数,根据公式(4)计算出AdID,AdvertiserID,QueryID,KeywordID,TitleID,DescriptiomID,UserID的历史点击率。

2.2相似度特征

相似度特征用来刻画属性两两之间的相似程度,用户搜索的内容与被投放的广告属性相似度高时,广告被点击的概率更大。例如当搜索内容Query与广告关键字属性Keyword相似度高时,意味着网页投放的广告与用户期望搜索的广告结果相似度高,更符合用户点击广告的动作。

通过对Query、Keyword、Title、Description的属性描述文件构造出相关的TF-IDF向量,Query为用户搜索内容,Keyword,Title,Description是广告的相关属性,数据集提供的属性信息都是经过哈希后的数字形式,但是属性之间的相对含义不变,然后计算相互之间的余弦相似度作为特征。

2.3位置特征

该特征描述的是指定广告在搜索结果页面中的位置信息。用户搜索时需求的多样化要求在对广告进行排序和投放时,在结果页面靠前的位置中尽可能地投放满足用户需求的广告,从而最大化用户的满意度、提高用户点击的兴趣[9]。因此,研究即用当前预测广告的相对位置Pos来刻画该广告在结果页面中排序靠前的程度,其定义如下:

(5)

这里, 指页面投放的广告总数, 指当前所预测广告的位置。

2.4位置特征

在预测模型中,ID属性信息通常采用one-hot形式的特征编码方式,在将不同的属性经过one-hot编码后的特征向量组合在一起,这样方式简单直观,却使得特征的维度巨大并且非常稀疏。然而在这庞大且稀疏的特征中,绝大部分维度上的特征值对整个模型的预测结果贡献非常小甚至为零,只有少数维度上的特征值对预测结果有较高的影响力。因此研究采用L1范数正则化的方式,在逻辑回归模型的代价函数中加入L1范数[10],使得模型学习得到的结果满足稀疏化,在学习参数中按大小顺序取出前N维权重较大的,将这N维权重对应位置上的特征值构建新的特征,称为高影响力特征,考虑到实验硬件,取N=180。

3 实验结果与结论分析

3.1数据准备

实验目标是通过给定的信息预测搜索网页的广告点击率,由于数据量过大并且正负样本不平衡,实验中从训练集随机采样10%作为本文实验中模型训练的训练集,既缩小了样本空间,同时随机采样也保持了原始数据的分布信息。实验中随机抽取部分样本作为验证集用于参数的调节。本文所用测试集为 KDD Cup 2012中track 2的全部测试数据,因此本文的结果与KDD Cup 2012中track 2比赛的结果具有可比性。数据的统计信息如表2所示。

这里, 、 分别表示结果中预测对的正样本数和负样本数, 、 分别表示结果中预测错的正样本数和负样本数。对于广告点击率预测问题,较大的AUC值代表了较好的性能。

3.2实验设置和结果分析

实验的操作系统为Ubuntu 12.04 LTS OS,卷积神经网络在4G RAM 的NVIDIA GeForce GT 610 GPU条件下运行。过程中选用了Dense Gaussian对卷积层、亚采样层的边和节点进行初始化,用常数初始化输出层,学习卷积神经网络各边权值时的优化函数使用梯度下降算法,其中学习率为0.01、动量项为0.9,训练步数为100,设置公式(4)中参数α=0.05,β=75。实验时使用逻辑回归模型(LR)、支持向量回归模型(SVR)和深度神经网络(DNN)作为对比方法,所有方法都使用相同的特征,其中DNN的层数以及每层的节点数与卷积神经网络相同。

具体地,首先探究了卷积神经网络中节点的设置,因为在CNN中后续层的节点数根据第一个卷积层和每层卷积(或亚采样)滑动窗口的大小计算得到,并以第一个卷积层节点的设置为实验变量,同时控制DNN中每层的节点数均与CNN相同,在验证集上的实验结果如图3所示。

从图3可以看出,随着节点的增加,AUC的值也在不断增长,在一定范围内,节点数越多,实验的结果越好。但随着节点数的增大,模型的训练时间也在延长,对设备的开销需求也在升高,综合上述因素,最终将第一层的节点数设为9 216。

CNN与各对比实验的实验结果如表3所示,可以看出CNN的效果最佳,此外在表中还列出了KDD Cup 2012 track 2比赛中第一名的结果。DNN的AUC值优于LR和SVR,验证了深度学习模型比浅层学习模型更适合解决CTR预估问题,同时CNN的结果高于DNN,说明CNN中卷积层的特征融合和亚采样层的特征萃取过程是有效的。本文中CNN目前的实验结果略低于KDD Cup 2012 track 2中第一名的结果,原因是比赛队伍使用了多模型融合并提取了庞大的(千万维)输入特征。

进一步地,实验探索了每一类特征对搜索广告点击率预测的贡献。在所有特征的情况下,去掉某一类特征来进行预测,实验结果如表4所示。实验结果表明,去掉任意一类特征都将使得实验效果有所下降。其中去掉历史点击率特征效果下降得最明显,说明用户是否点击广告,与其之前的点击行为非常相关。而去掉位置特征时,效果下降得最为不明显,因为在实验使用的数据集中,每个页面最多仅呈现三个广告,页面中的广告数少时,位置对用户点击的影响小。

4 结束语

对搜索广告点击率的有效预测不但能够更好的提高在线广告投放的性能,增加广告商的收益,还能增强用户的体验。研究使用卷积神经网络CNN对搜索广告点击率进行预测,对特征因素的分析之后,在真实数据的环境下对搜索广告点击率进行预测的实验本文的方法的效果相对于其他方法有明显的提高。本文的主要贡献有:(1)本文提出了基于卷积神经网络的搜索广告点击率预测的方法。(2)针对高维特征,提出了一种特征选择策略,可以在计算能力受限的情况下使用CNN模型来解决广告点击预测问题,并取得较好效果。在未来的工作中,一方面要继续研究更有效的特征来提高对点击率的预测效果,另一方面也将尝试对CNN模型的内部细节进行改进,使之更适合我们的预测场景。

参考文献:

[1] 霍晓骏,贺牛杨燕. 一种无位置偏见的广告协同推荐算法[J]. 计算机工程, 2014, 40(12): 39-44.

[2] BHARGAV K, AHMED A, PANDEY S, et al. Focused matrix factorization for audience selection in display advertising[C]// Data Engineering (ICDE), 2013 IEEE 29th International Conference on, Brisbane , Australia: IEEE, 2013:386-397.

[3] SHAN Lili, LEI Lin, DI Shao, et al. CTR Prediction for DSP with Improved Cube Factorization Model from Historical Bidding Log[M]// C K Loo, et al(Eds.): Neural Information Processing. Switzerland:Springer,2014,8836:17-24.

[4] OLIVIER C, ZHANG Ya. A dynamic bayesian network click model for web search ranking[C]//Proceedings of the 18th international conference on World wide web. Madrid: ACM,2009:1-10.

[5] DEEPAYAN C, AGARWAL D, JOSIFOVSKI V. Contextual advertising by combining relevance with click feedback[C]//Proceedings of the 17th international conference on World Wide Web. Beijing: ACM,2008:417-426.

[6] WU Kuanwei, FERNG C S, HO C H, et al., A two-stage ensemble of diverse models for advertisement ranking in KDD Cup 2012[J]. KDDCup, 2012.

[7] DAVE K S, VARMA V. Learning the click-through rate for rare/new ads from similar ads[C]// Proceedings of the 33rd international ACM SIGIR conference on Research and development in information retrieval, Geneva, Switzerland:ACM,2010.

[8] ZHANG Ying, JANSEN B J , SPINK A. Identification of factors predicting clickthrough in Web searching using neural network analysis[J]. Journal of the American Society for Information Science and Technology, 2009, 60(3): 557-570.

[9] 林古立.互联网信息检索中的多样化排序研究及应用[D].华南理工大学,2011.

篇4

关键词:无人机;STM32;道路检测;神经网络;模型训练

传统的道路巡检和保养主要由人工来完成,需要投入大量的人力物力来保证道路的相对安全,这种方式存在着低效率、高成本且难以保证道路的决定安全[1]。固定式交通检测设备大量设置在道路的主干路上,也存在着一些缺陷:(1)监控摄像头不能做到全覆盖且具有一定的探测盲区。(2)监控系统采用多屏幕方式,工作人员进行道路故障判断时受限。(3)不能灵活的通知有关部门对事故的快速应急处理。为了克服上述的缺点,本文设计了一种基于卷积神经网络的无人机道路巡检系统,对发生故障和需要保养的道路能快速响应,及时的通知有关部门,避免事故的发生。

1系统的总体设计

在无人机道路巡检系统中,我们主要考虑了以下几个要求[3]:(1)无人机系统能满足正常的工作;(2)无人机系统能适应各种天气和气候变化等;(3)无人机系统应充分考虑控制的安全性;(4)视频流的传输应避免较长的延时。无人机道路巡检系统主要由无人机系统设计、远程控制系统、PC端系统三大部分组成,系统的总体结构框图如图1所示。系统的具体工作原理为:无人机将道路环境检测的结果,将处理后的视频流通过远程传输的方式,发送到PC端进行实时监控道路状况。远程控制系统以STM32作为主控芯片,主要包括在无人机端和遥控端两个部分,遥控端将控制指令通过2.4G通信发送到无人机端,此时无人机的做出相应的位姿变化,完成遥控端对无人机位姿的控制。无人机系统的图像采集模块芯片为树莓派,完成图像的采集并采用TCP通信实现远程视频的传输,将获取的视频流传输到PC端。PC端上使用OpenCV对图像进行处理[4],利用深度学习模块对设计的神经网络进行数据训练,从而得到检测模型,最后在PC上接收处理过的数据并实时监测道路状况。上述工作原理可实现无人机道路巡检系统,下文将对其包括的三大模块进行说明介绍。

2无人机系统设计

本次使用的是RaspberryPi3(modelB+)作为无人机的主控制板[7],无人机的飞行控制算法和图像采集模块集成在树莓派中。远程控制系统通过2.4G无线通信模块连接,通过控制器实现对无人机飞行和图像采集的控制。无人机系统总体结构如图2所示。

3PC端系统设计

在PC端系统设计主要分为图像预处理、模型训练和视频监控三大部分,通过TCP通信协议进行通信,TCP通信是一种面向连接的通信,可完成客户端(树莓派)和服务端(PC)的信息传递[9]。下面主要对前两部分详细介绍。

3.1图像预处理

本系统对地面裂缝检测的图像预处理流程如图3所示具体工作原理为:(1)采用加权平均灰度化对获取的无人机影像进行灰度化处理;(2)对灰度化处理后的影像进行直方图均衡化,使得影像具有高对比度和多元的灰度色调变化,为后续的滤波降噪奠定基础;(3)对处理后的影像进行滤波降噪,消除孤立的噪声点,采用方法的是中值滤波降噪;(4)使用迭代二值化处理将影像的灰度值设置合适的阈值,使得图像更简单,目标更突出,然后对图像进行分割,计算迭代的阈值,判断迭代的阈值是否收敛到某一值或者达到限定的迭代次数,如果是的话,将完成二值化处理和滤波,否则将初始二值化阈值;(5)最终完成道路故障的识别与标记。

3.2模型检测

3.2.1卷积神经网络原理使用卷积神经网络进行模型训练,首先使用卷积层实现特征的提取,原理如图4所示。如图5所示,卷积操作是模仿神经元的机制。不同的输入在权重的影响下会有不同的输出,根据损失函数的计算来不断的更新权重,直到获得合理的权重参数。初始传递的信号为x,中间通过权重w,再经过偏置b后连接在末端,最后输出信号变成wx+b。fun(•)表示激活函数,最终f(z为输出的结果,如式(1)所示。3.2.2卷积神经网络训练流程通过相机采集到的缺陷和问题图像作为训练样本,这部分是检测道路安全的关键一步,(1)训练标记数据:首先使用图像预处理中标记好的道路故障提取出来,通过卷积神经网络对标记框内的目标数据进行训练;(2)提取特征数据:将道路故障的类型统计并归纳;(3)误差反馈学习:对测试样本进行误差反馈学习,并进行测试;(4)优化训练数据:根据实际应用场景增加图像的种类和数量,不断训练模型。3.2.3故障的基本分类道路故障主要路面缺陷(例如裂缝、残缺等)和路面增加(例如长时间静止的车辆和路人),各自训练集数量为1000张。如表1所示。3.2.4实验测试为实现故障的检测,测试数据集为100张,不同类型故障数据50张,均采集自新道路且与训练样本一致,实验结果如表2所示。由表2可知,检测路面增加(例如长时间静止的车辆和路人)的准确率高达96%,但是地面缺陷的准确率相比较而言略低,可能造成的原因是:①硬件原因导致采集的图像清晰度比较低;②地面缺陷太小,无人机难以识别;③训练的数据集较少,特征学习误差大;但是满足了设计需求,还需进一步改进。

4总结与展望

篇5

关键词:物联网;人脸识别;视频网络

1物联网及人脸识别视频网络技术的发展

1.1物联网视频网络技术的发展状况

最近几年,随着物联网技术、图像处理技术以及数据传输技术的快速发展,视频网络技术应运而生并取得了长足的发展。当前,视频网络系统作为一种模拟数字控制系统,其具有非常成熟和稳定的性能,已广泛应用于实际工程中。虽然数字系统发展迅速,但尚未完全形成相应的体系,因此,混合数字和模拟应用程序逐渐迁移到数字系统将成为未来发展的主要趋势之一。当前,国内外市场上主流的产品主要有两种,即模拟视频数字网络系统、数字视频网络系统。前者技术先进,性能稳定,被广泛应用于实际工程应用中,特别是大中型视频网络项目。后者作为一种新兴技术,是一种通过以计算机技术和视频压缩为核心的新型视频网络系统,其有效的避免了模拟系统所存在的一些弊端,但未来仍需要进行不断的改进和发展。外部集成、视频数字化、视频网络连接、系统集成是未来视频网络系统发展的重要研究方向。数字化是网络的前提,而网络是系统集成的基础。因此,视频网络领域的两个最大发展特征是:数字化和网络化。

1.2人脸识别视频网络的发展状况

人脸识别技术作为模式识别领域中的一项前沿课题,截止目前,已有三十多年的研究历史。人脸识别目前是模式识别和人工智能的研究热点,目前主要采用AdaBoost分类器进行人脸区域的检测,人脸识别研究的内容大致分为以下内容:(1)人脸检测:其指的是在不同场景下的人脸检测及其位置。人脸检测是通过在整个输入的图像中找到一个合适的人脸区域为目的,并将该图像分为人脸区域和非人脸区域两部分。在实际的某些理想情况下,由于可以人为手动控制拍摄环境,因此,可以轻松确定人脸的位置;但是在大多数情况下,由于场景更加复杂,因此,人脸的位置是未知的。因而在实际的人脸识别视频网络过程中,首先必须确定识别场景中是否有人脸的存在,如果存在人脸,再进一步确定图像中人脸的具体区域。(2)人脸识别:将系统检测到的人脸特征信息与系统数据库中存在的已知人脸信息进行充分识别与匹配,以此获取相关信息,该过程的本质是选择正确的人脸模型和匹配策略。在实际生活的应用当中,由于成人的面部模型处于不断变化当中,且容易受到时间、光线、相机角度等方面的差异,因而很难用一张图纸表达同一个人的面部图像,这使得提取特征变得困难,由于大量的原始灰度图像数据,神经元的数量通常很大并且训练时间很长。除此之外,完全依赖于神经网络的识别方法具有当前计算机系统固有的局限性,尽管神经网络具有很强的感应能力,但是随着样本数量的增加,其性能可能会大大降低。简而言之,由于年龄,表情,倾斜度和其他表征对象的因素的多样性,很难进行人脸识别,因此,识别该对象的效果仍远未达到现实。目前,普遍采用AdaBoost算法来对出现在视频中的人脸区域进行检测,以此达到实时获取人脸图像的目的,AdaBoost算法的原理是通过训练得到多个不同的弱分类器并将这些弱分类器通过叠加、级联得到强分类器,AdaBoost算法流程如图1所示。(3)表情分析:即对面部表情信息(幸福,悲伤,恐惧,惊奇等)进行分析和分类。当前,由于问题的复杂性,正在对面部表情的分析进行研究,它仍处于起步阶段。心理学表明,至少有六种与不同面部表情相关的情绪:幸福,悲伤,惊奇,恐惧,愤怒和恶心。即与没有表情的面部特征相比,这六个表情的面部特征具有相对独特的运动规则。(4)生理分类:分析已知面孔的生理特征,并获得相关信息,例如种族、年龄、性别和职业。显然,此过程需要大量知识,通常非常困难和复杂。

2物联网卷积神经网络人脸识别方法分析

卷积神经网络是专门设计用于识别二维形状的多层感知器。通常,可以使用梯度下降和反向传播算法来训练网络。从结构上讲,卷积神经网络包含三个概念:局部感受野、权重共享和下采样,使其在平移,缩放,倾斜或其他形式的变形中相当稳定。当前,卷积神经网络被广泛用于模式识别,图像处理和其他领域。卷积神经网络(CNN)用于提取目标人脸图像的特征。训练网络后,将先前测试的模型用作面部分类器,微调可以缩短网络模型的训练时间。卷积神经网络的基本体系结构是输入层,卷积层(conv),归约层(字符串),完全连接层和输出层(分类器)。通常有多个卷积层+速记层,此程序实现的CNN模型是LeNet5,并且有两个“卷积+下采样层”LeNetConvPoolLayer。完全连接的层等效于MLP(多层感知器)中的HiddenLayer。输出层是一个分类器,通常使用softmax回归(有些人称为直接逻辑回归,它实际上是多类逻辑回归)。LogisticRegression也直接提供了该软件。人脸图像在视频监控中实时发送到计算机,并且面部区域部分由AdaBoost算法确定。在预处理之后,将脸部图像注入到新训练的预训练模型中进行识别。该过程如图2所示。

3物联网人脸识别视频网络多目标算法优化

多目标优化问题的实质是协调并在各个子目标之间达成折衷,以便使不同的子目标功能尽可能地最佳。工程优化的大多数实际问题都是多用途优化问题,目标通常相互冲突。长期以来,多目标优化一直受到人们的广泛关注,现在已经开发出更多的方法来解决多目标优化问题。如果多标准优化没有最差的解决方案,那么通常会有无限多的解决方案,这并不是最差的解决方案。解决面部强调时,人们不能直接应用许多次等解决方案。作为最后的决定,我们只能选择质量不是最低,最能满足我们要求的解决方案。找到最终解决方案的方法主要有三种。因此,只有通过找到大量有缺陷的解决方案以形成有缺陷的解决方案的子集,然后根据我们的意图找到最终的解决方案。基于此,多目标算法是通过将多准则问题转变为一个关键问题,这种方法也可以视为辅助手段。这种方法的棘手部分是如何获取实际体重信息,至于面部特征,我们将建议一种基于权重的多功能优化算法,该算法可以更好地反映脸部的特征。我们将人脸的每个特征都视为多个目标,并且在提取面部特征时,面部特征会受到外界的强烈影响,例如位置,光照条件和强度的变化,并且所有部位和每个部位都会受到影响。因此,我们可以使用加权方法从每个受影响的分数中提取不同的权重。通过开展试验测试,结果表明,在有多目标优化的算法的作用下,比在没有多目标优化的算法作用下人脸识别效果有所提高,大约提高了5—10个百分点。

4结论

鉴于多准则优化算法在科学研究的各个领域中的广泛使用,本文提出了一种多准则优化算法来对复杂的多准则人脸图像上的各种面部特征进行特征提取的多准则优化,以达到提高人脸识别率的目标、提高整个人脸识别视频网络系统的性能。

参考文献

[1]江斌,桂冠.基于物联网的人脸识别视频网络的优化方法研究[C]//物联网与无线通信-2018年全国物联网技术与应用大会论文集.2018.

[2]余雷.基于物联网的远程视频监控优化方法研究[J].科技通报,2014(6).

[3]张勇.远程视频监控系统的传输技术的实现[D].电子科技大学,2011(9)

篇6

在AlphaGo赢得第一局的比赛时,就激起了人们热烈的讨论,因为很多从事人工智能研究的“技术派”也对电脑围棋程序战胜人类棋手没有足够的信心。但第一局的结果仍然让人震惊,因为在五个月前,AlphaGo的棋力水平也只是达到战胜职业二段棋手的程度,人们吃惊的是它的棋艺水平提高的速度。

与20年前深蓝在国际象棋人机大战中战胜世界冠军卡斯帕罗夫不同,AlphaGo并非仅仅依赖强悍的计算能力和庞大的棋谱数据库取胜,而是具有深度学习的能力,能在实战和练习中不断学习和积累经验,这已经非常类似于人类棋手的成长过程了,不过它成长的速度非常之快。

普通大众会认为,机器人获胜是因为它内部存储有极为丰富的棋谱,以及很多一流棋手的经验,再配合它强大的逻辑判断能力,是一群人对一个人的战斗,是机器计算对人脑计算的碾轧,结果是必然的。这样的归纳未免有些草率和简单,完全无视机器学习在程序中的作用。

机器学习(Machine Learning,ML)是一种让计算机在事先没有明确的程序的情况下做出正确反应的能力,是计算机模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身性能的一种方法,是人工智能的核心,也是使计算机具有智能的根本途径。但是它仍然主要是使用归纳、综合而不是演绎的方式来进行学习。

早在1959年,塞缪尔的下棋程序就具有了学习能力,能在不断对弈中改善自己的棋艺。这个程序已经涉及到了关于学习的令人头疼的哲学问题,此后就有各种各样的棋类程序诞生,演绎出一个又一个电脑程序战胜人类棋手的传说,不断刷新博弈难度的记录。

而围棋,因为棋盘的复杂性(大约10的172次方种状态,是计算机不可能穷尽的天文数字),则被看作是“人类智力的最后防线”,是仅存的人类能够击败电脑的完全信息博弈游戏。AlphaGo的获胜,宣告了机器学习的重大突破。

AlphaGo是一套为围棋优化的深度学习引擎,它使用了神经网络和蒙特卡罗算法,可以让机器充分学习,并能在不断自我对决中提升水平。

深度学习(Deep Learning)的概念在10年前就已提出,又叫深层神经网络(Deep Neural Networks),是机器学习研究中的一个新领域,通过建立模拟人脑进行分析学习的神经网络,模仿人脑机制来解释数据。深度学习提出了一种让计算机自动学习出模式特征的方法,有深度置信网络、卷积神经网络等不同的机器学习模型,但都需要大量的并行计算。非监督贪心逐层训练算法可以解决深层结构相关的优化难题,卷积神经网络可以利用空间相对关系减少参数数目以提高训练性能,这些特点正适合用于复杂的博弈程序。

但是,在具有不确定性的对决中,即使深度学习也发挥不了作用,无法帮助程序来确定对手的状态。

篇7

关键词:BP神经网络;Morlet小波;决策理论;Hilbert变换

中图分类号:TP18文献标识码:A文章编号:1009-3044(2009)32-9050-02

Wireless Signal Simulation Algorithm for Automatic Identification

ZHANG Meng

(Purchasing, China Railway Communication Co., Ltd., Beijing 100140, China)

Abstract: We have firstly discussed the modulation distinguishing method based on rational budgeting theory through the method of comparing Tine-Frequency analysis of the analysis signals formed by Hibert Transform . And on the basic of analyzing the fault of this method ,we put forward the distinguishing method based on NN. When NN is distinguishing signals, it mainly depends on the different positions of peak. Wavelet Transform here equals a mathematic microscope .it reflects the inexorable links between the signal categories and the positions of peak. Taking advantage Wavelet Transform and the simple three-layer BP NN, the more accurate Time-Frequency characteristics of signals to be distinguishing can be drawn.

Keywords: BP ANN; Morlet Wavelet; BudgetingTheory; Hibert Transform

在军事电子对抗等多方面的重要应用,通信信号调制的自动识别分类问题也相继发展起来。无线电信号调制实识别就是要判断截获信号的调制种类。为此,需要事先对其特征进行选定,并确定它们与相应调制种类相联系的取值范围,然后再对信号进行特征测量,并根据测量结果对信号的调制进行分类判决。

如果把无线电信号的调制识别与分类视为一种模式识别问题,那末,从模式识别理论来看,模式分类是模式识别的一个子系统。因此,在模式识别理论框架下,无线电信号的调制识别是一个总体概念。而调制分类则只是调制识别的一个分支[1]。

1 基于决策理论的模拟调制方式识别方法

此算法主要实现区分AM、FM、DSB、LSB、USB、VSB、AM-FM等七种调制样式,所分析的对象序列s(n)是由接收机中频输出并经过采样得到的,这样s(n)的采样频率和载频都已知,分别记做Fs和Fc。算法分两个步骤:

第一步,根据信号的包络特征将AM、USB、LSB与FM区分开,因为前三种信号的包络不为恒定值,而FM的包络理论上是恒定值(实际中接近恒定)。因而可以从中提取一个特征参数R。参数R反映了零中心归一化包络的功率谱特征,FM的零中心归一化包络接近零,因其参数R应远远小于前三种信号。实际中若R

第二步,根据信号频谱的对称性,将AM与USB与LSB区分开,因为AM的单边频谱关于载频是近似对称的,USB和LSB的单边频谱对于载频来说分别只有上边频和下边频。因而可以从中提取另一个特征参数 。理论上,由于AM的上下边频对称,所以AM的P接近零,而LSB和USB的P分别接近1和-1。实际中若|P|< 0.5,判为AM信号,若P>0.5,判为LSB,P

第三步,零中心非弱信号段瞬时相位非线性分量绝对值的标准偏差:σap 。

σap由下式定义:

(1)

式中,at是判断弱信号段的一个幅度判决门限电平,c是在全部取样数据Ns中属于非弱信号值的个数,?准NL(i)是经零中心化处理后瞬时相位的非线性分量,在载波完全同步时,有:?准NL(i)= φ(i)-φ0

式中:,φ(i)为瞬时相位。用σap来区分是DSB信号还是AM-FM信号。

第四步,零中心非弱信号段瞬时相位非线性分量的标准偏差:σdp。

σdp由下式定义:

(2)

σdp主要用来区别不含直接相位信息的AM、VSB信号类和含直接相位信息的DSB、LSB、USB、AM-FM信号类,其判决门限设为t(σdp) 。

2 决策论方法的改进

前面介绍的基于决策理论的模拟调制方式识别方法存在缺陷针对上述问题,人们又提出了基于神经网络(NN)的识别方法。

2.1 BP网络作为分类器的模拟调制方式识别方法

该算法用基于有监督训练的神经网络模型BP网络作为分类器,用BP模型多层感知网络与反向传播学习算法相结合,通过不断比较网络的实际输出与指定期望输出间的差异来不断的调整权值,直到全局(或局部)输出差异极小值,不难想象该神经网络对模型细节中的诸多问题均有良好效果。

基于NN的模拟信号调制识别框图[2]如图1所示,该NN采用三层结构即,1个输入层,1个输出层,1个中间层。中间层可采用多层。但由于受到计算复杂性的限制,目前采用单层或双层中间层的NN比较多见。本图中间层采用单层25个节点,输入层和输出层的节点数取决于信号特征参数的个数和信号的分类数,因而分别为4和7。

神经网络具有信息分布式存储、大规模自适应并行处理和高度容错特性,适用于模式识别的基础。其学习能力和容错特性对不确定性模式识别具有独到之处[3]。通信信号在传播过程中受到信道噪声的污染,接受到的信号是时变的、非稳定的,而小波变换特别适用于非稳定信号的分析,其作为一种信息提取的工具已得到较广泛的应用。小波变换具有时频局部性和变焦特性,而神经网络具有自学习、自适应、鲁棒性、容错性和推广能力,两者优势的结合可以得到良好的信号模式自动识别特性,从而形成各种处理方法。

2.2 基于小波的特征提取和识别方法

小波特别适用于非稳定信号的分析,作为一种特征提取的工具已得到较为广泛的应用。小波的重要特点是它能够提供一个信号局部化的频域信息。小波变换能够将各种交织在一起的不同频率组成的混合信号分解成不同频率的块信号,它对不同的时间和频率有不同的解释,因此,对调制信号进行小波分解,得到不同水平下的细节信息,这些信息对于不同类别的调制信号来说是有差别的[4]。

在实际应用中,小波变换常用的定义有下列两种:

(3)

(4)

式中,星号*表示共轭。式(3)表示小波变换是输入信号想x(t)和小波函数φα, τ(t)的相关积分;式(4)用卷积代替了相关积分。两种定义在本质上是一致的。本为采用后者。

将式(4)中的τ和t离散化,即令τ=kTs,及t=iTs,得连续小波变换公式(4)的离散形式,又称小波系数:

(5)

Morlet小波是一种单频复正弦调制高斯波,也是最常用的复值小波。其实、频两域都具有很好的局部性,它的时域形式如下:

(6)

虽然信号特征有很多种,神经网络在进行信号识别时,主要是依据谱峰位置的不同,因此提取信号特征主要任务就是寻找信号类别与谱峰位置间的必然联系。而小波变换在这里则相当于一个数学显微镜,通过它,可以详细了解各类信号在不同低频段上的频谱构成。

整个系统在PC机上进行仿真,采用Windows2000操作系统和Matlab6.1和Cool Edit2.0进行声音录制。

在仿真中,采用44K的采样率,录制了一段歌声和一段笑声,用Matlab生成22K的正弦载波,并根据第二章的各调制样式的定义,生成了各个仿真的调制波形。并转化成.wav文件录在电脑中。

3 结束语

本文仅限于理论理论研究,用MatLab仿真实现,没有用DSP芯片等物理电路实现,仅为实际实现提供理论指导。

参考文献:

[1] 罗利春.无线电侦察信号分析与处理[M].北京:国防工业出版社,2003.

[2] 杨小牛,楼才义,徐建良.软件无线电原理与应用[M].北京:电子工业出版社,2001.

篇8

关键词:安全带检测;深度学习;支持向量机;智能交通;特征提取

中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2016)11-0240-03

Abstract:Seat belt detection in intelligent transportation systems is an important research area. A seat belt detection algorithm for complex road backgrounds based on deep learning is proposed. It first extracts features from labeled vehicle, windshield, and seat belt regions, and those features are used to train the detection models by deep learning. Then, it detects the locations of the vehicle, windshield, and seat belt regions, and uses the relative positions among these vehicle components and their detection scores to train a support vector machine classification model. Finally, it performs a fine mapping and identification process using this classification model on the seat belt region. This method performs well when applied to a database of images collected by road surveillance cameras.

Key words: Seat belt detection; deep learning; support vector machine; intelligent transportation; feature extraction

针对驾驶员未系安全带的这种危险驾驶行为,以及为了响应公安部门的需求,目前出现了很多种安全带检测方法。现有的安全带检测方法大多是基于边缘检测[1-2]和Hough变换[3]的方法进行安全带检测。Guo等人[4]提出了安全带检测系统,包括安全带检测和驾驶员区域定位两个模块。该算法利用线性滤波器在HSV颜色空间[5]通过水平方向和垂直方向投影来确定车牌的位置,然后利用边缘检测算子(Sobel[6],Canny[7]等)通过边缘检测得到车窗的上下边缘,再通过几何关系确定驾驶员区域的位置。该方法容易受到车身颜色影响,稳定性较差。

为了解决安全带检测过程中的光照、车型、驾驶员着装等因素对检测结果的影响,本文提出了一种基于卷积神经网络(CNN[8])的安全带检测系统。当采集到图片后,首先粗定位车辆区域,并根据检测算法得到车窗区域粗定位模块,找到图像上若干个车窗候选区域,最后通过安全带检测模型及支持向量机(SVM)分类器[9]处理得到安全带检测结果。

1 基于深度学习的安全带检测

1.1 CNN特征提取算法

深度学习[11-12]是通过大量的简单神经元组成,根据非线性关系将底层特征抽象表示为高层特征。卷积神经网络[13]是一个多层的神经网络,每层由多个二维平面组成,而每个平面包括多个独立神经元。网络中由一些简单元和复杂元组成,分别记为S-元和C-元。

1.2 检测模型的构建

如图1所示,我们构建了由三个CNNs组成的多尺度的特征提取模型。每个CNN模型共有八层,其中有五个卷积层和三个全连接层。对于每一张图片,都会自动的提取三个嵌套的越来越小的矩形窗口的特征,分别为车辆区域、车窗区域以及安全带区域。这三个由CNNs提取的特征送到两个全连接层,第二个全连接层的输出被送到输出层,最后用线性支持向量机分类器对所有子块进行分类。

2 实验结果

2.1 车辆及车窗检测

本实验训练集包括戴安全带和未戴安全带各2000张的车辆图像,测试集包括戴安全带和未戴安全带各100张的图像。本文共完成车辆检测、车窗检测和安全带检测三个实验。其中,对于车辆和车窗检测部分,使用检测率(CIR)和漏检率(MIR)来作为系统的评价指标,计算方式如下式所示:

对于车辆检测实验,选取6000车辆图片用于训练模型。然后选取2000张车辆图片作为测试图片,并随机分成10份。检测结果示例如图2(a)。平均检测率为93.3%,平均漏检率为6.7%。同时,对比了基于Adaboost算法[10]的车辆检测模型,检测结果示例如图2(b),平均检测率为90.6%,平均漏检率为9.4%。

由此可以看出,本文算法在相同的数据库上比Adaboost算法表现更好,具有更低的漏检率和误检率。并且车辆检测结果更适合用于后面的车窗检测实验。

车窗检测实验的示例如图3所示。选取6000张车窗正面车窗图片用于训练模型,选取2000张图片作为测试集,并随机分成10份。平均检测率为93.6%,平均漏检率为9.4%。

2.2 安全带检测

对于安全带检测部分,使用检测率(CIR)、虚警率(WIR)和漏检率(MIR)作为安全带检测系统的评价指标,计算方式如下式所示:

选取戴安全带和未戴安全带图片各2000张图片用于训练模型。选取2000安全带区域图片作为测试图片,并随机分成10份,每份包含戴安全带图片和未戴安全带图片各100张。通过基于深度学习的安全带检测算法,检测结果示例如图4所示,平均检测率为92.1%,平均虚警率为6.4%,平均漏检率为2.5%。

3 结论

安全带检测是智能交通系统中的一个重要研究课题。本文提出了一个高效的进行安全带检测的系统,对于检测部分,我们采用深度神经网络的特征提取方法,该特征更加适用于训练检测模型。同时,我们结合SVM的后处理,提高了安全带检测系统的鲁棒性,并且很大程度上减低了虚警率和漏检率。

参考文献:

[1] Ha D M, Lee J M, Kim, Y D. Neural-edge-based vehicle detection and traffic parameter extraction [J]. Image and vision computing, 2004, 22(11): 899-907.

[2] Song G Y, Lee K Y, Lee J W. Vehicle detection by edge-based candidate generation and appearance-based classification [C]//Intelligent Vehicles Symposium, IEEE, 2008: 428-433.

[3] Ballard D H. Generalizing the Hough transform to detect arbitrary shapes [J]. Pattern recognition, 1981, 13(2): 111-122.

[4] Guo H, Lin H, Zhang S. Image-based seat belt detection [C]//2011 IEEE International Conference on Vehicular Electronics and Safety (ICVES). IEEE, 2011: 161-164.

[5] 王运琼, 游志胜. 基于色差均值的快速车窗定位算法[J]. 计算机应用与软件, 2004, 21(1): 78-79.

[6] 张建军, 罗静. 基于改进Sobel算子的表面裂纹边缘检测算法[J]. 合肥工业大学学报(自然科学版), 2011年06期.

[7] Ali M, Clausi D. Using the Canny edge detector for feature extraction and enhancement of remote sensing images [C]//IEEE 2001 International Geoscience and Remote Sensing Symposium. 2001:2298-2300.

[8] Li Guanbin, Yu Yizhou. Visual Saliency Based on Multiscale Deep Features [C]//2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE, 2015: 5455-5463.

[9] 骆玉荣. 安全带识别系统的研究与实现[D]. 北京:北京工业大学, 2008.

[10] 吴法. 图像处理与机器学习在未系安全带驾车检测中的应用[D]. 杭州:浙江大学, 2013.

[11] A. Krizhevsky, I. Sutskever, G. E. Hinton. Imagenet classification with deep convolutional neural networks [C]//Advances in neural information processing systems, 2012:1097-1105.

篇9

Abstract: Classifier selection is the key factor for data classification. K-mean classifier, ISODATA classifier and SOFM neural network classifier are compared in computational complexity and classification performance. The experiments show that three kinds of classifiers cost equal time on the same image, but the self organizing feature map neural network classifier is optimal in classification performance.

关键词: K-均值分类器;ISODATA分类器;SOFM神经网络分类器

Key words: K-mean classifier;ISODATA classifier;SOFM neural network classifier

中图分类号:TP7 文献标识码:A 文章编号:1006-4311(2013)04-0182-02

0 引言

K-均值分类器、迭代自组织数据分类器和自组织特征映射神经网络分类器在遥感图像分类方面应用广泛。王晓军等人将非监督K-均值分类用在合成孔径雷达SAR图像各极化通道上进行参数估计[1]。包健等人将K-均值算法用于高光谱遥感影像的非监督分类中,具有较强的实用性[2]。贾明明等人选取对气候变化敏感的澳大利亚作为研究区。利用了ISODATA分类结果、NDVI阈值及其时间序列主成分分析特征量对研究区土地利用/覆被进行分类[3]。李正金等人进行了基于TM卫星遥感技术和小麦估产模型的冬小麦产量监测研究,采用优化的ISODATA分类方法,结合人机交互式判读解译作物信息[4]。夏浩铭等提取地物在空间上的联系,利用神经网络分类,获得较好的地物分类精度[5]。文章阐述了三种分类器的工作原理,分析了三种分类器的计算复杂度和分类效果。

1 K-均值分类器

基本K-均值思想很简单。首先,选择k个初始聚类中心,其中k是目标分类数目。每个样本按照距离函数计算与所有聚类中心的距离,样本加入到与之距离最短的聚类中心所在分组。新样本加入后,更新该分组的聚类中心。重复训练和更新,直到每类的聚类中心不发生变化为止。当分类数目已知时,利用K-均值分类方法能够方便地计算出样本聚类中心。但是在实际应用中,分类数目可能无法估算,这在一定程度上限制了这种方法的应用。

K-均值算法特点是每次调整样本后,修改一次聚合中心和准则值,当考察完n个样本后,一次迭代运算完成,新的聚合中心和准则值也计算出来。在迭代过程中,准则值逐渐减小,直到它的最小值为止。如果在一次迭代前后,准则值没有变化,说明算法已经收敛。

2 ISODATA分类器

ISODATA算法通过对样本迭代来确定聚类的中心。每一次迭代时,首先是在不改变类别数目的情况下改变分类。然后将样本平均矢量之差小于某一阈值的类别合并起来,根据样本协方差矩阵来决定其分裂与否。主要环节是聚类、集群分裂和集群合并等处理。

ISODATA分类算法最优迭代次数很难设定,一般遥感图像的数据量大,若迭代误差取值较小,分类也很难实现。沈照庆等人[6]以某次迭代中“合并”和“分裂”都为零为求最优分类数的迭代条件,而不是预先设定迭代次数;取最大和最小隶属度取代每一个隶属度为比对特征值,提高了分类速度和精度;利用等效转换研究隶属度矩阵的迭代误差变化规律,得出变化速度趋于稳定时为求解最优隶属度矩阵的智能迭代控制,减少人为事先干预。

3 SOFM神经网络分类器

神经网络由被称作神经元的相互连接处理单元组成。自组织特征映射(Self-Organizing Feature Map,简称SOFM)网络模拟大脑的神经系统自组织特征映射的功能,在学习过程中不需要指导,进行自组织学习。SOFM网络可用于图像压缩、语言识别、机器学习和优化问题等。

训练SOFM网络时首先初始化连接权重为小的随机数,训练开始后,输入向量送入网络。每输入一个样本矢量,各神经元的加权和中必然有一个最大值,经过侧反馈作用,在最大值点周围连接权重自适应调节。SOFM网络已经证明,网络通过反复学习输入模式,可使连接加权矢量空间分布密度与输入模式的概率分布趋于一致,也就是连接权矢量空间分布能反应输入模式的统计特征。训练好的网络在竞争层产生了一个或几个最大输出,它们在竞争层中的位置反映了输入向量在自身空间的特征。

4 实验结果分析

实验选取2003年青岛市一景SPOT5图像作为数据源,截取城乡结合部某地作为实验区域,实验区域在红波波段显示为图1(a)。对于实验区的遥感图像分别采用上述分类器进行地物分类实验。

用ENVI 4.3的分类功能根据K-均值算法分类。参数设置为:分类数量15(一般为最终输出分类数的2-3倍),最大迭代次数为40(默认是15),其它参数取默认值。K-均值关注的是不同波段的灰度信息,系统自动分类时,得到的分类数目为八类,结果如图1(b)所示。从分类结果上可以看出,K-均值分类算法对水体的分类效果较好,水体用红色表示,不但能分出主河道而且显示出在耕地中有一条灌溉沟渠。绿地在分类图中用绿色表示,图上中部的绿地分类正确,但在河道附近,部分耕地错分为绿地了。耕地被分为蓝色、黄色和暗绿色三类。反射系数高的南北方向道路和屋顶较亮的厂房被归为一类,东西走向的道路两边毛刺现象严重。建筑物错分率也较高。

在ENVI 4.3环境下,利用ISODATA算法分类。参数设置为:类别数范围[5-15](一般最小数量不能小于最终分类数,最大数量为最终分类数量的2-3倍),最大迭代次数为40(默认是15),其它参数取默认值,结果见图1(c)。从分类结果上看,ISODATA分类算法对灰度值一致性好的水体分类效果较好,水体用红色表示。能区分出主河道而且显示出在耕地中有一条灌溉沟渠,但将图像下方,靠近南北走向的道路的一间面积较大的厂房错分为水体。绿地在分类图中用绿色表示,图上中部的绿地分类正确较好,但在河道附近,相当一部分耕地错分为绿地了。耕地分类效果表较好,但有部分错分为绿地。东西走向的道路线条比较连贯,两边有点毛刺现象,但不严重。的空地用粉红色表示,居民区是暗绿色,部分工厂厂房的屋顶错分为水体。

SOFM网络利用MATLAB中的神经网络工具箱实现。设定SOFM网络的输入矢量各维的数据范围是像素灰度在[1,32]之间,邻域像素卷积[25,800]之间,学习率为0.9,距离函数是欧氏距离函数,训练步长是5000。输入训练样本,每类500个,5类共2500个样本,距离为5类,每类表征一种地物类型。网络对类型的定义储存在训练网络中。利用训练好的网络对实验图像所有像元进行分类。分类结果用灰度图像表示,像素的颜色代表分类的类型,像素的位置对于测试图像同位置的地物,如图1(d)所示。白色表示道路,浅灰表示建筑物,灰色表示绿地,深灰表示耕地,黑色表示水体。从分类结果图上看,纵横贯穿郊区的主干道和楼区内的道路基本能够正确分类。由于反射系数与道路相近,工厂厂房的屋顶也被错分为道路。建筑物、耕地和绿地总体上分类正确。水体的分类结果令人满意,主水道和灌溉的沟渠都能清楚地分出。分类器处理样本图像的时间接近,都是20分钟左右。

5 总结

K-均值分类中耕地被分三类,道路两边毛刺现象严重,建筑物错分率也较高,分类效果最差。SOFM网络对道路、水体、耕地和绿地总体上分类正确,分类正确率最高。ISODATA分类对水体、耕地、道路分类基本正确,建筑物错分较多。

参考文献:

[1]王晓军,王鹤磊,李连华,孟藏珍,马宁.基于C均值分类的极化SAR图像白化斑点滤波方法[J].系统工程与电子技术,

2008,30(12):2389-2392.

[2]包健,厉小润.K均值算法实现遥感图像的非监督分类.机电工程,2008,25(3):77-80.

[3]贾明明,刘殿伟,宋开山,王宗明,姜广甲,杜嘉,曾丽红.基于MODIS时序数据的澳大利亚土地利用/覆被分类与验证.遥感

技术与应用,2010,25(3):379-386.

[4]李正金,李卫国,申双.基于ISODATA法的冬小麦产量分级监测预报.遥感应用,2009,8:30-32.

篇10

随着时代的发展,构建在互联网生态模式之上的云计算、大数据、人工智能等新技术,正渗透到每一个行业,引发产业生产、服务模式的变革,并且已经取得一系列重要成果。在此背景下,大学教学如何跟上时代步伐,是值得每一个高校教师深入思考的问题。程序设计作为计算机专业大学生的必修课程和必须掌握的基本技能,其教学改革在新时代下尤显必要。

传统的大学教学中,一直都以C/C++或Java作为教学语言。诚然,C/C++和Java是当今使用人数最多的语言,但在“互联网+”时代,面对大数据分析时,特别是面对数据采集、仿真建模、结果验证与数据可视化时,他们就不再是最佳选择。

Python作为一种解释型超高级语言,具备交互式、可移植、面向对象的特点。它功能强大,适用于多种操作系统,有完善丰富的工具包,正在得到越来越多的应用,而且越来越被重视。2017年4月,北京理工大学计算机学院和高等教育出版社联合承办了“第一届高等学校Python语言及计算生态教学研讨会”,提出了计算生态的概念[1],大力推动了Python教学。在此背景下,根据我们在Python教学和科研中的应用经验,对如何进行基于Python计算生态的教学改革进行探讨。

1 Python语言的兴起与优势

从20世纪中期到今天,短短的70年间,电子计算机经历了飞速的发展,出现了许多不同的程序设计语言,例如Pascal、Fortran、C、C++、Java、PHP、C#等,这些不同的语言,都体现了不同的设计哲学,也反映了不同的时代特点。

然而,每种程序设计语言都有其局限性。Python的设计者Guido von Rossum希望有一种语言,既具有C方便地调用计算机功能接口的能力,又可以像一些脚本语言一样轻松地编程。Python正是在这种背景下被创造出来。

同C/C++和Java等语言相比,Python有以下优势:

(1)简单易学。Python是一种代表简单主义思想的语言,语法简单,学习起来容易上手。这使学生能够专注于解决问题而不是学习语言本身。

(2)解释性。Python写的程序不需要编译成二进制代码,可以直接从源代码运行程序。这使得Python更加简单,更易于移植。

(3)面向对象。Python既支持面向过程的编程,也支持面向对象的编程。

(4)可扩展性。为了提升运行效率,可以采用C/C++来编写关键代码,然后在Python程序中使用它们。

(5)混合编程。Python被称为胶水语言,是由于可以很容易地将Python与其他语言进行混合编程。这样方便地利用已有的各种工具包,提高开发效率。

(6)丰富的库。Python有强大的标准库,并且Python的生态系统开始拓展到第三方包,例如用于Web框架的web.py ,用于科学计算的numpy,以及用于数据可视化的matplotlib等。

Python作为一种跨平台编程语言,已经被移植在以Linux、Windows、Mac、Android为代表的许多平台上。由于Python的开放性,有丰富的来自开源社区的成熟库支持,从而可以基于Python完成各种工作,例如数据采集(如网络爬虫)、图像处理、机器学习、科学计算等。

2 针对Python的应用支持与国内外课程建设情况

正由于Python具有上述优点,它获得了业界的广泛支持。例如在Google公司,Python是继C++和Java之后,使用率排名第三的编程语言,使用Python的开发团队也是Google的第三大研发部门。

(1)Tensorflow:TensorFlow是由Google Brain小组开发的用于机器学习和深度神经网络的工具。据统计,Tensorflow是目前使用人数最多的开源深度学习框架[2]。TensorFlow本身是使用C++实现的,然后用Python封装。Tensorflow可以根据用户给出的所有指令创建一个计算图,该图被内部优化和编译成可执行的C++代码。这样Tensorflow就可以利用Python 带来的开发速度和C++带来的执行速度。

(2)Google App Engine:Google App Engine(GAE),是谷歌推出的云平台,它完全把CPU、内存等硬件基础设施抽象化,这样只需要关注代码的编写,不需要关注硬件、操作系统或者物理位置。Python是GAE最早支持编程的语言之一,任何使用Python编写的程序,都可以配合Google Python API,很方便地在GAE上创建、部署、运行Python程序。

(3)Caffe(Convolutional Architecture for Fast Feature Embedding):Caffe是由Berkeley AI Research(BAIR)和Berkeley Vision and Learning Center (BVLC)社?^贡献者开发的另一个深度学习框架。同Tensorflow一样,Caffe也是采用C++进行编写,然后提供Python封装,从而既可以利用C++的高执行效率,也可享受Python的高开发效率。

(4)在好莱坞,工业光魔公司(Industrial Light) 采用Python制作商业动画,在“阿贝斯(Abyss)”“星球之旅(Star Trek)”“Indiana Jones”等超级大片中惊艳登场。

(5)ERP和CRM软件的开发也开始基于Python完成;Red Hat曾用Python和Tk一起成功开发配置和管理操作系统的可视界面,整个系统可以全面控制Linux操作系统,并根据用户选择对配置文件作自动更新。

正由于Python是受到业界的欢迎,国外很多高校(如麻省理工学院、斯坦福大学、加州大学洛杉矶分校等)已经用Python作为程序设计语言的教学对象。在Coursera等在线教育平台上,可以发现有来自密歇根大学、莱斯大学、约翰霍普金斯大学等众多高校的Python课程;国内南京大学张莉老师的课程也在其中。然而国内这方面的工作做得还远远不够。截至2015年,我国开设Python语言教学的高校不超过10所[3]。目前在国内大力推动Python教学改革的主要有北京理工大学嵩天老师等人,已编著并出版相应的大学教材[4],受到广泛欢迎。哈尔滨工业大学车万翔老师等人分析了C语言作为入门语言的不足和Python作为入门语言的优势,阐述了计算机专业高级语言程序设计课程的改革方案和实施效果[5]。南京大学张莉老师发表了《基于MOOC的“用Python玩转数据”翻转课堂实践与研究》,研究证明:采用Python教学可以较好地提高学生的主动学习能力、学习兴趣和热情以及问题求解能力[6]。

3 基于Python的教学科研应用改革案例

3.1 输入输出

输入输出(I/O)是每个程序都必须具备的重要功能。常见的I/O可以分为3类:标准I/O(终端打印等)、文件I/O和网络I/O。以?K端I/O为例:

/* Basic I/O in C */

#include

int main()

{

char name[20]; /* char数组,保存第一行输入,作为名字输出 */

scanf("%s", name); /*读取第一行输入 */

printf("Hello %s\n", name);

return 0;

}

以上用C语言编写的有效代码共计8行,输入输出都采用标准库函数。由于C语言本身设计方面的缺陷(如果第一行输入超出char数组大小),可能导致严重的缓冲区溢出问题。针对这一问题,C++对数组越界进行了保护,从而提高系统安全性。

如果采用Java实现,则有效代码共10行。由于Java的面向对象编程思想,下面这个示例程序中多了很多对象构造的流程,引用的库看起来也相对较多,如下所示。我们只需要对这段代码进行稍微修改,就可以实现网络I/O和文件I/O。例如,替换“System.in”,就能够实现对文件或者网络流读取。将“Reader”和“InputStream”替换,就能够实现写入。

/ * Basic I/O in Java */

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class HelloWorld {

public static void main(String[] args) throws Exception { /*所有Java程序的入口函数 */

/* 新建输入对象,用来读取标准输入。其中对象构造有嵌套*/

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

String name = reader.readLine(); /* 读取第一行输入 */

System.out.printf("Hello %s\n", name);

}

}

相比之下,基于Python的代码则非常短小简洁:

/* Basic I/O in Python */

import sys

name = sys.stdin.readline() /* 读取第一行输入 */

print("Hello " + name)

有效代码仅仅只有3行!同样,替换其中的“sys.stdin”可以实现对文件读取。对于动态类型的Python来说,所有的变量都不需要繁复的声明,直接用就可以,再加上解释执行的特点,无需定义入口函数即可运行。

以上是对C/C++、Java、Python在基本终端I/O操作上的比较,当推广到文件I/O和网络I/O后,Python的优势会更突出,详见表1。

3.2 数据操作

数据处理是大数据时代我们面临的首要问题。然而,由于信息化系统建设过程中,数据可能以不同的结构存在,可能是纯文本文件、CSV格式,也可能是Excel格式,或者是各种不同厂商的数据库格式。

当然,可以采用C++或Java来读取各种异构数据源,但过程相当繁琐,需要利用各种底层驱动,甚至是一些商业化组件。以Excel文件读取为例,为了处理Excel数据,C/C++代码需要用到libxl商业库,而Java也需要用到Apache POI开源库。而利用Python对Excel文件进行读取则需要利用Pandas开源数据处理分析库,示例代码如下:

/* Read Excel in Python */

import pandas

df = pandas.read_excel('sample.xls')

print df.columns /* 输出列名 */

values = df['列名'].values /* 获取某一列的所有数据 */

FORMAT = ['列名1', '列名2', '列名3'] /* 获取指定列组成的数据帧 */

df_selected = df[FORMAT]

总的来说,在数据库操作方面,C++、Java和Python的支持都非常好。C++和Java都为SQL提供了标准的连接、驱动管理类,不同的数据库只需要加载不同的驱动就可以。Java对数据库有比较好的语言级别支持,相应的驱动也比较丰富。Python也提供语言级别的支持,同时第三方库十分丰富,甚至一种数据库有多个不同的连接库。另外值得一提的是, 尽管当前很多流行的分布式大数据平台及分布式数据库使用Java编写,但利用Python同样能够方便地基于第三方库实现操作Hbase、Hive以及其他非关系数据库,如Mongodb、Redis等,这种特点是C/C++不能比拟的。表2为Python与C++、Java在数据库操作上的比较。

由于Python对各种文件和数据库的支持都非常好,它十分适合编写数据库之间,数据库与文件之间相互导入导出数据的脚本,是大数据处理的首选语言。

3.3 数据可视化

丰富的可视化数据图形能够更好地对数据进行展示。利用数据可视化,可方便分析人员从宏观上了解数据的形态和分布,或者进行最后的结果展示。

Python提供了丰富的数据可视化工具,如pandas、Seaborn、Bokeh、matplotlib等。下面以matplotlib为例说明如何利用Python完成数据绘图与可视化。

假定我们要展现的数据用CSV格式保存,内容见表3。目标是基于matplotlib进行直观的数据总体分布展示,例如利用直方图统计年龄分布、利用箱体图展示薪资水平、利用散点图绘制年龄与收入的相关关系。完整代码如下:

import matplotlib.pyplot as plt

import pandas as pd

df = pd.read_csv("example.csv") /* ?x取数据 */

fig = plt.figure()

ax1 = fig.add_subplot(1,4,1) /* 定义展示布局 */

ax1.hist(df["Age"], bins = 5) /* 定义直方图 */

plt.axis([20,45,0,5])

plt.title("Age distribution")

plt.xlabel("Age")

plt.ylabel("Employee")

plt.show()

ax2 = fig.add_subplot(1,4,2) /* 确定图在画布中的位置 */

ax2.boxplot(df["Age"]) /* 定义箱线图 */

ax3 = fig.add_subplot(1,4,3)

ax3.bar(df["Age"],df["Income"]) /* 定义条形图 */

ax3.set_title("Income distribution")

ax3.set_xlabel("Age")

ax3.set_ylabel("Income")

ax4 = fig.add_subplot(1,4,4)

ax4.scatter(df["Age"],df["Income"]) /* 定义散点图 */

ax4.set_title("Income distribution")

ax4.set_xlabel("Age")

ax4.set_ylabel("Income")

plt.show()

得到的可视化效果如图1所示。

Python的开放性还表现为利用支持库,实现如图1所示的各类统计效果和复杂的展示(如地图、热力图以及复杂网络等)。此外,除了构建在Python之上的原生库,还有大量其他的数据可视化工具包(如基于Javascript的Plot.ly、百度的Echart等),这些工具包同时也提供Python的调用封装,丰富了基于Python的可视化效果,体现了强大的Python计算生态。

3.4 图像处理与深度神经网络

深度学习的出现点燃了研究者对神经网络和机器学习的研究热情,特别是基于Google Tensorflow的AlphaGo接连击败世界围棋冠军,更加吸引了人们对深度学习的关注。在深度学习领域,很多优秀的开源平台与框架(如Tensorflow、Caffe、Theano、MXNet等)都提供Python接口。这也从侧面反映出Python计算生态已经建立。下面以Tensorflow提供的Python接口为例,介绍Python在图像处理与深度神经网络方面的应用。

卷积神经网络是深度学习的一个重要模型。Tensorflow已经屏蔽了关于卷积神经网络的具体结构,如神经元函数、拓扑连接状态等。程序员只需要通过参数指定,就能完成网络模型的设计,例如

conv1 = tf.layers.conv2d(inputs=input_layer,filters=32,kernel_size=[5, 5], padding="same",activation=tf.nn.relu)

pool1 = tf.layers.max_pooling2d(inputs=conv1, pool_size=[2, 2], strides=2)

通过设置输入层ID、激活函数、padding方法、核大小等参数,就可以唯一确定输入层、卷积层、池化层,再通过调整参数并选择一定的学习算法,结合pillow、scikit-image等基于Python的图像处理工具包,从而可以利用深度网络自动完成特征学习,完成模式识别或图像分类工作。