重磅盘点:过去8年中深度学习最重要的想法

原文:Deep Learning’s Most Important Ideas[1]

作者:Denny Britz(ML 研究员,Google Brain 前成员)

译者:REN

深度学习是一个瞬息万变的领域,层出不穷的论文和新思路可能会令人不知所措。即使是经验丰富的研究人员,也很难准确将研究成果传达给公司的公关部门,继而传达给大众。

对于初学者来说,理解和实现这些技术有利于打下坚实的理论基础,是入门的最佳方法。

在深度学习领域,很多技术都可以跨域多个应用领域,包括计算机视觉,自然语言,语音识别和强化学习等等。在计算机视觉领域使用过深度学习的人,可能很快就能将类似的技术应用到自然语言研究中,即使特定的网络结构有所不同,但其概念,实现方法和代码基本一致。

必须强调的是,本文侧重于计算机视觉,自然语言,语音识别和强化学习领域,但不会详细解释每种深度学习技术,用寥寥数百字解释清楚一篇几十页的论文是不现实的。另外还有一些不容易重现的重要研究,比如 DeepMind 的 AlphaGo 或 OpenAI 的 OpenAI Five(Dota 2 模型),涉及到巨大的工程和运算挑战,因此也不是讨论的重点。

这篇文章的目的,是回顾在深度学习领域影响深远的成果,概述每种技术及其历史背景,尽量引导深度学习新人接触多个领域的基础技术。它们是这个领域最值得信赖的基石,每一个技术都经过了无数次的引用、使用和改进,经得起推敲。

文末会附上论文和代码链接。如果想要更好地掌握基础技术和知识,可以尝试先不看参考代码,从零开始用 PyTorch 实现论文中的某些算法。

2012 年:用 AlexNet 和 Dropout 解决 ImageNet 图像分类

AlexNet 通常被认为是近年来引领深度学习和人工智能研究蓬勃发展的基础算法。它是一种深度卷积神经网络(CNN),基于人工智能大牛 Yann LeCun 早年间开发的 LeNet 模型。

AlexNet 结合了 GPU 的强大性能和先进的算法,在对 ImageNet 图像数据集分类时,其表现远远超越了之前的所有算法。它证明了神经网络真的很好用(至少在图像分类上)。AlexNet 也是首次使用 Dropout 技巧的算法之一,为了防止过拟合。此后 Dropout 成为了提高各种深度学习模型泛化能力的重要工具。

AlexNet 使用的结构,包括一系列卷积层,ReLU 非线性激活函数和最大池化(Max-pooling)已成为公认标准模式,在许多计算机视觉模型结构中都有用到和进一步扩展。

与最新的模型相比,AlexNet 显得异常简单,得益于 PyTorch 等强大的软件库,仅需几行代码即可实现。值得注意的是,目前 AlexNet 的许多实现方法都与最早论文中阐述的有些许不同,目的是为了对卷积神经网络并行运算。

2013 年:利用深度强化学习玩 Atari 游戏

基于在图像识别和 GPU 方面取得的突破,DeepMind 团队成功利用强化学习(RL)训练了一个神经网络,可以通过原始像素输入来玩 Atari 游戏。而且在不知道游戏规则的前提下,相同的神经网络模型还学会了玩 7 种不同的游戏,证明了这种方法的泛化性。

强化学习与监督学习(例如图像分类)的不同之处在于,AI 代理(agent)必须学会在多个时间点上最大化整体奖励,比如赢得一场比赛,而不仅仅是预测分类标签。

由于 AI 代理直接与环境交互且每个动作都会影响环境,因此训练数据不是独立同分布的(i.i.d.),这使得许多机器学习模型的训练非常不稳定。这可以使用经验回放等技术解决。

尽管没有明显的算法创新,但 DeepMind 的研究巧妙地结合了当时的现有技术,在 GPU 上训练的卷积神经网络,经验回放以及一些数据处理技巧,从而实现了超出大部分人预期的惊艳结果。这使人们有信心继续探索深度强化学习技术,以解决更复杂的任务,由此演变出 AlphaGo 围棋 AI,Dota 2 AI 和星际争霸 2 AI 等等。

此后,Atari 系列游戏成为了强化学习研究的基准。最初的算法只能在 7 个游戏中超越人类,但未来几年中,更先进的模型开始在越来越多的游戏中击败人类。其中一款名为 “蒙特祖玛的复仇” 的游戏因需要长期规划而闻名,也被认为是最难解决的游戏之一,于 2018 年被攻克。

今年 4 月,AI 终于在 Atari 的全部 57 款游戏中超越了人类。

2014 年:采用注意力机制的编码器 - 解码器网络

在自然语言处理领域,尽管有长短期记忆网络(LSTM)和编码器 - 解码器网络(Encoder-Decoder),能够处理语言建模和翻译任务,但其实直到 2014 年注意力机制(Attention Mechanism)的问世,才获得了跨越式的进步。

在处理语言时,每个标记(token)—— 可能是字符,单词或介于两者之间的某种东西 —— 都会被输入一个循环神经网络(RNN)之中。例如 LSTM,该网络可以记住之前一定时间之内的输入值。

换句话说,句子与时间序列非常相似,每个标记都是一个时间步长。这些循环神经网络模型通常很难处理长时间的相关性,因为会 “忘记” 较早的输入值,而且使用梯度下降来优化这些模型同样非常困难。

新的注意力机制有助于缓解这一问题。它通过引入 “快捷连接(shortcut connections)”,使神经网络可以自适应选择 “回顾” 前面的输入值(将输入加到输出上)。在生成特定输出时,这些连接允许网络决定哪些输入很重要。翻译模型是一个经典例子,在生成翻译后的输出字 / 词时,模型会将其映射到一个或多个特定的输入字 / 词。

2014 年:Adam 优化器

训练神经网络需要使用优化器使损失函数(比如平均分类错误)最小化。优化器负责弄清楚如何调整网络参数,实现学习目标。

大多数优化器都基于随机梯度下降(SGD)及其变种。许多优化器本身都包含可调参数,例如学习率(learning rate)。为特定问题找到正确的参数配置,不仅可以减少训练时间,还可以找到更好的损失函数局部最小值,得到更好的训练结果。

大型研究实验室经常运行昂贵的超参数搜索,需要设计非常复杂的学习率变化计划,以便从优化器中获得最大收益。有时候,他们找到的最终结果超过了现有基准,但这是花费了大量资金对优化器进行优化的结果。类似的细节经常在论文中被忽略,导致没有相同预算来优化其优化器的研究人员找不到最优解。

Adam 优化器使用了自适应矩估计方法,对随机目标函数执行一阶梯度优化并自动调整学习率。结果非常可靠,并且对超参数选择不太敏感。

简而言之,Adam 不需要像其他优化器一样进行大量的调整。尽管调整得非常好的 SGD 优化器可以得到更好的结果,但是 Adam 让研究更容易完成,因为如果无法得到预想中的结果,科研人员至少可以排除优化器调整不当这一原因。

2014/2015 年:生成式对抗网络(GAN)

生成式模型的目标是创建逼真的数据样本,例如栩栩如生的假人脸图片。因为这类模型必须对全部数据分布进行建模(像素很多),而不仅仅是分类图片,所以它们通常很难训练。生成式对抗网络(GAN)就是这样一种模型。

GAN 的基本思想是训练两个神经网络:生成器和判别器。生成器的目标是生成样本,蒙蔽判别器,而判别器则是要区分真实图像和(生成器生成的)虚假图像。随着训练的进行,鉴别器的表现会越来越好,但生成器也会变得更好,生成的图像也更加逼真。

初代 GAN 只能产生模糊的低分辨率图像,并且训练起来非常不稳定。但是随着人们不断努力,诞生了诸如 DCGAN,Wasserstein GAN,CycleGAN,StyleGAN 等多种多样的模型,现在已经可以生成高分辨率的逼真图像和视频。

2015 年:残差网络(ResNet)

自 2012 年以来,研究人员在 AlexNet 的基础上添砖加瓦,发明了性能更好的基于卷积神经网络的模型,例如 VGGNet 和 Inception 等等。ResNet 是其中最有代表性的一个,标志着下一个迭代。

目前,ResNet 的变体通常用作各种任务的基准模型,也被用来构建更复杂的模型。

除了在 ILSVRC 2015 分类挑战中获得第一名之外,ResNet 的过人之处还在于它的模型深度:论文中提到的最深 ResNet 有 1000 层,并且仍然表现良好,尽管在基准任务上比其 101 和 152 层对应的网络稍差。由于梯度消失,训练这种非常深的网络是一个极具挑战性的优化问题,几乎没有研究人员认为训练如此深的网络可以带来良好的稳定结果。

ResNet 使用了 “身份快捷连接(identity shortcut connections)” 连接来帮助实现梯度流动。解释这些连接的一种方法是,ResNet 只需要学习从一层到另一层的 “增量 delta”,这通常比学习完整的(传递)要容易得多。

2017 年:Transformer

引入注意力机制的 Seq2Seq 模型已经有很好的表现,但缺点在于需要顺序计算,很难做到并行。这让研究人员很难将它们扩大到非常长的序列,即使引入了注意力机制,该模型在构建复杂的长期相关关系时仍然相形见绌。大多数的 “工作” 似乎都在循环层中完成。

Transformer 的出现解决了这些问题,方法是完全消除循环,用多个前馈自我注意力层代替,然后并行处理序列中的所有单词或符号。由于输入和输出之间的路径较短,更容易通过梯度下降优化,进而实现快速训练且易于扩展。此外,Transformer 还会使用位置编码技术,将输入值的顺序告诉神经网络。

Transformer 的效果超出了所有人的预料。在接下来的几年中,它成为了绝大多数自然语言处理任务和其他序列任务的标准架构,甚至还用到了计算机视觉领域中。

2018 年:BERT 和微调自然语言处理模型

预训练是指训练模型执行某些任务,然后将学到的参数作为初始参数,用于其他类似任务中。这符合人们的直觉:一个已经学会将图像分类为猫或狗的模型,应该已经掌握了有关图像和毛茸茸的动物的通用知识。所以微调该模型并对狐狸分类时,人们希望它比从零学习的模型做得更好。

类似地,学会预测句子中下一个单词的模型应该已经学会了有关人类语言模式的通用知识。人们希望它在翻译或情绪分析等相关任务中起点更高。

预训练和微调已在计算机视觉领域作为标准使用许久,但将其运用在自然语言处理中更具挑战性。大多数表现最好的结果仍来自完全监督模型。随着 Transformer 的出现,研究人员终于可以更方便的开展预训练,由此诞生了 ELMo,ULMFiT 和 OpenAI GPT 之类的模型。

BERT 是这种思路的最新成果,许多人认为它开启了自然语言处理研究的新纪元。该模型在预训练中会对句子中故意被删掉的单词进行预测,还会判断两个句子彼此相连的可性能,而不是单纯地预训练如何预测下一个单词。

完成这些任务不需要标记数据,因此它可以在任何文本上训练,这意味着取之不尽的训练数据。该预训练模型已经学习了一些语言方面的常规属性,之后对其进行微调就能用来解决监督式任务,例如问题回答或预测情绪。

BERT 在各种各样的任务中都表现出色,还有 HuggingFace 一类的公司,允许人们轻松获取和微调用于各种自然语言处理任务的 BERT 类模型。时至今日,在 BERT 的基础上出现了 XLNet,RoBERTa 和 ALBERT 等更加先进的模型。

2019/2020 年及未来:巨大的语言模型和自我监督式学习

纵观深度学习历史及其发展趋势,人们不难发现,可以更好地并行运算,拥有更多数据和更多模型参数的算法一次又一次地击败了所谓的 “更聪明的技术”。这种趋势似乎一直持续至今,OpenAI 放出了拥有 1750 亿个参数的巨大语言模型 GPT-3,尽管它只有简单的训练目标和标准网络结构,却显示出无可比拟的强大泛化能力。

同样的趋势还出现在自我监督学习方法上,比如 SimCLR,它们可以更好地利用未标记的数据。 随着模型变大和训练速度变快,那些可以更有效地利用网络上大量未标记的数据,并将学习到的通用知识转移到其他任务上的模型将变得越来越有价值。

 文中提到的论文和代码实现清单 

2012 年:用 AlexNet 和 Dropout 解决 ImageNet 图像分类

论文:

·ImageNet Classification with Deep Convolutional Neural Networks (2012)

·Improving neural networks by preventing co-adaptation of feature detectors (2012)

·One weird trick for parallelizing convolutional neural networks (2014)

代码实现:

·AlexNet in PyTorch

·AlexNet in TensorFlow

2013 年:利用深度强化学习玩 Atari 游戏

论文:

·Playing Atari with Deep Reinforcement Learning (2013)

代码实现:

·DQN in PyTorch

·DQN in TensorFlow

2014 年:采用注意力机制的编码器 - 解码器网络

论文:

·Sequence to Sequence Learning with Neural Networks

·Neural Machine Translation by Jointly Learning to Align and Translate

代码实现:

·Seq2Seq with Attention in PyTorch

·Seq2Seq with Attention in TensorFlow

2014 年:Adam 优化器

论文:

·Adam: A Method for Stochastic Optimization

代码实现:

·Implementing Adam in Python

·PyTorch Adam implementation

·TensorFlow Adam implementation

2014/2015 年:生成式对抗网络(GAN)

论文:

·Generative Adversarial Networks

·Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks

代码实现:

·DCGAN in PyTorch

·DCGAN in TensorFlow

2015 年:残差网络(ResNet)

论文:

·Deep Residual Learning for Image Recognition

代码实现:

·ResNet in PyTorch

·ResNet in Tensorflow

2017 年:Transformer

论文:

·Attention is All You Need

代码实现:

·PyTorch: Sequence-to-Sequence Modeling with nn.Transformer and TorchText

·Tensorflow: Transformer model for language understanding

·HuggingFace Transformers Library

2018 年:BERT 和微调自然语言处理模型

论文:

·BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

代码实现:

·Fine-Tuning BERT with HuggingFace

Refrence:

[1]https://www.kdnuggets.com/2020/09/deep-learnings-most-important-ideas.html

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)云脑研究计划,构建互联网(城市)云脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。

  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486488.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ActiveMQ 发送和接收消息

一、添加 jar 包 <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-all</artifactId><version>5.11.2</version> </dependency> 二、消息传递的两种形式 1、点对点&#xff1a;发送的消息只能被一个消…

机器人 蓝buff 钩_机器人要在S赛登场了?Ming韩服练起来了,这是RNG黑科技?

随着S9全球总决赛日程的逼近&#xff0c;各大战队也纷纷结束了休假&#xff0c;投入到了紧张的训练之中。对于这次S9世界赛的版本&#xff0c;应该是上中野的版本&#xff0c;因为不少战士单带型上单得到了巨大加强&#xff0c;而且中路会有一些法师英雄回归&#xff0c;总体来…

java构造器_Java类加载的过程

阅读本文约需要8分钟 大家好&#xff0c;我是你们的导师&#xff0c;经常看我朋友圈的同学应该知道&#xff0c;我每天会在微信上给大家免费提供以下服务&#xff01;1、长期为你提供最优质的学习资源&#xff01;2、给你解决技术问题&#xff01;3、每天在朋友圈里分享优质的技…

再讲卷积的本质及物理意义,解释的真幽默!

来源&#xff1a;电子工程专辑编辑 ∑Gemini分三个部分来理解&#xff1a;1&#xff0e;信号的角度2&#xff0e;数学家的理解&#xff08;外行&#xff09;3&#xff0e;与多项式的关系>>>>卷积这个东东是“信号与系统”中论述系统对输入信号的响应而提出的。因为…

分区助手扩大c盘后自动修复_磁盘分区工具,这个好用;无论调整C盘还是系统迁移...

使用傲梅分区助手安全地对磁盘进行分区安全分区注意事项1.对于重要数据&#xff0c;最好习惯定期备份。 您可以使用免费备份软件- 傲梅轻松备份进行备份。2.当傲梅分区助手正在移动数据时&#xff0c;请不要轻易地结束过程或强制关闭程序。3.在分区过程中&#xff0c;请确保您的…

c语言转义字符_C语言啊中的转义符有什么含义?

其实所谓的换行符就是回车&#xff0c;在各类编程语言中换行符是很常见的&#xff0c;而转义字符是一种特殊的字符常量。转义字符以反斜线""开头&#xff0c;后跟一个或几个字符。转义字符具有特定的含义&#xff0c;不同于字符原有的意义&#xff0c;故称“转义”字…

强化学习到底是什么,它如何运作?

强化学习是一种行为学习模型&#xff0c;由算法提供数据分析反馈&#xff0c;引导用户逐步获取最佳结果。来源丨Towards Data Science作者丨Jair Ribeiro编译丨科技行者强化学习属于机器学习中的一个子集&#xff0c;它使代理能够理解在特定环境中执行特定操作的相应结果。目前…

hihocoder1457

http://hihocoder.com/problemset/problem/1457 找不重复子串的和 topo序搞一搞&#xff0c;用父亲更新儿子节点的val&#xff0c;记得乘上节点数 //#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize("Ofast,no-stack-protector") //#…

科普天地|“GPS欺骗”如何误导自动驾驶汽车

文章来源&#xff1a;新华网&#xff0c;版权归原作者及刊载媒体所有。新华社北京11月2日电&#xff08;记者彭茜&#xff09;一辆正常行驶的自动驾驶汽车在30秒内径直蹭上了马路牙子&#xff0c;车载全球定位系统&#xff08;GPS&#xff09;、激光雷达等“高精尖”设备竟然全…

json里面的list数据取不出来_[工具]用kaggle API下载数据集

操作平台&#xff1a;colab由于是在colab&#xff0c;需要先mount google drivefrom google.colab import drive drive.mount(/content/gdrive)导到当前目录cd gdrive/My Drive/your path上传你的kaggle.json; kaggle.json下载方法&#xff1a;kaggle官网-->右上角My Accoun…

训练过程acc_AI 深度学习训练tricks总结(均有实验支撑)

↑↑↑↑↑点击上方蓝色字关注我们&#xff01;『运筹OR帷幄』转载作者&#xff1a;Jones知乎作者丨Jones知乎来源丨https://zhuanlan.zhihu.com/p/261999668编辑丨极市平台编者按 本文作者模拟复现了自己在深度学习训练过程中可能遇到的多种情况&#xff0c;并尝试解决这些问题…

python 内存_一行Python解决内存问题

原标题&#xff1a;一行Python解决内存问题 内存不足是项目开发过程中经常碰到的问题&#xff0c;我和我的团队在之前的一个项目中也遇到了这个问题&#xff0c;我们的项目需要存储和处理一个相当大的动态列表&#xff0c;测试人员经常向我抱怨内存不足。但是最终&#xff0c;我…

一文读懂机器学习“数据中毒”

作者 | Ben Dickson翻译 | 火火酱~出品 | AI科技大本营头图 | 付费下载于视觉中国在人类的眼中&#xff0c;下面的三张图片分别展示了三样不同的东西&#xff1a;一只鸟、一只狗和一匹马。但对于机器学习算法来说&#xff0c;这三者或许表示同样的东西:一个有黑边的白色小方框。…

excel模糊搜索_Excel进阶篇:星号*用法,学会这些功能的,都按时加班了

是的&#xff0c;你没看错&#xff0c;是按时加班&#xff0c;赚点加班费嘛&#xff01;星号"*"就是四则运算里的乘号"ⅹ"。在Excel中星号"*"可不仅仅是乘&#xff0c;还有逻辑运算、通配符等功能&#xff0c;可以在公式中与函数进行组合&#x…

java2

一、学习要点 认真看书并查阅相关资料&#xff0c;掌握以下内容&#xff1a; 理解对象的创建与引用的关系 掌握构造方法的重载 掌握String类 掌握类的设计方法 掌握this关键字 掌握static关键字 理解引用传递并掌握基本应用 掌握单例模式 理解内部类 &#xff08;一&#xff09…

谷歌开源能翻译101种语言的AI模型,只比Facebook多一种

大数据文摘出品来源&#xff1a;VB10月底&#xff0c;Facebook发布了一款可翻译100种语言的机器学习模型&#xff0c;微软发布了一款能翻译94种语言的模型&#xff0c;谷歌自然也不甘示弱。继Facebook和微软后&#xff0c;谷歌开源了一种名为MT5的模型&#xff0c;称该模型在一…

只需十四步:从零开始掌握 Python 机器学习(附资源)

分享一篇来自机器之心的文章。关于机器学习的起步&#xff0c;讲的还是很清楚的。原文链接在&#xff1a;只需十四步&#xff1a;从零开始掌握Python机器学习&#xff08;附资源&#xff09; Python 可以说是现在最流行的机器学习语言&#xff0c;而且你也能在网上找到大量的资…

druid seata 配置_架构设计 | 基于Seata中间件,微服务模式下事务管理

一、Seata简介1、Seata组件Seata是一款开源的分布式事务解决方案&#xff0c;致力于提供高性能和简单易用的分布式事务服务。Seata将为用户提供了AT、TCC、SAGA、XA事务模式&#xff0c;为用户打造一站式的分布式解决方案。2、支持模式AT 模式基于支持本地 ACID 事务的关系型数…

数据卡片_VISA消息:关于VCPS 2.1卡片产品的性能和交叉测试的卡片个性化数据的更新...

我们都知道从2020年6月1日起&#xff0c;所有用于性能和交叉测试的卡片样品都必须采用新的个性化数据用于卡片的个性化。需要注意的是&#xff0c;Visa已经发布了用于产品性能和交叉测试的卡片个性化数据2.0版本&#xff0c;支持VCPS 2.1.x产品。从2020年7月27日起&#xff0c;…

一文剖析2020年最火十大物联网应用|IoT Analytics 年度重磅报告出炉!

来源&#xff1a;北京物联网智能技术应用协会知名物联网研究机构IoT Analytics 2020年的最新报告显示&#xff0c;与往年相比&#xff0c;当前大多数物联网项目仍然落地于工业/制造业领域&#xff0c;另外&#xff0c;交通、能源、零售及医疗保健等垂直领域的市场份额也相对增加…