NLP入门——基础知识_nlp学习-程序员宅基地

技术标签: nlp  ai  入门  生成式  

目录

1 生成式AI和AIGC:

1.1 生成式AI所生成的内容就是AIGC

1.2 AI的Venn图:

1.3 监督学习(训练数据带标签):

1.4 无监督学习(不带标签):一般处理聚类任务​编辑

1.5 强化学习:

1.6 深度学习:

2 大语言模型LLM简介:

2.1 模型参数逐渐增加(泛化能力更强):

2.2 技术发展里程碑:

2.3 AI对话产品发展历程:

​3 Transformer提出之前语言模型的主流架构:

3.1 RNN(循环神经网络):

3.2 LSTM(长短时记忆网络):

3.3 Transformer:

4 GPT等生成式大语言模型背后的工作原理:

4.1 公认原理:

4.2 框架示意图:

4.3 编码器工作流程:

4.3.1 输入文本token化:

4.3.2 向量嵌入:

4.3.3 位置编码:

4.3.4 自注意力机制:

4.3.5 前馈神经网络: 

4.3.6 注意:

 4.4 解码器工作流程:

4.4.1 接受一个特殊值(作为开头):

4.4.2 也要经过嵌入层和位置编码,然后进入多头自注意力层

4.4.3 编码器和解码器多头自注意力层的区别:

4.4.4 注意:

 4.4.5 线性层和softmax层:

 4.5 三个变种:

4.5.1 仅编码器:

4.5.2仅解码器(自回归模型):

4.5.3 编码器和解码器(序列到序列):

5 GPT的构建历程:

5.1 第一步:通过大量文本进行无监督预训练得到基座模型(花费多)

5.2 第二步:通过人类撰写的高质量对话数据对基座模型进行监督微调得到微调后的基座模型(SFT)

5.3 第三步:由人类标注员对多个回答的数据进行排序打分,基于该数据训练一个能对回答进行评分预测的奖励模型

5.4 第四步:训练奖励模型+强化学习训练

6 改进GPT的思路:

 6.1 小样本提示:

 6.2 思维链:

 6.3 分步骤思考(let's think step by step)

7 GPT目前存在的短板及解决措施:

 7.1 GPT目前存在的短板:

 7.2 检索增强生成RAG:

 7.3 程序辅助语言模型(PAL)

 7.4 协同同理与行动ReAct:


1 生成式AI和AIGC:

1.1 生成式AI所生成的内容就是AIGC

1.2 AI的Venn图:

注意:

1.3 监督学习(训练数据带标签):

经典的监督学习任务包括分类(划分类别)和回归(预测):

1.4 无监督学习(不带标签):一般处理聚类任务
1.5 强化学习:

强化学习是一种通过主体(Agent)与环境(Environment)交互而进行学习的方法。它既不属于有监督学习,也不属于无监督学习。它的目标是要通过与环境(Environment)交互,根据环境的反馈(Reward),优化自己的策略(Policy),再根据策略行动(Action),以获得更多更好的反馈奖励(Reward)。 

1.6 深度学习

引入了神经元和神经网络的概念。

而生成式AI和大语言模型LLM都属于深度学习的一种应用,后者专门用于自然语言处理任务。

LLM中的大:参数多,高达数十亿;用于训练的数据多; 

并非所有的生成式AI都属于大语言模型,如图像的扩散模型,并不输出文本;

大语言模型也不属于生成式AI,比如谷歌的BERT,不擅长长文本生成工作。

2 大语言模型LLM简介:

2.1 模型参数逐渐增加(泛化能力更强):

2.2 技术发展里程碑:

2017年6月,谷歌团队发表论文,提出transformer架构:

2.3 AI对话产品发展历程:

 GPT全称:(生成式预训练Transformer)

 3 Transformer提出之前语言模型的主流架构:

3.1 RNN(循环神经网络):

 缺点:

无法并行运算,处理效率低;

不擅长处理长文本,难以捕获长距离的语义关系;比如下面这个例子:

3.2 LSTM(长短时记忆网络):

缺点:

仍然无法解决并行计算问题;

对于超长序列,仍然不能有很好的效果。

3.3 Transformer:

引入自注意力机制:计算得到每一个词和其余所有词的相关性;

位置编码:规定了词在句子中出现的顺序,便于并行训练,提高速度。

有能力学习输入序列中的所有词的相关性和上下文,不会受到短时记忆的影响; 

包括词向量(文本转换为数据)和位置向量(标注在句子中出现的顺序):

4 GPT等生成式大语言模型背后的工作原理:

4.1 公认原理:

通过预测出现概率最高的下一个词来实现文本生成(类似自动补全)

4.2 框架示意图:

4.3 编码器工作流程:
4.3.1 输入文本token化:

token:可以认为其是输入文本的基本单位,可以是一整个短词,也可以是一个长词的一部分。

4.3.2 向量嵌入:

向量(一串数字):可以包含更多的语法语义信息;

相似的词在向量空间中距离较近,不相似的词则在向量空间中距离较远。

进而便于模型计算向量空间中两个向量的距离进而得到相似度。 

GPT3的向量长度高达12288.

4.3.3 位置编码:

将上文得到的词向量和位置向量(词在文本中出现的位置)经过一个线性层得到位置编码。

4.3.4 自注意力机制:

为了融合上下文之间的相关信息,引入自注意力机制,通过计算每对词之间的相关性来决定注意力权重。

Transformer实际使用的是多注意力头机制,每个头都有它自己的注意力权重,用来关注文本里不同特征或方面,比如有的关注动词,有的关注修饰词。

而且他们之间互不影响,可以做并行运算;

每个自注意力头的权重都是模型在之前的训练过程中,从大量文本中逐渐学习和调整的。

4.3.5 前馈神经网络: 

对自注意力模块的输出做进一步处理,增强模型的表达能力。

4.3.6 注意:

编码器在transformer中可能不止一个,实际上是由多个堆叠在一起,每个编码器内部结构一样,但不共享权重,这保证了模型可以更深入理解数据,处理更复杂的文本语言内容。

 4.4 解码器工作流程:

通过前面的编码器我们有了输入序列中各个token序列的抽象表示。

4.4.1 接受一个特殊值(作为开头):

不仅会将来自编码器的抽象表示作为输入,还会把之前已经生成的文本也作为输入,进而保证连贯性。

4.4.2 也要经过嵌入层和位置编码,然后进入多头自注意力层
4.4.3 编码器和解码器多头自注意力层的区别:

解码器的多头自注意力层只关注前缀(只使用当前词以及前面的词作为上下文 ),称为带掩码的多头自注意力层:

 

内部有两个多头自注意力层数,其中一个是针对(输出序列),还有一个是针对输入序列(来自编码器的输出)。

4.4.4 注意:

解码器中也有多层堆叠:

 4.4.5 线性层和softmax层:

解码器的最后阶段是该两层,作用是把解码器输出的表示转换为词汇表的概率分布(也即下一个生成Token的概率)

至于输出是否符合客观事实,模型不得而知,它只是输出其当前计算得到的最大概率的一个Token。

模型一本正经的胡说八道(比如讲述“林黛玉倒拔垂杨柳”)被称之为“幻觉”现象。 

解码器的整个流程会持续多次,直到生成的是一个用来表示序列结束的特殊token。

 4.5 三个变种:
4.5.1 仅编码器:

适用于理解语言任务

4.5.2仅解码器(自回归模型):

非常擅长预测下一个词

4.5.3 编码器和解码器(序列到序列): 

适用于将一个序列转换为另一个序列的任务

5 GPT的构建历程:

5.1 第一步:通过大量文本进行无监督预训练得到基座模型(花费多)

利用海量文本自行学习人类语言的语义和语法,了解表达结构和模式

预测过程中不断更新权重,从而逐渐能根据上文生成合适的下文

该模型可以进行文本生成(根据上文补充文本)

 

给它一个问题可以帮你生成更多类似的问题: 

5.2 第二步:通过人类撰写的高质量对话数据对基座模型进行监督微调得到微调后的基座模型(SFT)

该模型可以进行文本生成和对话能力

已经可以进行对话了,但是质量并不高:

5.3 第三步:由人类标注员对多个回答的数据进行排序打分,基于该数据训练一个能对回答进行评分预测的奖励模型

 让chatGPT对问题做出回答,人类标注员回答进行打分(3H原则)

让第二步得到的SFT模型对问题生成多个回答,人类标注员对回答进行排序,得到排序数据,进而用于训练奖励模型 

从回答和回答对应的评分中学习,得到奖励模型

5.4 第四步:训练奖励模型+强化学习训练

GPT的参数会随着训练被更新,但是奖励模型的参数却不再会变化了。

6 改进GPT的思路:

 6.1 小样本提示:

给示例。

优点:AI回应的内容风格会大概率遵循我们给的提示(JSON格式)。 

缺点:不适合用于需要数学计算等推理思维能力的问题

6.2 思维链:

给出的示例中不仅给出结果,更要给出推理得到结果的过程

优点:非常适合解决推理计算等问题 

6.3 分步骤思考(let's think step by step)

7 GPT目前存在的短板及解决措施:

7.1 GPT目前存在的短板:

 数据过时,编造事实,计算不准

7.2 检索增强生成RAG:

问题背景:如果训练数据里对某个领域的文本覆盖不多,那么我们在提问相关领域的问题时,AI可能会生成不准确或者错误的回答。

因此,我们可以提供外部文档,然后将这些文档分为几个段落(因为LLM一次接受的文本序列有限),然后转换为向量,存进向量数据库。

当我们提出问题的时候,这个问题也会转化为向量,然后进入向量数据库中查找与该向量最为接近的段落向量。

 找到以后,段落信息和原本的问题查询向量组合在一起,一块传给AI,然后AI会把查询向量作为上下文,基于里面的信息给出更严谨的回答。 

整体的流程如下图所示:

想要了解更多可以参考下面这个博客:

RAG (检索增强生成)技术详解:揭秘基于垂直领域专有数据的Chatbots是如何实现的 - 知乎 (zhihu.com)

7.3 程序辅助语言模型(PAL)

 问题背景:针对AI不善于做计算的问题

在思维链的基础上,让AI写出python代码,然后提交给python解释器(等计算工具),然后将计算结果返回给AI。(现在也有一种讨论是“用变量表示,然后用数学公式求解器”计算,这样子及绝了按序计算(一行一行的python代码执行)可能造成的错误。

 7.4 协同推理与行动ReAct:

问题背景:数据过时问题,知识截断,重新训练模型开销巨大

上网+分布推理的思维链:(如web browing)功能

 注意:行动不一定指的是输入关键词进行搜索、点击链接等等;

  • 如果可以和python等代码解释器进行交互,那么运行代码也可以作为可选项;
  • 如果模型可以访问外部文档,那么从文档中获取关键字也可以作为行动选项;
  • 如果模型可以调用某个应用的API,那么和那个应用交互也可以作为行动选项。

可以使用LangChain实现此目的:

什么是LangChain呢?

答:LangChain是一个开源框架,允许从事人工智能的开发者将例如GPT-4的大语言模型与外部计算和数据来源结合起来。该框架目前以Python或JavaScript包的形式提供。

假设,你想从你自己的数据、文件中具体了解一些情况(可以是一本书、一个pdf文件、一个包含专有信息的数据库)。LangChain可以将GPT-4和这些外部数据连接起来,甚至可以让LangChain帮助你采取你想采取的行动,例如发一封邮件。

想要对LangChain了解更多可以参考下面这个博客:

什么是LangChain - 知乎 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/a131529/article/details/134230680

智能推荐

tls指纹之chrome新版功能/近期问题汇总/目前能直接使用的tls对抗库_chrome tls1.0设置-程序员宅基地

文章浏览阅读1.5k次。今天在找某个东西的时候,无意间,想看看ja3相关的东西,有没有啥值得研究的,然后就突然想起chrome随机指纹那个事,这个其实在2023年开年上班那几天的时候,就我群里看到群友说,chrome新版,自带随机ja3指纹,卧槽?我当时是不信的,结果试了半天,确实是不一样了????我用的以下网站测试,ja3官网现在经常无法访问了这是什么个情况?我反复确认,确实是不一样了,具体哪里不一样了呢?颠覆了啊,卧槽,为啥,ja3官网之前不是说一个浏览器客户端ja3指纹基本是固定的吗?_chrome tls1.0设置

开机所有网卡全部down掉解决方法,ens33 down_网卡down原因-程序员宅基地

文章浏览阅读4.9k次,点赞7次,收藏18次。一开机就发现所有网卡全部downifup ens33出现如下图:发现NetworkManager无效 难道是设备未托管?看了下配置文件和日志也没看出个所以然。。。。突然想到 难道是NetworkManager 和service冲突了?解决方法:ok,果然是细节决定成败,不多说了,容我哭去吧。。。。。。。。本解决方法纯属个人拙见,欢迎大佬扩展~..._网卡down原因

Component One C# c1FlexGrid 帮助文档-程序员宅基地

文章浏览阅读4.6k次。Value-Mapped Lists(值映射列表) 功能描述:上述财产的ComboList确保单元格的值是从名单中挑选。由用户选择的值转换成列的适当类型和存储在网格,完全一样,如果用户已输入的值。在许多情况下,细胞能够承担来自明确列出的值,但是你想显示一个用户的实际价值的版本。例如,如果一个列包含的产品代码,您可能要存储的代码,但显示的产品名称来代替。这是通过的DataMa_c# c1flexgrid

1217 Arbitrage(最短路)_arbitrage is the use of discrepancies in currency-程序员宅基地

文章浏览阅读199次。ArbitrageProblem Description Arbitrage is the use of discrepancies in currency exchange rates to transform one unit of a currency into more than one unit of the same currency. For example, suppose tha_arbitrage is the use of discrepancies in currency

使用libjpeg库实现jpeg图片的缩放(缩略图)_libjpeg缩略图-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏12次。libjpeg库的交叉编译libjpeg库主要用于jpeg格式图片的编解码,其交叉编译过程如下1. 下载源码从官方网站http://www.ijg.org/files/ 下载libjpeg库的源码,本次编译过程使用的是 jpegsrc.v9a.tar.gz2. 解压源码2.1 切换到下载目录,执行 tar -xzvf jpegsrc.v9a.tar.g_libjpeg缩略图

Mysql 时间戳类型使用心得-程序员宅基地

文章浏览阅读209次。2019独角兽企业重金招聘Python工程师标准>>> ..._mysql 时间戳用什么类型合适

随便推点

HCLA从基础到成熟-程序员宅基地

文章浏览阅读1.6k次,点赞47次,收藏21次。9.9-DHCP静态路由的设置:1.如何开始dhcp服务:首先进入二级命令,dhcp enable 开启dhcp服务,然后创建池塘:IP pool xx为池塘取个名字 一台设备上可以有多个池塘,但一个池塘只能服务一个广播域,network ---IP----mask 24绑定接口(此处绑定的接口为所要分配的IP范围),gateway该网段的网关地址(此处填写的IP地址为接口所在的网关地址),dns-list --ip --子网掩码(144.144.144.144),服务器地址,最后进入接口dhcp se

JVM工作原理与实战(三十八):JIT即时编译器原理_jvm 中的 jit 即时编译器-程序员宅基地

文章浏览阅读2.9k次,点赞114次,收藏46次。JVM作为Java程序的运行环境,其负责解释和执行字节码,管理内存,确保安全,支持多线程和提供性能监控工具,以及确保程序的跨平台运行。本文主要介绍了JIT即时编译器、HotSpot中的JIT编译器、JIT优化技术、JIT优化建议等内容。_jvm 中的 jit 即时编译器

【mybatis plus源码解析】(一)mybatis plus执行原理,mybatis plus是如何实现自动注入CRUD操作_mybatisplus源码解析-程序员宅基地

文章浏览阅读9.6k次,点赞6次,收藏33次。【mybatis plus源码解析】(一)mybatis plus执行原理(二)详解SQL注入器底层原理,mybatis plus是如何实现自动注入CRUD操作mybatis plus源码解析。详解SQL注入器底层原理,mybatis plus是如何实现自动注入CRUD操作。通过源码看看相关类的详细解读。系列文章_mybatisplus源码解析

新货 升级版 BlackBerry手机条码扫描器 MS50,和BlackBerry 9900等手机可以完美结合_电影mm625-程序员宅基地

文章浏览阅读606次。新货 升级版 BlackBerry手机条码扫描器 MS50,和BlackBerry 9900等手机可以完美结合_电影mm625

The server time zone value '�й���׼ʱ��' is unrecogni...mysql时区报错-程序员宅基地

文章浏览阅读359次。新版驱动惹得锅,默认为美国时区,修改如下spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC username: root password: 123 typ...

Python-Go python模块与包 - GO问题 - GO容量测试_python里的go是模块吗?-程序员宅基地

文章浏览阅读365次。python中自定义模块的简述模块 => python文件包 => 目录初始化 __init__.py => 初始化文件,当导入包的时候会自动执行python包中的文件是独立的,(与go区分)注意:当模块被导入的时候,模块中的代码都会被执行一次,建议每次导入模块的时候就导入模块的某个函数即可,否则很容易出现错误链接:https://pan.baidu.com/s/12jZiYPEmHDpWOQMlGTGEUQ?pwd=zouh提取码:zouh。_python里的go是模块吗?

推荐文章

热门文章

相关标签