机器学习与深度学习的发展及应用
2017-12-19南京市第十三中学周子扬
南京市第十三中学 周子扬
机器学习与深度学习的发展及应用
南京市第十三中学 周子扬
本文综述了机器学习常见算法的应用,以及深度学习中常见网络模型的基本原理及深度学习在计算机视觉、语言识别、信息检索、自然语言处理等四个方面的应用。在本文的相关工作中,阐述了近七十年来机器学习的发展状况以及深度学习的产生与发展。
机器学习;深度学习;神经网络;应用
一、背景
机器学习,是指借助算法来分析数据规律、并利用规律来预测结果的算法,它分为监督学习、无监督学习和强化学习。深度学习是机器学习中神经网络算法的扩展,它是机器学习的第二个阶段--深层学习(第一阶段为浅层学习),其中深度是指神经网络的层数。因为机器学习中的单层感知机只适用于线性可分问题,而无法处理线性不可分问题。但深度学习中的多层感知机可以实现,它针对浅层学习的劣势—维度灾难(特征的维度过高,或者无法有效表达特征),能够通过它的层次结构、低层次特征中提取高层次特征,弥补浅层学习的不足。
由于机器学习的发展,机器学习自动学习数据隐含高等级特征的能力,会随着模型的改进以及训练数据的扩充而逐步提升,这导致深度学习也随之发展。
二、机器学习常见算法应用
1.分类
(1)决策树算法(Decision Tree, DT)
DT算法可用于文章分类工作,将关键句子分为不同类别;也可以用于人脸识别,对人的面部特征分类,例如鼻梁高低,获取特征数据后,与数据库内数据匹配,进而识别。
(2)人工神经网络(Artificial Neural Network, ANN)
网易公司为了过滤互联网上的广告、谣言、暴恐等不健康内容,利用ANN研发了反垃圾系统,过滤不良信息。
(3)支持向量机(Support Vector Machine, SVM)
SVM可以快速处理大量的数据,用于生物学分类问题,例如人类等高等真核生物基因剪接位点识别问题;也可以通过构造一系列超平面,将大规模的图片进行分类。
(4)朴素贝叶斯(Naïve Bayes, NB)
NB对大量的数据的分类效率稳定,常用于医院给病人分类的系统,也用于新闻网站的新闻分类。
2.预测类
(1)k-近邻(KNN)
KNN算法常用于手写数字识别领域,准确率非常高。处理数据时,先将训练数据用矩阵储存,之后再转化为向量。然后将测试数据输入模型,输出所写数字。
(2)逻辑回归(Logistic Regression, LR)
银行在进行信用评估时常使用LR算法,例如在客户填写信息表,银行从表和第三方信息源处获得客户的信用信息,并将此数据作为输入,信用值作为输出,经过LR计算确认该客户的信用等级。医学方面也时常用到LR,根据病人的危险因素,预测病人的发病概率。
(3)GBDT
GBDT算法可用于广告点击率的预估方面。和传统的LR相比,GBDT拥有多种优势,其具有多种区分性特征。而且由GBDT得到的结果中的特征和特征组合都具有区分性,效果可以和人工预测相媲美。
三、深度学习常见网络
神经网络是深度学习中的一种算法,它也是深度学习的载体。它包含输入层、神经元和输出层,最早的单层神经网络又叫感知机,在结构上它由输入层、隐藏层和输出层组成,连接各层之间的是权值。
假设输入为x,输出为y’,真实值为y,则损失函数E为:
训练时它的权值W为随机值:
通过梯度来更新,公式其中表示学习率,用于修正权值的变化幅度。
但单层神经网络有局限,它不可以处理非线性可分的问题,而且如果增加层数,则计算量会迅速增大。后来两层神经网络被提出用于解决非线性可分问题,为减少计算量,有人提出BP算法。其中BP算法是一种由后向前计算梯度、更新权值的机制,它基于高等数学中的链式法则。
深度神经网络(DNN)是指具有两层以上的神经网络,它可以通过增加层数或者增加每层的单元数,来存储更多的参数,从而构建更精密的模型。
它的训练是基于贪心算法的逐层训练,也就是训练好上一层之后再增加下一个层,把上一层的输入作为下一层的输出。通过梯度下降方法来更新权值。
1.循环神经网络(RNN )
但DNN会随着层数的增加而记忆退化,也就是出现梯度消失或梯度爆炸等问题,为更好的记忆参数,有人提出循环神经网络的概念。
图1 RNN展开图及LSTM结构对比
如图2所示,隐层中的神经元基于时间传递,即上一时刻的隐层中的参数输出,作为下一时刻隐层中的输入。RNN的训练主要基于BPTT算法,它的局限在于,长期依赖问题。当它处理那些需要前后联系的信息的问题时,效果会变得差。比如,机器翻译里的长句翻译,若是基于RNN构建模型来训练,翻译效果极差。
为了解决该问题,有人提出长短期记忆(LSTM)。将RNN中的隐藏层中的神经元替换为更复杂的神经元结构——增加了一些门结构,如输入门、输出门、遗忘门。
RNN的内部结构,它只包含了一个tanh的简单处理逻辑,LSTM为解决长期记忆问题,将tanh替换,其中的遗忘层,用于决定遗忘的信息,它读取上一时刻中的参数xt-1、ht-1,输出经过sigmoid激活函数。输出值为0表示全部忘记,1表示全部记住。输入门决定存储的信息,输出门表示传递给下一时刻的信息。
2.卷积神经网络(CNN)
CNN是一个多层神经网络,它解决了深层神经网络中模型复杂、参数过多问题。它由输入层、特征提取层、特征映射层等组成。
CNN通过三种机制——局部感受野、权值共享、时间/空间亚采样,来保证信息的稳定性——尺度、位移、形状不变。
特征提取层是一个卷积层,它通过卷积运算来强化特征信息,同时降低噪音。特征映射层是个下采样层 ,它通过对此图像进行子抽样,来减少信息量从而降低噪音。
卷积神经网络通过感受野和权值共享来减少参数的个数,从而降低训练模型的训练成本。普通的神经网络是通过全局来感受外界图像,而卷积神经网络是通过局部感受野来感受外界图像,第一层的神经元综合起来传递给高层,然后高层得到全局信息。通过这种方式可以减少权值参数。
3.受限波尔兹曼机(RBM )
RBM由可视层和隐藏层两部分组成,它是基于能量模型和波尔兹曼网络。能量模型是一种基于状态来定义状态的能量的模型,而波尔兹曼网络是一种随机网络,它的输入层可以计算隐层节点的值得概率,输出层也可以。下图为受限制波尔兹曼机的结构。
隐藏层和可视层通过权值连接,而同层之间没有连接。所有的隐藏层和可视层都满足波尔兹曼分布,所以可以通过输入可视层来得到隐藏层,然后由隐藏层得到可视层,根据偏差来调整参数直得到的可视层与原来的可视层一致为止,这时候的隐藏层便可以作为可视层变换后的特征。
增加隐藏层的数量便得到深度波尔兹曼机,把靠近可视层的部分改为有向图模型,远离可视层的部分仍为受限制波尔兹曼机时,便可得到深度信念网络(DBN)。DBN是一种生成模型,它由多个RBM组成,训练时通过逐层传递的方式来计算权值参数,这样便于学习权值。
四、深度学习的应用
1.计算机视觉
传统的机器视觉方法,主要取决于自定义的特征,然而这些特征不能抓取高等级的边界信息。为了弥补小规模样本的不足--不能有效表达复杂特征,计算机视觉开始转向深度学习,比如2012年A.Krizhevsky对Image Net LSVRC 2010数据集(有1000个种类的120万个图像),用DNN来分类。在top1 和 top5 上的错误率依次是 37.5% 和17.0%,超过了传统方法。除此之外,深度学习在人脸识别中也取得很好的识别效果,比如2014年Sun Yi用深度隐藏身份特征(deep hidden identity feature)来表示面部特征,在LFW上测试准确度达到97.45%。
2.语音识别
语音识别已经发展了几十年,传统的方法是统计学方法,主要基于隐马尔可夫-高斯混合模型(HMM-GMM)。传统方法的特征无法涵盖语音数据的原有结构特征,因而对数据相关性的容忍度低,而DNN替换GMM后可以弥补此不足。比如2012年微软的语音视频检索系统,通过深度学习方法将单词错误率(word error rate)从27.4%降到18.5%。DNN相比于HMM-GMM有10%左右的提升,CNN相比DNN,对数据间的相关性适应能力更强。
3.信息检索
传统信息检索采用TF-IDF系统,但该系统针对大词汇量的问题处理效率低下,而且语义相似性也没有考虑到。深度学习从2009年开始应用于信息检索,DNN可以很好地表示文档的词计数特征,通过深度自编码器将语义相似的文档存放在相近的地址,从而提高检索效率。比如2014年,Shen Yelong提出的卷积深度语义模型,可以将上下文中相同语义的单词通过卷积结构,投影到上下文特征空间向量,把准确率从43.1%提高到44.7%。
4.自然语言处理
传统的自然语言处理多是分离式处理问题,比如语言模型、语义相关词,没有整体处理。传统系统有一些不足,比如浅层结构、分类线性可分,需要人工特征预处理等。2008年R.Collobert在自然语言处理领域开始应用DNN,错误率达到14.3%。
五、结语
机器学习是人工智能里的一个重要方向,随着机器学习中神经网络算法的深入研究,深度学习的网络算法也日益完善,机器学习与深度学习的应用也不断推广。本文先综述了机器学习常见算法的应用,然后由神经网络引入深度学习,介绍了深度学习中常见网络的原理以及应用。
由于作者见解和时间局限,关于机器学习和深度学习的研究有待完善,因而接下来会注重更多深度学习算法的研究。
[1]张建明,詹智财,成科扬,詹永照.深度学习的研究与发展[J/OL].江苏大学学报(自然科学版),2015,36(02):191-200(2015-01-22)[2017-08-21].http://kns.cnki.net/kcms/detail/32.1668.n.20150122.1716.013.html.
[2]毛勇华,桂小林,李前,贺兴时.深度学习应用技术研究[J/OL].计算机应用研究,2016,33(11):3201-3205(2016-06-15)[2017-08-21].http://kns.cnki.net/kcms/detail/51.1196.tp.20160615.1021.018.html.
[3]胡侯立,魏维,胡蒙娜.深度学习算法的原理及应用[J].信息技术,2015(02):175-177[2017-08-21].DOI:10.13274/j.cnki.hdzj.2015.02.045.
[4]乔林,张雄伟,史海宁,贾冲.第4讲 深度学习应用中的常见模型[J].军事通信技术,2016,37(01):98-104[2017-08-21].DOI:10.16464/j.cnki.cn32-1289.2016.01.020.