当前位置:首页 >> 信息与通信 >> 现代机器学习 基于深度学习的图像特征提取

现代机器学习 基于深度学习的图像特征提取


现代机器学习理论大作业 (基于深度学习的图像特征提取)

基于深度学习的图像特征提取
摘要:大数据时代的来临,为深度学习理论的发展创造了良好的条件。本文介
绍了深度学习的发展背景, 主要讨论了深度学习中的自编码的方法,对自编码方 法实现仿真应用,期望在以后能应用到 SAR 图像上进行自动特征提取,最后阐 述该理论的目前遇到的困难。

关键词:深度学习 autoencoder convolution pooling 一 引言
机器学习是人工智能的一个分支,而在很多时候,几乎成为人工智能的代名 词。 简单来说, 机器学习就是通过算法, 使得机器能从大量历史数据中学习规律, 从而对新的样本做智能识别或对未来做预测。从1980年代末期以来,机器学习的 发展大致经历了两次浪潮:浅层学习( Shallow Learning )和深度学习( Deep Learning) 。 第一次浪潮:浅层学习 1980年代末期,用于人工神经网络的反向传播算法(也叫Back Propagation 算法或者BP算法)的发明,给机器学习带来了希望,掀起了基于统计模型的机 器学习热潮。这个热潮一直持续到今天。人们发现,利用 BP算法可以让一个人 工神经网络模型从大量训练样本中学习出统计规律,从而对未知事件做预测。这 种基于统计的机器学习方法比起过去基于人工规则的系统, 在很多方面显示出优 越 性 。 这 个 时 候 的 人 工 神 经 网 络 , 虽 然 也 被 称 作 多 层 感 知 机 ( Multi-layer Perceptron) ,但实际上是一种只含有一层隐层节点的浅层模型。 90年代, 各种各样的浅层机器学习模型相继被提出, 比如支撑向量机 (SVM, Support Vector Machines) 、 Boosting、 最大熵方法 (例如LR, Logistic Regression) 等。这些模型的结构基本上可以看成带有一层隐层节点(如SVM、Boosting) , 或没有隐层节点(如LR) 。这些模型在无论是理论分析还是应用都获得了巨大的 成功。相比较之下,由于理论分析的难度,加上训练方法需要很多经验和技巧, 所以这个时期浅层人工神经网络反而相对较为沉寂。 2000年以来互联网的高速发展, 对大数据的智能化分析和预测提出了巨大需 求, 浅层学习模型在互联网应用上获得了巨大成功。最成功的应用包括搜索广告

系统(比如Google的AdWords、百度的凤巢系统)的广告点击率CTR预估、网页 搜索排序(例如Yahoo!和微软的搜索引擎) 、垃圾邮件过滤系统、基于内容的推 荐系统等。 2006年,加拿大多伦多大学教授、机器学习领域泰斗——Geoffrey Hinton和 他的学生Ruslan Salakhutdinov在顶尖学术刊物《科学》上发表了一篇文章,开启 了深度学习在学术界和工业界的浪潮。这篇文章有两个主要的信息:1. 很多隐 层的人工神经网络具有优异的特征学习能力, 学习得到的特征对数据有更本质的 刻画, 从而有利于可视化或分类; 2. 深度神经网络在训练上的难度, 可以通过“逐 层初始化(Layer-wise Pre-training)来有效克服,在这篇文章中,逐层初始化是 通过无监督学习实现的。 第二次浪潮:深度学习 自2006年以来,深度学习在学术界持续升温。斯坦福大学、纽约大学、加拿 大蒙特利尔大学等成为研究深度学习的重镇。2010年,美国国防部DARPA计划 首次资助深度学习项目,参与方有斯坦福大学、纽约大学和NEC美国研究院。支 持深度学习的一个重要依据, 就是脑神经系统的确具有丰富的层次结构。一个最 著名的例子就是Hubel-Wiesel模型,由于揭示了视觉神经的机理而曾获得诺贝尔 医学与生理学奖。 除了仿生学的角度,目前深度学习的理论研究还基本处于起步 阶段,但在应用领域已显现出巨大能量。2011年以来,微软研究院和Google的语 音识别研究人员先后采用DNN技术降低语音识别错误率20%~30%,是语音识别 领域十多年来最大的突破性进展。2012年,DNN技术在图像识别领域取得惊人 的效果,在ImageNet评测上将错误率从26%降低到15%。在这一年,DNN还被 应用于制药公司的Druge Activity预测问题,并获得世界最好成绩,这一重要成果 被《纽约时报》报道。 今天Google、微软、百度等知名的拥有大数据的高科技公司争相投入资源, 占领深度学习的技术制高点, 正是因为它们都看到了在大数据时代,更加复杂且 更加强大的深度模型能深刻揭示海量数据里所承载的复杂而丰富的信息, 并对未 来或未知事件做更精准的预测。 在工业界一直有个很流行的观点:在大数据条件下,简单的机器学习模型会 比复杂模型更加有效。例如,在很多的大数据应用中,最简单的线性模型得到大

量使用。 而最近深度学习的惊人进展,促使我们也许到了要重新思考这个观点的 时候。简而言之,在大数据情况下,也许只有比较复杂的模型,或者说表达能力 强的模型,才能充分发掘海量数据中蕴藏的丰富信息。运用更强大的深度模型, 也许我们能从大数据中发掘出更多有价值的信息和知识。 为了理解为什么大数据需要深度模型,先举一个例子。语音识别已经是一个 大数据的机器学习问题, 在其声学建模部分,通常面临的是十亿到千亿级别的训 练样本。在Google的一个语音识别实验中,发现训练后的 DNN对训练样本和测 试样本的预测误差基本相当。 这是非常违反常识的,因为通常模型在训练样本上 的预测误差会显著小于测试样本。因此,只有一个解释,就是由于大数据里含有 丰富的信息维度,即便是DNN这样的高容量复杂模型也是处于欠拟合的状态, 更不必说传统的GMM声学模型了。所以从这个例子中我们看出,大数据需要深 度学习。 浅层模型有一个重要特点, 就是假设靠人工经验来抽取样本的特征,而强调 模型主要是负责分类或预测。 在模型的运用不出差错的前提下(如假设互联网公 司聘请的是机器学习的专家) ,特征的好坏就成为整个系统性能的瓶颈。因此, 通常一个开发团队中更多的人力是投入到发掘更好的特征上去的。 要发现一个好 的特征,就要求开发人员对待解决的问题要有很深入的理解。而达到这个程度, 往往需要反复地摸索,甚至是数年磨一剑。因此,人工设计样本特征,不是一个 可扩展的途径。 深度学习的实质, 是通过构建具有很多隐层的机器学习模型和海量的训练数 据,来学习更有用的特征,从而最终提升分类或预测的准确性。所以“深度模型” 是手段,“特征学习”是目的。区别于传统的浅层学习,深度学习的不同在于:1. 强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点;2. 明确突 出了特征学习的重要性,也就是说,同过逐层特征变换,将样本在原空间的特征 表示变换到一个新特征空间,使分类或预测更加容易。 与人工规则构造特征的方法相比,利用大数据来学习特征,更能刻画数据丰 富的内在信息。所以,在未来的几年里,我们将看到越来越多的例子:深度模型 应用于大数据,而不是浅层的线性模型。

图像是深度学习最早尝试的应用领域。早在1989年,Yann LeCun (现纽约大 学教授) 和他的同事们就发表了卷积神经网络 (Convolution Neural Networks, 简 称CNN)的工作。CNN是一种带有卷积结构的深度神经网络,通常至少有两个 非线性可训练的卷积层,两个非线性的固定卷积层(又叫Pooling Laye)和一个 全连接层,一共至少5个隐含层。CNN的结构受到著名的Hubel-Wiesel生物视觉 模型的启发,尤其是模拟视觉皮层 V1和V2层中Simple Cell和Complex Cell的行 为。在很长时间里, CNN虽然在小规模的问题上,如手写数字,取得过当时世 界最好结果,但一直没有取得巨大成功。这主要原因是, CNN在大规模图像上 效果不好, 比如像素很多的自然图片内容理解,所以没有得到计算机视觉领域的 足够重视。这个情况一直持续到2012年10月,Geoffrey Hinton和他的两个学生在 著名的ImageNet问题上用更深的CNN取得世界最好结果, 使得图像识别大踏步前 进。在Hinton的模型里,输入就是图像的像素,没有用到任何的人工特征。 这个惊人的结果为什么在之前没有发生? 原因当然包括算法的提升,比如 dropout等防止过拟合技术,但最重要的是,GPU带来的计算能力提升和更多的 训练数据。 百度在2012年底将深度学习技术成功应用于自然图像OCR识别和人脸 识别等问题,并推出相应的桌面和移动搜索产品,2013年,深度学习模型被成功 应用于一般图片的识别和理解。 从百度的经验来看,深度学习应用于图像识别不 但大大提升了准确性, 而且避免了人工特征抽取的时间消耗,从而大大提高了在 线计算效率。可以很有把握地说,从现在开始,深度学习将取代“人工特征+机器 学习”的方法而逐渐成为主流图像识别方法。

二 深度学习中的 sparse autoencoder
2.1 sparse autoencoder Deep learning领域比较出名的一类算法——sparse autoencoder,即稀疏模式 的自动编码。sparse autoencoder是一种自动提取样本(如图像)特征的方法。把 输入层激活度(如图像)用隐层激活度表征,再把隐层信息在输出层还原。这样 隐层上的信息就是输入层的一个压缩过的表征,且其信息熵会减小。并且这些表 征很适合做分类器。 我们知道, deep learning也叫做无监督学习, 所以这里的sparse autoencoder也应是无监督的。如果是有监督的学习的话,在神经网络中,我们只 需要确定神经网络的结构就可以求出损失函数的表达式了(当然,该表达式需对

网络的参数进行”惩罚”,以便使每个参数不要太大),同时也能够求出损失函数 偏导函数的表达式,然后利用优化算法求出网络最优的参数。应该清楚的是,损 失函数的表达式中,需要用到有标注值的样本。那么这里的sparse autoencoder为 什么能够无监督学习呢?难道它的损失函数的表达式中不需要标注的样本值 (即 通常所说的y值)么?其实在稀疏编码中”标注值”也是需要的,只不过它的输出 理论值是本身输入的特征值x,其实这里的标注值y=x。这样做的好处是,网络的 隐含层能够很好的代替输入的特征, 因为它能够比较准确的还原出那些输入特征 值。Sparse autoencoder的一个网络结构图如下所示:

2.2 损失函数 无稀疏约束时网络的损失函数表达式如下:

稀疏编码是对网络的隐含层的输出有了约束, 即隐含层节点输出的平均值应 尽量为0, 这样的话, 大部分的隐含层节点都处于非激活状态。 因此, 此时的sparse autoencoder损失函数表达式为:

后面那项为KL距离,其表达式如下:

隐含层节点输出平均值求法如下:

其中的参数一般取很小,比如说0.05,也就是小概率发生事件的概率。这说 明要求隐含层的每一个节点的输出均值接近0.05(其实就是接近0,因为网络中 激活函数为sigmoid函数) , 这样就达到稀疏的目的了。 KL距离在这里表示的是两 个向量之间的差异值。从约束函数表达式中可以看出,差异越大则”惩罚越大”, 因此最终的隐含层节点的输出会接近0.05。 假设我们有一个固定样本集 , 它包含

个样例。我们可以用批量梯度下降法来求解神经网络。具体来讲,对于单个样例 ,其代价函数为:

这是一个 (二分之一的) 方差代价函数。 给定一个包含 我们可以定义整体代价函数为:

个样例的数据集,

以上公式中的第一项

是一个均方差项。第二项是一个规则化项

(也叫权重衰减项) ,其目的是减小权重的幅度,防止过度拟合。 权重衰减参数 复杂函数的含义: 用于控制公式中两项的相对重要性。在此重申一下这两个 是针对单个样例计算得到的方差代价函数;

是整体样本代价函数,它包含权重衰减项。 以上的代价函数经常被用于分类和回归问题。 在分类问题中, 我们用 或 ,来代表两种类型的标签,这是因为 sigmoid激活函数的值域为 ;如

果我们使用双曲正切型激活函数,那么应该选用 -1 和 +1 作为标签。对于回归 问题,我们首先要变换输出值域 ,以保证其范围为 ) 。 的最小值。为了求 初始化为一个很小的、接近 生成的随机值, 其中 设 (同样地,如果我

们使用双曲正切型激活函数,要使输出值域为 我们的目标是针对参数 和 来求其函数 和

解神经网络,我们需要将每一个参数 零的随机值 (比如说, 使用正态分布 置为

) ,之后对目标函数使用诸如批量梯度下降法的最优化算法。因为 是一个非凸函数,梯度下降法很可能会收敛到局部最优解;但是在实

际应用中,梯度下降法通常能得到令人满意的结果。最后,需要再次强调的是, 要将参数进行随机初始化, 而不是全部置为 。 如果所有参数都用相同的值作为

初始值,那么所有隐藏层单元最终会得到与输入值有关的、相同的函数(也就是 说,对于所有 , 都会取相同的值,那么对于任何输入 ) 。随机初始化的目的是使对称失效。 都会有:

2.3 反向传播算法 梯度下降法中每一次迭代都按照如下公式对参数 和 进行更新:

其中

是学习速率。其中关键步骤是计算偏导数。我们现在来讲一下反向

传播算法,它是计算偏导数的一种有效方法。 我们首先来讲一下如何使用反向传播算法来计算 , 这两项是单个样例 的代价函数 和 的偏 的偏导数:

导数。 一旦我们求出该偏导数, 就可以推导出整体代价函数

以上两行公式稍有不同, 第一行比第二行多出一项,是因为权重衰减是作用 于 而不是 。反向传播算法的思路如下:给定一个样例 ,我们首先 的输出值。 ,该残差表明了该

进行“前向传导”运算,计算出网络中所有的激活值,包括 之后,针对第 层的每一个节点 ,我们计算出其“残差”

节点对最终输出值的残差产生了多少影响。对于最终的输出节点,我们可以直接 算出网络产生的激活值与实际值之间的差距, 我们将这个差距定义为 (第

层表示输出层) 。对于隐藏单元我们如何处理呢?我们将基于节点(译者注: 第 层节点)残差的加权平均值计算 ,这些节点以 作为输入。下

面将给出反向传导算法的细节:

进行前馈传导计算, 利用前向传导公式,得到 的激活值。 对于第

直到输出层

层(输出层)的每个输出单元 ,我们根据以下公式计算残差:

对 的残差计算方法如下:

的各个层,第

层的第

个节点

将上式中的



的关系替换为 与

的关系,就可以得到:

以上逐次从后向前求导的过程即为“反向传导”的本意所在。 计算我们需要的偏导数,计算方法如下:

最后,我们用矩阵-向量表示法重写以上算法。我们使用 “ ” 表示向量乘积 运算符(在Matlab或Octave里用“.*”表示,也称作阿达马乘积) 。若 则 。 ,

那么,反向传播算法可表示为以下几个步骤: 1 进行前馈传导计算, 利用前向传导公式, 得到 的激活值。 2 对输出层(第 层) ,计算: 直到输出层

3 对于

的各层,计算:

4 计算最终需要的偏导数值:

实现中应注意:在以上的第2步和第3步中,我们需要为每一个 。假设

值计算其

是sigmoid 函数,并且我们已经在前向传导运算中得到了 表达式,就可以计算得到

。那么,使用我们早先推导出的 。

最后, 我们将对梯度下降算法做个全面总结。 在下面的伪代码中, 一个与矩阵 维度相同的矩阵, 是一个与



维度相同的向量。注

意这里“

”是一个矩阵,而不是“



相乘”。下面,我们实现批量

梯度下降法中的一次迭代: 对于所有 , 令 1 对于 到 。 2 3 计算 计算 。 。 , (设置为全零矩阵或全零向量) 和

, 使用反向传播算法计算

更新权重参数:

现在,我们可以重复梯度下降法的迭代步骤来减小代价函数 值,进而求解我们的神经网络。



三 实验仿真
3.1 利用autoencoder提取特征 从给定的很多张自然图片中截取出大小为8*8的小patches图片共10000张, 现 在需要用sparse autoencoder的方法训练出一个隐含层网络所学习到的特征。该网 络共有3层,输入层是64个节点,隐含层是25个节点,输出层当然也是64个节点 了。 其实实现该功能的主要步骤还是需要计算出网络的损失函数以及其偏导数。 下面用简单的语言大概介绍下这个步骤,方便理清算法的流程。 1. 计算出网络每个节点的输入值(即程序中的z值)和输出值(即程序中的 a值,a是z的sigmoid函数值) 。 2. 利用z值和a值计算出网络每个节点的误差值(即程序中的delta值) 。 3. 这样可以利用上面计算出的每个节点的a, z, delta来表达出系统的损失函 数以及损失函数的偏导数了,当然这些都是一些数学推导。

其实步骤1是前向进行的,也就是说按照输入层——隐含层——输出层的方 向进行计算。而步骤2是方向进行的(这也是该算法叫做BP算法的来源) ,即每 个节点的误差值是按照输出层——隐含层——输入层方向进行的。 下面看一下实验流程: 首先运行主程序train.m中的步骤1, 即随机采样出10000个小的patch, 并且显 示出其中的204个patch图像,图像显示如下所示:

然后运行train.m中的步骤2 和步骤3 ,进行损失函数和梯度函数的计算并验 证。进行gradient checking的时间可能会太长,我这里大概用了1个半小时以上, 当用gradient checking时,发现误差只有6.5101e-11,远小于1e-9,所以说明前面 的损失函数和偏导函数程序是对的。后面就可以接着用优化算法来求参数了,本 程序给的是优化算法是L-BFGS。经过几分钟的优化,就出结果了。 最后的W1的权值如下所示:

3.2 Self-taught learning Self-taught learning是用的无监督学习来学习到特征提取的参数, 然后用有监 督学习来训练分类器。这里分别是用的sparse autoencoder和softmax regression, 实验的数据依旧是手写数字数据库MNIST Dataset。 采用数字5~9的样本来进行无监督训练,采用的方法是sparse autoencoder, 可以提取出这些数据的权值,权值转换成图片显示如下:

但是本次实验主要是进行0~4这5个数字的分类, 虽然进行无监督训练用的是 数字5~9的训练样本,这依然不会影响后面的结果。只是后面的分类器设计是用 的softmax regression,所以是有监督的。最后的结果精度是98%,而直接用原始 的像素点进行分类器的设计不仅效果要差(才96%) ,而且训练的速度也会变慢 不少。 3.3 convolution与 pooling 在全局连接网络中,如果我们的图像很大,比如说为96*96,隐含层有要学 习100个特征, 则这时候把输入层的所有点都与隐含层节点连接, 则需要学习10^6 个参数,这样的话在使用BP算法时速度就明显慢了很多。 所以后面就发展到了局部连接网络, 也就是说每个隐含层的节点只与一部分 连续的输入点连接。 这样的好处是模拟了人大脑皮层中视觉皮层不同位置只对局 部区域有响应。局部连接网络在神经网络中的实现使用convolution的方法。它在 神经网络中的理论基础是对于自然图像来说,因为它们具有稳定性,即图像中某 个部分的统计特征和其它部位的相似, 因此我们学习到的某个部位的特征也同样 适用于其它部位。 下面具体看一个例子是怎样实现 convolution 的,假如对一张大图片的数据 集,r*c大小,则首先需要对这个数据集随机采样大小为a*b的小图片,然后用这

些小图片patch进行学习(比如说sparse autoencoder) ,此时的隐含节点为k个。因 此最终学习到的特征数为:

虽然按照 convolution 的方法可以减小不少需要训练的网络参数,比如说 96*96,,100个隐含层的,采用8*8patch,也100个隐含层,则其需要训练的参数 个数减小到了10^3,大大的减小特征提取过程的困难。但是此时同样出现了一个 问题, 即它的输出向量的维数变得很大,本来完全连接的网络输出只有100维的, 现在的网络输出为89*89*100=792100维, 大大的变大了, 这对后面的分类器的设 计同样带来了困难,所以pooling方法就出现了。 为什么pooling的方法可以工作呢?首先在前面的使用 convolution 时是利用 了图像的平稳性特征,即不同部位的图像的统计特征是相同的,那么在使用 convolution对图片中的某个局部部位计算时,得到的一个向量应该是对这个图像 局部的一个特征, 既然图像有平稳性特征,那么对这个得到的特征向量进行统计 计算的话,所有的图像局部块应该也都能得到相似的结果。对convolution得到的 结果进行统计计算过程就叫做 pooling ,由此可见 pooling 也是有效的。常见的 pooling方法有max pooling和average pooling等。并且学习到的特征具有旋转不变 性。 从上面的介绍可以简单的知道,convolution是为了解决前面无监督特征提取 学习计算复杂度的问题, 而pooling方法是为了后面有监督特征分类器学习的, 也 是为了减小需要训练的系统参数 (当然这是在普遍例子中的理解,也就是说我们 采用无监督的方法提取目标的特征,而采用有监督的方法来训练分类器) 。 本次实验是练习convolution和pooling的使用, 更深一层的理解怎样对大的图 片采用convolution得到每个特征的输出结果, 然后采用pooling方法对这些结果进 行计算,使之具有平移不变等特性。 首先来看看整个训练和测试过程的大概流程:在训练阶段,是对小的patches 进行whitening的。由于输入的数据是大的图片,所以每次进行convolution时都需 要进行whitening和网络的权值计算, 这样每一个学习到的隐含层节点的特征对每 一张图片都可以得到一张稍小的特征图片,接着对这张特征图片进行均值 pooling。有了这些特征值以及标注值,就可以用softmax来训练多分类器了。

在测试阶段是对大图片采取convolution的,每次convolution的图像块也同样 需要用训练时的whitening参数进行预处理, 分别经过convolution和pooling提取特 征,这和前面的训练过程一样。然后用训练好的softmax分类器就可进行预测了。 训练特征提取的网络参数用的时间比较多,而训练比如说 softmax分类器则 用的时间比较短。 在matlab中当有n维数组时,一般是从右向左进行剥皮计算,因为matlab输出 都是按照这种方法进行的。当然了,如果要理解的话,从左向右和从右向左都是 可以的,只要是方便理解就行。 程序中进行convolution 测试的理由是:先用cnnConvolve函数计算出所给样 本的convolution值,然后随机选取多个patch,用直接代数运算的方法得出网络的 输出值,如果对于所有(比如说这里选的1000个)的patch,这两者之间的差都非常 小的话,说明convution计算是正确的。 程序中进行pooling测试的理由是:采用函数cnnPool来计算,而该函数的参 数为polling的维数以及需要pooling的数据。因此程序中先随便给一组数据,然后 用手动的方法计算出均值pooling的结果, 最后用cnnPool函数也计算出一个结果, 如果两者的结果相同,则说明pooling函数是正确的。 程 序 中 颜 色 特 征 的 学 习 体 现 在 : 每 次 只 对 RGB 中 的 一 个 通 道 进 行 convolution, 分别计算3次, 然后把三个通道得到的convolution结果矩阵对应元素 相加即可。这样的话,后面的Pooling操作只需在一个图像上进行即可。 由于只需训练4个类别的softmax分类器,所以其速度非常快,1分钟都不到。 训练出来的特征图像为:

最终的预测准确度为:Accuracy: 80.406% 3.4构建deep network网络 练习2个隐含层的网络的训练方法,每个网络层都是用的 sparse autoencoder 思想, 利用两个隐含层的网络来提取出输入数据的特征。本次实验验要完成的任 务是对MINST进行手写数字识别, 当提取出手写数字图片的特征后, 就用softmax 进行对其进行分类。 进行deep network的训练方法大致如下: 1. 用原始输入数据作为输入,训练出(利用sparse autoencoder方法)第一个 隐含层结构的网络参数,并将用训练好的参数算出第1个隐含层的输出。 2. 把步骤1的输出作为第2个网络的输入,用同样的方法训练第2个隐含层网 络的参数。 3. 用步骤2 的输出作为多分类器softmax的输入,然后利用原始数据的标签 来训练出softmax分类器的网络参数。 4. 计算2个隐含层加softmax分类器整个网络一起的损失函数, 以及整个网络 对每个参数的偏导函数值。

5. 用步骤1,2和3的网络参数作为整个深度网络(2个隐含层,1个softmax输 出层)参数初始化的值,然后用lbfs算法迭代求出上面损失函数最小值附近处的 参数值,并作为整个网络最后的最优参数值。 上面的训练过程是针对使用softmax分类器进行的,而softmax分类器的损失 函数等是有公式进行计算的。 所以在进行参数校正时,可以对把所有网络看做是 一个整体, 然后计算整个网络的损失函数和其偏导,这样的话当我们有了标注好 了的数据后, 就可以用前面训练好了的参数作为初始参数,然后用优化算法求得 整个网络的参数了。 关于深度网络的学习几个需要注意的小点(假设隐含层为2层) : 利用sparse autoencoder进行预训练时,需要依次计算出每个隐含层的输出, 如果后面是采用softmax分类器的话,则同样也需要用最后一个隐含层的输出作 为softmax的输入来训练softmax的网络参数。 由步骤1可知,在进行参数校正之前是需要对分类器的参数进行预训练的。 且在进行参数校正(Finetuning )时是将所有的隐含层看做是一个单一的网络层, 因此每一次迭代就可以更新所有网络层的参数。 另外在实际的训练过程中可以看到,训练第一个隐含层所用的时间较长,应 该需要训练的参数矩阵为 200*784(没包括b参数),训练第二个隐含层的时间较第 一个隐含层要短些,主要原因是此时只需学习到200*200的参数矩阵,其参数个 数大大减小。而训练softmax的时间更短,那是因为它的参数个数更少,且损失 函数和偏导的计算公式也没有前面两层的复杂。 最后对整个网络的微调所用的时 间和第二个隐含层的训练时间长短差不多。 实验结果: 第一个隐含层的特征值如下所示:

第二个隐含层的特征值显示不知道该怎么弄, 因为第二个隐含层每个节点都 是对应的200维,用display_network这个函数去显示的话是不行的,它只能显示 维数能够开平方的那些特征,所以不知道是该将200弄成20*10,还是弄成16*25 好,很好奇关于deep learning那么多文章中第二层网络是怎么显示的,将200分解 后的显示哪个具有代表性呢?待定。所以这里暂且不显示,因为截取200前面的 196位用display_network来显示的话,什么都看不出来:

没有经过网络参数微调时的识别准去率为: Before Finetuning Test Accuracy: 92.190% 经过了网络参数微调后的识别准确率为: After Finetuning Test Accuracy: 97.670%



深度学习研发面临的重大问题

4.1 理论问题 理论问题主要体现在两个方面,一个是统计学习方面的,另一个是计算方面 的。 我们已经知道, 深度模型相比较于浅层模型有更好的对非线性函数的表示能 力 。 具 体 来 说 , 对 于 任 意 一 个 非 线 性 函 数 , 根 据 神 经 网 络 的 Universal Approximation Theory,我们一定能找到一个浅层网络和一个深度网络来足够好 地表示。但深度网络只需要少得多的参数。但可表示性不代表可学习性。我们需 要了解深度学习的样本复杂度, 也就是我们需要多少训练样本才能学习到足够好 的深度模型。 从另一方面来说, 我们需要多少计算资源才能通过训练得到更好的 模型?理想的计算优化方法是什么?由于深度模型都是非凸函数, 这方面的理论 研究极其困难。 4.2 建模问题 在推进深度学习的学习理论和计算理论的同时, 我们是否可以提出新的分层 模型,使其不但具有传统深度模型所具有的强大表示能力,还具有其他的好处, 比如更容易做理论分析。另外,针对具体应用问题,我们如何设计一个最适合的 深度模型来解决问题?我们已经看到, 无论在图像深度模型, 还是语言深度模型, 似乎都存在深度和卷积等共同的信息处理结构。甚至对于语音声学模型,研究人 员也在探索卷积深度网络。 那么一个更有意思的问题是,是否存在可能建立一个 通用的深度模型或深度模型的建模语言,作为统一的框架来处理语音、图像和语 言? 4.3 工程问题 需要指出的是, 对于互联网公司而言,如何在工程上利用大规模的并行计算 平台来实现海量数据训练,是各家公司从事深度学习技术研发首先要解决的问 题。传统的大数据平台如Hadoop,由于数据处理的Latency太高,显然不适合需 要频繁迭代的深度学习。现有成熟的 DNN 训练技术大都是采用随机梯度法

(SGD)方法训练的。这种方法本身不可能在多个计算机之间并行。即使是采用 GPU进行传统的DNN模型进行训练,其训练时间也是非常漫长的,一般训练几 千小时的声学模型所需要几个月的时间。而随着互联网服务的深入,海量数据训 练越来越重要,DNN这种缓慢的训练速度必然不能满足互联网服务应用的需要。 Google搭建的DistBelief, 是一个采用普通服务器的深度学习并行计算平台, 采用 异步算法, 由很多计算单元独立地更新同一个参数服务器的模型参数,实现了随 机梯度下降算法的并行化, 加快了模型训练速度。 与Google采用普通服务器不同, 百度的多GPU并行计算平台, 克服了传统SGD训练的不能并行的技术难题,神经 网络的训练已经可以在海量语料上并行展开。可以预期,未来随着海量数据训练 的DNN技术的发展,语音图像系统的识别率还会持续提升。

参考文献:
[1]BENGIO Y. Learning deep architectures for A1[J]. Foundations and Trends in Machine Learning,2009,2(1):1-124. [2] D. Ciresan, U.Meier, J.Masci, and J. Schmidhuber. A committee of neural networks for traffic sign classification. In Neural Networks (IJCNN), The 2011 International Joint Conference on, pages 1918–1921. IEEE, 2011. 10 [3]HINTON G , OSINDERO S , TEH Y . A fast learning algorithm for deep belief nets[J].Neural Computation,2006,18(7):1527-1554. [4] Y. Boykov, O. Veksler, and R. Zabih. Fast approximate energy minimization via graph cuts. IEEE Trans. Pattern Anal. Mach.Intell., 23(11):1222–1239, 2001. 5 [5]LECUN Y,BOTTOU L,BENGIO Y,et a1.Gradient—based learning applied to document recognition[J].Proceedings of the IEEE,1998,86(11):2278-2324. [6] D. Ciresan, U.Meier, J.Masci, and J. Schmidhuber. A committee of neural networks for traffic sign classification. In Neural Networks (IJCNN), The 2011 International Joint Conference on, pages 1918–1921. IEEE, 2011. 10 [7] C. Farabet, C. Couprie, L. Najman, and Y. LeCun. Scene parsing with multiscale feature learning, purity trees, and optimal covers. In Proceedings of the International Conference on Machine Learning(ICML), June 2012. 2, 6 [8] J. Carreira and C. Sminchisescu. CPMC: Automatic Object Segmentation Using Constrained Parametric Min-Cuts. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2012. 2 [9] Y. Boykov and V. Kolmogorov. An experimental comparison of min-cut/max-flow algorithms for energy minimization in vision.IEEE Trans. Pattern Anal. Mach. Intell., 26(9):1124–1137, 2004. 5 [10] Y. Boykov and M. P. Jolly. Interactive graph cuts for optimal boundary & region segmentation of objects in n-d images. In Proceedings of International Conference of Computer Vision (ICCV),volume 1, pages 105–112, 2001. 11


更多相关文档:

现代机器学习 基于深度学习的图像特征提取.pdf

现代机器学习理论大作业 (基于深度学习的图像特征提取) 基于深度学习的图像特征提取摘要:大数据时代的来临,为深度学习理论的发展创造了良好的条件。本文介绍了深度学习...

现代机器学习基于深度学习的图像特征提取.pdf

现代机器学习基于深度学习的图像特征提取 - 现代机器学习理论大作业 (基于深度学习的图像特征提取) 基于深度学习的图像特征提取 摘要: 大数据时代的来临,为深度学习...

基于深度学习的图像处理技术的现代研究与应用.doc

基于深度学习的图像处理技术的现代研究与应用_能源/...程度上保证了图像特征的学习质量,提取的特征抽象化...1 深度学习技术概述 深度学习原本是机器学习研究中的...

现代机器学习 基于深度学习的图像特征提取.doc

现代机器学习理论大作业 (基于深度学习的图像特征提取) 基于深度学习的图像特征提取摘要:大数据时代的来临,为深度学习理论的发展创造了良好的条件。本文介绍了深度学习...

基于深度学习的数字图像识别技术设计.pdf

能够快速实现图像识别、自然语言处理等相关的机器学习深度学习算法,可靠性和...对图像进行特征提取后,具备将一个目标或场景 的不同影像进行匹配。 最后要对...

基于进化深度学习的特征提取算法_图文.pdf

深度学习源于传统的人 工神经网络,其实质是通过构建具有多隐层的机器学习模型 ...2530 虱6隐层结构为150一10050时的图像特征提取 [9]Hinton,Salakhudino...

基于深度学习的图像检索研究.pdf

基于深度学习的图像检索研究_教育学/心理学_人文社科...(DeepNepal Network,DNN)完成学习任务的机器学习方法...与传统的图像 检索一一需要预先提取图片的底层特征的...

基于深度学习的图像超分辨率重建研究.doc

最后针对该模型 进行改进,再加入一层作为特征提取。最后利用深度学习框架 Tensor...它首次实现了依据样本数据集来学习权重。这两个模型深深的影响了现代机器学习,为...

基于深度学习的视觉特征在图像检索中的应用-1.doc

其系统架构大致为,系统通过对图像的图像提取视觉特征,完成图像库到特征库的映射,...现代机器学习 基于深度学... 23页 2下载券 喜欢此文档的还喜欢 图像...

基于深度学习的图像识别进展百度的若干实践.pdf

专题 第?11?卷??第 4?期??2015?年?4?月 基于深度学习的图像识别进展: ...而传统机器学习往 往被分解为几个不连贯的数据预 处理步骤,比如人工抽取特征, ...

CNN深度学习模型用于表情特征提取方法探究_张昭旭_图文.pdf

面的优势 ,提出一种基于 CNN 的人脸表情特征提取...深度学习(Deep Learning ,DL )是机器学习研究中 的...N 图 1 一个经典的 CNN 结构图 现代计算机 2016...

基于深度学习的人体行为识别算法综述_图文.pdf

深度学习理论在静态图像特征提取上取得了卓著成就, 并逐步推广至具有时间序列的视...动作识别及理解阶段是将前一阶段得到特 征向量作为输入经过机器学习算法进行...

基于深度学习的人体行为识别算法综述_朱煜_图文.pdf

深度学习理论在静态图像特征提取上取得了卓著成就, 并逐步推广至具有时间序列的视...动作识别及理解阶段是将前一阶段得到特 征向量作为输入经过机器学习算法进行...

基于深度学习的图像识别进展:百度的若干实践.doc

基于深度学习的图像识别进展:百度的若干实践_计算机软件及应用_IT/计算机_专业...而传统机器学习往往被分解为几个不连贯的数据预 处理步骤,比如人工抽取特征,这些...

基于深度学习与传统机器学习的人脸表情识别综述.doc

龙源期刊网 http://www.qikan.com.cn 基于深度学习与传统机器学习的人脸表情识...则需要关 注这些方面:实践中的图像预处理、实践中的特征提取以及实践中的特征...

基于深度学习的图像自动标注算法.pdf

基于深度学习的图像自动标注算法 - ,ISSN10049037CODENSCYCE4 - JournalofData...... 关键词 :机器学习 ; 深度学习 ; 神经网络 ; 图像自动标注 中图分类号 :T...

基于深度学习与传统机器学习的人脸表情识别综述.doc

基于深度学习与传统机器学习的人脸表情识别综述_计算机软件及应用_IT/计算机_专业...则需要关注这些方面:实践中的图 像预处理、实践中的特征提取以及实践中的特征...

基于机器学习的图像分类.ppt

基于机器学习的图像分类 - 基于深度学习的图像分类 [1] A. Krizhev

基于深度学习特征的稀疏表示的人脸识别方法_图文.pdf

关键词:机器学习;生物特征识别;深度学习;特征学习;...基于稀疏表示的分类方法能够有效利用人脸图 较复杂,...? 本文结合基于深度学习的特征提取方法和基于 稀疏...

基于机器学习方法的前列腺病理切片图像识别PPT.ppt

基于机器学习方法的前列腺病理切片图像识别PPT_工学_...图 1-3 深度学习的特征层级 1.4.1 深度学习简介 ...

更多相关标签:
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com