科技智库

联系我们

您当前位置:首页 > 科技智库 > 详细内容

【热点话题】深度学习领域四个不可不知的重大突破

发布日期:2018/1/4 10:36:47


1.png

近五年来,深度学习技术取得了重大的突破,这些重大突破虽然涉及很多新的架构和创意,但都是从机器学习中常见的“监督式学习(Supervised Learning)”过程中涌现的。尤其是,都涉及下列步骤:

1.收集一个足够庞大,并且恰当的训练数据集。

2.搭建一个神经网络架构(一种复杂的方程组,可通过松散的方式模拟我们的大脑),网络中通常会包含数百万个名为“权重(Weight)”的参数。

3.将数据反复不断送入神经网络,并对每次迭代后神经网络的预测结果与正确结果进行比较,根据差异的具体程度和方向对神经网络的每个权重进行调整。神经网络就是这样训练的,这一过程将重复很多次。

类似的过程已经应用于很多领域,并且都已产生了非常“博学”的神经网络。每个领域我们将涉及:训练模型所需的数据、所使用的模型架构、结果。

一、图片分类:神经网络通过训练可以识别图片中包含的物体。

所需数据:图片分类器的训练需要用到带标签的图片,其中每张图片均属于数量有限的类别中的一种或几种。例如,CIFAR 10 数据就是训练图片分类器所用的一种标准化数据集,其中已正确添加了标签的图片共属于 10 个类别:

2.png

深度学习架构:涉及的所有神经网络架构都源自对人类学着解决问题的方法所进行的思考。人类是如何检测图片的?当人类看到一张图片后,我们首先会查看一些最顶层的视觉特征,例如分支、鼻子或车轮。然而为了检测出这些特征,我们需要在潜意识里确定一些底层特征,例如颜色、线条以及其他形状。实际上,为了从原始像素中识别出人类可以认出的复杂特征,例如眼睛,我们必须首先检测像素特征,随后检测像素特征的特征,以此类推。

在深度学习技术诞生前,研究人员会尝试手工提取这些特征,并将其用于预测。就在深度学习技术诞生前一刻,研究人员还在试图使用技术手段(主要是 SVM)找出这些手工提取的特征之间蕴含的复杂的非线性关系,据此才能确定图片中包含的到底是猫还是狗。

3.png

卷积神经网络(CNN)在每一层提取的特征

现在,研究人员开发的神经网络架构可以从原始像素中学习这些特征,尤其是深度卷积神经网络更是非常适合此类任务。这些网络可以提取像素特征,随后提取像素特征的特征,以此类推,最终将结果送入常规的神经网络层(类似于逻辑回归)并做出最终预测。

重大突破:这些技术催生的结果在于,对于这些架构着力所要解决的问题,即图片分类,可以通过算法实现远胜于人类的效果。例如著名的 ImageNet 数据集已被广泛用作卷积架构的评测基准,经过训练的神经网络可以获得比人类更准确的图片分类效果:

4.png

早在 2015 年,计算机经过训练已可实现比人类更出色的图中物体分类能力

此外,研究人员已经明白如何拍摄一张图片但不立即进行分类,而是首先将图片中最有可能代表物体的区域划分为多个矩形,将每个矩形送入 CNN 架构,随后对图片中的每个物体进行分类,并在图片中框出每个物体的位置(这种做法也叫做“边界框 [Bounding box]”):

5.png

使用“Mask R-CNN”进行物体检测

这一系列过程可从技术上总称为“物体检测”,不过大部分最困难的环节都用到了“图片分类”技术。

资源

理论 :如果要深入理解 CNN 的工作原理等理论知识,可参加 Andrej Karpathy 的 Stanford 课程。如果希望从更偏重数学知识的角度进一步了解,可参考 Chris Olah 有关卷积的文章。

代码:如果希望尽快着手构建图片分类器,可以参阅 TensorFlow 文档提供的这篇介绍范例。

二、文本生成:神经网络通过训练可以模仿输入的内容生成文本。

所需数据:任何类型的文本均可,例如莎士比亚作品全集。

深度学习架构:神经网络可以对一系列元素中的下一个元素建模,可以查看序列中的上一个字符,并且对于指定的过往序列,还可以判断随后最有可能出现哪个字符。

解决这个问题所用的架构与图片分类所用的架构有很大差异。由于架构本身的差异,我们需要让网络学习不同的东西。之前,我们让网络学习图片中的重要特征,但现在,我们需要让网络关注字符序列并预测序列中的下一个字符。因此网络需要采取与图片分类不同的做法,通过某种方式持续追踪自己的“状态”。例如,如果看到的前序字符分别是“c-h-a-r-a-c-t-e”,此时网络应“存储”该信息,并预测下一个字符应该是“r”。

递归神经网络架构可以做到这一点:可在下一次迭代时将每个神经元的状态重新装入网络,借此学习整个序列。

6.png

递归神经网络架构图

然而为了真正胜任文本生成的任务,网络还必须能决定要在序列中“回顾”到多远的位置。有时候,例如正处在某个单词中间时,网络只需要“回顾”前面的几个字符就可以确定随后出现的字符,但有时候可能需要“回顾”很多字符才能做出决定,例如正处在句子末尾时。

有一种名叫“LSTM”(Long Short Term Memory,长短期记忆)的特殊 Cell 很适合这种任务。每个 Cell 可根据 Cell 本身的内部权重决定是否要“记住”还是“忘记”,而网络每看到一个新字符后,这个权重都会更新。

7.png

LSTM Cell 的内部工作原理

重大突破:简而言之,我们可以生成类似于“characature”这样的文本,不过需要解决一些拼写错误和其他问题,让生成的结果看起来是正确的英语。Andrej Karpathy 的这篇文章举了几个有趣的例子,通过莎士比亚的剧本生成了 Paul Graham 风格的随笔。

这样的架构还可用于通过连续生成的横轴和纵轴坐标生成手写文字,这种做法与通过一个个字符生成语言的方法不谋而合。感兴趣的读者可以试试这个演示。

8.png

神经网络的手写笔迹

资源

理论:Chris Olah 有关 LSTM 的这篇文章是经典中的经典。同样经典的还有 Andrej Karpathy 这篇有关 RNN 的文章,此文介绍了 RNN 的功能和工作原理。

代码:这里提供了详细的指导,可以告诉我们如何着手构建端到端文本生成模型,以及数据的预处理操作。这个 GitHub 代码库可以帮助我们用训练好的 RNN-LSTM 模型生成手写文字。

三、语言翻译:机器翻译(翻译为另一种语言的能力) 长久以来一直是人工智能领域研究人员最大的梦想。深度学习让这个梦想距离现实更进一步。

所需数据:使用不同语言写出的词句对。例如“I am a student”和“je suis étudiant”这样成对句子组成的数据集,可以训练神经网络实现英语和法语的互译。

深度学习架构:与其他深度学习架构类似,研究人员已经从“理论上”确定了计算机学习翻译语言的最佳方式,并开发出一种可以模仿这种方式的架构。对于语言翻译,从本质上来说需要将一句话(由一系列单词编码而成)翻译为所要表达的基本“含义”,随后将翻译出来的含义翻译为使用另一种语言的单词组成的序列。

句子从单词“转换”成含义的方式必须使用能胜任序列处理的架构,也就是之前提到的“递归神经网络”。

9.png

解码器架构示意图

人们最初在 2014 年发现这种架构非常适合用于语言翻译,随后以此为基础在不同方向上进行了扩展,尤其是对“注意力”的处理,随后我们将单独撰文介绍。

重大突破:Google 的这篇博客文章介绍了这种架构在语言翻译方面所实现的效果,这一技术让其他语言翻译技术显得大为逊色。

10.png

Google Sequence to Sequence 模型的表现

资源

代码和理论:Google 发布了一篇非常精彩的 Sequence to Sequence 技术架构教程,可参阅这里。该教程概括介绍了 Google Sequence to Sequence 模型的大致目标和背后的理论,并介绍了 TensorFlow 编写相关代码的步骤。此外,涉及到的“注意力”是对最基础的 Sequence to Sequence 架构进行的扩展。

四、生成对抗网络(Generative Adversarial Network):神经网络通过训练可以生成看似属于特定类型(例如人脸),但并非实拍结果的图片。

所需数据:特性类型的图片,例如一大批人脸图片。

深度学习架构:GAN 是一种让人惊讶并且非常重要的技术产物。 全球顶尖人工智能研究人员之一的 Yann LeCun 曾经说,这是“在他看来,机器学习领域过去十年里最有趣的创意”。借助这种技术,我们竟然可以生成看起来类似训练图片,但实际上并非训练集中实际内容的图片,例如生成看起来是人脸,但并非真正人脸的图片。这是通过同时训练两个神经网络实现的:一个网络负责生成看似逼真的假图片,一个负责检测图片是真是假。如果同时训练这两个网络,让它们“以相同速度”学习(这是 GAN 的构建过程中最困难的部分),那么负责生成假图片的网络就可以生成非常逼真的结果。

略微深入一些来看,这种技术是这样的:GAN 中,我们需要训练的主网络叫做生成器(Generator),它会学习接受随机噪音矢量,并将其转换为逼真的图片。这种网络采取了与卷积神经网络相“反转”的结构,因此可称之为“逆卷积(deconvolutional)”架构。另一个负责区分真假图片的网络是一种卷积网络,这一点与图片分类所用的架构类似,这个网络也叫做“鉴别器(Discriminator)”。

11.png

“生成器”的逆卷积架构

12.png

“鉴别器”的卷积架构

GAN 中的两个神经网络其实都是卷积神经网络,因为这些神经网络都很擅长从图片中提取特征。

13.png

GAN 通过名人面孔数据集生成的图片

重大突破和资源

代码: 这个 GitHub 代码库提供了使用 TensorFlow 训练 GAN 的教程,同时还提供了一些由 GAN 生成的令人惊艳的结果图片,例如上图就来自该代码库。

理论:Irmak Sirer 的这场讲话可以帮助大家对 GAN 入门,同时其中还涉及很多监督式学习概念,可以帮助大家理解上述结论。

(来源:36氪 编辑:文雷)

领导班子 专家团队 组织机构 下载专区 在线投稿