机器学习的七大谣传,这都是根深蒂固的执念吧

在学习深度学习的过程中,我们常会遇到各种谣传,也会遇到各种想当然的「执念」。在本文中,作者总结了机器学习研究中常见的七大谣传,他们很多都是我们以前的固有概念,而最近又有新研究对它们提出质疑。所以在为机器学习填坑的生涯中,快自检这七个言传吧。

所以下面七个问题是你的「执念」吗?

  • TensorFlow 是个张量运算库?

  • 不听不听,还是要用测试集调试调试模型的……

  • 训练数据大概对模型训练都是有用的吧。

  • 训练超深残差网络怎么少得了批标准化(BN)!

  • 注意力机制难道不是卷积网络的替代品吗?

  • 不管怎么说,图像数据集应该都是接近真实分布的吧。

  • 主导分类的局部输入,难道不正是解释了神经网络吗?

谣传一:TensorFlow 是一个张量运算库

事实上,TensorFlow 是矩阵而不是张量运算库,这两者的区别非常大。

在 NeurIPS 2018 的论文 Computing Higher Order Derivatives of Matrix and Tensor Expressions 中,研究者表明,他们基于张量微积分(Tensor Calculus)所建立的新自动微分库具有明显更紧凑(compact)的表达式树(expression trees)。这是因为,张量微积分使用了索引标识,进而使前向模式和反向模式的处理方式相同。

与此相反,矩阵微积分出于标识方便的考虑隐藏了索引,这也通常会导致自动微分的表达式树显得过于复杂。

若有矩阵的乘法运算:C=AB。在前向模式中,有,而在反向模式中,则有。为了正确完成乘法计算,我们需要注意乘法的顺序和转置的使用。对于机器学习开发者而言,这只是在标识上的一点困惑,但对于程序而言,这是一个计算上的开销。

以下是另一个例子,毫无疑问意义更大一些:对于求行列式 c=det (A)。在前向模式中,有,而在反向模式中,则有。这里可以明显看出,无法使用同一个表达式树来表示两种模式,因为二者是由不同运算组成的。

总的来说,TensorFlow 和其他库(如 Mathematica、Maple、 Sage、SimPy、ADOL-C、TAPENADE、TensorFlow, Theano、PyTorch 和 HIPS autograd)实现的自动微分方法,会在前向模式和反向模式中,得出不同的、低效的表达式树。而在张量微积分中,通过索引标识保留了乘法的可交换性,进而轻松避免了这些问题(具体的实现原理,请阅读论文原文)

研究者通过反向传播,在三个不同问题上,测试了反向模式自动微分新方法的性能,并度量了其计算 Hessian 矩阵所消耗的时间。

第一个问题是优化一个形如 xAx 的二次函数;第二个问题是求解一个逻辑回归;第三个问题是求解矩阵分解

在 CPU 上,新方法与当下流行的 TensorFlow、Theano、PyTorch 和 HIPS autograd 等自动微分库相比,要快两个数量级。

在 GPU 上,研究者发现,新方法的提速更加明显,超出流行库的速度近似三个数量级。

意义:利用目前的深度学习库完成对二次或更高阶函数的求导,所花费的成本比本应消耗的更高。这包含了计算诸如 Hessian 的通用四阶张量(例:在 MAML 中,以及二阶牛顿法)。幸运的是,在「深度」学习中,二阶函数并不常见。但在「传统」机器学习中,它们却广泛存在:SVM 对偶问题、最小二乘回归、LASSO,高斯过程……

谣传二:机器学习研究者并不使用测试集进行验证

机器学习第一门课中,我们会学习到将数据集分为训练集、验证集以及测试集。将在训练集上训练得到模型,在验证集上进行效果评估,得出的效果用以指导开发者调节模型,以求在真实场景下获得效果最好的模型。直到模型调节好之后,才应该使用测试集,提供模型在真实场景下实际表现的无偏估计。如果开发者「作弊」地在训练或验证阶段使用了测试集,那么模型就很可能遇到对数据集偏差产生过拟合的风险:这类偏差信息是无法在数据集外泛化得到的。

机器学习研究高度竞争的环境下,对新算法 / 模型的评估,通常都会使用其在测试集上的表现。因此对于研究者而言,没有理由去写 / 提交一篇测试集效果不 SOTA 的论文。这也说明在机器学习研究领域,总体而言,使用测试集进行验证是一个普遍现象。

这种「作弊」行为的影响是什么?

在论文 Do CIFAR-10 Classifiers Generalize to CIFAR-10? 中,研究者们通过在 CIFAR-10 上建立了一个新的测试集,来研究此问题。为此,他们解析标注了来自 Tiny Images 库的图像,就像最初的数据采集过程一样。

常用测试集带来过拟合?你真的能控制自己不根据测试集调参吗 

研究者们之所以选择 CIFAR-10,是因为它是机器学习界使用最广泛的数据集之一,也是 NeurIPS 2017 中第二受欢迎的数据集(在 MNIST 之后)。CIFAR-10 数据集的创建过程也有完善公开的文档记录。而庞大的 Tiny Images 库中,也有足够的细粒度标签数据,进而使得在尽量不引起分布偏移的情况下重建一个测试集成为了可能。

研究者发现,很多神经网络模型在从原来的测试集切换到新测试集的时候,都出现了明显的准确率下降(4% - 15%)。但各模型的相对排名依然相对稳定。

总的来说,相较于表现较差的模型,表现较好模型的准确率下降程度也相对更小。这是一个振奋人心的消息,因为至少在 CIFAR-10 上,随着研究社区发明出更好机器学习模型 / 方法,由于「作弊」得到的泛化损失,也变得更加轻微。

谣传三:神经网络训练过程会使用训练集中的所有数据点。

有这样一个常见说法,数据是新的原油(财富),数据量越大,我们就能将数据相对不足的、过参数化的深度学习模型训练得越好。

在 ICLR 2019 的一篇论文 An Empirical Study of Example Forgetting During Deep Neural Network Learning 中,研究者们表示在多个常见的较小图像数据集中,存在显著冗余。令人震惊的是,在 CIFAR-10 中,我们可以在不显著影响测试集准确率的情况下剔除 30% 的数据点。

神经网络在 t+1 时刻给出误分类、而在 t 时刻给出了准确的分类时,就称为发生了遗忘事件(forgetting event)。这里的「时刻」是指训练网络的随机梯度下降(SGD)的更新次数。为了让记录遗忘事件变得可行,研究者每次只在用于完成 SGD 更新的小批量数据上运行神经网络,而不是在数据集的单个样本上运行。对于不会经历遗忘事件的样本,称之为不可遗忘样本(unfogettable example)。

研究者发现,MNIST 中 91.7%、permutedMNIST 中 75.3%、CIFAR-10 中 31.3% 以及 CIFAR-100 中 7.62% 的数据属于不可遗忘样本。这符合直观理解,因为随着图像数据集的多样性和复杂性上升,神经网络理应遗忘更多的样本。

相较于不可遗忘样本,可遗忘样本似乎表现了更多不寻常的独特特征。研究者将其类比于 SVM 中的支持向量,因为它们似乎划分了决策边界

与此相反,不可遗忘样本则编码了绝大部分的冗余信息。如果将样本按其不可遗忘性(unforgettability)进行排序,就可以通过删除绝大部分的不可遗忘样本,而对数据集完成压缩。

在 CIFAR-10 中,30% 的数据可以在不影响测试集准确率的情况下移除,而删除 35% 的数据则会产生 0.2% 的微小测试准确率下降。如果所移除的 30% 数据是随机挑选而非基于不可遗忘性,那么就会导致约 1% 的显著下降。

与此类似,在 CIFAR-100 上,8% 的数据可以在不影响测试集准确率的情况下移除。

这些发现表明,在神经网络的训练中,存在明显的数据冗余,就像 SVM 的训练中,非支持向量的数据可以在不影响模型决策的情况下移除。

意义:如果在开始训练之前,就能确定哪些样本是不可遗忘的,那么我们就可以通过删除这些数据来节省存储空间和训练时间。

谣传四:我们需要批标准化来训练超深度残差网络

长久以来,人们都相信「通过随机初始参数值和梯度下降,直接优化有监督目标函数(如:正确分类的对数概率)来训练深度网络,效果不会很好。」

从那时起,就有很多聪明的随机初始化方法、激活函数、优化方法以及其他诸如残差连接的结构创新,来降低利用梯度下降训练深度神经网络的难度。

但真正的突破来自于批标准化(batch normalization)的引入(以及其他的后续标准化技术),批标准化通过限制深度网络每层的激活值尺度,来缓和梯度消失、爆炸等问题。

值得注意的是,在今年的论文 Fixup Initialization: Residual Learning Without Normalization 中,研究表明在不引入任何标准化方法的情况下,通过使用 vanilla SGD,可以有效地训练一个 10,000 层的深度网络。

研究者比较了在 CIFAR-10 上,不同深度残差网络训练一个 epoch 的结果。并发现,虽然标准初始化方法在 100 层的网络上失败了,但 Fixup 和批标准化都在 10,000 层的网络上成功了。

研究者通过理论分析,证明了「特定神经层的梯度范数,以某个随网络深度增加而增大的数值为期望下界」,即梯度爆炸问题。

为避免此问题,Fixup 中的核心思想是在每 L 个残差分支上,对 m 个神经层的权重,使用同时依赖于 L 和 m 的因子进行调整。」

Fixup 使得能够在 CIFAR-10 上以高学习速率训练一个 110 层的深度残差网络,得到的测试集表现和利用批标准化训练的同结构网络效果相当。

研究者也进一步展示了在没有任何标准化处理下,基于 Fixup 得到的神经网络在 ImageNet 数据集和英语 - 德语机器翻译任务上相当的测试结果。

谣传五:注意力 > 卷积

机器学习领域,有一个正得到认同的说法,认为注意力机制是卷积的更优替代。重要的是 Vaswani et al 注意到「一个可分离卷积的计算成本,和一个自注意力层与一个逐点前馈层结合后的计算成本一致」。

即使是最新的 GAN 网络,也展示出自注意力相较于标准卷积,在对长期、多尺度依赖性的建模上效果更好。

在 ICLR 2019 的论文 Pay Less Attention with Lightweight and Dynamic Convolutions 中,研究者对自注意力机制在长期依赖性的建模中,参数的有效性和效率提出了质疑,他们表示一个受自注意力启发而得到的卷积变体,其参数效率更高。

轻量级卷积(lightweight convolutions)是深度可分离(depthwise-separable)的,它在时间维度上进行了 softmax 标准化,通道维度上共享权重,且在每个时间步上重新使用相同权重(类似于 RNN 网络)。动态卷积(dynamic convolutions)则是在每个时间步上使用不同权重的轻量级卷积。

这些技巧使得轻量级卷积和动态卷积相较于传统的不可分卷积,在效率上优越几个数量级。

研究者也证明,在机器翻译、语言建模和抽象总结等任务上,这些新卷积能够使用数量相当或更少的参数,达到或超过基于自注意力基准效果。

谣传六:图像数据集反映了自然世界真实图像分布

我们可能会认为,如今的神经网络在目标识别任务上,效果已经超出真人水平。这并不正确。在 ImageNet 等筛选出来的图像数据集上,它们的效果可能确实优于真人。但对于自然世界的真实图像,它们在目标识别上绝对无法比正常成年人做得更加出色。这是因为,从目前的图像数据集中抽取的图像,和从真实世界整体中抽取的图像并不一样,二者分布并不相同。

这里有一篇 2011 年比较老的论文: Unbiased Look at Dataset Bias,其中,研究者根据 12 个流行的图像数据集,尝试通过训练一个分类器用以判断一个给定图像来自于哪个数据集,来探索是否存在数据集偏差。

随机猜测的正确率应该是 1/12 = 8%,而实验结果的准确率高于 75%。

研究者在 HOG 特征上训练了一个 SVM,并发现其正确率达到 39%,高于随机猜测水平。如今,如果使用最先进的 CNN 来复现这一实验,很可能得到更好的分类器效果。

如果图像数据集确实能够表征来自自然世界的真实图像,就不应能够分辨出某个特定图像是来自于哪个数据集的。

但数据中的偏差,使得每个数据集变得可识别。例如,在 ImageNet 中,有非常多的「赛车」,不能认为这代表了通常意义上「汽车」的理想概念。

研究者在某数据集训练分类器,并在其他数据集上评估表现效果,进一步度量数据集的价值。根据这个指标,LabelMe 和 ImageNet 是偏差最小的数据集,在「一篮子货币(basket of currencies)」上得分 0.58。所有数据集的得分都小于 1,表明在其他数据集上训练的模型都给出了更低的准确度。在没有数据集偏差的理想情况下,应该有一些得分是高于 1 的。

谣传七:显著图(saliency maps)是解释神经网络的一个稳健方法。

虽然神经网络通常被认为是黑箱模型,现在还是已经有了有非常多对其进行解释的探索。显著图,或其他类似对特征或训练样本赋予重要性得分的方法,是其中最受欢迎的形式。

能够将图像进行特定分类的理由,总结为图像特定部分对模型决策过程中起的作用,是一个非常诱人的课题。已有的几种计算显著图的方法,通常都基于神经网络在特定图像上的激活情况,以及网络中所传播的梯度。

在 AAAI 2019 的一篇论文 Interpretation of Neural Networks is Fragile 中,研究者表明,可以通过引入一个无法感知的扰动,来破坏一个特定图像的显著图。

「帝王蝶之所以被分类为帝王蝶,并不是因为翅膀的图案样式,而是因为背景上一些不重要的绿色树叶。」

高维图像通常都位于深度神经网络所建立的决策边界附近,因此很容易受到对抗攻击的影响。对抗攻击会将图像移动至决策边界的另一边,而对抗解释攻击则是将图像在相同决策区域内,沿着决策边界等高线移动。

为实现此攻击,研究者所使用的基本方法是 Goodfellow 提出的 FGSM(fast gradient sign method)方法的变体,这是最早的一种为实现有效对抗攻击而引入的方法。这也表明,其他更近的、更复杂的对抗攻击也可以用于攻击神经网络的解释性。

意义:随着深度学习越来越普遍地应用于高风险场景,如医学成像,对于如何解释神经网络所做的结论也越发重要。例如,虽然 CNN 网络将 MRI 图像上的小点识别为恶性致癌肿瘤是非常好的事情,但如果它们是基于非常脆弱的解释方法,那么也不应姑妄信之。


原文链接:https://crazyoscarchang.github.io/2019/02/16/seven-myths-in-machine-learning-research/

理论深度残差网络矩阵TensorFlow深度学习
1
相关数据
深度学习技术

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

范数技术

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

逻辑回归技术

逻辑回归(英语:Logistic regression 或logit regression),即逻辑模型(英语:Logit model,也译作“评定模型”、“分类评定模型”)是离散选择法模型之一,属于多重变量分析范畴,是社会学、生物统计学、临床、数量心理学、计量经济学、市场营销等统计实证分析的常用方法。

激活函数技术

在 计算网络中, 一个节点的激活函数定义了该节点在给定的输入或输入的集合下的输出。标准的计算机芯片电路可以看作是根据输入得到"开"(1)或"关"(0)输出的数字网络激活函数。这与神经网络中的线性感知机的行为类似。 一种函数(例如 ReLU 或 S 型函数),用于对上一层的所有输入求加权和,然后生成一个输出值(通常为非线性值),并将其传递给下一层。

权重技术

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

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

感知技术

知觉或感知是外界刺激作用于感官时,脑对外界的整体的看法和理解,为我们对外界的感官信息进行组织和解释。在认知科学中,也可看作一组程序,包括获取信息、理解信息、筛选信息、组织信息。与感觉不同,知觉反映的是由对象的各样属性及关系构成的整体。

自注意力技术

自注意力(Self-attention),有时也称为内部注意力,它是一种涉及单序列不同位置的注意力机制,并能计算序列的表征。自注意力在多种任务中都有非常成功的应用,例如阅读理解、摘要概括、文字蕴含和语句表征等。自注意力这种在序列内部执行 Attention 的方法可以视为搜索序列内部的隐藏关系,这种内部关系对于翻译以及序列任务的性能非常重要。

基准技术

一种简单的模型或启发法,用作比较模型效果时的参考点。基准有助于模型开发者针对特定问题量化最低预期效果。

参数技术

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

TensorFlow技术

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

注意力机制技术

我们可以粗略地把神经注意机制类比成一个可以专注于输入内容的某一子集(或特征)的神经网络. 注意力机制最早是由 DeepMind 为图像分类提出的,这让「神经网络在执行预测任务时可以更多关注输入中的相关部分,更少关注不相关的部分」。当解码器生成一个用于构成目标句子的词时,源句子中仅有少部分是相关的;因此,可以应用一个基于内容的注意力机制来根据源句子动态地生成一个(加权的)语境向量(context vector), 然后网络会根据这个语境向量而不是某个固定长度的向量来预测词。

张量技术

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

验证集技术

验证数据集是用于调整分类器超参数(即模型结构)的一组数据集,它有时也被称为开发集(dev set)。

机器翻译技术

机器翻译(MT)是利用机器的力量「自动将一种自然语言(源语言)的文本翻译成另一种语言(目标语言)」。机器翻译方法通常可分成三大类:基于规则的机器翻译(RBMT)、统计机器翻译(SMT)和神经机器翻译(NMT)。

神经网络技术

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

深度残差网络技术

残差网络是为了解决深度神经网络(DNN)隐藏层过多时的网络退化问题而提出。退化(degradation)问题是指:当网络隐藏层变多时,网络的准确度达到饱和然后急剧退化,而且这个退化不是由于过拟合引起的。

高斯过程技术

梯度下降技术

梯度下降是用于查找函数最小值的一阶迭代优化算法。 要使用梯度下降找到函数的局部最小值,可以采用与当前点的函数梯度(或近似梯度)的负值成比例的步骤。 如果采取的步骤与梯度的正值成比例,则接近该函数的局部最大值,被称为梯度上升。

决策边界技术

在具有两类的统计分类问题中,决策边界或决策曲面是一个超曲面,它将底层的向量空间分成两组,每组一个。分类器会将决策边界一侧的所有点分为属于一个类,而另一侧属于另一个类。也即二元分类或多类别分类问题中,模型学到的类别之间的分界线。

准确率技术

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

随机梯度下降技术

梯度下降(Gradient Descent)是遵循成本函数的梯度来最小化一个函数的过程。这个过程涉及到对成本形式以及其衍生形式的认知,使得我们可以从已知的给定点朝既定方向移动。比如向下朝最小值移动。 在机器学习中,我们可以利用随机梯度下降的方法来最小化训练模型中的误差,即每次迭代时完成一次评估和更新。 这种优化算法的工作原理是模型每看到一个训练实例,就对其作出预测,并重复迭代该过程到一定的次数。这个流程可以用于找出能导致训练数据最小误差的模型的系数。

逻辑技术

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

目标函数技术

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

过拟合技术

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

微积分技术

微积分(Calculus)是高等数学中研究函数的微分(Differentiation)、积分(Integration)以及有关概念和应用的数学分支。它是数学的一个基础学科。内容主要包括极限、微分学、积分学及其应用。微分学包括求导数的运算,是一套关于变化率的理论。它使得函数、速度、加速度和曲线的斜率等均可用一套通用的符号进行讨论。积分学,包括求积分的运算,为定义和计算面积、体积等提供一套通用的方法 。

深度神经网络技术

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

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