当前位置:   article > 正文

【NLP】第 1 章 : 语言模型简介_自然语言处理模型演化过程

自然语言处理模型演化过程

使不同于地球上其他动物物种的最大发展之一是语言的进化。这使我们能够交流和交流想法和思想,从而导致包括互联网在内的许多科学发现。这就是语言的重要性。

因此,当我们涉足人工智能领域 时,除非我们确保机器能够理解和理解自然语言,否则在那里取得的进展不会有太大进展。因此,对于任何想涉足人工智能领域,进而涉足通用人工智能领域的人来说,他们都应该很好地掌握我们在教机器如何理解语言方面取得的进展。

本章的目的是通过涵盖自然语言处理领域的一些历史方面及其演变为当今最先进的基于神经网络的语言模型,带您了解自然语言处理领域的演变。

自然语言处理的历史

自然语言处理 是机器学习和人工智能发展最快的领域之一。其目的是为机器提供理解自然语言的能力,并提供帮助人类完成与自然语言相关的任务的能力。机器翻译 (也称为 MT)的概念最初是在第二次世界大战期间发展起来的,是它生长的种子。NLU 或自然语言理解的目的是让机器理解自然语言并完成从一种语言到另一种语言的翻译、确定特定文本片段的情感或提供段落摘要等任务。

一种语言可以分解成它的组成部分,这些部分可以被认为是一组规则或符号。在整合过程之后,这些符号被用于信息的传输和广播。自然语言处理领域分为几个子领域,其中最著名的是自然语言生成 和自然语言理解 。顾名思义,这些子字段与文本的生成及其理解有关。小心不要让这些相对较新的词——例如音系学、语用学、形态学、句法和语义——让你失望。

NLP 或 NLU 的主要领域之一是不仅要理解特定语言的统计特性,还要理解它的语义。机器学习 的目的是将某种语言的内容输入机器,让机器不仅能理解统计特性,还能理解某个词的含义和上下文。

NLP 工程师的工作流程包括首先尝试将单词转换为计算机能够解释的数字,然后开发能够将这些数字用于许多必要任务的机器学习架构。更具体地说,它应该包括以下步骤:

  1. 收集数据:对于您想到的每个项目,要做的第一件事就是收集与您正在从事的项目直接相关的数据。这对于机器学习的研究来说是必不可少的,这是它自己的领域。我们为许多算法提供大量数据,其中一些数据的获取成本可能高得令人望而却步。在 NLP 的背景下,这个阶段可能需要从亚马逊或 Yelp 等各种电子商务网站收集推文或评论。此外,此过程可能涉及对收集到的推文或评论进行清理和分类。

  1. 标记化 :这是将每段文本分割成可管理的词块以便为后续阶段做好准备的过程。在此阶段,您可能还会被要求删除停用词、执行词形还原或对文本进行词干处理。

  1. 向量化 :在此阶段 ,将在上一步中获得的标记(称为“标记化 ”)转换为 ML 算法能够处理的向量。在这一点上我们很清楚,我们开发的模型并没有真正看到单词并以与我们人类相同的方式理解它们(或者我们认为我们这样做),而是对这些单词的向量表示进行操作.

  1. 模型创建和评估:此步骤需要开发 ML 模型和架构,例如转换器,它们能够咀嚼为所需的许多任务提供的词向量。这些任务中可能包括翻译、语义分析、命名实体识别和其他类似活动。NLP 工程师负责对模型和架构进行持续评估,并根据先前制定的目标和 KPI 对其进行衡量。

当我们想要理解某事时,我们需要形成该事物的心智模型。举个例子,如果我说我了解一只猫的样子,我就有了它的毛皮、眼睛、腿等特征的心智模型。这些特征或维度使我们能够代表一个事物或一个概念。

同样,要开始理解一个句子或一个词,首先,我们需要该词本身的数学表示。这样做的原因是机器只能理解数字 。所以我们需要一种方法来对数字表示进行编码。我们从一种非常简单的统计方法开始,称为词袋,如下所述。

词袋

词袋 是一种基于单词计数的统计技术,并使用它来创建出现这些单词的文档的数学表示。当我们说数学表示时,我们指的是数学向量,它表示向量空间中的文档,其中每个单词都可以被认为是该空间中的一个单独维度。

让我们举一个简单的例子。假设我们有三个文档,每个文档一个句子,如下所示:

  • Document 1: I am having fun of my lifetime.

  • Document 2: I am going to visit a tourist destination this time.

  • Document 3: Tourist destinations provide such fun.

现在我们要做的是首先根据文档集中出现的所有单词创建一个词汇表。由于我们的文档集由这三个文档 组成,我们将有一个词汇表如下(我们只取唯一的词):

  • I

  • am

  • having

  • fun

  • of

  • my

  • lifetime

  • going

  • to

  • visit

  • tourist

  • destination

  • this

  • time

  • provide

  • such

所以我们可以看到这里有 16 个单词(为简单起见,我们在集合中保留了 athe等单词)。这成为我们的语料库。现在将每个单词视为 16 维向量空间中的一个维度。

如果我们采用文档 1,则维度可以编码如下:

[1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0]

文档 2 将如下所示:

[1,1,0,0,0,0,1,1,1,1,1,1,1,0,0,0]

文档 3 将如下所示:

[0,0,0,1,0,0,0,0,0,0,1,1,0,0,1,1]

这里,1 表示文档中存在一个词。这种机制也称为单热编码 ,是文档或句子的最简单表示。随着本书的推进,我们将看到这种单词表示机制如何变得越来越好。

这种表示 允许机器玩弄这些数字并对它们执行数学运算。

n-grams

在我们开始更多地了解 Ngrams 之前,我们先绕个弯路,先了解一个叫做词袋模型的东西。

由于语言的顺序性,文本中单词的出现顺序至关重要。这是我们都非常清楚的事情,即使我们没有经常有意识地思考它。n-gram 为我们提供了根据前面的单词预测下一个单词的能力。

使用n-gram 创建文本背后的主要概念是基于单词的统计分布。主要思想是确定序列中第 n 个词出现的概率,给定在该词之前出现 n-1 个词的概率。实际上,它使用概率链规则来预测某个单词出现的概率。

该计算如下所示:

等式的左边表示看到单词 x(t+1) 的概率,因为我们已经看到了从 x(1) 到 x(t) 的单词。

整个概念基于概率链式法则,简单来说,它允许我们表示一个复杂的联合分布,并将其分解为一组条件分布。

让我们检查一个三元模型的简单示例。三元组模型 保留最后两个词的上下文来预测序列中的下一个词。

以下面的话语为例:

  • “Anuj is walking on the ___.”

在这里,我们需要预测“on the”之后的单词。

我们在这里假设,根据数据集,这些是以下可能的延续:“road”、“pavement”。

现在我们需要计算概率:

P(road |on the) 和 P(pavement| on the)

第一个概率是单词road出现的概率,因为上面的单词已经出现在它之前。第二个概率是给定单词pavement之前出现过的单词 pavement。

计算出概率后,具有最高条件概率的词将是下一个词。

我们可以重述为一种基于统计方法的简单机制,在给定先前单词的上下文的情况下计算下一个单词出现的概率。随着语料库变大和句子数量增加,进行超出简单二元 语法的计算将极具挑战性。我们需要学习一种生成这些条件概率分布的方法。条件分布是指给定一些单词,我们需要了解接下来可能出现的单词的概率分布。由于我们不知道这些分布的形状可能是什么,我们使用神经网络来近似这些分布的参数。在下一节中,我们将介绍循环神经网络 (RNN) ,它使我们能够完成此任务 。

循环神经网络

Apple 产品上的 Siri 和 Google 产品上的语音搜索都使用循环神经网络 (RNN),这是目前可用于处理顺序输入的最先进算法。

顾名思义,它是一个循环神经网络,由于其循环性质,它们最适合处理数据 序列,如时间序列或语言。在处理序列时,最重要的方面是处理上下文,这需要记住先前序列中发生的事情并使用该信息以更好的方式表示当前输入。

因为它是唯一具有内部存储器的算法,循环神经网络 (RNN) 非常强大和可靠。它们也是目前使用的最有前途的算法之一。

与许多其他类型的深度学习算法相比,递归神经网络已经存在了相当长的一段时间。它们最初是在80 年代 开发的,但直到最近几十年,我们才充分意识到它们的潜力。

尽管 RNN 已用于处理顺序数据 ,但它们往往会遇到梯度消失等某些问题,并且无法捕获长期依赖性。这导致出现了新的神经网络架构,如 LSTM(长短期记忆)和 GRU,它们克服了 RNN 的问题。

LSTM 和GRU 有自己的内部记忆,也有比普通 RNN 更精细的架构,能够记住给定数据输入的重要方面,这使它们能够对未来发生的事情做出非常准确的预测.

LSTM 和GRU 在处理时间序列或语言等顺序数据或现场部署的主要用于基于物联网的应用程序的传感器提供的数据时成为默认的神经网络架构。

循环神经网络 (RNN) 究竟是什么?

称为递归神经网络或 RNN的神经网络 子类别有利于序列数据 的建模。RNN 源自前馈网络 并显示类似于人脑运作方式的行为。换句话说,递归神经网络能够使用顺序数据生成预测结果,而其他算法则无法做到这一点。

RNN 的工作原理

为了完全理解 RNN,您需要对“常规”前馈神经网络以及时序数据有功能性的理解。

顺序数据 的最基本定义 就是简单的有序数据,其中相关项在时间上一个接一个。这方面的例子包括 DNA 序列和财务数据。最常见的顺序数据可能是时间序列数据,它无非是按适当的时间顺序呈现的一串数据点。

信息传输的方式赋予了 RNN 和前馈神经网络各自的名称。

前馈网络 是单通道网络,这意味着其中没有递归。输入通过各个层传递,网络的输出与实际输出进行比较,并通过反向传播(BP)机制引入纠错。这仅有助于一次处理一个输入。

因为它一次只能处理一个输入,所以前馈神经网络 在预测接下来会发生什么方面很糟糕,因为它没有内存来存储它接收的信息。前馈网络没有任何概念时间顺序,因为它只考虑了最近的输入。除了接受过的训练,它根本不记得过去发生的任何事情。

在 RNN 中,信息 在循环中无限重复。当需要做出选择时,它会考虑最近的输入以及它从之前提供的输入中吸取的教训。

1-1以直观的形式展示了这种差异。

图 1-1 简单的前馈网络和RNN 之间的区别

阐明循环神经网络记忆概念的另一种有效方法是通过图示来描述它。

想象一下,你有一个典型的前馈神经网络 ,你将“machine”这个词作为输入输入。然后你会看到网络处理这个词,一次处理一个字符。因为当它到达字符“h”时,它已经忘记了“m”、“a”和“c”,这种形式的神经网络几乎很难预测下一个会出现哪个字符,因为它已经已经忘记了那些角色。

然而,由于它拥有自己的内部记忆,循环神经网络能够记住这些字符。它生成输出,复制该输出,然后将这两个版本反馈回网络。

换句话说,递归神经网络将最近的历史结合到对现在的分析中。

因此,RNN 将当前和最近的过去作为其输入。这很重要,因为数据序列提供了有关其后内容的基本信息。这是 RNN 能够完成其他算法无法完成的任务的原因之一。

输出首先由前馈神经网络 产生,与所有其他深度学习算法一样,它首先为网络的输入分配一个权重矩阵。请注意,RNN 不仅会为最近的输入分配权重,还会为之前的输入分配权重。此外,循环神经网络将使用梯度下降和反向传播 (BP) 随着时间的推移调整权重。

随着事情的发展,我们发现 RNN 及其对应物在处理时间和捕获句子中单词之间的长期依赖性方面存在挑战。这导致了我们在下一节中描述的语言模型的演变。

语言模型

在过去十年中,从文本数据中提取信息的领域取得了长足的进步。自然语言处理取代文本挖掘 成为该领域的名称,因此,应用于该领域的方法也发生了重大变化。语言模型的开发 作为各种应用程序的基础,这些应用程序寻求从未处理的文本中提取有用的见解,这是导致这种转变的主要因素之一。

单词或单词序列 的概率分布是语言模型的基本构建块。在应用中,语言模型提供了将特定单词序列视为“有效”的机会。在这个讨论中,“有效性”根本不是指陈述的语法正确性。这表明它类似于人们说话(或者更具体地说,写)的方式,因为这就是语言模型获取知识的方式。语言模型“只是”一种以浓缩方式合并大量信息的工具,可在样本外设置中重复使用。这是需要牢记的重要一点,因为它表明语言模型(与其他机器学习模型一样,尤其是深度神经网络)没有魔力。

使用语言模型给我们带来了什么好处?

自然语言 的抽象理解是根据上下文推断单词概率所必需的,可以在各种上下文和活动中使用。

如果我们有一个准确的语言模型,我们就能够对文本进行提取或抽象摘要。如果我们有多种语言的模型,那么开发自动翻译系统就会简单得多。更复杂的应用程序是问答过程(有或没有上下文)。今天的语言模型被用于非常有趣的任务,如软件代码生成、文本到图像生成(如来自 OpenAI 的 DALL-E 2)以及其他文本生成机制(如 GPT3 等)。

必须理解,两者之间存在区别

1)概率语言模型下的统计技术

2)建立在神经网络上的语言模型

如“ n-grams ”部分所述,计算 n-grams 的概率会导致构建一个简单的概率语言模型 (a)(n-grams 是一个 n-word 序列,n 是一个大于 0 的整数). n-gram 的似然可以定义为 n-gram 的最终单词跟在特定 n-1 gram 之后(省略最后一个单词)的条件概率。通俗地说,是指不包含最后一个词的n-1gram之后的最后一个词出现的频率。给定代表现在的 n-1 gram,代表未来的 n-gram 的概率不依赖于代表过去的 n-2、n-3 等克。这是马尔可夫做出的假设。

采用这种方法有明显的缺点 。后面单词的概率分布只受它前面的 n 个单词的影响。这是最关键的一点。难以理解的文本包含丰富的上下文,这会对下一个单词的选择产生重大影响。因此,即使 n 高达 50,也可能无法从前面的 n 个词中辨别出后面的词的身份。

最重要的是,很明显这种方法不能很好地扩展:尽管大多数变体从未出现在实际文本中,但随着数据集大小 (n) 的增加,可能排列的数量激增。此外,每个出现的概率(或每个 n-gram 计数)都需要计算并保存!此外,不出现的 n-gram 会导致稀疏性问题,因为当它们很少时,概率分布的粒度可能相对较低(单词概率几乎没有不同的值 ;因此,大多数单词具有相同的概率)。

基于神经网络的语言模型

基于神经网络的语言模型 对输入进行编码的方式 使得处理稀疏性问题变得更加容易。嵌入层为每个单词生成一个任意大小的向量,其中考虑了单词之间的语义链接。这些连续向量生成了后续单词的概率分布中迫切需要的粒度。此外,语言模型基本上是一个函数(所有神经网络都是,包括大量的矩阵计算),这意味着没有必要存储所有的 n-gram 计数来构造概率分布下一个词。

稀疏性问题可以使用神经网络来解决,但上下文仍然存在困难。首先,开发语言模型的过程包括寻找以越来越有效的方式解决上下文问题的方法。这是通过引入越来越多的上下文词来实现的,以便以越来越有效的方式影响概率分布。其次,目标是设计一种架构,使模型能够发现给定上下文中哪些短语比其他短语更重要。

使用递归神经网络(在上一节中进行了描述)是朝着处理上下文主题的正确方向迈出的一步。选择以下单词时,它考虑了之前出现的所有单词,因为它是LSTM或基于GRU单元的网络。

基于 RNN 的设计 是顺序的这一事实是与使用这些类型的模型相关的主要缺点。由于没有任何并行处理的机会,因此在处理冗长的序列时,训练所需的时间会激增。Transformer 架构是解决您所遇到的这种困境的方法。建议您阅读由 Google Brain 制作的原始文档。

此外,OpenAI 的 GPT 模型 和谷歌的 BERT 正在使用 transformer 设计(我们将在接下来的章节中讨论)。除此之外,这些模型还使用了一种称为注意力 的技术,该技术允许模型发现在特定情况下哪些输入比其他输入更值得关注。

在模型架构方面,最重要的量子飞跃首先是由 RNN(特别是 LSTM 和 GRU)实现的,它解决了稀疏性问题并允许语言模型使用更少的磁盘空间,然后,最近,由transformer 架构,它使并行化成为可能并创建了注意力机制。这两项发展都很重要。然而,体系结构并不是语言模型可以展示其实力的唯一领域。

OpenAI 发布了一些基于 transformer 架构的语言模型 。 第一个模型是 GPT1,最新的是 GPT3。与 GPT1 的架构相比,GPT3 几乎没有任何创新之处。但它是巨大的。它是使用模型训练过的最大语料库进行训练的,这被称为Common Crawl ,它有 1750 亿个不同的参数。这在一定程度上是通过语言模型的半监督训练方法实现的,该方法允许使用文本作为训练示例,同时省略一些单词。GPT3 的非凡力量源于这样一个事实:它几乎可以阅读过去几年在互联网上任何地方发布的所有文本,并且能够反映自然语言所具有的大部分复杂性。

最后,我想介绍一下Google 提供的 T5模型 (图1-2)。过去,语言模型被用于传统的自然语言处理任务,例如词性 (POS) 标记或机器翻译,尽管这里和那里有一些调整。例如,由于 BERT 具有理解自然语言基本结构的抽象能力,因此只需少量额外指令,就可以对其进行重新训练,使其发挥词性标注器的作用。

图 1-2 Google 的 T5 模型 ,这是一种文本到文本模型

1-2显示了T5 语言模型 的表示。

使用T5 时,不需要进行任何类型的修改即可完成 NLP 作业。如果它收到包含某些 M 个标记的文本,它会识别出这些标记代表需要用正确的词填充的空白。它还能够提供答案。如果在问题 之后提供了一些上下文,它将寻找该上下文作为答案;否则,它会根据它已经拥有的信息来回答。有趣的是,它的设计师在问答比赛中被它打败了。左侧图像(图1-2 )中可以看到可能应用的其他示例。

概括

在我看来,NLP是我们最有可能在人工智能方面取得成功的领域 。这个术语令人兴奋不已,许多直接的决策系统以及几乎所有神经网络都被称为 AI;但是,这主要是营销。牛津英语词典以及几乎所有其他词典都定义了人工智能 机器执行与人类执行的任务类似的智能相关任务。AI 的一个关键方面是泛化,即单个模型执行许多任务的能力。同一个模型可以执行各种各样的 NLP 任务,并可以根据输入推断出该做什么这一事实本身就令人震惊,它使我们离真正开发出可与人类智力相媲美的人工智能系统又近了一步.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/345591
推荐阅读
相关标签
  

闽ICP备14008679号