📜  深度学习CNN 重要发展节点回顾

📅  最后修改于: 2020-09-27 03:27:53             🧑  作者: Mango

这篇文章的目的是回顾经过时间考验的,被广泛采用的深度学习模型;这些技术涵盖了解现代深度学习研究所需的许多基本知识。如果您是该领域的新手,那么这是一个很好的起点。

深度学习是一个瞬息万变的领域,大量的研究论文和想法可能会令人不知所措。即使是经验丰富的研究人员,也很难告诉公司PR真正的突破。这篇文章的目的是回顾那些经受时间考验的想法,这也许是人们应该依靠的唯一意义。

如果您今天要开始深度学习,那么理解和实施这些技术中的每一种都将为您了解最新研究和开展自己的项目打下良好的基础。我相信这是上手的最佳方法。按历史顺序浏览论文也是有用的练习,以了解当前技术的来源以及为什么首先发明它们。换句话说,我将尝试提出一些最少的想法,这些想法是理解现代深度学习研究所必需的大多数基本知识。

2012年-通过AlexNet和Dropout解决ImageNet

论文:

源代码:

AlexNet通常被认为是导致深度学习和人工智能研究近来蓬勃发展的算法。它是基于Yann LeCun开发的早期LeNet的深度卷积神经网络。AlexNet 通过结合GPU的强大功能和先进的算法,大大超越了以前对ImageNet数据集中的图像进行分类的方法。它证明了神经网络确实有效!AlexNet也是最早使用Dropout ,此后它已成为提高各种深度学习模型的泛化能力的关键组件。

AlexNet使用的体系结构,一系列卷积层,ReLU非线性和最大池化已成为公认的标准,它将成为未来计算机视觉体系结构的扩展和建立。如今,诸如PyTorch之类的软件库是如此强大,并且与最新的体系结构相比,AlexNet非常简单,因此仅需几行代码即可实现。

2013年-通过深度强化学习玩Atari

论文:

源代码:

在最近在图像识别和GPU方面取得突破的基础上,DeepMind的团队成功地训练了一个网络,可以通过原始像素输入来玩Atari游戏。而且,相同的神经网络体系结构学会了玩7种不同的游戏,而没有被告知任何特定于游戏的规则,这证明了这种方法的普遍性。

强化学习与“监督学习”(例如图像分类)的不同之处在于,代理商必须在多个时间步长(例如赢得比赛)中学习最大化的奖励总和,而不仅仅是预测标签。由于代理直接与环境交互,并且每个动作都会影响环境,因此训练数据不是独立的且分布均匀(iid),这使得许多机器学习模型的训练非常不稳定。这可以通过使用诸如体验重播等技术来解决

尽管没有明显的算法创新可以使这项工作奏效,但这项研究巧妙地结合了现有技术,在GPU上训练的卷积神经网络和经验重播,以及一些数据处理技巧,以实现大多数人无法预期的令人印象深刻的结果。这使人们有信心扩展“深度强化学习”技术,以解决更复杂的任务,例如GoDota 2Starcraft 2等。

此后,Atari Games 已成为强化学习研究的标准基准。最初的方法仅解决了7场比赛(超过了人类的基准),但是在未来几年中,基于这些思想的进步将开始在越来越多的游戏上击败人类。蒙特祖玛的《复仇》是一款特别的游戏,因需要长期计划而闻名,被认为是最难解决的游戏之一。直到最近,这些技术才在所有57款游戏中都超过了人类的基线。

2014 – Encoder-Decoder Networks

论文:

源代码:

深度学习最令人印象深刻的结果主要是与视觉相关的任务,并且是由卷积神经网络驱动的。尽管NLP社区在使用LSTM网络和编码器-解码器体系结构进行语言建模和翻译方面取得了成功,但是直到注意力机制的发明才开始取得令人瞩目的成就。

在处理语言时,每个标记(可能是字符,单词或介于两者之间的某种东西)都被馈送到循环网络(例如LSTM)中,该网络维护一种先前处理过的输入的存储。换句话说,一个句子与时间序列非常相似,每个标记都是一个时间步。这些循环模型通常很难处理长期的依赖关系。当他们处理序列时,他们很容易“忘记”较早的输入,因为它们的梯度需要通过许多时间步长传播。使用梯度下降来优化这些模型非常困难。

新的注意力机制有助于缓解这一问题。它通过引入快捷方式连接,使网络可以选择在较早的时间自适应“回头看”。这些连接使网络可以决定在生成特定输出时哪些输入很重要。典范的例子是翻译:生成输出字词时,通常会映射到一个或多个特定的输入字词。

2014 – Adam Optimizer

相关论文:

源代码:

通过使用优化器使损失函数(例如平均分类误差)最小化来训练神经网络。优化器负责弄清楚如何调整网络参数以使其了解目标。大多数优化器SGD。但是,许多这些优化器本身都包含可调参数,例如学习率。为特定问题找到正确的设置,不仅可以减少训练时间,而且由于可以找到更好的损失函数局部最小值,因此也可以得到更好的结果。

大型研究实验室经常运行昂贵的超参数搜索,这些搜索带有复杂的学习速率计划,以便从简单但对超参数敏感的优化器(例如SGD)中获得最大收益。当它们超过现有基准时,有时是由于花费大量资金来优化优化器的结果。这样的细节经常在已发表的研究论文中没有提及。没有相同预算来优化其优化器的研究人员陷入了更糟糕的结果。

Adam优化器建议使用梯度的第一和第二矩来自动调整学习率。结果证明是非常可靠的,并且对超参数选择不太敏感。换句话说,Adam通常只是工作而已,不需要像其他优化程序一样进行广泛的调整。尽管调整得非常好的SGD仍然可以获得更好的结果,但是Adam使研究更容易进行,因为如果某事不起作用,您就知道这不太可能是调整不当的优化器的错。

2014/2015-生成对抗网络(GAN)

相关论文:

源代码:

诸如variational autoencoders之类的生成模型的目标是创建看起来逼真的数据样本,例如您可能在某处看到的人脸图像。因为他们必须对整个数据分布进行建模(许多像素!),而不仅仅是将猫或狗分类为可区分模型,所以此类模型通常很难训练。生成对抗网络(GAN)就是这样一种模型。

GAN的基本思想是串联训练两个网络-生成器和鉴别器。生成器的目标是生成使识别器蒙蔽的样本,该样本经过训练可以区分真实图像和生成的图像。随着时间的流逝,鉴别器将在识别假货方面变得更好,但是生成器也将在欺骗鉴别器方面变得更好,从而生成看起来更逼真的样本。GAN的第一次迭代会产生模糊的低分辨率图像,并且训练起来非常不稳定。但是随着时间的推移,变化和改进,例如DCGAN ,Wasserstein GAN ,CycleGAN ,StyleGAN(v2),以及其他许多人都基于此想法来生成高分辨率的逼真的图像和视频。

2015年-残留网络(ResNet)

相关论文:

参考代码:

研究人员一直在AlexNet突破的基础上发展了一段时间,发明了基于卷积神经网络的性能更好的架构,例如VGGNet,Inception等。ResNet是这一系列快速发展中的下一个迭代。迄今为止,ResNet变体通常用作各种任务的基准模型架构,也用作更复杂的架构的基础。

除了在ILSVRC获得第一名之外,ResNet 之所以与众不同,还在于其与其他网络架构相比的深度。本文中介绍的最深层网络具有1,000层,并且仍然表现良好,尽管在基准任务上比其101和152层对应的网络稍差。由于梯度消失,训练这种深层网络是一个极具挑战性的优化问题,它也出现在序列模型中。没有多少研究人员认为训练如此深的网络可以带来良好的稳定结果。

ResNet使用了身份快捷方式连接来帮助梯度流动。解释这些连接的一种方法是ResNet只需要学习从一层到另一层的“增量”,这通常比学习完整的转换要容易得多。这种身份连接是公路网提出的连接的特例,而连接又受到LSTM使用的门控机制的启发。

2017 – Transformers

相关论文:

参考实现:

注意点对点的序列模型(在本文的前面已经介绍过)工作得很好,但是由于它们的递归特性需要顺序计算,因此它们有一些缺点。它们很难并行化,因为它们一次只处理一步。每个时间步取决于上一个。这也使得很难将它们缩放到非常长的序列。即使有了他们的注意力机制,他们仍然在建模复杂的远程依赖项方面仍在挣扎。大多数“工作”似乎都在循环层中完成。

变压器解决了这些问题,方法是完全消除重复现象,并用多个前馈自我关注层代替它,并行处理所有输入,并在输入和输出之间产生相对较短的路径(=通过梯度下降易于优化)。这使他们真正快速地训练,易于扩展并且能够处理更多数据。为了告诉网络有关输入顺序的信息(在递归模型中是隐式的),Transformers使用了位置编码。要了解有关变压器工作原理的更多信息(一开始可能会有些困惑)

要说变形金刚比几乎任何人都预期的要好,那是轻描淡写。在接下来的几年中,它们将成为绝大多数NLP和其他序列任务的标准体系结构,甚至进入计算机视觉体系结构。

2018 – BERT and fine-tuned NLP Models

先关论文:

参考实现:

预训练是指训练模型以执行某些任务,然后将学习到的参数用作初始化以学习相关任务。这具有直觉的意义-一个已经学会将图像分类为猫或狗的模型,应该已经了解了有关图像和毛茸茸的动物的一般知识。当对该模型进行微调以对狐狸进行分类时,我们希望它比必须从头学习的模型做得更好。类似地,已经学会预测句子中下一个单词的模型应该已经学会了有关人类语言模式的一般知识。我们希望它是翻译或情感分析等相关任务的良好初始化。

预训练和微调已在Computer Vision和NLP中成功使用,但是很长一段时间以来它一直是视觉标准,但使其在NLP中正常工作似乎更具挑战性。大多数最新结果仍来自完全受监督的模型。随着变压器的出现,研究人员终于开始进行预培训工作,从而产生了诸如ELMo,ULMFiT和OpenAI的GPT

BERT是此类开发的最新成果,许多人认为它已经开启了NLP研究的新纪元。像大多数其他模型一样,它没有像预测其他单词那样经过预训练,而是经过预测句子中任何地方被掩盖(有意删除)的单词以及两个句子是否可能彼此跟随的预训练。请注意,这些任务不需要标记的数据。它可以在任何文本上进行训练,而且很多!然后,可以对该预训练的模型(可能已经学习了一些语言的一般属性)进行微调,以解决监督任务,例如问题回答或情绪预测。BERT在各种各样的任务中都表现出色。HuggingFace等公司轻松下载和微调针对任何NLP任务的类似BERT的模型。从那时起,BERT就以XLNet和RoBERTa和ALBERT等先进技术为基础。

2019/2020年及以后-BIG语言模型,自学式学习?

整个深度学习历史上最明显的趋势也许就是 bitter lesson。更好的并行化(=更多数据)和更多模型参数的算法进步一次又一次地击败了“更智能的技术”。这种趋势似乎一直持续到2020年,OpenAI拥有1750亿个巨大的参数语言模型GPT-3,尽管具有简单的培训目标和标准架构,却显示了出乎意料的良好泛化能力。

同样的趋势是诸如对比自我监督学习(例如SimCLR)之类的方法,它们可以更好地利用未标记的数据。随着模型变得越来越大,训练起来越来越快,可以有效利用Web上大量未标记数据并学习可以转移到其他任务的通用知识的技术变得越来越有价值,并被广泛采用。