编者按:本文由微信公众号”新智元“(ID:AI_era)编译,来源:timdettmers.com,作者:Tim Dettmers,编译:胡祥杰,闻菲,刘小芹;36氪经授权发布。
这篇博客文章通过审视计算力、数据和深度学习研究人员数量的增长,证明深度学习可能会在逐渐放缓的发展步伐中走向停滞。作者研究最新的深度学习研究论文,向我们展示了类似的问题。作者以中国的深度学习发展情况作为典型研究例子,首先认为到2030年全世界有66%到80%的研究都将发生在中国,而根据人口数据和经济发展情况,绝大部分AI研究员可以拥有的GPU数量将不超过1-4颗。在数据大爆发的背景下,这将极大地阻碍AI的发展。
(作者/Tim Dettmers) 这篇博客文章讨论了长期的 AI 研究方向,并对目前研究领域存在的短期思维及其陷阱进行了批判性的审视。在本系列的第一篇博文中,我首先将通过计算和硬件的使用情况来讨论数据和计算能力的长期发展趋势。然后我们会提供研究人员的人口统计数据,以证明,无法获得强大的计算资源的研究人员的比例正在快速增长。
随后,我们将重点介绍支撑这篇博客的核心论文《重新审视深度学习时代数据的不合理有效性》(Revisiting Unreasonable Effectiveness of Data in Deep Learning Era),它揭示了虽然更多的数据可以提高预测性能,但它带来了相当沉重的计算负担。我们还将看到,与专业化的技术相比,对更多数据进行预训练能取得的效果仅仅与预测能力相当。
基于此,我总结认为,“数据越多越好”这一说法只对那些拥有处理这样大批量数据的计算能力的大公司有用。绝大部分的研究者应该瞄准另外一种类型的研究,在这种研究中,紧缺的资源不是计算能力而是创造力。但是,我也认为,未来的数据量注定会呈现前所未有的增长,这将会让大型的数据集成为一个刚需。因此,我们需要一些技术来使处理更多的数据变得可行,同时我们也需要一些技术让深度学习对尽可能多的研究人员开放,其中,这些研究院很多来自发展中国家。
在完成对核心论文的讨论之后,我们来看看最新的四篇论文中介绍的可能的解决方案。这些文章旨在通过以下方式克服这些长期趋势:
(1)让实际操作,比如卷积,变得更加高效;
(2)通过开发智能功能,使我们能够使用较小,快速的模型获得与那些大型的,臃肿的,笨拙的模型相似的效果;
(3)具有丰富计算资源的公司如何利用这些资源来创建研究,进而惠及每一个在寻找新框架的人;
(4)如何通过信息检索的方法预先选择相关数据,来解决不断增长的数据问题。
这一系列的博客旨在促进深度学习研究的批判性思考,鼓励深度学习社区追求对该领域进展至关重要的研究。目前,在深度学习领域,不良的炒作和抱团在精神上获得了强劲的推动力。但是,在我看来,很多研究越来越短视。短视主要是由于越来越多的新晋力量的竞争压力,来自“要么发表要么死亡”的压力,以及“在arXiv先占坑”的压力,这会促成那些可以提供快速收益而不是推动深度学习社区发展的不完整研究。
另一个问题是,许多研究人员使用 Twitter 作为当前了解深度学习研究趋势的主要来源,这会加剧“抱团”的群体心态问题:它鼓励随大流,也就是说,认为这是会流行的所以才做。其次,它鼓励追随知名的研究者和名气较高的人,而非关注多样化的研究者,这会导致思维的单一。 Twitter不是一个讨论论坛,可以深入讨论想法,得出结论,让大家受益。 Twitter是一个赢者通吃的平台,小的玩家会逐渐消失。如果大玩家犯了错误,深度学习社区的每个人都被误导了。而事实是,大玩家也是会犯错的。
就像“探索vs利用(explore vs exploit )”问题一样:如果每个人都只是利用的话,我们就没有发现,只有增量的进步,其中大多数是同质的。我更愿意相信,世界是需要突破的。 AI一定可以帮助我们实现繁荣和解决难题,但前提是,我们要更多的选择探索。
这篇博客不是所有这一切的解决方案,而是旨在让您轻松地以更加批判性的眼光来分析研究方向。我希望你读完这篇文章的时候,可以思考你自己的方向,以及它与我在这里画出的这个长期图景的关系。
本博文系列讨论的研究趋势旨在(1)突出深度学习领域中重要但被忽视的研究,或(2)提出那些使非常受欢迎的深度学习研究出现明显短视或不成熟的问题。我并不是在这里将流氓心态光荣化:为了贬低而贬低是没有价值的。我也不是说所有的主流研究方向都是垃圾:最受欢迎的研究之所以受欢迎,是因为它很重要。我希望帮助你养成一种批判的心态和长期的思维。
这个博文的主题是第(1)类中的一个话题,它涉及深度学习研究,这很重要,但经常被忽视,那就是——计算效率和数据带来的问题。我将分析趋势,以概述为什么这是每个人都应该关心的一个重要的长期问题。
事实上,如果我们不解决这个问题,深度学习领域可能会停滞不前。在讨论了这些趋势后,我们看到目前的研究揭示了这一研究方向的核心问题。最后,我将讨论过去两个月的四篇研究论文,它们试图解决上述问题。
这篇博文的主要论文涉及到越来越多的数据如何改进预测结果(参见后文的论文)。这项工作的主要问题是,它如果要在2个月内实现这一结果,它需要50个GPU。考虑到GPU处理的速度变化,如果我们要在一个4GPU的计算机上,在两个月或者两周的时间内实现这一结果,我们可能要到2025年或者2029年才能拥有这样的系统。
这一假设的前提是,计算能力翻一倍的时间是2两年。如果计算能力翻一倍的时间是3年的话,我们要分别到2029或者2035年才能获得这样的系统。
绝大多数发展中国家的深度学习研究人员将会发现,很难拥有一块属于自己的GPU。通常,这些研究人员也需要与其他研究人员分享资源。如果这些研究人员大部分都要求在两个月或者两周的时间段内单独享有一块GPU的话,那么考虑到目前的计算能力增长情况(两年翻一倍),这位研究人员将能够分别在2029年或2035年复制这项研究。如果翻倍的时间周期是三年,那么这些数字分别是2035年和2044年。问题是计算增长预计将进一步下降,所以这些预测数字其实是相对乐观的。
以下哪一个例子对未来更为现实:平均每位研究人员可以拥有1到4个GPU吗?如果我们研究这些研究人员的人口统计情况和收入的增长,我们可以找到答案。特别是,我指的是中国深度学习研究的增长以及人均GDP的增长。
研究质量的增长趋势尚不清楚,但对研究数量而言,中国在快速增长。按照目前的增长速度,美国每年为60%,中国每年为170%(2012-2016年),预计到2030年,全球深度学习研究的98%都将来自中国。当然,这个趋势是不可持续的。我们有可能看到中国在某一点上会增长停滞(在美国已经出现这一情况,但中国还没有),但由于中国政府的支持力度很大,在未来十年里,中国政府对AI的投资将会超过1500亿,加上美国政府对科学的不利政策,很有可能中国很快就会在AI研究中取得明确的领先。到2030年,如果全球超过80%的深度学习研究来自中国,我不会感到惊讶。但是保守估计,到2030年,全世界有超过66%的深度学习将会是在中国完成的。
超级计算机的计算能力的翻倍的频率可能会在1.5-2年之间,同时增长的还有生产所需处理器的工厂的成本。2015年,计算增长翻倍是1倍,但是现在已经过时了。自2017年以来,计算力的翻倍时间可能会是3年一周期,所以,在本世纪内,将不会达到计算机的大脑极限。另外,在此之前,2025年左右,由于物理限制,计算增长可能会停滞。如果我们坚持冯 - 诺依曼式计算机,计算问题是不可避免的。
然而,以目前中国国内生产总值增长率约5%计算,到2030年,中国人均收入仍将只有美国2017年人均收入的80%左右。基于这一数据,平均每位研究人员可能无法使用多于一个或两个GPU(或当时的等效物)。如果将这些数字放在一起,就可以得出结论:将来大多数研究将受到计算能力的严重限制,进而受到算法复杂性的限制。
以上所有这些数字都假设目前计算能力的翻倍时间是2年或3年。虽然总体情绪依然乐观,但在计算能力增长上,我们的步伐确实是越来越放缓,而3年的翻倍似乎对当下更加现实,而对未来则是不现实的。
目前,还没有技术能大大提升计算能力,超越2019年的预期计算性能。我们以前就达到了这个高度,我们也可以通过创新走出困境,但现在我们已经接近可能性的物理极限,我们不能再创新,因为创造力本身不能超越原子层级,创造力本身并不能抵制量子效应。这方面的计算进度将会很慢,难度很大。
另一个问题就是数据的快速增长。数据的增长现在比计算能力的增长快。这意味着将来再也不会像现在一样,随着数据量的变大,深度学习的效果也就会越好。在未来,我们可以运行我们的深度学习算法的数据将不断缩小。这意味着将来永远不会发展到一个点,也就是我们无法全部利用我们拥有的所有数据。
所有这些趋势使得计算效率对于深度学习的长期进展至关重要。如果我们的算法不能用更少的计算资源来做到更多的话,那么这个领域将会很快停滞。如果我们希望AI在未来几十年内继续繁荣,我们就需要克服这个问题。解决方案必须是算法和软件——我们不能再依赖硬件来实现增长。
每年处理所有上传到YouTube数据所需GPU的数量(通过ResNet逐帧解决),以及数据和计算增长之间日益增长的差距。假设数据的增长频率是2年翻一倍,并且从2019年开始计算能力的增长的时间为3年和4年翻一倍。
虽然数据的增长主要来自视频(例如YouTube视频),视频数据相比文本数据(例如维基百科)具有较小的知识密度,但是可以预期有用数据的总体增长也是指数级的。这意味着如果所有YouTube视频的1%都包含对广泛受众有用的一般信息,那么这些数据仍将比我们的计算资源快速增长。长期而言,增长率几乎是一切,基线并不重要。以1.5年翻一倍的速度计算,1%和100%的基线要获得相同数量的信息,也只是落后8年。
为了说明数据的大小,你可参考下面的例子:目前,每分钟上传到YouTube的视频长度是800小时。如果1%的视频是信息有用到,那么到2025年,我们可以预期,每分钟会有800小时的有用信息视频上传,也就是说,每个视频的每秒都包含相关信息。
在一分钟内从800小时的视频中提取所有有用的信息将是一个非常困难的问题。并且,要记住,我们将来再也不会有比现在更小计算与数据比例:计算时间(1分钟),有用的信息(800小时的视频)。数据正在飞奔,我们永远无法赶上。
自2015年以来,各种平台每分钟生成的数据。自此,每分钟上传的YouTube视频的增长已经增加到了800小时。
所以,总的来说:
计算能力的限制将会阻碍在越来越大的数据集上训练深度学习模型;
到2030年,大多数的深度学习研究者所拥有的平均GPU数量将不会超过1-4颗;
数据的增长要超过计算能力的增长。从现在开始,计算的难题将会持续恶化。我们现在所处的时代,也只是能处理信息的一小部分,但是未来还会越来越少;
计算性能增长缓慢。我很怀疑它会变得更好,我们受限于物理极限。
【论文】重新审视数据在深度学习时代不合理有效性(Revisiting Unreasonable Effectiveness of Data in Deep Learning Era)
【作者】Chen Sun, Abhinav Shrivastava, Saurabh Singh, Abhinav Gupta(Google Research + CMU)
【链接】https://arxiv.org/abs/1707.02968
【发布时间】2017-07-10
想法
在3亿规模的图像数据集JFT-300M上训练一个大规模卷积网络,作为预训练步骤。然后,使用这个预训练好的网络在 ImageNet,PASCAL VOC 2012 和 Microsoft COCO上,进行计算机视觉任务,比如图像分类、对象检测、图像分割和姿态估计。将结果与在ImageNet上预训练的网络或在JFT-300M子集上训练的网络进行比较。
执行
在Downpour Gradient下降(这是一种用于训练的异步并行梯度下降方法)中,使用50颗GPU和其他参数服务器,使用分层的标签训练标准的ResNets(50层、101层和152层),同时用Faster-RCNN进行对象检测,全连接层分布在参数服务器之间。
结果
JFT-300M(18k)中比ImageNet(1k)多增加的类别的数量似乎不会对性能造成很大的影响。如果使用JFT-300M数据集中所有的ImageNet类别进行预训练,性能似乎与使用所有类别进行预训练的结果相似。
较小的网络(特别是ResNet-50)的模型容量不足以捕获JFT-300M的所有信息,也就是说,如果使用容量较小的模型在JFT-300M进行预训练,则性能提升在数据变多的情况下发生了停滞(例如ResNet-152 相比于 ResNet-50),表明需要高的模型容量才能利用所有数据。
当图像数据量从10M→30M,30M→100M和100M→300M时,在MS COCO上的平均精度性能提高分别为约为3倍、4倍和2倍。相比之下,Faster-RCNN的边界框细化、上下文和多尺度测试分别提升了2.7倍、0.1倍和2.5倍。这一结果表明,针对深度学习架构的特定部分进行增强,效果可能与使用更多数据一样有效。
在JFT-300M的子集上进行预训练并在MS COCO上使用该预训练模型时,性能提高。左边是在training+0.8*dev set训练的结果,右边是只在 train set上训练的结果。图片来自论文:Revisiting Unreasonable Effectiveness of Data in Deep Learning Era
评论
这篇论文在Twitter上广泛传播。一直以来人们普遍认为:“训练深度学习模型时使用的数据越多,模型就越好,所以我们需要更多的数据!”但是,正如我们上面讨论的,这并不完全准确, 我们没有足够的计算能力来使这样大的数据集对大多数研究人员都切实有用,而且这种趋势将在今后愈加恶化(当然绝对值会有所提高)。除了计算能力之外,这项工作的内存要求也是一个问题。由于全连接层不适合GPU存储器,因此它们必须以分层的方式存储在多颗GPU上。这也意味着,几乎只有大公司才有能力复现论文结果。
主要的问题是,投入产出比失衡。如果使用针对MS COCO的专门技术(边界框细化、上下文和多尺度测试),我们甚至能超过在300M图像上进行预训练的网络的结果。这种专门技术的另一特点是,开发这些技术不受计算资源的束缚,真要说,是受创造力的束缚。而对于大多数研究人员来说,计算资源是比创造力更为有限制力的因素——我们不缺乏想法,我们只是缺乏运行所有这些想法的GPU。
今后,发展中国家将出现越来越多的深度学习研究人员,这种情况也将变得越来越真实。如果创造力和计算资源都受到限制,我们将无法进行有效的研究。最好的研究应该是具有包容性和可复制的,让其他研究人员也能参与进来。因此,对于大多数研究人员而言,使用大规模数据并不是最好的研究方向。
不过,虽然现在超大规模的数据量还有些不切实际,但很快这个问题就会被解决。深度学习研究社区应该有足够多的数据,让我们的标准硬件不会空闲着。随着方法和硬件的改进,ImageNet大小的数据集将不再适用,我们将需要继续使用类似于JFT-300M的更大的数据集。但是,在处理数据和运行模型还是一大挑战的当下,在工作中使用大规模数据集并不是很能有产出。
对大多数研究人员而言,要做的应该是提出一个好的想法和实现这一想法的算法。当然,“大数据问题”在工业研究中占有一席之地。学术研究的工作应该是能被大家所使用的方法,而不仅仅是精英机构和公司。
【论文】ShuffleNet:用于移动设备的超高效卷积神经网络(ShuffleNet: An Extremely Efficient Convolutional Neural Network for Mobile Devices)
【作者】Xiangyu Zhang, Xinyu Zhou, Mengxiao Lin, Jian Sun(旷视科技Face++)
【链接】https://arxiv.org/abs/1707.01083
【发布时间】2017-07-04
简介
作者提高了卷积网络的效率,模型在使用更少的参数的情况下,实现了相同的分类性能,方法是:(1)group-wise 卷积和(2)通过 channel-shuffle 在这些 group 之间共享特征。
背景
Group卷积是将输入通道分成组(高x宽x通道:10x10x9 →(10x10x3,10x10x3,10x10x3)),并计算每组单独卷积的操作(每个10x10x3特征图上一次卷积)。这意味着每个卷积运算在输入通道的子集上有效地执行卷积。 注意,Group卷积可以在不同的特征空间中操作,因为它们是被通道分割的,例如,一个组可以会有用于鼻子、眼睛的专门特征(specialized feature),而另一组具有用于耳朵和头发的特征(正常卷积对所有特征进行操作:鼻子、眼睛、耳朵、头发等等)。这样会降低预测性能,但可以节省大量的计算和内存。Group卷积最早是 Alex Krizshevsky 提出的,他使用这种技术在两颗GPU上处理ImageNet数据。
贡献
Channel-shuffle 是一种旨在消除不同组之间特征特化(specialization)的操作。连续进行group卷积最大的问题是,第二个group卷积只有在从前一层的分布中学习到更多的专门特征时才会有效,例如,group卷积1可能具有眼睛和鼻子的输入特征,下一个group卷积将进一步将其分解为单独的眼睛和鼻子特征,使得每个卷积仅计算一个特征。通常,卷积会学习每个通道的一个或多个特征,但是通过连续的group卷积,我们最终将只能在每个卷积中学习1个特征(实际上更复杂,了解更多看新智元以前对 ShuffleNet 的报道:孙剑团队提出ShuffleNet,由于谷歌MobileNet。
Channel-shuffle 通过在所有group shuffle通道解决了这个问题,这样随着时间的推移,每个卷积都有可能学到所有的特征。
结果
相比其他针对移动设备设计的网络,ShuffleNet的性能有了微小的提升。ShuffleNet在保持性能一致的同时,速度比 vanilla AlexNet 快13倍。在实现与其他参考架构相同性能的同时,显著减少了参数的数量。
评论
虽然ShuffleNet仅对现有方法产生了微小的改进,但其主要吸引力在于它使用的是任何人都可以在任何深度学习框架中轻松实现的简单、标准的操作(Group卷积+channel shuffling)。这对于许多应用都非常有用。从中我们能得到的启发是,将普通的卷积换成group卷积,当group卷积不行时再换回普通卷积,这样将卷积组合起来。这正是我们需要的研究类型——任何人都易于使用、容易实施,能快速改进的性能。这样的研究将来将变得非常重要。
论文将方法限定在最适用于移动设备的小型和快速网络,但这项研究的意义远远超出了这一点。Group卷积+channel shuffle 具有通用性,任何使用卷积的人都应该大胆使用这项技术。
【论文】Natural Language Processing with Small Feed-Forward Networks(使用简单前馈网络进行自然语言处理)
【作者】Jan A. Botha, Emily Pitler, Ji Ma, … , Slav Petrov; Google;
【链接】 https://arxiv.org/abs/1708.00214
【发布时间】2017-08-01
Idea
这个任务很简单:预定义一个内存预算,并尝试设计多层感知器( multi-layer perceptrons,MLPs),能够(1)适应这个内存预算,(2)在各种NLP任务中实现可能的最佳性能。由于MLP的计算表达能力有限,我们需要为网络提供智能、有表达力的特征来完成任务。如果成功了,这一方法将产生适用于数据量大,或计算资源有限的环境(例如手机)的架构。
特征工程 & 优化
Hashed n-char-grams
1-char gram 嵌入,即将文档中的每个单独的character映射到一个唯一的向量,过去已有过成功,特别是使用循环神经网络(RNN)。不过,在这项工作中,使用的是n-char grams,特别是2, 3, 和 4 char-grams。但是,如果我们只使用英文字母(26个字符),那么我们会有 456976 个 4-char grams 的组合,超出了这项工作预先设置好的内存限制。为了防止这个参数爆炸,作者将 char grams 散列,并通过modulo运算将它们分组成 buckets。例如,“hash(char gram)mod 1000”将产生0到999之间的index,因此大多数 char gram 与另一个 char gram 共享参数。这个技巧已经被应用于词汇表之外的词,以便将不同的词汇表外词汇映射到不同的词汇表外向量[2]。但似乎这个n-gram的散列非常有效,这是为什么简单网络的表现如此好的一个原因。
使用这种方法,我们希望网络可以从上下文区分 n-char gram 的含义。这个过程类似我们人类区分词汇的方法,例如“He hit the ball with his bat” (他用球拍击球)和“She could see the bat flying in the twilight”(她可以看到蝙蝠在暮色中飞过),这两句话,对于人类来说很容易区分“bat”的不同含义,然后对于机器来说,似乎也区分得很好。
有趣的是,作者指出,与通常的50-500维度(或对于LSTM来说更高)相比,参数共享还允许将嵌入维度降低到8-16的范围。
图:例如,char-gram 的用法对序列“no queue at”起作用。每个token的2-char-grams(蓝色)和3-char-grams(绿色)被分别查找,并为每个token求和。
量化
嵌入(embedding)占用大量内存,作者应用 8-bit 量化(quantization)来减少嵌入的内存占用。量化是一种通过用整数近似来表示浮点数的方法。8-bit 的通用量化是将应该被压缩的数字归一化在0到255(8-bit)的范围内,然后将它们按比例分配到这些“buckets”中。我开发和审查了更复杂的8-bit近似方法,如果要加速GPU集群中的大型深度学习网络,这些也是非常有用的。如果读者有兴趣了解更多有关此主题的内容,可以阅读我的这篇ICLR论文:8-Bit Approximations for Parallelism in Deep Learning(https://arxiv.org/abs/1511.04561),其中总结了8-bit近似方法,以及这些方法如何影响神经网络的训练和并行化。
就像我的工作也显示了, 8-bit 嵌入仅用于存储,因此在计算之前将它们dequantizes 为 32-bit。使用这样的压缩,作者证明在预测性能方面没有损失,同时将内存占用减少了四分之一。
其他技巧
作者还使用其他技巧,如对part-of-speech(POS)分类进行 pre-ordering,但这些技巧更具体,需要更多的背景知识,因此在本文中我省略了这些技巧。
结果
作者在词类(POS)标签(名词,动词等),语言识别(给定一些文本,判断是哪种语言) ,分割(给定一串字符,判断哪里是单词的边界,对许多亚洲语言而言这很重要)等任务上实现了state-of-the-art 或接近 state-of-the-art 的结果。作者的工作还大大减少了所需的操作和网络的规模,同时保持结果稳定。在底线上,所使用的方法一般能将计算预算和存储器占用面积减少大约一个数量级,即计算速度加快大约15倍,内存减少10倍。
为什么这样一个简单,快速和节省内存的网络,结果可以如此强大?这是因为特征工程(feature engineering):性能的很大一部分是由于word clusters。散列n-grams是性能提升的另一个原因。一般来说,量化或更低的精度可以更有效,这对于预测质量几乎没有缺点。这些是这篇论文的主要思想。
评价
作者通过利用新的、或有些被忽视的特征来展现了一般网络、浅层网络和前馈网络的能力。预测结果和计算以及内存占用的结果都令人印象深刻。随着数据量的增长,这些方法将变得越来越重要,它证明了特征工程并没有死亡,甚至深度学习和NLP的进步需要特征工程。
如果我们想要在NLP领域取得进步,那么我不认为用相同的特征来构建更复杂的模型就是正确的道路。我们需要创新算法运行的基础。如果我们给火箭工程师很次的建筑材料,那就没法期望他们搭的火箭能够到达太空。只有 word embedding 是不够的。如果我们想到达太空,就需要改进建筑材料。
【论文】学习可迁移的架构进行可扩展的图像识别(Learning Transferable Architectures for Scalable Image Recognition)
【作者】Barret Zoph, Vijay Vasudevan, Jonathon Shlens, Quoc V. Le(Google Brain)
【链接】https://arxiv.org/abs/1707.07012
【发表时间】2017-07-21
思路
使用神经架构搜索(neural architecture search,NAS),也即强化学习来找到最好的深度学习架构。由于神经架构搜索在计算上非常昂贵,作者进行了多项简化:
不使用神经架构搜索去优化参数
不对网络的所有层都进行优化,而是仅搜索两个不同块(block)的通用架构:(1)特征扩展块和(2)特征缩减块。通过反复堆叠这些块来构建完整的架构
因为在ImageNet数据中找到一个好的架构需要太长时间,所以在较小的数据集(CIFAR10)上执行搜索,然后使用CIFAR10中最好的块,并在ImageNet上使用
在几颗GPU上进行搜索仍然很慢,所以使用450颗GPU
背景:神经架构搜索
使用最终是一个softmax层的RNN在架构中选择单个层或功能。算法:
预测用作输入的隐藏层,即在最后一个或最后一个块中选择一个隐藏层。使用所选隐藏层的输出作为输入A
预测用作输入的隐藏层,即在最后一个或最后一个块中选择一个隐藏层。使用所选隐藏层的输出作为输入B
对于要处理输入A的新隐藏层,预测要进行的运算(卷积、最大池化、可分离卷积等)
对于用于处理输入B的新隐藏层,预测要进行的运算(卷积、最大池化,可分离卷积等)
选择合并运算并合并隐藏层A和B
重复K次(本文中K = 5)
将上述所有都连接成一个特征向量
遵循一个固定的启发式规则:每当先前隐藏的层操作步幅为2(还原块)时,将当前隐藏层中的卷积滤波器加倍
找到的架构
通过神经网络搜索(NAS)发现的架构令人印象深刻。最值得注意的是,网络从来没有选择使用标准的3×3卷积,虽然它完全可能这样做。相反,网络总是在常规卷积中选择可分离的卷积。另一个有趣的是使用平均池化。在这些单元格(或块)中,这是一个很常见的操作。还有一个令人震惊的事实,作者尝试手动添加到残差连接到最终块里,但这些残差连接降低了性能。
神经网络自己发现的架构让我们更深地了解卷积网络的设计。然而,这也提出了新的问题:为什么残差连接没有用?为什么在这个架构中的identity connection 就足够了?
结果
在稍微受限的参数设置中比较预测性能时,该架构实现了几乎最先进的技术。只有 Shake-Shake 26 在ImageNet上比它表现更好。对于无约束参数,该架构在ImageNet上也得到了最先进的性能,同时还比其他网络有更高的计算效率。因此,该架构同时获得了最先进的结果和快速训练的时间。对于小型网络,该架构得出了比ShuffleNet更好的结果,但ShuffleNet的计算效率更高,特别是对于非常小的参数设置而言。
评论
这项工作成果惊人,并带来了很多启发。它的出现推翻了以往认为的,ImageNet性能好需要残差,highway或dense连接的共识。我发现最有趣的是,这个工作发现的框架结构越来越像一个神经元的架构。
这项工作是一个非常奇怪的组合,常规实验室很难实现这样的研究(需要450个GPU),但这项工作的成果却能为普通实验室带来福音(发现架构需要更少的计算力,参数利用率也更高)。从普通研究者的角度来看,这是Google可以做的最好的研究。它以实用的方式提升了领域和大家对于深度学习的认识,同时研究本身具有不可估量的计算资源要求,只能由行业巨头来实现。这种类型的研究可能是行业巨头可以做贡献最多的领域。
【论文】Reading Wikipedia to Answer Open-Domain Questions(阅读维基百科来回答开放领域问题)
【作者】Danqi Chen, Adam Fisch, Jason Weston & Antoine Bordes (Facebook AI Research + Stanford);
【链接】https://arxiv.org/abs/1704.00051
【发布时间】2017-08-01
传统Q&A的问题
当前的问题-回答任务基本上是包含搜索任务的,需要在给定段落中找到与给定问题相关的文本(SQuAD,CNN + DailyMail,bAbI,WikiReading)。这不是与现实一样的设置,因为当你有问题是,你通常并没有得到包含有这个问题的答案的段落。因此,这些在数据集上表现良好的模型无法很好地推广到其他数据集或任何现实中的问题。另一个问题是,在一些训练集中,这些模型挑选包含75%的问题的答案的第一个句子来回答[7],这就意味着,(1)如果训练集中没有给出答案,(2)如果答案不在第一句话,传统的模型就不能回答问题。
想法:使用信息检索(Information Retrieval)方法
信息检索+段落阅读系统
模型、训练数据集和结果请查阅论文:Reading Wikipedia to Answer Open-Domain Questions(https://arxiv.org/abs/1704.00051)
评论
这是非常重要的一项工作。正如我们在介绍中所讨论的,我们正处于随着时间推移数据量越来越大的时代,我们将能够处理的数据是其中越来越小的部分。如果我们想使用计算昂贵的模型,例如深度学习模型,那么唯一的解决方案是在处理之前检索相关信息。我们传递给深入学习模型的信息必须高度凝聚而且高度相关。搜索相关信息的最佳和最快捷的技术是标准信息检索方法。
这项工作表明,深度学习和信息检索的结合效果很好,并且能广泛应用于开放领域的问题。这项工作还表明,这是多任务学习的一种可行方法。当然它还有很多问题,预测性能现在也不是最佳的,但这并不重要,因为这项研究的长期重要性是显而易见的。
从核心论文中,我们已经看到更多的数据改善了模型的预测性能。但是,这些性能提升虽然普遍,但是与通过专门技术所获得的改进相比,还是微不足道的。我们还看到,对于大多数研究人员而言,大型数据集对计算需求太高,未来的研究人员在使用大规模数据集时,计算需求将更加受到限制。
分析上述核心论文的结果是有意义的,可以看到,目前推动深度学习领域最具成本和时间效益的方法,尚不需要超大规模数据集,几十颗GPU和几个月的计算时间。
当然,大规模数据集的时代将会来临,我们需要确保届时我们的方法也能够适用于这些大规模数据集。我们不仅为了研究而进行研究,而且我们中的许多人为了解决明显的重大问题而从事现在的工作。因此,找到能够更有效地扩展,进行大规模深度学习的方法至关重要。相关的补充论文则为此提供了一些启发。
上文提到的一些解决方案,比如神经架构搜索(NAS),本身是不切实际的,因为需要数百颗GPU才能有效地进行这项研究。然而,一旦这样的研究完成,它们将对其他研究人员的工作带来巨大好处。通过利用从这些研究中获得的见解,我们可以找出更有效的模型设计。例如,现在人常说的“别再用regular卷积了,换成separable 卷积吧”,这个洞察非常实用,将会给整个研究社区带来很大的推动力。
如果我们在实用神经网络自己发现架构的过程中,提供新的操作(group卷积+shuffle?),那么可能会产生新的架构,再从中发现设计模型的更多见解。随着时间推移,我们可以找到越来越高效的架构,这也将有助于我们处理像JFT-300M这样的大型怪物数据集。这也将使未来的移动设备深度学习处理能力进一步提高。
我相信我们会看到NAS的改进,使大型实验室更好地进行相关研究。寻找新的架构是非常重要的研究,但即使如此,这样的研究方向也只能是大型公司和一些非常大的研究实验室的首选研究方向,因为需要更多的计算资源,可能不适合小型实验室。
ShuffleNet告诉我们,运算(operation)的简单变化可以为整个深度学习社区带来巨大的效果,并建立一种有用和实用的方法。ShuffleNet是一个非常坚实的贡献,我认为这个方向对于需要推动他们在移动平台上表现的AI初创公司而言是最好的。这是朝向在大数据集上进行研究迈出的重要一步。对于所有受计算资源约束的研究实验室,这一研究方向也是可行的。
同样属于这个方向的研究还包括低位计算(low-bit computation),比如 XNOR-Net。这样的工作将变得越来越重要,因为GPU允许在硬件层面上执行8位操作,或允许特定的16位深度学习操作。
虽然任何一个实验室都可以进行这样的研究,但是受计算资源限制的实验室,或其产品受限于计算成本的实验室,最能够从这些方向中获益。
我们还看到,有了正确的特征以后,那么平淡无味的多层感知器获得了最先进的结果。自然语言理解(NLU)长期以来都忽视了特征工程。
在过去,模型并不像特征那样重要。人们会仔细地手工设计语言特征,从而通过简单的模型获得良好的效果。随着词嵌入和GPU的出现,我们开始专注于模型架构。这样做也是正确的:凭借我们现在的计算能力,我们可以让计算机来学习特征,帮我们做特征工程。
问题在于,学习特征这件事本身就高度依赖于输入的数据。如果你给一个深度学习的语音识别网络原始的语音数据,则可能无法训练;但是,如果你给的是傅立叶变换数据,同样的网络就能很好地运行,并且易于训练。
任何情况下,拥有正确特征的简单模型都将胜过拥有错误特征的大型模型。因此,相比设计下一个架构,尝试设计下一个新特征可能会更有影响力。特别是在自然语言理解领域,这将是一个很好的研究方向。
有人可能会说,这与以前自然语言处理(NLP)的老路有何不同?这不是倒退一步吗?
如果做得不好,确实会是倒退。我认为关键的因素是利用我们现在拥有的东西:通过深度学习进行特征学习。我们不再需要让那些有非常精确的语言动机的特征去做一切。提出压缩特定类型的信息(同时丢弃其他信息)的表征就足够了,深度学习将完成剩下的事情。老派NLP特征工程可做不到这一点。我们需要结合传统NLP和深度学习两者的优势。
数据的增长速度超过了计算力增长的速度,这意味着将来我们无法处理所有有用的数据。数据泛滥意味着我们需要从中选择一些数据来处理——我们无法处理所有数据。但是,我们如何选择正确的数据?信息检索可能是一个很好的答案。
我认为信息检索将是一个非常重要的研究方向,不仅因为数据的增长是不可避免的,而且信息检索也让我们不需要去回答一些不必要的问题。很难说当前最先进的算法是否比“花哨的字符串匹配”(fancy string matching)更为重要。
信息检索的研究主要与语言研究人员有关,因为信息检索系统主要是为文本而构建的,但视觉系统使用信息检索也是可以想象的。例如,压缩YouTube视频,通过使用小型网络进行标记,并用信息检索方法进行索引,然后可以通过:(1)检索可能的视频段,以及(2)在这些段上应用视频识别来搜索信息。对于视频的字幕信息也是一样的。想要回答一个需要视觉信息的问题?搜索字幕,然后深入处理相关视频片段。
原文链接