当前位置: 首页 > article >正文

NLP中文本生成任务

文本生成任务

  • 1.生成式任务
  • 2.自回归模型实现
  • 3.Encoder-Decoder结构
    • 3.1Attention机制出现
    • 3.2Attention思想
    • 3.3soft - Attention
    • 3.4hard - Attention
    • 3.5Teacher Forcing
    • 3.6详解Mask Attention
      • 3.6.1通过Mask控制训练方式
  • 4.生成式任务评价指标
  • 5.生成式任务常见问题
    • 5.1采样策略
    • 5.2指针网络-pointer-network
    • 5.3T5

1.生成式任务

释义: 输出Y没有预设的范围,受输入X影响

各领域应用:

  1. 在人工智能的各个领域都有,包括很多跨领域任务
  2. 图像领域:图像/视频生成, 图像补全等
  3. 语音领域:语音合成等
  4. 文本领域:机器翻译等

在NLP中,输入输出均为不定长的序列;如:机器翻译、机器作诗、自动摘要等。

2.自回归模型实现

释义: 基于语言模型和一段“引言”,生成后续文本。

训练示意图: 即错位进行训练
在这里插入图片描述
预测时:
在这里插入图片描述
释义: 通过“引言” 预测出下一个字,将下一个字拼接到引言中,再次放入模型预测,反复执行,直到到达设置的停止条件,比如预测出结束符或者是达到预测文本长度。

3.Encoder-Decoder结构

简介: Encoder-Decoder结构是一种基于神经网络完成seq2seq任务的常用方案
释义: 下面是一个简单的LSTM网络的Encoder-Decoder结构

  1. Encoder:即直接将文本转化为向量,并且对其中的语义进行一定的理解,输出为向量
  2. Decoder:接收经过一定处理的Encoder信息,将其按照需要解码为对应的字符输出,这一步也会涉及对向量的信息进行一些理解。
    在这里插入图片描述

3.1Attention机制出现

在这里插入图片描述
引子:

  1. 截图中可以看出,Decoder部分的解码内容,每个解码信息和前面的Encoder传递的内容关联度不一样,有的甚至没有关系。
  2. Encoder的内容和Decoder的每个实际解码内容重要性不一样,LSTM网络构成结构中,将Encoder的信息全部拿去参与Decoder就不太好。只需要拿关键的重要信息即可
  3. 找到Encoder输入的信息与Decoder的信息的重要性关联关系,这样的机制就叫注意力机制,即Attention。

举例
在这里插入图片描述
文本中每个词对于结果的影响是不同的,可以认为他们应当被赋予不同的权重,这种权重也可以称为attention;比如换为,意思即完全相反。

3.2Attention思想

改进版本:
在这里插入图片描述
释义: 改进版本后,每次计算在Decoder解码时的attention矩阵。

实现思路:

  1. Query是Decoder解码的内容,上一个解码的词,会加入到下一个词的解码中,这是LSTM的网络设计
  2. key是Encoder编码后输入到Decoder的内容,因为输入的内容在具体解码的步骤的重要性不一样,中间加入了注意力矩阵。
  3. 注意力矩阵是找出Encoder输入中,对下一个预测的重要性,该矩阵需要从Decoder上一个输入、和Encoder输入计算的来
    4.即在Decoder预测第二步的结果时,先通过Decoder第一步输出,结合Encoder输入,计算出当前权重矩阵。再将Encoder输入与权重矩阵计算,得到注意力结果,结合Decoder第一步输出,解码出第二步结果。
    5.第一步没有解码结果时,会有一个预设的编码代替。
    在这里插入图片描述

3.3soft - Attention

在这里插入图片描述
注意: 这里的Value就是输入的key,即Encoder结果;其他逻辑没变。

3.4hard - Attention

在这里插入图片描述
注意: 相对于soft-attention,这里将计算的注意力结果更加极端,之前是a1,a2,a3,a4概率加和为1;其中比较重要的概率较大;通过one-hot即,概率大的为1;其他的为0;结果就只和某些关键信息有关。

释义: 使用部分隐向量计算attention
在这里插入图片描述

3.5Teacher Forcing

释义: 即每次训练数据都使用正确的内容进行训练。

详细讲解

现在有一个文本生成任务,需要通过输入x1,x2,x3;生成y1,y2,y3
训练过程如下:
第一步:s1: x1, x2, x3 … xn, - > y1
第二步:s2: x1, x2, x3 … xn, , y1 - > y2
第三步:s3: x1, x2, x3 … xn, , y1, y2 -> y3
关键点: 需要第一步的预测结果,y1参与到第二步训练中,那么y1,模型能够百分比预测准吗?
不能,模型前期训练时,准确率更低
怎么办?

  1. 每一步的训练,都使用正确的内容来训练,即第一步y1预测的值,不作为第二部训练数据,第二步训练时,直接使用正确预测值参与训练。这样,第一步到第三步,都可以一起训练,效率提高;这就是Teacher Forcing;和模型预测时逻辑不一样,有信息泄露问题,但是训练材料较大时,就没有啥问题了。
  2. 训练时,第二步预测,采取第一步预测的结果,不管第一步预测结果对不对。即和模型预测时逻辑一样。

3.6详解Mask Attention

引子: 下面是一个经典的transformer的网络结构图,在右侧Decoder部分,与Encoder不同的地方在于Masked Multi-Head Attention
在这里插入图片描述
在实际预测中:

1.上述transformer的左侧输入信息,经过Encoder,成为K、V值,输入到右侧的Multi-Head Attention中。
2.右侧输入就是需要预测的值,第一轮输入时,即为< sos >,预测的头信息,经过Masked Multi-Head Attention计算后,成为Q值,参与到下一步的Multi-Head Attention计算,最后的到第一个预测结果
3.第一个预测结果出来后,加入到< sos > 后面,开始第二轮预测,即重复步骤2
4.从上面步骤可以得知,Masked Multi-Head Attention主要是计算预测值之间的注意力关系。

在实际训练中:

  1. 实际训练中,在右侧输入到Masked Multi-Head Attention的预测值,是完整的一句话。如果不做处理,就和预测时不一样了,预测时,前面预测的值,在预测时,是没有计算和后面值得注意力结果得。
  2. 需要将完整得预测值输入,进行批量得训练,怎么办呢?
    3.将前面预测值和后面预测值得关联关系,遮住,也就是masked的由来

下面就是Masked过程

  1. 计算出预测值之间的注意力关系时,将实际预测中,前面没有办法关注到后面预测值的注意力分数,减去一个较大的值。得到下面右侧的图。
    在这里插入图片描述
  2. 由于实际预测中,不存在的注意力分数,即右上角的-inf,减去较大值后,较小;经过Softmax后,就得到右侧的注意力分数了。当然:实际中,是不会有0值的,可以理解经过softmax后,值会很小,这部分注意力分数几乎不影响
    在这里插入图片描述

3.6.1通过Mask控制训练方式

在这里插入图片描述
释义:

  1. Bidirection LM的训练方式,代表模型是BERT
  2. Left-to-Right LM的训练方式,代表模型是GPT,相当于Decoder only
  3. Seq-to-Seq LM的训练方式,可以类比为翻译任务,根据已知的输入句子,输出一个句子,可以类比理解为原来的模型T5,相当于使用Encoder-Decoder的含义
  4. 拓展,预训练模型GPT的微调,一般就可以理解为使用的Seq-to-Seq LM的训练方式

4.生成式任务评价指标

简介: 生成式任务的评价指标和其他的任务不太一样,并且在当前的发展情况下,没有太统一的方案。
B
原理:

  1. 本身这个评价方法是在翻译任务中的
  2. 采用的是N-gram的方式,将翻译的内容,和标准的翻译内容,进行字词的匹配,比如1-gram、2-gram、… n-gram;
  3. 这样就得到了,机器翻译的内容,在标准内容中,是否存在,存在多少,和其预测的词梳理比,得到一个概率
  4. Wn是指采用不同的长度的词得到的概率,最后在相加时,设置的比重。
  5. BP是惩罚函数;即在机器翻译的内容比标准翻译的长度短时,举例:机器预测:of the;标准译文:Red is one of the primary colors.这种情况,按照上面的计算方式仍然是100%;所以需要有一个惩罚函数。
    6.机器预测比标准译文长,按照固有计算方式,就会降低其评价的指标。

拓展: ROUGE评价指标和上述方案类似,不做详细介绍。

5.生成式任务常见问题

1 .语言模型文本生成结果有时会出现段落不断重复的现象。

解决方案: 1.优化模型,增大模型参数,提供广泛的训练数据
2.采样策略相关参数调整

5.1采样策略

Beam Size:是指在序列标注任务中的解码路径保留条数。在生成式任务中也可以使用。

示意图:
在这里插入图片描述

Temperature Sampling: 输出每个字的概率分布时,通过参数T,对softmax部分做特殊处理,temperature越大,结果越随机;反之则约固定。
原理: 就是在原来的Softmax函数中,添加分母T,公式如下:由于函数的性质,往右其取值约来越陡;往左越平缓。那么就导致,T特别大时,不同的字的概率被压缩的比较小,最后导致概率接近。T特别小,则原理概率大的预测,更是被放大,不同的字之间预测的概率差距较大。
在这里插入图片描述
示意图:
在这里插入图片描述
Top-P: (动态)采样时,先按概率从高到。低排序,从累加概率不超过P的范围内选择。取值范围0-1。
详细释义: 在CRF中,当前预测值,有多个,每个预测值的概率不一样,还需要计算前面的预测值选择对当前预测值的影响,来综合选择。在这种情况下,当前预测值的词表大小是非常大的,上万,按照当前节点预测的概率,从高到低进行,进行前后文计算。前节点的预测值有高到达,选择概率和在Top-P之内的,进行前后文计算,其他的就不管了。

Top – K: 采样从概率最高的K个字中选择,和Top-P类似,Top-P选择的K是动态的,只有K个字的概率和大于了Top-P就停止;而Top-K是指定K个。

Repetition Penalty: Frequency Penalty、Presence Penalty类似;用于限制语言模型输出重复的内容。取值范围 > 1

释义: 简单的来说,就是在模型输出,在过softmax前,将输出概率分布中,将重复内容的概率机械的减小。

示例如下:
在这里插入图片描述
Max Memory: 从后向前,截断送入模型文本,到指定长度。
举例:max memory = 3
输入: abcde --> cde (被截断)

5.2指针网络-pointer-network

在这里插入图片描述
释义: 基于文章摘要总结的任务,通常摘要总结的内容都出现在原文中,设计指针网络,是将原文中高频的词的概率加到attention的网络的预测中,和最后预测的概率分布上,提高原文词的输出概率。

5.3T5

基于seq2seq也可进行模型预训练

bert是一个encoder

seq2seq训练可以得到encoder + decoder

代表:T5

在T5中,提出了所有的NLP任务都可以看作是生成式任务这一理念。


http://www.kler.cn/a/305065.html

相关文章:

  • CentOS 服务
  • 华为机试HJ39 判断两个IP是否属于同一子网
  • 解决 Redis 报错:`(error) NOAUTH Authentication required`
  • Web安全之SQL注入---基础
  • 【MySQL】数据库表连接简明解释
  • AI 扩展开发者思维方式:以 SQL 查询优化为例
  • 【系统规划与管理师】【案例分析】【考点】【答案篇】第6章 IT服务运营管理
  • CSP-J 算法基础 前缀和与差分
  • 计算机毕业设计选题推荐-项目评审系统-Java/Python项目实战
  • 学习使用在windows系统上安装nodejs以及环境配置图文教程整理
  • MongoDB 高级索引
  • linux与unix
  • Ruby 语法概览
  • 《UniVS: Unified and Universal Video Segmentation with Prompts as Queries》要点提炼
  • GitHub上克隆项目
  • maven中的仓库的配置与优先级
  • 287. 寻找重复数(stl法)
  • 滚雪球学SpringCloud[2.3]:服务发现与负载均衡详解
  • 电机驱动开发之主控板
  • Docker 安装配置和基本命令详解以及案例示范
  • Java之ArrayList
  • 【组件】WEB前端-富文本编辑器组件推荐 在线编辑器 Word
  • 了解线程池
  • 【文献阅读】Unsupervised Machine Learning for Bot Detection on Twitter
  • pytorch qwen2-vl自定义数据全量微调
  • SpringBoot万级并发-jemeter-Address already in use: connect