自然语言处理 (NLP) 的技术演变史

一、简述

        本文的目标是了解自然语言处理 (NLP) 的历史,包括 Transformer 体系结构如何彻底改变该领域并帮助我们创建大型语言模型 (LLM)。

        基础模型(如 GPT-4)是最先进的自然语言处理模型,旨在理解、生成人类语言并与之交互。 要理解基础模型的重要性,有必要探索它们的起源,它们源于人工智能和自然语言处理领域的进步。

        自然语言处理 (NLP) 是一种专注于理解、解释和生成人类语言的 AI。 一些常见 NLP 用例包括:

         语音转文本和文本转语音的转换。 例如,生成视频字幕。

        机器翻译。 例如,将文本从英语翻译为日语。

        文本分类。 例如,将电子邮件标记为垃圾邮件或非垃圾邮件。

        实体提取。 例如,从文档中提取关键字或名称。

        问题解答。 例如,提供“法国的首都是哪里?”等问题的答案

        文本摘要。 例如,根据多页文档生成一个简短的单段摘要。

从历史上看,NLP 一直具有挑战性,因为我们的语言很复杂,计算机很难理解文本。

二、用于NLP的统计技术

        过去几十年,自然语言处理 (NLP) 领域取得了多项技术成果,实现了大型语言模型 (LLM)。为了了解 LLM,我们先来了解过去一段时间内为当前技术做出贡献的 NLP 统计技术。

        由于 NLP 侧重于理解和生成文本,因此实现 NLP 时的大多数首次尝试都基于语言固有的规则和结构。 特别是在机器学习技术流行之前,采用的主要方法是结构化模型和形式化语法。

        这些方法依赖于语言规则和语法模式的显式编程来处理和生成文本。 尽管这些模型可以合理地处理某些特定语言任务,但在面对自然语言的巨大复杂性和可变性时,它们面临着重大挑战。

        20 世纪 90 年代,研究人员开始利用统计和概率模型直接从数据中学习模式和表示形式,而不是硬编码规则。

1、了解分词

        如你所料,计算机很难破译文本,因为它们主要依赖于数字。 因此,为了读取文本,我们需要将呈现的文本转换为数字。

        使计算机能够更轻松地处理文本的一个重要技术发展是词汇切分。 标记是具有已知含义的字符串,通常表示一个字词。 词汇切分将字词转换为标记,然后再转换为数字。 词汇切分的统计方法是使用管道:

        首先选择要标记的文本。 根据规则拆分文本中的字词。 例如,拆分含空格的字词。 词干分解。 通过删除字词的末尾来合并类似字词。 停止字词删除。 删除没有意义的干扰词(如 the 和 a)。 提供了这些字词的字典,以在结构上将它们从文本中删除。 为每个唯一标记分配一个数字。 允许标记文本的词汇切分。 因此,统计技术可用于让计算机在数据中查找模式,而不是应用基于规则的模型。

2、NLP 统计技术

        实现 NLP 的两大重要进展都使用了统计技术:Naïve Bayes 和词频–逆向文档频率 (TF-IDF)。

了解 Naïve Bayes

        Naïve Bayes 是一项统计技术,最初用于电子邮件筛选。 为了了解垃圾邮件和非垃圾邮件之间的区别,将两个文档进行比较。 Naïve Bayes 分类器标识哪些标记与标记为垃圾邮件的电子邮件相关联。 换句话说,该技术会找出哪组字词仅出现在一种类型的文档中,但未出现在另一种类型的文档中。 字词组通常称为词袋功能。

        例如,与常规电子邮件相比,有关可疑健康产品的垃圾邮件中 miracle curelose weight fast 和 anti-aging 的出现频率可能更高。

        虽然现已证实 Naïve Bayes 比简单的基于规则的文本分类模型更有效,但它仍然相对简单,因为只考虑了字词或标记是否存在,但没有考虑位置。

了解 TF-IDF

        词频–逆向文档频率 (TF-IDF) 技术具有类似的方法,即将一个文档中字词出现的频率与整个文档语料库中字词出现的频率进行比较。 通过了解字词的使用上下文,可以基于某些主题对文档进行分类。 TF-IDF 通常用于信息检索,以帮助了解要搜索的相关字词或标记。

        例如,字词 flour 通常出现在包含烘焙食谱的文档中。 如果搜索含 flour 的文档,也可以检索到包含 baking 的文档,因为这些字词经常在文本中一起使用。

        事实证明,TF-IDF 对于搜索引擎了解文档与某人的搜索查询的相关性非常有用。 但是,TF-IDF 技术不考虑字词之间的语义关系。 不会检测同义词或具有类似含义的字词。

        尽管统计技术是 NLP 领域中宝贵的技术成果,但深度学习技术取得了必要的创新,从而实现了当前拥有的 NLP 水平。

三、用于NLP的深度学习技术

        统计技术在文本分类等自然语言处理 (NLP) 任务中表现相对较好。 对于翻译等任务,仍有很大的改进空间。

        最近,深度学习技术推动了自然语言处理 (NLP) 领域在翻译等任务方面的发展。

        当你要翻译文本时,不应只将每个字词翻译为另一种语言。 你可能还记得多年前的翻译服务,它们翻译的句子过于直白,常常导致有趣的结果。 相反,你希望语言模型能够理解文本的含义(或语义),并使用该信息在目标语言中创建语法正确的句子。

1、了解字词嵌入

        将深度学习技术应用于 NLP 时引入的一个关键概念是字词嵌入。 字词嵌入解决了无法定义字词之间的语义关系的问题。

        在字词嵌入之前,NLP 的一个普遍挑战是检测字词之间的语义关系。 字词嵌入会表示矢量空间中的字词,以便可以轻松描述和计算字词之间的关系。

        字词嵌入是在自我监督学习期间创建的。 在训练过程中,模型会分析句子中字词的共现模式,并学习将它们表示为矢量。 矢量可在多维空间中用坐标表示字词。 然后,可以通过确定相对矢量之间的距离来计算字词之间的距离,并描述字词之间的语义关系。

        假设你要使用大量文本数据集训练一个模型。 在训练过程中,该模型发现字词“bike”和“car”通常用于相同的字词模式中。 除了在相同的文本中发现“bike”和“car”之外,你还可以发现它们都用于描述类似的事物。 例如,有人可能会驾驶“bike”或“car”,或者在商店购买“bike”或“car”。

        模型了解到,这两个字词通常位于类似的上下文中,于是它会在矢量空间中将 bike 和 car 的字词向量绘制得靠近彼此。

        假设我们有一个三维矢量空间,其中每个维度对应一个语义特征。 在本例中,假设维度表示车辆类型运输方式活动等因素。 然后,我们可以根据字词的语义关系将假设的矢量分配给字词:

  1. Boat [2, 1, 4] 靠近“drive”和“shop”,表示你可以驾驶船只和游览水域附近的商店。
  2. Car [7, 5, 1] 离“bike”比“boat”更近,因为汽车和自行车都用于陆地而不是水上。
  3. Bike [6, 8, 0] 在活动维度中更靠近“drive”,在车辆类型维度中靠近“car”。
  4. Drive [8, 4, 3] 靠近“boat”、“car”、“bike”,但远离“shop”,因为它描述的是不同类型的活动。
  5. Shop [1, 3, 5] 离“bike”最近,因为这些字词最常一起使用。

        尽管字词嵌入是检测字词之间的语义关系的一种很好的方法,但它仍然存在问题。 例如,具有不同意向的字词(如 love 和 hate)通常会显示为相关,因为它们用于类似的上下文中。 另一个问题是,模型对每个字词只使用一个条目,导致具有不同含义的字词(例如 bank)会在语义上与大量字词相关。

2、将记忆添加到 NLP 模型

        理解文本不仅仅是理解单独呈现的单个字词。 字词的含义可能有所不同,具体取决于它们所处的上下文。 换句话说,字词周围的句子会影响字词的含义。

使用 RNN 包含字词的上下文

        在深度学习之前,包含字词的上下文是一项过于复杂且成本高昂的任务。 在包含上下文方面的第一个突破是循环神经网络 (RNN)。

        RNN 由多个连续步骤组成。 每个步骤可接受一个输入和一个隐藏状态。 假设每个步骤中的输入是一个新字词。 每个步骤还会生成一个输出。 隐藏状态可用作网络的记忆,用于存储上一步的输出并将其作为输入传递给下一步。

        假设有一个句子是这样的:

        Vincent Van Gogh was a painter most known for creating stunning and emotionally expressive artworks, including ...

        要知道下一个词是什么,你需要记住画家的名字。 该句子需要补全,因为最后一个词是缺失的。 NLP 任务中缺失或掩盖的字词通常用 [MASK] 表示。 通过在句子中使用特殊的 [MASK] 标记,可以让语言模型知道它需要预测缺失的标记或值是什么。

        简化示例句子后,可以为 RNN 提供以下输入:Vincent was a painter known for [MASK]

        RNN 将每个标记作为输入,对其进行处理,并使用该标记的记忆更新隐藏状态。 将下一个标记作为新输入进行处理时,将更新上一步中的隐藏状态。

        最终,最后一个标记作为输入传递给模型,即 [MASK] 标记。 指示缺少信息,并且模型需要预测其值。 然后,RNN 会使用隐藏状态来预测出输出应类似于 Starry Night

        在示例中,隐藏状态包含信息 Vincentispainterknow。 使用 RNN 时,每个标记在隐藏状态下都同等重要,因此在预测输出时它们会得到同等的考量。

        RNN 使得在解读字词相对于完整句子的含义时能够包含上下文。 但是,随着 RNN 的隐藏状态随每个标记而更新,实际的相关信息(或信号)可能会丢失。

        在提供的示例中,文森特·梵高的名字在句子的开头,而掩码在末尾。 在最后一步,当掩码作为输入传递时,隐藏状态可能包含大量与预测掩码的输出无关的信息。 由于隐藏状态的大小有限,相关信息甚至可能会被删除,以便为新的和更近期的信息腾出空间。

        当我们读到这句话时,我们知道只有某些字词对于预测最后一个字词是必不可少的。 但是,RNN 会包含处于隐藏状态的所有(相关和不相关的)信息。 因此,相关信息可能会在隐藏状态下成为弱信号,这意味着它可能会被忽略,因为有太多其他无关的信息在影响着模型。

通过长短期记忆改进 RNN

        针对 RNN 的弱信号问题的一个解决方案是一种更新型的 RNN:长短期记忆 (LSTM)。 LSTM 能够通过维护在每步中更新的隐藏状态来处理序列数据。 使用 LSTM 时,模型可以决定要记住的内容和要忘记的内容。 这样一来,可以跳过不相关或不提供重要信息的上下文,并且可以将重要信号保存更长时间。

四、用于NLP的Transformer结构

        自然语言处理 (NLP) 的突破归功于 Transformer 体系结构的开发。 Transformer 是在 2017 年 Vaswani 等人撰写的《Attention is all you need》(注意力是你所需要的一切)论文中引入的。 Transformer 体系结构提供了递归神经网络 (RNNS) 执行 NLP 的替代方法。 RNN 按顺序处理字词,因此是计算密集型的,而 Transformer 不按顺序处理字词,而是使用注意力 (attention) 独立地并行处理每个字词。 字词的位置和在句子中的顺序对于理解文本含义来说很重要。 为了包含此信息而不必按顺序处理文本,Transformer 使用了位置编码。

1、了解位置编码

        在 Transformer 推出之前,语言模型使用词嵌入来将文本编码为向量。 在 Transformer 体系结构中,使用了位置编码来将文本编码为向量。 位置编码是词嵌入向量和位置向量之和。 通过这样做,编码后的文本包含有关字词的含义及其在句子中的位置的信息。

        若要对字词在句子中的位置进行编码,可使用单个数字来表示索引值。 例如:

        文本或序列越长,索引值可能就越大。 虽然对文本中的每个位置使用唯一值是一种简单的方法,但值没有任何含义,并且在模型训练期间,值的增大可能会导致不稳定。 《Attention is all you need》论文中提出的解决方案是使用正弦和余弦函数,其中 pos 表示位置,i 表示维度:

        结合使用这些周期函数进行创建时,可以为每个位置创建唯一的向量。 这样的话,值在一个范围内,并且当编码较大的文本时,索引不会变大。 此外,这些位置向量使模型能够更轻松地计算和比较句子中不同字词的位置。

2、了解多头注意力

        Transformer 用于处理文本的最重要技术是使用注意力而不是递归。 注意力也称为自注意力或内部注意力,这种机制用于将新信息映射到已学习的信息,以了解新信息需要什么。

        Transformer 使用注意力函数,其中新字词使用位置编码进行了编码,并表示为查询。 已编码的字词的输出是具有关联值的键。 为了说明注意力函数使用的三个变量(查询、键和值),让我们来看看一个简化的示例。 假设对句子 Vincent van Gogh is a painter, known for his stunning and emotionally expressive artworks. 进行编码。对查询 Vincent van Gogh 进行编码时,输出可能将 Vincent van Gogh 用作键,将 painter 用作关联值。 该体系结构将键和值存储在表中,将来解码时可使用该表:

        每次显示新句子时,例如 Shakespeare's work has influenced many movies, mostly thanks to his work as a ..., 模型都可将 Shakespeare 作为查询,并在键值表中查找此内容来补全句子。 Shakespeare 查询最接近 William Shakespeare 键,因此关联值 playwright 显示为输出。

3、使用缩放点积来计算注意力函数

        为了计算注意力函数,查询、键和值都编码为向量。 然后,注意力函数计算查询向量和键向量之间的缩放点积。

        点积计算表示标记的向量之间的角度,当向量对齐程度更高时,积越大。 softmax 函数在注意力函数中对向量的缩放点积使用,来创建具有可能结果的概率分布。 换句话说,softmax 函数的输出中显示了哪些键最接近查询。 然后选择概率最高的键,关联值是注意力函数的输出。

        Transformer 体系结构使用多头注意力,这意味着标记由注意力函数多次并行处理。 这样做,可通过各种方式处理处理字词或句子,以便从句子中提取不同类型的信息。

4、Transformer 体系结构

        在《Attention is all you need》论文中,推荐的 Transformer 体系结构建模如下:

        原始 Transformer 体系结构中主要有两个组件:

        编码器:负责处理输入序列,并创建捕获每个标记的上下文的表示形式。

        解码器:通过关注编码器的表示形式并预测序列中的下一个标记,生成输出序列。

        在 Transformer 体系结构中,最重要的创新是位置编码和多头注意力。 侧重于这两个组件的体系结构的简化表示形式可能如下所示:

        在编码器层中,输入序列使用位置编码进行编码,之后使用多头注意力来创建文本的表示形式。

        在解码器层中,(不完整的)输出序列以类似的方式进行编码,方法是先使用位置编码,然后使用多头注意力。 然后,在解码器中再次使用多头注意力机制,来合并编码器的输出和已编码的输出序列的输出(该序列的输出作为输入传递到编码器部分)。 这样,就可以生成输出。

         Transformer 体系结构引入的概念极大地提高了模型理解和生成文本的能力。 已经采用了 Transformer 体系结构来训练不同的模型,以便针对特定 NLP 任务进行优化。

        Transformer 体系结构让我们可以更高效地为自然语言处理 (NLP) 训练模型。 注意力机制不处理句子或序列中的每个标记,而是使模型以各种方式并行处理标记。

        若要使用 Transformer 体系结构训练模型,需要使用大量文本数据作为输入。不同的模型被训练出来,这些模型主要的不同点在于训练使用的数据或它们在体系结构中实现注意力机制的方式。 由于模型是通过大型数据集训练的,并且模型本身的大小很大,因此它们通常被称为大型语言模型 (LLM)。

        许多 LLM 都是开源的,可通过 Hugging Face 等社区公开获取。很多云服务商还提供了最常用的 LLM 作为基础模型。基础模型是通过大型文本预先训练的,可以通过相对较小的数据集针对特定任务进行微调。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IPEmotion轻松解决急停设备的控制与数据存储问题

一 背景 众所周知,急停操作在各种工业领域中都扮演着非常重要的角色。在一个个紧急情况下,及时采取急停操作可节省宝贵时间,避免人身伤害或设备损坏,降低安全风险,尤其是在新能源测试中,出于对高压电性能方…

linux 关闭不了docker服务

[rootiZ2ze7y4akbxb1yjoydztxZ ~]# systemctl stop docker Warning: Stopping docker.service, but it can still be activated by: docker.socket 在 systemd 系统中,服务和套接字是分开管理的。docker.socket 是一个套接字单元,用于监听 Docker 的 API…

小程序AI智能名片S2B2C商城系统:五大营销技术模块深度剖析

在当今数字化营销的时代,小程序AI智能名片S2B2C商城系统凭借五大核心营销技术模块,为企业提供了强大的私域流量管理与营销能力。下面我们将逐一剖析这五大模块,看它们如何共同助力企业实现精准营销与业务增长。 一、小程序:用户触…

力扣刷题 70.爬楼梯

题干 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 1 阶 2. 2 阶 示例 2&…

机器学习和深度学习 -- 李宏毅(笔记与个人理解)Day 23

Day 23 Self - Atention 变形 关于很多个former 的故事 痛点: 在于做出注意力矩阵之后的运算惊人 由于self - attention 一般都是在big model 的一部分,所以,一般不会对模型造成决定性的影响, 只有当model 的输入较长的时候&am…

求臻医学MRD产品斩获2023年度肿瘤标志物年度十大创新技术产品奖

2024年4月20日,中国肿瘤标志物学术大会开幕式暨名家讲坛在南京隆重召开! 会议期间,中国抗癌协会肿瘤标志专业委员会联合中国抗癌协会肿瘤临床检验与伴随诊断专业委员会、中国抗癌协会肿瘤基因诊断专业委员等共同发布“2023 年度肿瘤标志物创新技术产品”…

Java 提取HTML文件中的文本内容

从 HTML 文件中提取文本内容是数据抓取中的一个常见任务,你可以将提取的文本信息用于编制报告、进行数据分析或其他处理。本文分享如何使用免费 Java API 从HTML 文件中提取文本内容。 安装免费Java库: 要通过Java提取HTML文本,需要用到Free…

C语言实现双人贪吃蛇项目(基于控制台界面)

一.贪吃蛇 贪吃蛇是一款简单而富有乐趣的游戏,它的规则易于理解,但挑战性也很高。它已经成为经典的游戏之一,并且在不同的平台上一直受到人们的喜爱和回忆。 二.贪吃蛇的功能 游戏控制:玩家可以使用键盘输入设备来控制蛇的移动方…

基于模糊控制的纯跟踪横向控制在倒车中的应用及实现

文章目录 1. 引言2. Pure Pursuit在倒车场景的推导3. 模糊控制器的设计3.1 基础知识3.2 预瞄距离系数k的模糊控制器设计 4. 算法和仿真实现 1. 引言 Pure Pursuit是一种几何跟踪控制算法,也被称为纯跟踪控制算法。他的思想就是基于当前车辆的后轮中心的位置&#x…

Axure RP 9 for Mac/win:打造极致交互体验的原型设计神器

在数字化浪潮席卷全球的今天,原型设计作为产品开发的关键环节,其重要性不言而喻。Axure RP 9,作为一款专为设计师和开发者打造的原型设计软件,以其出色的交互设计能力和高效的协作体验,赢得了广大用户的青睐。 Axure …

【JavaScript】axios

基础使用 <script src"https://cdn.bootcdn.net/ajax/libs/axios/1.5.0/axios.min.js"></script> <script>axios.get(https://study.duyiedu.com/api/herolist).then(res> {console.log(res.data)}) </script>get - params <script s…

U盘乱码频发,原因与解决方案大揭秘

在日常的工作和生活中&#xff0c;U盘因其便携性和大容量成为了我们不可或缺的存储设备。然而&#xff0c;有时候我们会遭遇U盘乱码的问题&#xff0c;这让我们无法正确读取和使用其中的文件。那么&#xff0c;U盘乱码究竟是何原因导致的呢&#xff1f;又该如何解决这一问题呢&…

Python自学之路--002:Python 如何生成exe可执行文件

目录 1、概述 2、安装pyinstall 3、终端指令 1、概述 大部分时候&#xff0c;执行的仅仅是一个Python解释器出来的文件&#xff0c;至于怎么将文件生成exe的可执行文件呢&#xff1f;Python有对应的库&#xff0c;也就是pyinstall。安装之后产生dist文件夹&#xff0c;里面就…

UE5 GAS开发P34 游戏效果理论

GameplayEffects Attributes&#xff08;属性&#xff09;和Gameplay Tags&#xff08;游戏标签&#xff09;分别代表游戏中实体的特性和标识。 Attributes&#xff08;属性&#xff09;&#xff1a;Attributes是用来表示游戏中实体的特性或属性的值&#xff0c;例如生命值、…

ffmpeg的安装以及使用

1.FFmpeg 的主要功能和特性&#xff1a; 格式转换&#xff1a;FFmpeg 可以将一个媒体文件从一种格式转换为另一种格式&#xff0c;支持几乎所有常见的音频和视频格式&#xff0c;包括 MP4、AVI、MKV、MOV、FLV、MP3、AAC 等。视频处理&#xff1a;FFmpeg 可以进行视频编码、解…

书生·浦语大模型开源体系(四)作业

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

云计算技术架构及发展

云计算是指一种将可伸缩、弹性、共享的物理和虚拟资源池以按需自服务的方式供应和管理&#xff0c;并提供网络访问的模式。 云计算服务商利用分布式计算和虚拟资源管理等技术&#xff0c;通过网络将分散的ICT资源集中起来形成共享的资源池&#xff0c;并以动态按需和可度量的方…

基于若依和flowable7.0.1的ruoyi-nbcio-plus流程管理系统正式发布

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

皮带机巡检解决方案

在化工行业中、皮带机人工巡检存在的疲劳安全、巡检质量、数据分析等问题&#xff0c;通过以智能巡检机器人为中心的设备生命周期运维管理系统&#xff0c;完成对皮带机的巡检巡逻和排查预警&#xff0c;有效降低人员和设备的安全隐患&#xff0c;更助力企业运维水平和智能化作…

人脸识别 ArcFace人脸识别

文章目录 损失函数的设计思路 损失函数的设计思路