Uber 宣布开源
Ludwig,一个基于 TensorFlow
的工具箱,该工具箱特点是不用写代码就能够训练和测试深度学习模型。

  1. 前馈神经网络

摘要: 这里有改变世界的7大NLP技术,点进来了解一下吧!

Uber 官方表示,对于AI开发者来说,Ludwig
可以帮助他们更好地理解深度学习方面的能力,并能够推进模型快速迭代。另一方面,对于
AI 专家来说,Ludwig
可以简化原型设计和数据处理过程,从而让他们能够专注于开发深度学习模型架构。

图片 1

改变世界的七大NLP技术,你了解多少?

Ludwig 提供了一套 AI
架构,可以组合起来,为给定的用例创建端到端的模型。开始模型训练,只需要一个表格数据文件(如
CSV)和一个 YAML
配置文件——用于指定数据文件中哪些列是输入特征,哪些列是输出目标变量。如果指定了多个输出变量,Ludwig
将学会同时预测所有输出。使用 Ludwig
训练模型,在模型定义中可以包含附加信息,比如数据集中每个特征的预处理数据和模型训练参数,
也能够保存下来,可以在日后加载,对新数据进行预测。

前馈神经网络 (Feed Forward Neural Networks, FFNNs) 的历史可以追溯到 20
世纪
40年代,这是一种没有任何循环的网络。数据以单次传递的方式从输入传递到输出,而没有任何以前的
“状态记忆”。从技术上讲,深度学习中的大多数网络都可以被认为是FFNNs,但通常
“FFNN” 指的是其最简单的变体:密集连接的多层感知器 。

图片 2

图片 3

密集编码器用于将输入上已经很紧凑的一组数字映射到预测:分类 或回归 。

在第1部分中,我介绍了自然语言处理领域以及为其提供支持的深度学习。我还介绍了NLP中的3个关键概念:文本嵌入机器翻译(使用神经网络翻译语言),以及Dialogue和Conversations(可以实时与人进行对话的技术)。在第2部分中,我将介绍另外4项重要的NLP技术,你应该关注这些技术,以跟上这一研究领域快速增长的步伐。

对于 Ludwig
支持的数据类型(文本、图像、类别等),其提供了一个将原始数据映射到张量的编码器,以及将张量映射到原始数据的解码器(张量是线性代数中使用的数据结构)。内置的组合器,能够自动将所有输入编码器的张量组合在一起,对它们进行处理,并将其返回给输入解码器。

用于波士顿房价预测的 FFNNs 示例,它是一个回归问题:

人际交往不仅仅是文字和其明确的含义,而且它还是微妙且复杂的。即使在完全基于文本的对话中,你也可以根据单词选择和标点符号判断客户是否感到愤怒。你可以阅读产品在天猫平台的评论,并了解评论者是否喜欢或不喜欢它,即使他们从未直接说过。为了使计算机真正理解人类每天的交流方式,他们需要理解的不仅仅是客观意义上的词语定义、而且他们需要了解我们的情绪。情绪分析是通过较小元素的语义组成来解释较大文本单元(实体、描述性术语、事实、论据、故事)的含义的过程。

Uber 表示,通过组合这些特定于数据类型的组件,用户可以将 Ludwig
用于各种任务。比如,组合文本编码器和类别解码器,就可以获得一个文本分类器。

图片 4

传统情感分析的方法是将句子视为一个词袋,并查阅“积极”和“消极”单词的策划列表,以确定该句子的情绪。这需要手工设计的特征来捕捉情绪,所有这是非常耗时和不可扩展的。

图片 5

网络学习时在训练集和验证集上的误差

用于情感分析的现代深度学习方法可用于形态学、语法和逻辑语义,其中最有效的是递归神经网络。顾名思义,递归神经网络开发的主要假设递归是描述语言的自然方式。递归在消歧方面很有用,有助于某些任务引用特定的短语,并且对于使用语法树结构的任务非常有效。

每种数据类型有多个编码器和解码器。例如,文本可以用卷积神经网络(CNN),循环神经网络(RNN)或其他编码器编码。用户可以直接在模型定义文件中指定要使用的参数和超参数,而无需编写单行代码。

  1. 卷积神经网络 (CNN

图片 6

Ludwig
采用的这种灵活的编码器-解码器架构,即使是经验较少的深度学习开发者,也能够轻松地为不同的任务训练模型。比如文本分类、目标分类、图像字幕、序列标签、回归、语言建模、机器翻译、时间序列预测和问答等等。

图片 7

递归神经网络非常适合具有嵌套层次结构和内部递归结构的设置。语法的句法规则是高度递归的,因此,我们利用递归神经网络!使用RNN对句子进行建模的另一个好处是,我们现在可以输入任意长度的句子,这对于在NLP中使用神经网络来说是一个巨大的难题,使用非常聪明的技巧使句子的输入向量具有相同的大小,尽管句子的长度不相等。

此外,Ludwig 还提供了各种工具,且能够使用开源分布式培训框架
Horovod。目前,Ludwig
有用于二进制值,浮点数,类别,离散序列,集合,袋(bag),图像,文本和时间序列的编码器和解码器,并且支持选定的预训练模型。未来将支持更多资料的种类。

CNN(又名 ConvNets)
是一种前馈神经网络,它使用一种空间不变性技巧来有效地学习图像中的局部模式,这种方法在图像中最为常见。空间不变性
(Spatial-invariance )
是指,比如说,一张猫脸的图像上,左上角的猫耳与图像右下角的猫耳具有相同的特征。CNN
跨空间共享权重,使猫耳以及其他模式的检测更加高效。

图片 8

参考:Ludwig
介绍,ithome,量子位

CNN 不是只使用密集连接的层,而是使用卷积层
。这些网络用于图像分类、目标检测、视频动作识别以及任何在结构上具有一定空间不变性的数据

标准RNN是一种递归神经网络的最基本的版本。它具有最大边距结构预测架构,可以在复杂的场景图像和句子中成功地运用这种结构。它用于为自然语言句子提供有竞争力的语法分析器比如说Penn
Treebank。作为参考,Penn
Treebank是第一个大型树形数据集,由华尔街日报三年收集的24,799个故事组成,它广泛用于句法注释。此外,它优于语义场景分割、注释和分类的替代方法。

了解用于对 MNIST 数据集中的手写数字进行分类的一个 CNN 示例。

然而,标准RNN并不能捕获语法短语的完整语法。在语法上解开RNN,也被称为成分矢量语法,这个方法是解决这个问题的一个重大升级。它使用语法解开的递归神经网络来学习句法语义和组合向量表示。该模型能够像标准RNN一样快速地进行训练和实施。

图片 9

图片 10

分类预测 ,生成的手写数字 。

另一个演变是Matrix-Vector
RNN,它能够捕获更长短语的组成含义。该模型为解析树中的每个节点分配一个向量和一个矩阵:向量用于捕获成分的固有含义,而矩阵捕获它如何改变相邻单词或短语的含义。而且该矩阵向量RNN可以在命题逻辑和自然语言中学习运算符的含义。

  1. 循环神经网络

该模型在三个不同的实验中获得过不错的表示:

图片 11

· 预测副词-形容词对的细粒度情感分布;

RNN 是具有循环的网络,因此具有
“状态记忆”。它们可以及时展开,成为权重共享的前馈网络。正如 CNN 在 “空间”
上共享权重一样,RNN 在 “时间”
上共享权重。这使得它们能够处理并有效地表示序列数据中的模式。

· 对电影评论的情感标签进行分类;

RNN 模块有许多变体,包括 LSTM 和
GRU,以帮助学习更长的序列中的模式。它的应用包括自然语言建模、语音识别、语音生成等。

· 使用它们之间的句法路径对名词之间的语义关系进行分类。

训练循环神经网络是很有挑战性的,但同时也允许我们对序列数据进行一些有趣而强大的建模。使用
TensorFlow
生成文本的教程是我最喜欢的教程之一,因为它用很少的几行代码就完成了一些了不起的事情:在字符基础上生成合理的文本:

图片 12

图片 13

迄今为止用于情感分析的最强大的RNN模型是递归神经张量网络,其在每个节点处具有神经网络的树结构。该模型可用于边界分割,以确定哪些词组是积极的,哪些是消极的。在Sentiment
Treebank上接受训练时,该模型在几个指标上的表现优于所有以前的方法。

使用 TensorFlow 生产文本

问答(QA)系统的想法是直接从文档、对话、在线搜索和其他地方提取信息,以满足用户的信息需求。QA系统不是让用户阅读整个文档,而是更喜欢简短而简洁的答案。如今,QA系统可以非常容易地与其他NLP系统结合使用,并且一些QA系统甚至超越了对文本文档的搜索,并且可以从图片集合中提取信息。

  1. Encoder-Decoder 架构

事实上,大多数NLP问题都可以被视为一个问题回答问题。范例很简单:我们发出查询指令,机器提供响应。通过阅读文档或一组指令,智能系统应该能够回答各种各样的问题。

图片 14

图片 15

前 3 节中介绍的 FFNN、CNN 和 RNN
都只是分别使用密集编码器、卷积编码器或循环编码器进行预测的网络。这些编码器可以组合或切换,取决于我们试图形成有用表示的原始数据类型。“Encoder-Decoder”
架构是一种更高级的概念,通过对压缩表示进行上采样的解码步骤来生成高维输出,而不是进行预测。

强大的深度学习架构(称为动态内存网络已针对QA问题进行了专门开发和优化。给定输入序列和问题的训练集,它可以形成情节记忆,并使用它们来产生相关答案。该体系结构具有以下组件:

请注意,编码器和解码器可以彼此非常不同。例如, image captioning
网络可能有卷积编码器 和循环解码器 。Encoder-Decoder
架构的应用包括语义分割、机器翻译等。

· 语义内存模块被用来创建从输入句子的嵌入字序列预先训练手套载体。

针对自主车辆感知问题的最先进的分割网络:

·
输入模块处理与问题有关的输入矢量称为事实。该模块使用门控循环单元实现,GRU使网络能够了解当前正在考虑的句子是否相关或与答案无关。

图片 16

·
问题模块逐字处理疑问词,并且使用输出相同权重的GRU输入模块的向量。事实和问题都被编码为嵌入。

使用 TensorFlow 的驾驶场景分割

·
情景记忆模块接收从输入中提取和编码的嵌入事实和问题载体。这使用了一个受大脑海马体启发的想法,它可以检索由某些反应触发的时间状态,如景点或声音。

  1. 自动编码器 (Autoencoder)

·
答案生成模块,通过适当的响应,情景记忆应该包含回答问题所需的所有信息。该模块使用另一个GRU,使用正确序列的交叉熵错误分类进行训练,然后可以将其转换回自然语言。

图片 17

图片 18

自动编码器 (Autoencoder) 是一种采用encoder-decoder 架构的更简单的
“无监督学习”
形式,并学习生成输入数据的精确副本。由于编码的表示比输入数据小得多,网络被迫学习如何形成最有意义的表示。

DMN不仅在质量保证方面做得非常好,而且在情感分析和词性标注方面也优于其他架构。自开发以来,动态内存网络已经有了重大改进,进一步提高其在问答环境中的准确性,包括:

由于 ground truth
数据来自输入数据,所以不需要人工操作。换句话说,它是自我监督的。自动编码器的应用包括无监督嵌入、图像去噪等。

·
用于视觉和文本问题的动态存储网络问答应用基本上是将DM​​N应用于图像,其内存和输入模块已升级,以便能够回答视觉问题。该模型改进了许多基准Visual
Question Answering数据集的现有技术水平,而不支持事实监督。

  1. 生成对抗网络

·
用于问题应答的动态Coattention网络解决了从对应于不正确答案的局部最大值恢复的问题。它首先融合了问题和文件的共同依赖表示,以便集中于两
者的相关部分。然后,动态指向解码器迭代潜在的答案跨度,该迭代过程使模型能够从对应于不正确答案的初始局部最大值中恢复。

图片 19

人类很难手动汇总大型文本文档。文本摘要是NLP为源文档创建简短、准确和流畅的摘要问题。随着推送通知和文章摘要获得越来越多的注意力,为长文本生成智能且准确摘要的任务每天都在增长。

GAN是一种用于训练网络的框架,GAN
网络经过优化,可以从特定的表示中生成新的逼真样本。最简单的形式是,训练过程涉及两个网络。其中一个网络称为生成器(generator),它生成新的数据实例,试图欺骗另一个网络,即鉴别器
(discriminator),后者将图像分类为真实图像和假图像。

通过首先计算整个文本文档的单词频率来自动汇总文本。然后,存储和排序100个最常用的单词。然后根据它包含的高频词数对每个句子进行评分,更高频率的词,价值更大。最后,根据它们在原始文本中的位置来获取和排序前X个句子。

在过去的几年里,GAN
出现了许多变体和改进,包括从特定类别生成图像的能力、从一个域映射到另一个域的能力,以及生成图像的真实性的惊人提高。例如,BigGAN
() 从单一类别 中生成的三个样本:

图片 20

图片 21

文本摘要有两种基本方法:提取和抽象。前者从原始文本中提取单词和单词短语以创建摘要。后者是学习内部语言表示以生成更像人类的摘要,解释原始文本的意图。

BigGAN 生成的图像

提取摘要的方法是通过选择子集来工作。这是通过从实际文章中提取短语或句子以形成摘要来完成的,LexRank和TextRank是众所周知的摘要总结,它们都使用了Google
PageRank算法的变体。

  1. 深度强化学习

·
LexRank是一种无监督的基于图形的算法,它使用IDF修改的余弦作为两个句子之间的相似性度量。该相似度用作两个句子之间的图形边缘的权重。LexRank还采用了智能后处理步骤,确保为摘要选择的顶级句子彼此不太相似。

图片 22

·
TextRank是一种类似于LexRank的算法,具有一些增强功能,例如使用词形化而不是词干,结合词性标注和命名实体分辨率,从文章中提取关键短语,以及根据这些短语提取摘要句子。除了文章摘要外,TextRank还从文章中提取了有意义的关键短语。

强化学习 是一个框架,用于教一个 agent
如何以一种最大化回报的方式行动。当学习由神经网络完成时,我们称之为深度强化学习
(Deep Reinforcement learning, Deep RL)。

抽象概括的模型属于深度学习。使用深度学习的文本摘要已经取得了一定的突破。以下是一些NLP领域最大公司最显着的公布结果:

RL 框架有三种类型:基于策略的 (policy-based)、基于价值 (value-based)
的和基于模型的 (model-based)。区别在于神经网络的任务是学习。

·
Facebook的神经注意是一种神经网络架构,它利用基于本地注意力的模型,能够根据输入句子生成摘要中的每个单词。

Deep RL
允许我们在需要做出一系列决策时,在模拟或现实环境中应用神经网络。包括游戏、机器人、神经架构搜索等等。

· Google
Brain的Sequence-to-Sequence模型遵循编码器-解码器架构。编码器负责读取源文档并将其编码为内部表示,解码器是一种语言模型,负责使用源文档的编码表示在输出摘要中生成每个单词。

图片 23

· IBM
Watson使用类似的序列到序列模型,但具有注意力和双向递归神经网络功能。

MIT DeepTraffic: Deep Reinforcement Learning Competition

神经网络中的注意力机制是基于人类的视觉注意机制。人类的视觉注意力虽然存在不同的模型,但它们都基本上归结为能够以“高分辨率”聚焦于图像的某个区域,同时以“低分辨率”感知周围的图像,然后随着时间的推移调整焦点。

拓展概念

想象一下,你正在阅读一篇完整的文章:不是按顺序浏览每个单词或字符,而是潜意识地关注一些信息密度最高的句子并过滤掉其余部分。你的注意力有效地以分层方式捕获上下文信息,这样就可以在减少开销的同时做出决策。

在深度学习中有几个重要的概念并不是由上述架构直接表示的,包括变分自编码器、LSTM/GRU
或神经图灵机中的“记忆”概念、胶囊网络,以及注意力机制、迁移学习、元学习概念,以及
RL 中基于模型、基于价值、基于策略的方法和 actor-critic 方法的区别。

那为什么这很重要?诸如LSTM和GRU之类的模型依赖于读取完整的句子并将所有信息压缩为固定长度的矢量。这需要基于文本统计属性的复杂特征工程,用几个单词表示的数百个单词的句子肯定会导致信息丢失,翻译不足等。

最后,许多深度学习系统将这些结构以复杂的方式组合起来,共同从多模态数据中学习,或者共同学习解决多个任务。

图片 24

——完——

通过注意力机制,我们不再尝试将全文编码为固定长度的矢量。相反,我们允许解码器在输出生成的每个步骤处理源语句的不同部分。我们让模型根据输入句子以及它到目前为止产生的内容来学习要注意的内容。

根据上面从基于注意力的神经机器翻译的有效方法的图像,蓝色表示编码器,红色表示解码器,因此我们可以看到上下文向量将所有单元格的输出作为输入来计算每个单元格的源语言单词的概率分布。解码器想要生成单个字,通过利用该机制,解码器可以捕获全局信息而不是仅基于一个隐藏状态进行推断。

除了机器翻译之外,注意力模型还可以处理各种其他NLP任务。在Show,Attend和Tell:使用视觉注意生成神经图像标题,作者将注意力机制应用于生成图像描述的问题。他们使用卷积神经网络对图像进行编码,使用具有注意力机制的递归神经网络来生成描述。通过可视化注意力,他们可以在生成单词时解释模型正在查看的内容:

图片 25

在语法作为外语中,作者使用具有注意力机制的递归神经网络来生成句子解析的树。可视化的注意力矩阵可以深入了解网络如何生成这些树:

图片 26

在阅读和理解的教学机器中,作者使用回归神经网络来阅读文本,阅读问题,然后产生答案。通过可视化关注矩阵,它们可以在尝试查找问题答案时显示网络的外观:

图片 27

然而,注意力机制需要付出代价。我们需要计算输入和输出字的每个组合的注意力值。如果你有一个100字的输入序列并生成一个100字的输出序列,那将是10,000个注意力值。如果你进行字符级计算并处理由数百个令牌组成的序列,上述机制可能变得非常昂贵。

值得注意的是,研究人员不得不处理各种障碍:算法的局限性、模型的可扩展性、对人类语言的模糊理解。好消息是,这个领域的发展似乎是一个巨大的开源项目:研究人员不断构建更好的模型来解决现有问题并与社区分享他们的结果。由于最近的学术研究进展,以下是NLP中已经解决的主要障碍:

· 没有单一的模型架构,跨任务具有一致的最新结果。例如,在Question
Answering中,我们有强监督的端到端内存网络 ;
在情感分析中,我们有Tree-LSTM ;
在序列标记中,我们有双向LSTM-CRF。我之前在问题回答部分中提到的动态内存网络以某种方式解决了这一挑战,因为它可以在多个域中一致地运行。

·
机器学习中一种强大的方法是多任务学习,它共享相关任务之间的表示,以使模型能够更好地概括原始任务。然而,相关的多任务学习很难,因为它通常仅限于较低层,仅在任务相关时才有用,并且在所提出的模型中具有相同的解码器/分类器。在联合多任务模型中:为多个NLP任务增长,作者预先定义了一个由几个NLP任务组成的分层架构,作为多任务学习的联合模型。该模型包括字符n-gram和短路以及最先进的纯前馈解析器,能够执行依赖解析,多句子任务和联合训练。

·
另一个挑战是重复字表示的问题,其中模型中编码器和解码器的不同编码导致重复的参数/含义。对此最简单的解决方案是将单词向量联系在一起并联合训练单个权重,如“绑定单词向量”
和“单词分类器:语言建模的损失框架”中所示。

· 另一个障碍是,与诸如卷积神经网络或前馈神经网络相比,任何Deep
NLP技术的基本构建块Recurrent Neural
Networks相当慢。准递归神经网络采用RNN和CNN的最佳部分来提高训练速度,使用卷积跨越时间的并行性和跨越信道的并行性的元素级门控递归。这种方法比语言建模和情感分析中的任何其他模型更好,更快。

· 最后,在NLP中,架构搜索使用机器学习自动化人工神经网络设计的过程
非常缓慢,因为传统的手动过程需要大量的专业知识。如果我们可以使用AI为任何问题找到合适的架构怎么办?使用Google
Brain进行强化学习的神经架构搜索是迄今为止开发的最可行的解决方案。作者使用循环网络生成神经网络的模型描述,并使用强化学习训练此RNN,以最大化验证集上生成的体系结构的预期准确性。

本系列文章展示了主要的自然语言处理技术的基本概要,这些技术可以帮助计算机从单个文本或文本序列中提取,分析和理解有用的信息。从跨文化连接人的机器翻译到帮助客户服务的对话聊天机器人;
从深刻理解人类情绪的情感分析,到可以模仿我们视觉注意力的注意力机制。因为NLP的领域过于庞大可能我并没有完全介绍,所以我鼓励你进一步探索,无论是通过在线课程,博客教程,或研究论文。

本文作者:

阅读原文

本文为云栖社区原创内容,未经允许不得转载。