卷积神经网络在字符识别方面的应用.docx
- 文档编号:28477108
- 上传时间:2023-07-14
- 格式:DOCX
- 页数:33
- 大小:1.32MB
卷积神经网络在字符识别方面的应用.docx
《卷积神经网络在字符识别方面的应用.docx》由会员分享,可在线阅读,更多相关《卷积神经网络在字符识别方面的应用.docx(33页珍藏版)》请在冰豆网上搜索。
卷积神经网络在字符识别方面的应用
一、概述
二、背景
三、人脑视觉机理
四、关于特征
4.1、特征表示的粒度
4.2、初级(浅层)特征表示
4.3、结构性特征表示
4.4、需要有多少个特征?
五、DeepLearning的基本思想
六、浅层学习(ShallowLearning)和深度学习(DeepLearning)
七、Deeplearning与NeuralNetwork
八、Deeplearning训练过程
8.1、传统神经网络的训练方法
8.2、deeplearning训练过程
九、DeepLearning的常用模型或者方法
9.1、AutoEncoder自动编码器
9.2、SparseCoding稀疏编码
9.3、RestrictedBoltzmannMachine(RBM)限制波尔兹曼机
9.4、DeepBeliefNetworks深信度网络
9.5、ConvolutionalNeuralNetworks卷积神经网络
十、总结与展望
十一、参考文献和DeepLearning学习资源
一、概述
ArtificialIntelligence,也就是人工智能,就像长生不老和星际漫游一样,是人类最美好的梦想之一。
虽然计算机技术已经取得了长足的进步,但是到目前为止,还没有一台电脑能产生“自我”的意识。
是的,在人类和大量现成数据的帮助下,电脑可以表现的十分强大,但是离开了这两者,它甚至都不能分辨一个喵星人和一个汪星人。
图灵(图灵,大家都知道吧。
计算机和人工智能的鼻祖,分别对应于其著名的“图灵机”和“图灵测试”)在1950年的论文里,提出图灵试验的设想,即,隔墙对话,你将不知道与你谈话的,是人还是电脑。
这无疑给计算机,尤其是人工智能,预设了一个很高的期望值。
但是半个世纪过去了,人工智能的进展,远远没有达到图灵试验的标准。
这不仅让多年翘首以待的人们,心灰意冷,认为人工智能是忽悠,相关领域是“伪科学”。
但是自2006年以来,机器学习领域,取得了突破性的进展。
图灵试验,至少不是那么可望而不可及了。
至于技术手段,不仅仅依赖于云计算对大数据的并行处理能力,而且依赖于算法。
这个算法就是,DeepLearning。
借助于DeepLearning算法,人类终于找到了如何处理“抽象概念”这个亘古难题的方法。
2012年6月,《纽约时报》披露了GoogleBrain项目,吸引了公众的广泛关注。
这个项目是由著名的斯坦福大学的机器学习教授AndrewNg和在大规模计算机系统方面的世界顶尖专家JeffDean共同主导,用16000个CPUCore的并行计算平台训练一种称为“深度神经网络”(DNN,DeepNeuralNetworks)的机器学习模型(内部共有10亿个节点。
这一网络自然是不能跟人类的神经网络相提并论的。
要知道,人脑中可是有150多亿个神经元,互相连接的节点也就是突触数更是如银河沙数。
曾经有人估算过,如果将一个人的大脑中所有神经细胞的轴突和树突依次连接起来,并拉成一根直线,可从地球连到月亮,再从月亮返回地球),在语音识别和图像识别等领域获得了巨大的成功。
项目负责人之一Andrew称:
“我们没有像通常做的那样自己框定边界,而是直接把海量数据投放到算法中,让数据自己说话,系统会自动从数据中学习。
”另外一名负责人Jeff则说:
“我们在训练的时候从来不会告诉机器说:
‘这是一只猫。
’系统其实是自己发明或者领悟了“猫”的概念。
”
2012年11月,微软在中国天津的一次活动上公开演示了一个全自动的同声传译系统,讲演者用英文演讲,后台的计算机一气呵成自动完成语音识别、英中机器翻译和中文语音合成,效果非常流畅。
据报道,后面支撑的关键技术也是DNN,或者深度学习(DL,DeepLearning)。
2013年1月,在XX年会上,创始人兼CEO李彦宏高调宣布要成立XX研究院,其中第一个成立的就是“深度学习研究所”(IDL,InstitueofDeepLearning)。
为什么拥有大数据的互联网公司争相投入大量资源研发深度学习技术。
听起来感觉deeplearning很牛那样。
那什么是deeplearning?
为什么有deeplearning?
它是怎么来的?
又能干什么呢?
目前存在哪些困难呢?
这些问题的简答都需要慢慢来。
咱们先来了解下机器学习(人工智能的核心)的背景。
二、背景
机器学习(MachineLearning)是一门专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能的学科。
机器能否像人类一样能具有学习能力呢?
1959年美国的塞缪尔(Samuel)设计了一个下棋程序,这个程序具有学习能力,它可以在不断的对弈中改善自己的棋艺。
4年后,这个程序战胜了设计者本人。
又过了3年,这个程序战胜了美国一个保持8年之久的常胜不败的冠军。
这个程序向人们展示了机器学习的能力,提出了许多令人深思的社会问题与哲学问题(呵呵,人工智能正常的轨道没有很大的发展,这些什么哲学伦理啊倒发展的挺快。
什么未来机器越来越像人,人越来越像机器啊。
什么机器会反人类啊,ATM是开第一枪的啊等等。
人类的思维无穷啊)。
机器学习虽然发展了几十年,但还是存在很多没有良好解决的问题:
例如图像识别、语音识别、自然语言理解、天气预测、基因表达、内容推荐等等。
目前我们通过机器学习去解决这些问题的思路都是这样的(以视觉感知为例子):
从开始的通过传感器(例如CMOS)来获得数据。
然后经过预处理、特征提取、特征选择,再到推理、预测或者识别。
最后一个部分,也就是机器学习的部分,绝大部分的工作是在这方面做的,也存在很多的paper和研究。
而中间的三部分,概括起来就是特征表达。
良好的特征表达,对最终算法的准确性起了非常关键的作用,而且系统主要的计算和测试工作都耗在这一大部分。
但,这块实际中一般都是人工完成的。
靠人工提取特征。
截止现在,也出现了不少NB的特征(好的特征应具有不变性(大小、尺度和旋转等)和可区分性):
例如Sift的出现,是局部图像特征描述子研究领域一项里程碑式的工作。
由于SIFT对尺度、旋转以及一定视角和光照变化等图像变化都具有不变性,并且SIFT具有很强的可区分性,的确让很多问题的解决变为可能。
但它也不是万能的。
然而,手工地选取特征是一件非常费力、启发式(需要专业知识)的方法,能不能选取好很大程度上靠经验和运气,而且它的调节需要大量的时间。
既然手工选取特征不太好,那么能不能自动地学习一些特征呢?
答案是能!
DeepLearning就是用来干这个事情的,看它的一个别名UnsupervisedFeatureLearning,就可以顾名思义了,Unsupervised的意思就是不要人参与特征的选取过程。
那它是怎么学习的呢?
怎么知道哪些特征好哪些不好呢?
我们说机器学习是一门专门研究计算机怎样模拟或实现人类的学习行为的学科。
好,那我们人的视觉系统是怎么工作的呢?
为什么在茫茫人海,芸芸众生,滚滚红尘中我们都可以找到另一个她(因为,你存在我深深的脑海里,我的梦里我的心里我的歌声里……)。
人脑那么NB,我们能不能参考人脑,模拟人脑呢?
(好像和人脑扯上点关系的特征啊,算法啊,都不错,但不知道是不是人为强加的,为了使自己的作品变得神圣和高雅。
)
近几十年以来,认知神经科学、生物学等等学科的发展,让我们对自己这个神秘的而又神奇的大脑不再那么的陌生。
也给人工智能的发展推波助澜。
三、人脑视觉机理
1981年的诺贝尔医学奖,颁发给了DavidHubel(出生于加拿大的美国神经生物学家)和TorstenWiesel,以及RogerSperry。
前两位的主要贡献,是“发现了视觉系统的信息处理”:
可视皮层是分级的:
我们看看他们做了什么。
1958年,DavidHubel和TorstenWiesel在JohnHopkinsUniversity,研究瞳孔区域与大脑皮层神经元的对应关系。
他们在猫的后脑头骨上,开了一个3毫米的小洞,向洞里插入电极,测量神经元的活跃程度。
然后,他们在小猫的眼前,展现各种形状、各种亮度的物体。
并且,在展现每一件物体时,还改变物体放置的位置和角度。
他们期望通过这个办法,让小猫瞳孔感受不同类型、不同强弱的刺激。
之所以做这个试验,目的是去证明一个猜测。
位于后脑皮层的不同视觉神经元,与瞳孔所受刺激之间,存在某种对应关系。
一旦瞳孔受到某一种刺激,后脑皮层的某一部分神经元就会活跃。
经历了很多天反复的枯燥的试验,同时牺牲了若干只可怜的小猫,DavidHubel和TorstenWiesel发现了一种被称为“方向选择性细胞(OrientationSelectiveCell)”的神经元细胞。
当瞳孔发现了眼前的物体的边缘,而且这个边缘指向某个方向时,这种神经元细胞就会活跃。
这个发现激发了人们对于神经系统的进一步思考。
神经-中枢-大脑的工作过程,或许是一个不断迭代、不断抽象的过程。
这里的关键词有两个,一个是抽象,一个是迭代。
从原始信号,做低级抽象,逐渐向高级抽象迭代。
人类的逻辑思维,经常使用高度抽象的概念。
例如,从原始信号摄入开始(瞳孔摄入像素Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。
这个生理学的发现,促成了计算机人工智能,在四十年后的突破性发展。
总的来说,人的视觉系统的信息处理是分级的。
从低级的V1区提取边缘特征,再到V2区的形状或者目标的部分等,再到更高层,整个目标、目标的行为等。
也就是说高层的特征是低层特征的组合,从低层到高层的特征表示越来越抽象,越来越能表现语义或者意图。
而抽象层面越高,存在的可能猜测就越少,就越利于分类。
例如,单词集合和句子的对应是多对一的,句子和语义的对应又是多对一的,语义和意图的对应还是多对一的,这是个层级体系。
敏感的人注意到关键词了:
分层。
而Deeplearning的deep是不是就表示我存在多少层,也就是多深呢?
没错。
那Deeplearning是如何借鉴这个过程的呢?
毕竟是归于计算机来处理,面对的一个问题就是怎么对这个过程建模?
因为我们要学习的是特征的表达,那么关于特征,或者说关于这个层级特征,我们需要了解地更深入点。
所以在说DeepLearning之前,我们有必要再啰嗦下特征(呵呵,实际上是看到那么好的对特征的解释,不放在这里有点可惜,所以就塞到这了)。
因为我们要学习的是特征的表达,那么关于特征,或者说关于这个层级特征,我们需要了解地更深入点。
所以在说DeepLearning之前,我们有必要再啰嗦下特征(呵呵,实际上是看到那么好的对特征的解释,不放在这里有点可惜,所以就塞到这了)。
四、关于特征
特征是机器学习系统的原材料,对最终模型的影响是毋庸置疑的。
如果数据被很好的表达成了特征,通常线性模型就能达到满意的精度。
那对于特征,我们需要考虑什么呢?
4.1、特征表示的粒度
学习算法在一个什么粒度上的特征表示,才有能发挥作用?
就一个图片来说,像素级的特征根本没有价值。
例如下面的摩托车,从像素级别,根本得不到任何信息,其无法进行摩托车和非摩托车的区分。
而如果特征是一个具有结构性(或者说有含义)的时候,比如是否具有车把手(handle),是否具有车轮(wheel),就很容易把摩托车和非摩托车区分,学习算法才能发挥作用。
4.2、初级(浅层)特征表示
既然像素级的特征表示方法没有作用,那怎样的表示才有用呢?
1995年前后,BrunoOlshausen和DavidField两位学者任职CornellUniversity,他们试图同时用生理学和计算机的手段,双管齐下,研究视觉问题。
他们收集了很多黑白风景照片,从这些照片中,提取出400个小碎片,每个照片碎片的尺寸均为16x16像素,不妨把这400个碎片标记为S[i],i=0,..399。
接下来,再从这些黑白风景照片中,随机提取另一个碎片,尺寸也是16x16像素,不妨把这个碎片标记为T。
他们提出的问题是,如何从这400个碎片中,选取一组碎片,S[k],通过叠加的办法,合成出一个新的碎片,而这个新的碎片,应当与随机选择的目标碎片T,尽可能相似,同时,S[k]的数量尽可能少。
用数学的语言来描述,就是:
Sum_k(a[k]*S[k])-->T, 其中a[k]是在叠加碎片S[k]时的权重系数。
为解决这个问题,BrunoOlshausen和DavidField发明了一个算法,稀疏编码(SparseCoding)。
稀疏编码是一个重复迭代的过程,每次迭代分两步:
1)选择一组S[k],然后调整a[k],使得Sum_k(a[k]*S[k])最接近T。
2)固定住a[k],在400个碎片中,选择其它更合适的碎片S’[k],替代原先的S[k],使得Sum_k(a[k]*S’[k])最接近T。
经过几次迭代后,最佳的S[k]组合,被遴选出来了。
令人惊奇的是,被选中的S[k],基本上都是照片上不同物体的边缘线,这些线段形状相似,区别在于方向。
BrunoOlshausen和DavidField的算法结果,与DavidHubel和TorstenWiesel的生理发现,不谋而合!
也就是说,复杂图形,往往由一些基本结构组成。
比如下图:
一个图可以通过用64种正交的edges(可以理解成正交的基本结构)来线性表示。
比如样例的x可以用1-64个edges中的三个按照0.8,0.3,0.5的权重调和而成。
而其他基本edge没有贡献,因此均为0。
另外,大牛们还发现,不仅图像存在这个规律,声音也存在。
他们从未标注的声音中发现了20种基本的声音结构,其余的声音可以由这20种基本结构合成。
4.3、结构性特征表示
小块的图形可以由基本edge构成,更结构化,更复杂的,具有概念性的图形如何表示呢?
这就需要更高层次的特征表示,比如V2,V4。
因此V1看像素级是像素级。
V2看V1是像素级,这个是层次递进的,高层表达由底层表达的组合而成。
专业点说就是基basis。
V1取提出的basis是边缘,然后V2层是V1层这些basis的组合,这时候V2区得到的又是高一层的basis。
即上一层的basis组合的结果,上上层又是上一层的组合basis……(所以有大牛说Deeplearning就是“搞基”,因为难听,所以美其名曰Deeplearning或者UnsupervisedFeatureLearning)
直观上说,就是找到makesense的小patch再将其进行combine,就得到了上一层的feature,递归地向上learningfeature。
在不同object上做training是,所得的edgebasis是非常相似的,但objectparts和models就会completelydifferent了(那咱们分辨car或者face是不是容易多了):
从文本来说,一个doc表示什么意思?
我们描述一件事情,用什么来表示比较合适?
用一个一个字嘛,我看不是,字就是像素级别了,起码应该是term,换句话说每个doc都由term构成,但这样表示概念的能力就够了嘛,可能也不够,需要再上一步,达到topic级,有了topic,再到doc就合理。
但每个层次的数量差距很大,比如doc表示的概念->topic(千-万量级)->term(10万量级)->word(百万量级)。
一个人在看一个doc的时候,眼睛看到的是word,由这些word在大脑里自动切词形成term,在按照概念组织的方式,先验的学习,得到topic,然后再进行高层次的learning。
4.4、需要有多少个特征?
我们知道需要层次的特征构建,由浅入深,但每一层该有多少个特征呢?
任何一种方法,特征越多,给出的参考信息就越多,准确性会得到提升。
但特征多意味着计算复杂,探索的空间大,可以用来训练的数据在每个特征上就会稀疏,都会带来各种问题,并不一定特征越多越好。
好了,到了这一步,终于可以聊到Deeplearning了。
上面我们聊到为什么会有Deeplearning(让机器自动学习良好的特征,而免去人工选取过程。
还有参考人的分层视觉处理系统),我们得到一个结论就是Deeplearning需要多层来获得更抽象的特征表达。
那么多少层才合适呢?
用什么架构来建模呢?
怎么进行非监督训练呢?
好了,到了这一步,终于可以聊到Deeplearning了。
上面我们聊到为什么会有Deeplearning(让机器自动学习良好的特征,而免去人工选取过程。
还有参考人的分层视觉处理系统),我们得到一个结论就是Deeplearning需要多层来获得更抽象的特征表达。
那么多少层才合适呢?
用什么架构来建模呢?
怎么进行非监督训练呢?
五、DeepLearning的基本思想
假设我们有一个系统S,它有n层(S1,…Sn),它的输入是I,输出是O,形象地表示为:
I=>S1=>S2=>…..=>Sn=>O,如果输出O等于输入I,即输入I经过这个系统变化之后没有任何的信息损失(呵呵,大牛说,这是不可能的。
信息论中有个“信息逐层丢失”的说法(信息处理不等式),设处理a信息得到b,再对b处理得到c,那么可以证明:
a和c的互信息不会超过a和b的互信息。
这表明信息处理不会增加信息,大部分处理会丢失信息。
当然了,如果丢掉的是没用的信息那多好啊),保持了不变,这意味着输入I经过每一层Si都没有任何的信息损失,即在任何一层Si,它都是原有信息(即输入I)的另外一种表示。
现在回到我们的主题DeepLearning,我们需要自动地学习特征,假设我们有一堆输入I(如一堆图像或者文本),假设我们设计了一个系统S(有n层),我们通过调整系统中参数,使得它的输出仍然是输入I,那么我们就可以自动地获取得到输入I的一系列层次特征,即S1,…,Sn。
对于深度学习来说,其思想就是对堆叠多个层,也就是说这一层的输出作为下一层的输入。
通过这种方式,就可以实现对输入信息进行分级表达了。
另外,前面是假设输出严格地等于输入,这个限制太严格,我们可以略微地放松这个限制,例如我们只要使得输入与输出的差别尽可能地小即可,这个放松会导致另外一类不同的DeepLearning方法。
上述就是DeepLearning的基本思想。
六、浅层学习(ShallowLearning)和深度学习(DeepLearning)
浅层学习是机器学习的第一次浪潮。
20世纪80年代末期,用于人工神经网络的反向传播算法(也叫BackPropagation算法或者BP算法)的发明,给机器学习带来了希望,掀起了基于统计模型的机器学习热潮。
这个热潮一直持续到今天。
人们发现,利用BP算法可以让一个人工神经网络模型从大量训练样本中学习统计规律,从而对未知事件做预测。
这种基于统计的机器学习方法比起过去基于人工规则的系统,在很多方面显出优越性。
这个时候的人工神经网络,虽也被称作多层感知机(Multi-layerPerceptron),但实际是种只含有一层隐层节点的浅层模型。
20世纪90年代,各种各样的浅层机器学习模型相继被提出,例如支撑向量机(SVM,SupportVectorMachines)、Boosting、最大熵方法(如LR,LogisticRegression)等。
这些模型的结构基本上可以看成带有一层隐层节点(如SVM、Boosting),或没有隐层节点(如LR)。
这些模型无论是在理论分析还是应用中都获得了巨大的成功。
相比之下,由于理论分析的难度大,训练方法又需要很多经验和技巧,这个时期浅层人工神经网络反而相对沉寂。
深度学习是机器学习的第二次浪潮。
2006年,加拿大多伦多大学教授、机器学习领域的泰斗GeoffreyHinton和他的学生RuslanSalakhutdinov在《科学》上发表了一篇文章,开启了深度学习在学术界和工业界的浪潮。
这篇文章有两个主要观点:
1)多隐层的人工神经网络具有优异的特征学习能力,学习得到的特征对数据有更本质的刻画,从而有利于可视化或分类;2)深度神经网络在训练上的难度,可以通过“逐层初始化”(layer-wisepre-training)来有效克服,在这篇文章中,逐层初始化是通过无监督学习实现的。
当前多数分类、回归等学习方法为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。
深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,表征输入数据分布式表示,并展现了强大的从少数样本集中学习数据集本质特征的能力。
(多层的好处是可以用较少的参数表示复杂的函数)
深度学习的实质,是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。
因此,“深度模型”是手段,“特征学习”是目的。
区别于传统的浅层学习,深度学习的不同在于:
1)强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点;2)明确突出了特征学习的重要性,也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更加容易。
与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据的丰富内在信息。
七、Deeplearning与NeuralNetwork
深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。
深度学习是无监督学习的一种。
深度学习的概念源于人工神经网络的研究。
含多隐层的多层感知器就是一种深度学习结构。
深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。
Deeplearning本身算是machinelearning的一个分支,简单可以理解为neuralnetwork的发展。
大约二三十年前,neuralnetwork曾经是ML领域特别火热的一个方向,但是后来确慢慢淡出了,原因包括以下几个方面:
1)比较容易过拟合,参数比较难tune,而且需要不少tric
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 卷积 神经网络 字符 识别 方面 应用
![提示](https://static.bdocx.com/images/bang_tan.gif)