纪荣嵘作者

让机器“提纲挈领”:视觉系统的紧凑性初探

计算机视觉技术自诞生之日起,即面临着较大的计算压力,这一领域的研究也一直在以空间换时间、或者以时间换空间这两种尝试中交替前行。至今,虽然随着GPU的盛放,算力得到了很大的提升,然而,在真实场景下的人机交互中,仍面临着端侧资源不足的问题。因此, 如果我们的特征提取过程能够做到对整个视觉输入的“提纲挈领”,即提取过程更加快速、特征表示更加紧凑,将有助于计算机视觉在生活中的真实落地。

编者按:王勃在《滕王阁序》中创作出了千古名句:

  “落霞与孤鹜齐飞,秋水共长天一色。”

短短十四个字,极具层次性地提炼出了视觉画面中的色彩之美、动态之美、虚实之美、以及立体之美,因此成为了景物描写的绝唱之笔。

而在计算机视觉领域,这十四个字的创作过程,其实就是从视觉系统中提取关键特征、并以简短紧凑的方式呈现出来的过程。

计算机视觉技术自诞生之日起,即面临着较大的计算压力,这一领域的研究也一直在以空间换时间、或者以时间换空间这两种尝试中交替前行。至今,虽然随着GPU的盛放,算力得到了很大的提升,然而,在真实场景下的人机交互中,仍面临着端侧资源不足的问题。因此, 如果我们的特征提取过程能够做到对整个视觉输入的“提纲挈领”,即提取过程更加快速、特征表示更加紧凑,将有助于计算机视觉在生活中的真实落地。

今天,来自厦门大学的纪荣嵘教授,将从视觉信息的紧凑性、深度网络的紧凑性、以及检测算法的紧凑性三方面,来介绍如何实现紧致化的视觉大数据分析系统。

文末,大讲堂提供文中提到参考文献的下载链接。

首先,刷一波福利,厦门大学媒体分析与计算组,在招收硕士生、博士生、博士后、助理教授等。

在厦门大学那么小的研究组怎样能做一些跟别人不一样的事情呢?我们从思考现有算法的问题入手,思考除了精度之外还有哪些问题。其实如果大家看一下视觉搜索和识别的流程,从特征抽取、描述、到索引,都对系统紧凑性有很重要的要求,虽然目前还没有引起广泛关注,但已有很多工业界的应用需求。因此,从2013年到现在差不多五年的时间,我主要研究怎样把搜索系统和识别系统做小和做快。

本次报告包含三个部分:

第一部分是视觉特征紧凑型:如果特征抽出来没有明确目标做视觉特征检索,这时候怎么把特征做得又小又快。

第二部分是神经网络紧凑型:现在有很多做端到端的学习,神经网络怎么做小怎么把速度提起来。

第三部分是检测算法的紧凑性。

在视觉特征紧凑型方面,视觉数据是大数据里面的主体,谈到大数据,我们首先想到的数据量最大的还是图像和视频数据。

如果不可以把图像和视频数据找到,它们的价值其实很难得到发现。我们这时候面临的问题是,需要在上百万或者上千万的数据集里面,高速高效的把相关视觉数据找到。这个问题本身并没有那么容易,因为它是非结构的,这个时候不得不用近似搜索方式在有限精度损失情况下,能高速把视觉数据找到。

为了做这个问题,现在有些特征也能达到视觉搜索的目的,但是没有办法在移动视觉伸缩或者高通量检索里面做。比如现在的视觉包特征,CNN特征,VLAD特征等,他们的维度相对来说还是很高,另外可以用一些倒排索引技术,用空间换时间,当然如果空间开销过大,也会造成在移动式或者嵌入式系统里面无法使用的问题。

在过去4年时间里我研究兴趣转到去做特征的二值化。给定一组图像数据库,我们希望把每张图像映射成二值编码,如果两张图像相似,期望二值编码相似,如果不相似,期望二值编码距离要越远越好。

如果能达到这个目标当然更好了,我们就可以做高速高效的匹配。首先哈希函数的特征投影快,其次他的搜索时间为汉明查表,复杂度O(1)时间也很快。最后百万级的图像可以像搜索系统一样压缩的储存在内存中,使得它的体积相对小很多。

它的特征可以快速紧凑存到内存里,这种速度上的提升背后会带来精度上的损失。所以,从2004年第一次提出这个问题之后,大家关注在怎样把损失减小。从研究方法来分可以分两类,第一类是construction损失减小跟数据没有关系这叫数据独立的哈希,第二类是期望把数据分布考虑到量化误差上,这里面根据有标签和没有标签分成两类,无监督或者有监督,想要有监督效果更好,但是需要人工标注非常贵。这是一些早期的发表的相关文章。

对于特征空间做随机划分,我们可以精确保证,如果两个点在原始空间里面是近的,生成二值空间里面有一定概率仍然是近的,这个概率跟哈希比特码程度是正相关的。

原始空间并不是那么完美,可以对当前数据集建立一个近邻图,然后去算图的拉普拉斯,希望把图上的相似性得到二值码学习过程中,很直接就相当于加了一个权重矩阵。

但是,如果这么做,就会存在一些问题。主要问题在于对这些数据去做拉普拉斯,去求矩阵的特征向量,我们知道当矩阵很大的时候求矩阵的特征分解是很困难的。

为了解决这个问题,在2011年在ICML上提出了采用锚点图估计graph结构,因此计算基于数据点到数据点的相似性,转变成数据点到锚点的相似性,锚点再到数据点的相似性。

如果要算矩阵估计的近似,首先得给个约束,我们可以通过矩阵分解快速求得基于锚点的相似点矩阵,因此可以加快计算。

此外,原始空间不完美,因此可以先对空间先做一次PCA投影,计算投影矩阵,然后计算旋转矩阵,通过量化二者之间的交替和叠加的方式去做,这就是无监督的方法。

此外有监督的方法从2012年开始也有相关涉及,这是我们发在CVPR上的文章,我们除了引入哈希里面的图像点之间之外,我们希望有些图像越相近越好,有些图像越不相近越好。

当时我们做了一个很重要的贡献,我们把汉明距离通过编码的内积进行计算,并通过数学计算来证明。之后发展很快,我们也做了很多工作。

今天主要介绍两个方面,第一个2015年开始是排序敏感的视觉特征的哈希,在哈希学习过程中怎样把排序信息嵌入到二值码的学习。第二个方面是怎样在二值学习空间里面可以做图形处理。第一个动机我们最早发表在2015ICCV上,以前的工作算是Pairwise similarity。我们想如果做哈希特征,它的目的是做检索。那么拿得到的排序信息更多的来自于它的ranking list。所以我们期望在特征空间里面如果有个原始的ranking,希望映射成二值码之后。二者排序列表要越相近越好。

为了解决这个问题,我们在特征数据集里面随机选取三元组,如果在原始空间里面两个点,比如说I和J的距离小于I和S的距离,假设生成的I和J的距离大于I和S的距离,就会产生损失。我们可以通过在数据集里面大量的生成,来衡量生成二值码里面这个损失到底有多大。再加上其他的方法就可以把损失嵌入到传统哈希学习里面去。

我们对比三个数据集SUM397,ImageNet,YouTubeface等去验证我们的方法,当时超过了大部分的无监督/有监督哈希方法。

到了16年,我给我的学生讲我们在15年做的工作,需要采大量的ranking list,才能去保证性能有比较好的提升。所以在这个过程中排序信息是比较冗余的,因此我们就思考可不可以有更紧凑的监督。实际上监督的紧凑性是存在的,这个叫做保序性。所谓的保序性,不是给的一个点,而是点对和点对的相似性关系。这个图上每个节点给出的是两个点之间的相似性,点对点之间的相似性即使序列关系。把给定序列相似性嵌到哈希学习方法里面去,这是2016年论文主要工作。

由于原序列图的规模较大,我们通过landmark-based ordinalembedding的方法,把原来与样本大小成四次方的序列数量降低到样本数的二次方。

这里面我们做了几个事,第一就是在传统图像数据集上评测。比如说CIFAR10,LebelMe.第二是跟腾讯优图实验室做比较好的合作。我们参加音乐检索竞赛,在音乐检索过程中,有一个很重要步骤,切成很多音乐片断,片段与片段之间要算他们的相似性。这个相似性切得越细效果越好,但是会越慢。我们跟它的合作就是怎样把切片保证切细的情况下把速度提上去。

厦门大学把这项技术转化转移到腾讯QQ音乐里面听歌识曲的功能中去,这是结合做的比较好的典范。


下一项工作,从2016年之后我们进一步思考,我们发表的OEH里面存在的一些问题,OEH方法虽然效果不错,时间复杂度相对较高,同时我们要随机的选择训练点。我们可不可以进一步加速这个模型的训练过程,这是我们在2017年的文章,我们探索高阶序列关系,并重点解决两个问题,一是怎样高效表示序列的关系,二是如何缩减序列关系数量。

针对第一个问题,我们提出张量序列图。我们构建一个S和DS矩阵,这两个矩阵做成张量图,这个方式可以把原来的复杂度进一步降低。

第二个问题我们做的是序列约束的投影。精确来说,我们把传统四元组之间的序列关系,在投影之后变成两两三元组之间关系的求差,这个方式可以高效缩减它的复杂度,把原来L的四次方降成L的三次方,使数量跟样本点无关,极大加速了算法离线学习过程。

这是对应的性能的表格。

去年另外一个工作,我们做的事情就是,传统的二值空间。大家想做比如近邻图,比如做PCA。我们知道还有更好的方式,希望学的子空间能够流型相似性。主要问题是学出来的是二值码,怎样在汉明空间保留流形结构,保留数据之间的局部近邻结构和线性关系,这是我们解决的问题。

我们的工作是离散的LLH,这是受LLH启发后的版本,我们的哈希函数是传统线性的函数,目标函数有几项。第一项B-SB,你生成的二值码和你这个二值码把这个点扔掉,用其他点去重构他,他们是不是一致?如果是一致的话就表明局部保持了这种一致性。第二项有点像ITQ里面去做旋转之后做二值投影。

直接解目标函数也可以,但它们复杂性还是挺高的,这里面有N的平方。之前的工作,我们在这里面引入基于锚点的方式,有些公式很简单。原始的特征点算他们的相似性,我们采用一些anchor,算两个点之间的相似性,我们不直接算,我们算这个点到anchor,anchor再到这个点的相似性。这种方法可以使我们的时间复杂度得到精确的下降,并使我们的内存开销得到很大的减少。


如图所示,是随着我们样本数的增加,内存开销相关的量。基于anchor的方式可以有效地减少内存开销。

对应起来,我们在CIFA10和YouTube face上对比,我们采用加anchor的方式,有些性能可能降低,但我们的训练速度得到了很大的提升。

下面分享一下我们最近做的深度网络紧凑性。这里有两块,第一块是怎样把网络压小,第二块是怎样把网络做快。压小不等于做快,做快不等于压小,二者有不同的处理方式。

我们现在有庞大的数据集,有着强大的GPU计算硬件设备。

因此从2012年image的冠军开始,深度学习迅速崛起,涌现了一系列深度神经网络

像VGG从11层到19层,GoogLeNet (Inception V1),Facebook的resnet等等一些模型。有很多的网络,这些网络陆续一直在出来,也有很多相关应用。在这里面大家做新网络过程中,如果简单的相对这个研究而言,生命周期就短了一些。

这里面有很多问题值得做,只是我还没有能力做这个事情,比如说小样本的情况下怎么做,如果正样本很少负样本很多的情况下,怎样解决有偏差样本分布。 还有一些无监督的问题,黑盒子的问题。

我们现在做的事情更多来自于里面的复杂度。第一点,就是把里面模型参数量减少,对应把模型压小。第二是把模型浮点数运算减小,对应把模型做加速。以下简短回顾一下在这个方向里大家怎么做以及我们做的事情。

从模型压缩角度来说,我认为这里面工作可具体分成三种。第一种是将不同原始参数,构建一定映射共享同一参数,叫做参数共享,代表性的方法包括TTQ,PQ等等。第二套方法是在模型里面把参数裁减掉。第三个方法是把两层之间的参数想象成矩阵,可以运用很多矩阵分解方式去做模型压缩。

这是最早的ICML的2015的文章,HashedNets,利用hashing技巧来进行权值共享,例如原来是4*4,要保留16个参数,现在做一个量化表,除了这三个单词特征之外,只保留量化表里面的索引,这样就可以把网络压小。

这是一篇经典的实现参数共享,减少内部参数的冗余性。可以通过简单二值量化,即将原始的浮点型参数量化成二值化参数,只需要比较参数和阈值0的大小。另外,也提出了利用乘积量化的方法,将原始的权重W分解成m个不同的子矩阵,通过对每个子矩阵进行k-means聚类,得到子字典及其索引值。当字典单词的个数较小时,就可以实现压缩参数的目的。

这是ICLR2017上的文章,利用三值量化的方法,来防止二值网络的量化误差过大问题。具体而言,通过设计一个非对称的量化值,并在网络训练过程中自适应的学习该参数。与此同时,引入另外一个梯度用于学习该三值网络的索引,由此提高了网络的准确率。这是第一套方法。

第二套方法主要做剪枝,最早的起点是2015BMVC的文章,它的做法是计算所谓的显著性,就是当前把相关叶子跟子集裁掉之后,当前网络误差性能的上升,希望找到这样的节点,使得它的裁剪不会影响整个网络性能。

对于这个问题大家最早知道的是来自这篇韩松的文章。这篇文章第一块是做网络裁剪,中间用量化方式做网络参数共享,第三块在裁剪和共享之后再做对应的霍夫曼编码进一步做缩减。

第三套方法是用数学方式去做里面的压缩。例如发表在NIPS13上文章,提出从理论与实验方面验证深度神经网络中存在大量的冗余信息,只有少量的参数需要学习,大部分的参数都可以根据已知参数直接得到,不需要通过额外的学习。其中可利用低秩分解技术压缩网络模型,通过将原始较大的网络参数,分解成两个小型的矩阵相乘。


另外,可以利用特殊的TT-format格式存储全连接层的密集权重矩阵, TT-format的权值具有拥有很少的参数,而且在背向传播过程中也能比较容易求出偏导,兼容性较强。

这是之前网络压缩方向代表性的工作,我们做了简单的尝试,我们尝试的动机跟之前的方法有些不一样。我们总结前人的方法,他们做剪枝,权值共享,矩阵压缩等。他们做法优化目标是重构里面具体参数,优化单元是一层一层的做。

我们这样做要要突破两点,第一点,我们更多的考虑了之前的那层output,我们希望输出的向量跟原始模型向量相似就好,中间的参数重构重要但不是那么必要。第二我们不是一层做完之后就不动了,是每层和每层合在一起去做。我们初始的网络压缩完之后,我们会更新里面的参数,最小化非线性响应的全局重建误差。


从率失真曲线可以看出,我们的方法压缩AlexNet和VGG-19,得到了新的state-of-the-art结果。

在固定压缩比情况下,也显示了算法的可靠性。

这是我们2018发在CVPR上的文章。我们还是考虑模型参数二值化,我们都知道模型二值化优点会极大的减小存储空间。但是它的缺点是会大大降低模型性能。我们的方法叫Modulated Convolutional Networks。MCN训练完成后,只需要存储二值化参数,在线推理的时候可以重构原来的参数

我们主要贡献是用M-Filters来重构网络参数。所谓的M-Filters就是通过学习得到的参数,它优化了三个损失,第一个损失是重构的线性分类误差。第二个损失是重构的网络参数误差,第三个,我们希望加强类内特征紧凑性,减小这种二值化带来的扰动,因此我们叫做中心损失,压缩完之后我们只保留二值参数

我们的实验验证,MCN有可能可以接近全精度的性能。这是一个网络结构用我们的方式去做在线恢复的结果,以及对应网络误差的学习过程。同一类特征要越紧凑越好,以加强类内特征的紧凑性。这是简单实现卷积网络的效果,感兴趣可以看我们的代码和论文。我们文章测了之前有代表性的网络结构,欢迎大家使用。

最后花一点时间讲一下我们在网络的加速这方面相关工作。这里包含三类,二值化网络、结构化剪枝以及张量分解。

二值化网络原理很简单,binary原则上是没有什么做优化。因此为了解决这问题,2015的NIPS 的文章,做BinaryConnect概念的映射,每次训练完这个大网络之后通过这个概念直接映射成对应的二值化网络。理论上可以极大加速算法对应的性能。

此外去做结构化的稀疏学习,所谓的结构化稀疏学习公式很多,其实很简单,要卷积的时候,对应参数要么同时为零,要么不为零。所以很自然的用组稀疏的方式放到结构里,利用梯度下降法可自动学习结构化稀疏参数

最后利用传统的CP张量分解算法,成功应用于深度网络模型加速中,主要思想是将一个张量滤波K分解成4个秩1的向量,然后进行卷积计算,减少了内存开销,同时加速了整个卷积层的计算。

我们第一个论文做的事情,之前大家考虑更多的是把通道域冗余去除。我们做的是进一步考虑空间域的冗余去除。我们的加速原理是只计算空间中重要的点,对于不重要的点可以利用knn或最近邻点近似估计(不重要的点的空间位置信息可以预先存储起来),这样我们可以节省很多空间的计算资源。

 

那么如何选择空间中重要的点位置信息呢?提出了基于三种的策略:随机的采样,均匀采样,以及impact采样。所有的位置保存形式可以用mask显示出来,对于不重要点的位置设置为0,重要的则为1。

对于随机和均匀的容易理解,关键是impact。对于impact主要利用了学习策略,首先认为如果空间点位置信息比较重要,删除后(即将位置点的计算值O为0)对于网络输出的损失变化较大。通过利用构建泰勒公式展开,整理并排序损失增量期望值E,通过选择指定数量的重要的点最为mask为1。

这是我们在ImageNet 和Googlenet上面做的实验,结果表明我们的方法相比其他的方法性能还是提高很多。

这是我们今年一篇新的论文,用全局和动态的方式做对应的剪枝,这里面的想法很直接。这之前所有文章都是剪掉就剪掉了,选取什么时候剪是一层一层的选。

我们允许这个网络被裁剪之后还可以被挪回来,所以是动态的,这是对应算法的框架。

我们的主要贡献有三点,第一点充分的考虑滤波间的关系,全局滤波移除,第二点是动态更新滤波的显著性,第三点是统一全局与动态方式。

这是我们的实验结果,由于时间的关系我就不一一解释了。

最后讲一下检测算法紧凑性。我们会发现在视觉分析系统里面,神经网络是比较慢,但有些时候它并不是速度的瓶颈,瓶颈还有其他地方。比如说传统的弱监督学习中的目标检测,我给一个图像级别的标签,然后去训练目标检测器。

这是之前的主流的弱监督目标检测的工作,他们不像全监督(比如yolo,SSD)一样快,他们很慢。在这之前最快只有2帧不到的在线检测速度,肯定不能实时。为什么呢?主要原因有两点,第一点它做了多尺度和翻转的数据扩充,因此时间消耗很大。第二点,检测过程需要提取候选区域,这个需要消耗大量的时间。

我们这个方式用的是现在很流行的生成对抗学习,生成器G是快速的强监督目标检测器。那我们用什么去训练生成器G呢?我们需要对抗,我们不是用简单的判别器。这里有代理器F,F是一个基于候选区域的,慢速的弱监督目标检测器。我们的判别器D不是判别检测性能好坏,是来判定检查结果来自于强监督的检测器还是弱监督的检测器,我们希望生成器G能骗过判别器D,使强监督更稳定一些。这就是利用弱监督的目标检测器和对抗生成学习来达到强监督的效果。

我们这个方式用的是现在很流行的生成对抗学习,生成器G是快速的强监督目标检测器。那我们用什么去训练生成器G呢?我们需要对抗,我们不是用简单的判别器。这里有代理器F,F是一个基于候选区域的,慢速的弱监督目标检测器。我们的判别器D不是判别检测性能好坏,是来判定检查结果来自于强监督的检测器还是弱监督的检测器,我们希望生成器G能骗过判别器D,使强监督更稳定一些。这就是利用弱监督的目标检测器和对抗生成学习来达到强监督的效果。

这是对应损失函数的设计,这里面的框架可以是任意的,比如生成器G可以用SSD,yolo等等,代理器F可以用任意的弱监督目标检测器。这里面的目标函数,第一是对抗图像检测结果来源。另外一个就是同一张图像检测结果要尽量一致。对代理器F和生成器F的训练是类似知识蒸馏的过程,我们希望强监督可以去学习弱监督的结果。因为弱监督是准的,强监督是快的,做完以后会得到又快又准的训练效果。

这是主要的实验结果,我们在PASCAL VOC 2007上可以达到最好的结果。

这是我们关于检测速度的实验,相对其他方法来说速度比之前最快方法提升了50多倍。准确度也有很大的提升。


这是一些相关的论文。


最后,感谢我们的团队,实验室的老师和同学今天都来开会,给我们这个工作做了很多工作,此外项目得到了很多企业支持,包括腾讯优图实验室等,谢谢大家!

入门
相关数据
神经网络技术
Neural Network

(人工)神经网络是一种起源于 20 世纪 50 年代的监督式机器学习模型,那时候研究者构想了「感知器(perceptron)」的想法。这一领域的研究者通常被称为「联结主义者(Connectionist)」,因为这种模型模拟了人脑的功能。神经网络模型通常是通过反向传播算法应用梯度下降训练的。目前神经网络有两大主要类型,它们都是前馈神经网络:卷积神经网络(CNN)和循环神经网络(RNN),其中 RNN 又包含长短期记忆(LSTM)、门控循环单元(GRU)等等。深度学习是一种主要应用于神经网络帮助其取得更好结果的技术。尽管神经网络主要用于监督学习,但也有一些为无监督学习设计的变体,比如自动编码器和生成对抗网络(GAN)。

深度神经网络技术
Deep neural network

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

大数据技术
Big data

大数据,又称为巨量资料,指的是传统数据处理应用软件不足以处理它们的大或复杂的数据集的术语。

嵌入式系统技术
Embedded system

嵌入式系统,是一种嵌入机械或电气系统内部、具有专一功能和实时计算性能的计算机系统。嵌入式系统常被用于高效控制许多常见设备,被嵌入的系统通常是包含数字硬件和机械部件的完整设备,例如汽车的防锁死刹车系统。

计算机视觉技术
Computer Vision

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

特征分解技术
Eigen decomposition

线性代数中,特征分解(Eigendecomposition),又称谱分解(Spectral decomposition)是将矩阵分解为由其特征值和特征向量表示的矩阵之积的方法。需要注意只有对可对角化矩阵才可以施以特征分解。

人机交互技术
Human-computer interaction

人机交互,是一门研究系统与用户之间的交互关系的学问。系统可以是各种各样的机器,也可以是计算机化的系统和软件。人机交互界面通常是指用户可见的部分。用户通过人机交互界面与系统交流,并进行操作。小如收音机的播放按键,大至飞机上的仪表板、或是发电厂的控制室。

映射技术
Mapping

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合A与B间存在着对应关系f,而且对于A中的每一个元素x,B中总有有唯一的一个元素y与它对应,就这种对应为从A到B的映射,记作f:A→B。其中,y称为元素x在映射f下的象,记作:y=f(x)。x称为y关于映射f的原象*。*集合A中所有元素的象的集合称为映射f的值域,记作f(A)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

损失函数技术
Loss function

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

目标函数技术
Objective function

目标函数f(x)就是用设计变量来表示的所追求的目标形式,所以目标函数就是设计变量的函数,是一个标量。从工程意义讲,目标函数是系统的性能标准,比如,一个结构的最轻重量、最低造价、最合理形式;一件产品的最短生产时间、最小能量消耗;一个实验的最佳配方等等,建立目标函数的过程就是寻找设计变量与目标的关系的过程,目标函数和设计变量的关系可用曲线、曲面或超曲面表示。

参数技术
parameter

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

剪枝技术
Pruning

剪枝顾名思义,就是删去一些不重要的节点,来减小计算或搜索的复杂度。剪枝在很多算法中都有很好的应用,如:决策树,神经网络,搜索算法,数据库的设计等。在决策树和神经网络中,剪枝可以有效缓解过拟合问题并减小计算复杂度;在搜索算法中,可以减小搜索范围,提高搜索效率。

监督学习技术
Supervised learning

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

时间复杂度技术
time complexity

在计算机科学中,算法的时间复杂度是一个函数,它定量描述了该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。例如,如果一个算法对于任何大小为 n (必须比 n0 大)的输入,它至多需要 5n3 + 3n 的时间运行完毕,那么它的渐近时间复杂度是 O(n3)。

权重技术
Weight

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

深度学习技术
Deep learning

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

哈希函数技术
Hash function

散列函数(英语:Hash function)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。

张量技术
Tensor

张量是一个可用来表示在一些矢量、标量和其他张量之间的线性关系的多线性函数,这些线性关系的基本例子有内积、外积、线性映射以及笛卡儿积。其坐标在 维空间内,有 个分量的一种量,其中每个分量都是坐标的函数,而在坐标变换时,这些分量也依照某些规则作线性变换。称为该张量的秩或阶(与矩阵的秩和阶均无关系)。 在数学里,张量是一种几何实体,或者说广义上的“数量”。张量概念包括标量、矢量和线性算子。张量可以用坐标系统来表达,记作标量的数组,但它是定义为“不依赖于参照系的选择的”。张量在物理和工程学中很重要。例如在扩散张量成像中,表达器官对于水的在各个方向的微分透性的张量可以用来产生大脑的扫描图。工程上最重要的例子可能就是应力张量和应变张量了,它们都是二阶张量,对于一般线性材料他们之间的关系由一个四阶弹性张量来决定。

重构技术
Refactoring

代码重构(英语:Code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。 软件重构需要借助工具完成,重构工具能够修改代码同时修改所有引用该代码的地方。在极限编程的方法学中,重构需要单元测试来支持。

哈希学习技术
Learning to hash

特征抽取技术
feature extraction

准确率技术
Accuracy

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

二值化技术
Binarization

VGG技术
VGG

GoogLeNet技术
GoogLeNet

卷积技术
Convolution

深度学习大讲堂
深度学习大讲堂

机器之心编辑

深度学习大讲堂
深度学习大讲堂

高质量原创内容平台,邀请学术界、工业界一线专家撰稿,致力于推送人工智能与深度学习最新技术、产品和活动信息。

返回顶部