小一一作者

当前深度神经网络模型压缩和加速都有哪些方法?

本期推荐的论文笔记来自 PaperWeekly 社区用户 @yanjoy本文全面概述了深度神经网络的压缩方法,主要可分为参数修剪与共享、低秩分解、迁移/压缩卷积滤波器和知识精炼,论文对每一类方法的性能、相关应用、优势和缺陷等方面进行了独到分析。

关于作者:小一一,北京大学在读硕士,研究方向为深度模型压缩加速。个人主页:http://yanjoy.win

■ 论文 | A Survey of Model Compression and Acceleration for Deep Neural Networks

■ 链接 | https://www.paperweekly.site/papers/1675

■ 作者 | Yu Cheng / Duo Wang / Pan Zhou / Tao Zhang

研究背景

神经网络方面,早在上个世纪末,Yann LeCun 等人已经使用神经网络成功识别了邮件上的手写邮编。至于深度学习的概念是由 Geoffrey Hinton 等人首次提出,而在 2012 年,Krizhevsky 等人采用深度学习算法,以超过第二名以传统人工设计特征方法准确率 10% 的巨大领先取得了 ImageNet 图像分类比赛冠军。

此后的计算机视觉比赛已经被各种深度学习模型所承包。这些模型依赖于具有数百甚至数十亿参数的深度网络,传统 CPU 对如此庞大的网络一筹莫展,只有具有高计算能力的 GPU 才能让网络得以相对快速训练。

如上文中比赛用模型使用了 1 个包含 5 个卷积层和 3 个完全连接层的 6000 万参数的网络。通常情况下,即使使用当时性能顶级的 GPU NVIDIA K40 来训练整个模型仍需要花费两到三天时间。对于使用全连接的大规模网络,其参数规模甚至可以达到数十亿量级。

当然,为了解决全连接层参数规模的问题,人们转而考虑增加卷积层,使全连接参数降低。随之带来的负面影响便是大大增长了计算时间与能耗。

对于具有更多层和节点的更大的神经网络减少其存储和计算成本变得至关重要,特别是对于一些实时应用,如在线学习增量学习以及自动驾驶

深度学习的另一端,即更贴近人们生活的移动端,如何让深度模型在移动设备上运行,也是模型压缩加速的一大重要目标

Krizhevsky 在 2014 年的文章中,提出了两点观察结论:卷积层占据了大约 90-95% 的计算时间和参数规模,有较大的值;全连接层占据了大约 5-10% 的计算时间,95% 的参数规模,并且值较小。这为后来的研究深度模型的压缩与加速提供了统计依据。

一个典型的例子是具有 50 个卷积层的 ResNet-50 需要超过 95MB 的存储器以及 38 亿次浮点运算。在丢弃了一些冗余的权重后,网络仍照常工作,但节省了超过 75% 的参数和 50% 的计算时间。

当然,网络模型的压缩和加速的最终实现需要多学科的联合解决方案,除了压缩算法,数据结构、计算机体系结构和硬件设计等也起到了很大作用。本文将着重介绍不同的深度模型压缩方法,并进行对比。

研究现状

综合现有的深度模型压缩方法,它们主要分为四类: 

  • 参数修剪和共享(parameter pruning and sharing) 

  • 低秩因子分解(low-rank factorization) 

  • 转移/紧凑卷积滤波器(transferred/compact convolutional filters) 

  • 知识蒸馏(knowledge distillation) 

基于参数修剪和共享的方法针对模型参数的冗余性,试图去除冗余和不重要的项。基于低秩因子分解的技术使用矩阵/张量分解来估计深度学习模型的信息参数。基于传输/紧凑卷积滤波器的方法设计了特殊的结构卷积滤波器来降低存储和计算复杂度。知识蒸馏方法通过学习一个蒸馏模型,训练一个更紧凑的神经网络来重现一个更大的网络的输出。 

一般来说,参数修剪和共享,低秩分解和知识蒸馏方法可以用于全连接层和卷积层的 CNN,但另一方面,使用转移/紧凑型卷积核的方法仅支持卷积层。

低秩因子分解和基于转换/紧凑型卷积核的方法提供了一个端到端的流水线,可以很容易地在 CPU/GPU 环境中实现。

相反参数修剪和共享使用不同的方法,如矢量量化,二进制编码和稀疏约束来执行任务,这导致常需要几个步骤才能达到目标。

▲ 表1:不同模型的简要对比

关于训练协议,基于参数修剪/共享、低秩分解的模型可以从预训练模型或者从头开始训练,因此灵活而有效。然而转移/紧凑的卷积核和知识蒸馏模型只能支持从零开始训练。

这些方法是独立设计和相辅相成的。例如,转移层和参数修剪和共享可以一起使用,并且模型量化和二值化可以与低秩近似一起使用以实现进一步的加速。

不同模型的简要对比,如表 1 所示。下文针对这些方法做一简单介绍与讨论。

参数修剪和共享

根据减少冗余(信息冗余或参数空间冗余)的方式,这些参数修剪和共享可以进一步分为三类:模型量化和二进制化、参数共享和结构化矩阵(structural matrix)。

量化和二进制化

▲ 图2

网络量化通过减少表示每个权重所需的比特数来压缩原始网络。Gong et al. 对参数值使用 K-Means 量化。Vanhoucke et al. 使用了 8 比特参数量化可以在准确率损失极小的同时实现大幅加速。

Han S 提出一套完整的深度网络的压缩流程:首先修剪不重要的连接,重新训练稀疏连接的网络。然后使用权重共享量化连接的权重,再对量化后的权重和码本进行霍夫曼编码,以进一步降低压缩率。如图 2 所示,包含了三阶段的压缩方法:修剪、量化(quantization)和霍夫曼编码

修剪减少了需要编码的权重数量,量化和霍夫曼编码减少了用于对每个权重编码的比特数。对于大部分元素为 0 的矩阵可以使用稀疏表示,进一步降低空间冗余,且这种压缩机制不会带来任何准确率损失。这篇论文获得了 ICLR 2016 的 Best Paper。 

在量化级较多的情况下准确率能够较好保持,但对于二值量化网络的准确率在处理大型 CNN 网络,如 GoogleNet 时会大大降低。另一个缺陷是现有的二进制化方法都基于简单的矩阵近似,忽视了二进制化对准确率损失的影响。

剪枝和共享

网络剪枝和共享起初是解决过拟合问题的,现在更多得被用于降低网络复杂度。

早期所应用的剪枝方法称为偏差权重衰减(Biased Weight Decay),其中最优脑损伤(Optimal Brain Damage)和最优脑手术(Optimal Brain Surgeon)方法,是基于损失函数的 Hessian 矩阵来减少连接的数量。

他们的研究表明这种剪枝方法的精确度比基于重要性的剪枝方法(比如 Weight Decay 方法)更高。这个方向最近的一个趋势是在预先训练的 CNN 模型中修剪冗余的、非信息量的权重

在稀疏性限制的情况下培训紧凑的 CNN 也越来越流行,这些稀疏约束通常作为 l_0 或 l_1 范数调节器在优化问题中引入。 

剪枝和共享方法存在一些潜在的问题。首先,若使用了 l_0 或 l_1 正则化,则剪枝方法需要更多的迭代次数才能收敛,此外,所有的剪枝方法都需要手动设置层的超参数,在某些应用中会显得很复杂。

▲ 图3:剪枝和共享

设计结构化矩阵

该方法的原理很简单:如果一个 m×n 阶矩阵只需要少于 m×n 个参数来描述,就是一个结构化矩阵(structured matrix)。通常这样的结构不仅能减少内存消耗,还能通过快速的矩阵-向量乘法和梯度计算显著加快推理和训练的速度。 

这种方法的一个潜在的问题是结构约束会导致精确度的损失,因为约束可能会给模型带来偏差。另一方面,如何找到一个合适的结构矩阵是困难的。没有理论的方法来推导出来。因而该方法没有广泛推广。

低秩分解和稀疏性

一个典型的 CNN 卷积核是一个 4D 张量,而全连接层也可以当成一个 2D 矩阵,低秩分解同样可行。这些张量中可能存在大量的冗余。所有近似过程都是逐层进行的,在一个层经过低秩滤波器近似之后,该层的参数就被固定了,而之前的层已经用一种重构误差标准(reconstruction error criterion)微调过。这是压缩 2D 卷积层的典型低秩方法,如图 4 所示。

▲ 图4:压缩2D卷积层的典型低秩方法

使用低阶滤波器加速卷积的时间已经很长了,例如,高维 DCT(离散余弦变换)和使用张量积的小波系统分别由 1D DCT 变换和 1D 小波构成。

学习可分离的 1D 滤波器由 Rigamonti 等人提出,遵循字典学习的想法。Jaderberg 的工作提出了使用不同的张量分解方案,在文本识别准确率下降 1% 的情况下实现了 4.5 倍加速。

一种 flatten 结构将原始三维卷积转换为 3 个一维卷积参数复杂度由 O(XYC)降低到O(X+Y+C),运算复杂度由 O(mnCXY) 降低到 O(mn(X+Y+C)。 

低阶逼近是逐层完成的。完成一层的参数确定后,根据重建误差准则对上述层进行微调。这些是压缩二维卷积层的典型低秩方法,如图 2 所示。

按照这个方向,Lebedev 提出了核张量的典型多项式(CP)分解,使用非线性最小二乘法来计算。Tai 提出了一种新的从头开始训练低秩约束 CNN 的低秩张量分解算法。它使用批量标准化(BN)来转换内部隐藏单元的激活。一般来说, CP 和 BN分解方案都可以用来从头开始训练 CNN。 

低秩方法很适合模型压缩和加速,但是低秩方法的实现并不容易,因为它涉及计算成本高昂的分解操作。另一个问题是目前的方法都是逐层执行低秩近似,无法执行全局参数压缩,因为不同的层具备不同的信息。最后,分解需要大量的重新训练来达到收敛。

迁移/压缩卷积滤波器

虽然目前缺乏强有力的理论,但大量的实证证据支持平移不变性和卷积权重共享对于良好预测性能的重要性。

使用迁移卷积层对 CNN 模型进行压缩受到 Cohen 的等变群论(equivariant group theory)的启发。使 x 作为输入,Φ(·) 作为网络或层,T(·) 作为变换矩阵。则等变概念可以定义为:

即使用变换矩阵 T(·) 转换输入 x,然后将其传送至网络或层 Φ(·),其结果和先将 x 映射到网络再变换映射后的表征结果一致。注意 T 和 T' 在作用到不同对象时可能会有不同的操作。根据这个理论,将变换应用到层次或滤波器 Φ(·) 来压缩整个网络模型是合理的。

使用紧凑的卷积滤波器可以直接降低计算成本。在 Inception 结构中使用了将 3×3 卷积分解成两个 1×1 的卷积;SqueezeNet 提出用 1×1 卷积来代替 3×3 卷积,与 AlexNet 相比,SqueezeNet 创建了一个紧凑的神经网络参数少了 50 倍,准确度相当。 

这种方法仍有一些小问题解决。首先,这些方法擅长处理广泛/平坦的体系结构(如 VGGNet)网络,而不是狭窄的/特殊的(如 GoogleNet,ResidualNet)。其次,转移的假设有时过于强大,不足以指导算法,导致某些数据集的结果不稳定。

知识蒸馏

利用知识转移(knowledge transfer)来压缩模型最早是由 Caruana 等人提出的。他们训练了带有伪数据标记的强分类器的压缩/集成模型,并复制了原始大型网络的输出,但是,这项工作仅限于浅模型。

后来改进为知识蒸馏,将深度和宽度的网络压缩成较浅的网络,其中压缩模型模拟复杂模型所学习的功能,主要思想是通过学习通过 softmax 获得的类分布输出,将知识从一个大的模型转移到一个小的模型。 

Hinton 的工作引入了知识蒸馏压缩框架,即通过遵循“学生-教师”的范式减少深度网络的训练量,这种“学生-教师”的范式,即通过软化“教师”的输出而惩罚“学生”。为了完成这一点,学生学要训练以预测教师的输出,即真实的分类标签。这种方法十分简单,但它同样在各种图像分类任务中表现出较好的结果。 

基于知识蒸馏的方法能令更深的模型变得更加浅而显著地降低计算成本。但是也有一些缺点,例如只能用于具有 Softmax 损失函数分类任务,这阻碍了其应用。另一个缺点是模型的假设有时太严格,其性能有时比不上其它方法。

讨论与挑战

深度模型的压缩和加速技术还处在早期阶段,目前还存在以下挑战: 

  • 依赖于原模型,降低了修改网络配置的空间,对于复杂的任务,尚不可靠;

  • 通过减少神经元之间连接或通道数量的方法进行剪枝,在压缩加速中较为有效。但这样会对下一层的输入造成严重的影响;

  • 结构化矩阵和迁移卷积滤波器方法必须使模型具有较强的人类先验知识,这对模型的性能和稳定性有显著的影响。研究如何控制强加先验知识的影响是很重要的;

  • 知识精炼方法有很多优势,比如不需要特定的硬件或实现就能直接加速模型。个人觉得这和迁移学习有些关联。 

  • 多种小型平台(例如移动设备、机器人自动驾驶汽车)的硬件限制仍然是阻碍深层 CNN 发展的主要问题。相比于压缩,可能模型加速要更为重要,专用芯片的出现固然有效,但从数学计算上将乘加法转为逻辑和位移运算也是一种很好的思路。

量化实验中问题与讨论

实验框架的选择

TensorFlow 支持的是一种静态图,当模型的参数确定之后,便无法继续修改。这对于逐阶段、分层的训练带来了一定的困难。相比之下,Pytorch 使用了动态图,在定义完模型之后还可以边训练边修改其参数,具有很高的灵活性。这也是深度学习未来的发展方向。

目前的开发者版本 nightly 中,TensorFlow也开始支持动态图的定义,但还未普及。 因此在选择上,科研和实验优先用 Pytorch,工程和应用上可能要偏 TensorFlow。 

聚类算法的低效性

聚类算法是量化的前提,sklearn 中提供了诸如 K-Means,Mean-shift,Gaussian mixtures 等可用的方法。

其中 K-Means 是一种简单有效而较为快速的方法了。在个人电脑上,由于训练网络参数规模较小,因而无法体现出其运算时间。在对 VGG 这样大型的网络测试时,发现对于 256 个聚类中心,在 fc 的 4096∗4096 维度的全连接层进行聚类时,耗时超过 20 分钟(没有运行完便停止了),严重影响了算法的实用性。

目前的解决办法是抽样采样,如对 1% 的参数进行聚类作为整体参数的聚类中心。这样操作后聚类时间能缩短到 5 分钟以内。 

有没有一个更加简便的方法呢?对于训练好的一个模型,特别是经过 l2 正则化的,其参数分布基本上可以看作是一个高斯分布模型,对其进行拟合即可得到分布参数

这样问题就转化为:对一个特定的高斯分布模型,是否能够根据其参数直接得到聚类中心?

如果可以,那这个聚类过程将会大大缩短时间:首先对权重进行直方图划分,得到不同区间的参数分布图,再由此拟合高斯函数,最后用这个函数获得聚类中心。这个工作需要一定的数学方法,这里只是简单猜想一下。

重训练带来的时间成本

我们日常说道的数据压缩,是根据信源的分布、概率进行的,特别是通过构建字典,来大大减少信息冗余。

这套方法直接使用在模型上,效果往往不好。一个最重要的原因就是参数虽然有着美妙的分布,但几乎没有两个相同的参数。在对 Alexnet 进行 gzip 压缩后,仅仅从 233MB 下降到 216MB,远不如文本以及图像压缩算法的压缩率。因此传统方法难以解决深度学习的问题。 

剪枝量化虽好,但其问题也是传统压缩所没有的,那就是重训练所带来的时间成本。这个过程就是人为为参数增加条件,让网络重新学习降低 loss 的过程,因此也无法再重新恢复成原始的网络,因为参数不重要,重要的是结果。

这个过程和训练一样,是痛苦而漫长的。又因为是逐层训练,一个网络的训练时间和层数密切相关。

Mnist 这种简单任务,512∗512 的权重量化重训练,由最开始的 8s 增加到 36s,增加了约 4 倍时间(不排除个人代码优化不佳的可能)。如果在 GPU 服务器上,Alex 的时间成本可能还是勉强接受的,要是有 GoogleNet,ResNet 这种,真的是要训到天荒地老了。

实现过程中,有很多操作无法直接实现,或者没有找到简便的方法,不得不绕了个弯子,确实会严重降低性能。

PaperWeekly
PaperWeekly

推荐、解读、讨论和报道人工智能前沿论文成果的学术平台。

入门深度神经网络TensorFlow深度学习计算机视觉
相关数据
杨立昆人物

杨立昆(法语:Yann Le Cun,英语:Yann LeCun,1960年7月8日-)是一位计算机科学家,他在机器学习、计算机视觉、移动机器人和计算神经科学等领域都有很多贡献。他最著名的工作是在光学字符识别和计算机视觉上使用卷积神经网络 (CNN),他也被称为卷积网络之父。他同Léon Bottou和Patrick Haffner等人一起创建了DjVu图像压缩技术。他同Léon Bottou一起开发了Lush语言。

杰弗里·辛顿人物

杰弗里·埃弗里斯特·辛顿 FRS(英语:Geoffrey Everest Hinton)(1947年12月6日-)是一位英国出生的加拿大计算机学家和心理学家,以其在类神经网络方面的贡献闻名。辛顿是反向传播算法和对比散度算法的发明人之一,也是深度学习的积极推动者。

深度学习技术

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

自动驾驶技术技术

从 20 世纪 80 年代首次成功演示以来(Dickmanns & Mysliwetz (1992); Dickmanns & Graefe (1988); Thorpe et al. (1988)),自动驾驶汽车领域已经取得了巨大进展。尽管有了这些进展,但在任意复杂环境中实现完全自动驾驶导航仍被认为还需要数十年的发展。原因有两个:首先,在复杂的动态环境中运行的自动驾驶系统需要人工智能归纳不可预测的情境,从而进行实时推论。第二,信息性决策需要准确的感知,目前大部分已有的计算机视觉系统有一定的错误率,这是自动驾驶导航所无法接受的。

增量学习技术

增量学习作为机器学习的一种方法,现阶段得到广泛的关注。对于满足以下条件的学习方法可以定义为增量学习方法: * 可以学习新的信息中的有用信息 * 不需要访问已经用于训练分类器的原始数据 * 对已经学习的知识具有记忆功能 * 在面对新数据中包含的新类别时,可以有效地进行处理

范数技术

范数(norm),是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,是一个函数,其为向量空间内的所有向量赋予非零的正长度或大小。半范数反而可以为非零的向量赋予零长度。

图像压缩技术

图像压缩是数据压缩技术在数字图像上的应用,目的是减少图像数据中的冗余信息,从而用更加高效的格式存储和传输数据。图像压缩可以是有损数据压缩也可以是无损数据压缩。

最小二乘法技术

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。 利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。 “最小二乘法”是对过度确定系统,即其中存在比未知数更多的方程组,以回归分析求得近似解的标准方法。在这整个解决方案中,最小二乘法演算为每一方程式的结果中,将残差平方和的总和最小化。

权重技术

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

二值化技术

二值化是将像素图像转换为二进制图像的过程。

高斯分布技术

正态分布是一个非常常见的连续概率分布。由于中心极限定理(Central Limit Theorem)的广泛应用,正态分布在统计学上非常重要。中心极限定理表明,由一组独立同分布,并且具有有限的数学期望和方差的随机变量X1,X2,X3,...Xn构成的平均随机变量Y近似的服从正态分布当n趋近于无穷。另外众多物理计量是由许多独立随机过程的和构成,因而往往也具有正态分布。

重构技术

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

VGG技术

2014年,牛津大学提出了另一种深度卷积网络VGG-Net,它相比于AlexNet有更小的卷积核和更深的层级。AlexNet前面几层用了11×11和5×5的卷积核以在图像上获取更大的感受野,而VGG采用更小的卷积核与更深的网络提升参数效率。VGG-Net 的泛化性能较好,常用于图像特征的抽取目标检测候选框生成等。VGG最大的问题就在于参数数量,VGG-19基本上是参数量最多的卷积网络架构。VGG-Net的参数主要出现在后面两个全连接层,每一层都有4096个神经元,可想而至这之间的参数会有多么庞大。

参数技术

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

剪枝技术

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

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

自动驾驶汽车技术

自动驾驶汽车,又称为无人驾驶汽车、电脑驾驶汽车或轮式移动机器人,是自动化载具的一种,具有传统汽车的运输能力。作为自动化载具,自动驾驶汽车不需要人为操作即能感测其环境及导航。

卷积技术

损失函数技术

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

离散余弦变换技术

离散余弦变换(英语:discrete cosine transform, DCT)是与傅里叶变换相关的一种变换,类似于离散傅里叶变换,但是只使用实数。离散余弦变换相当于一个长度大概是它两倍的离散傅里叶变换,这个离散傅里叶变换是对一个实偶函数进行的(因为一个实偶函数的傅里叶变换仍然是一个实偶函数),在有些变形里面需要将输入或者输出的位置移动半个单位(DCT有8种标准类型,其中4种是常见的)。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

张量技术

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

数据压缩技术

数据压缩是指在不丢失有用信息的前提下,缩减数据量以减少存储空间,提高其传输、存储和处理效率,或按照一定的算法对数据进行重新组织,减少数据的冗余和存储的空间的一种技术方法。数据压缩包括有损压缩和无损压缩。在计算机科学和信息论中,数据压缩或者源编码是按照特定的编码机制用比未经编码少的数据位元(或者其它信息相关的单位)表示信息的过程。

计算机视觉技术

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

机器人技术技术

机器人学(Robotics)研究的是「机器人的设计、制造、运作和应用,以及控制它们的计算机系统、传感反馈和信息处理」 [25] 。 机器人可以分成两大类:固定机器人和移动机器人。固定机器人通常被用于工业生产(比如用于装配线)。常见的移动机器人应用有货运机器人、空中机器人和自动载具。机器人需要不同部件和系统的协作才能实现最优的作业。其中在硬件上包含传感器、反应器和控制器;另外还有能够实现感知能力的软件,比如定位、地图测绘和目标识别。之前章节中提及的技术都可以在机器人上得到应用和集成,这也是人工智能领域最早的终极目标之一。

神经网络技术

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

准确率技术

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

映射技术

映射指的是具有某种特殊结构的函数,或泛指类函数思想的范畴论中的态射。 逻辑和图论中也有一些不太常规的用法。其数学定义为:两个非空集合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)。同样的,在机器学习中,映射就是输入与输出之间的对应关系。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

先验知识技术

先验(apriori ;也译作 先天)在拉丁文中指“来自先前的东西”,或稍稍引申指“在经验之前”。近代西方传统中,认为先验指无需经验或先于经验获得的知识。先验知识不依赖于经验,比如,数学式子2+2=4;恒真命题“所有的单身汉一定没有结婚”;以及来自纯粹理性的推断“本体论证明”

Alex网络技术

AlexNet是一个卷积神经网络的名字,最初是与CUDA一起使用GPU支持运行的,AlexNet是2012年ImageNet竞赛冠军获得者Alex Krizhevsky设计的。该网络达错误率大大减小了15.3%,比亚军高出10.8个百分点。AlexNet是由SuperVision组设计的,由Alex Krizhevsky, Geoffrey Hinton和Ilya Sutskever组成。

矢量量化技术

矢量量化是70年代后期发展起来的一种数据压缩技术基本思想:将若干个标量数据组构成一个矢量,然后在矢量空间给以整体量化,从而压缩了数据而不损失多少信息。它是一种数据压缩技=术,指从N维实空间RN到RN中L个离散矢量的映射,也可称为分组量化,标量量化是矢量量化在维数为1时的特例。

规范化技术

规范化:将属性数据按比例缩放,使之落入一个小的特定区间,如-1.0 到1.0 或0.0 到1.0。 通过将属性数据按比例缩放,使之落入一个小的特定区间,如0.0到1.0,对属性规范化。对于距离度量分类算法,如涉及神经网络或诸如最临近分类和聚类的分类算法,规范化特别有用。如果使用神经网络后向传播算法进行分类挖掘,对于训练样本属性输入值规范化将有助于加快学习阶段的速度。对于基于距离的方法,规范化可以帮助防止具有较大初始值域的属性与具有较小初始值域的属相相比,权重过大。有许多数据规范化的方法,包括最小-最大规范化、z-score规范化和按小数定标规范化。

迁移学习技术

迁移学习是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。 迁移学习对人类来说很常见,例如,我们可能会发现学习识别苹果可能有助于识别梨,或者学习弹奏电子琴可能有助于学习钢琴。

过拟合技术

过拟合是指为了得到一致假设而使假设变得过度严格。避免过拟合是分类器设计中的一个核心任务。通常采用增大数据量和测试样本集的方法对分类器性能进行评价。

神经元技术

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

在线学习技术

在计算机科学中,在线学习是一种机器学习方法。和立即对整个训练数据集进行学习的批处理学习技术相反,在线学习的数据按顺序可用,并在每个步骤使用未来数据更新最佳预测器。

深度神经网络技术

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

推荐文章
暂无评论
暂无评论~