NLP中文本生成任务

news2024/9/21 17:59:24

文本生成任务

  • 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.coloradmin.cn/o/2127368.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入解析Java内存模型:从堆到栈的全面剖析

在Java程序运行的背后&#xff0c;JVM&#xff08;Java Virtual Machine&#xff0c;Java虚拟机&#xff09;负责管理和分配内存。理解Java的内存模型&#xff08;Java Memory Model, JMM&#xff09;是编写高效、稳定程序的关键&#xff0c;尤其在并发编程中&#xff0c;内存管…

rose 聊开源—2 如何快速上手一个开源项目

在前面的一篇开源项目系列中&#xff0c;主要介绍了目前开源项目蓬勃发展的态势&#xff0c;并且拥有一个开源项目&#xff0c;对我们个人履历、职业发展等都有非常多的好处。 这一次就来跟大家分享一下&#xff0c;面对一个开源项目&#xff0c;我们应该如何上手&#xff0c;快…

【Android笔记】Android Studio打包 提示Invalid keystore format

前言 Android项目通过Android Studio生产签名文件进行打包。提示 com.android.ide.common.signing.KeytoolException: Failed to read key hocsdn from store "/Users/ho/TestProject/app/ho_developer.jks": Invalid keystore format 不合法的签名文件格式&#…

在职研生活学习--20240907

开学第一天 9月7日&#xff0c;中南大学商学院迎来了一支充满活力的队伍——2024级MBA新生集体整装待发&#xff0c;我们满怀期待地登上了前往长沙望城柏乐园的大巴&#xff0c;准备开启一场为期两天一夜的素质拓展与团队建设之旅。 迎新幼儿园PPT 出发 抵达柏乐园&#xff0c;…

Android生成Java AIDL

AIDL:Android Interface Definition Language AIDL是为了实现进程间通信而设计的Android接口语言 Android进程间通信有多种方式&#xff0c;Binder机制是其中最常见的一种 AIDL的本质就是基于对Binder的运用从而实现进程间通信 这篇博文从实战出发&#xff0c;用一个尽可能…

openssl的使用

1、编译 Github下载&#xff1a;https://github.com/openssl/openssl 官网下载&#xff1a;https://openssl-library.org/source/index.html 官网历史版本&#xff1a;https://www.openssl.org/source/old/ 1.1 Windows下编译 我的文章&#xff1a;OPC UA使用 Openssl库编译…

Golang | Leetcode Golang题解之第398题随机数索引

题目&#xff1a; 题解&#xff1a; type Solution []intfunc Constructor(nums []int) Solution {return nums }func (nums Solution) Pick(target int) (ans int) {cnt : 0for i, num : range nums {if num target {cnt // 第 cnt 次遇到 targetif rand.Intn(cnt) 0 {ans …

移动跨平台框架Flutter详细介绍和学习线路分享

Flutter是一款移动应用程序SDK&#xff0c;一份代码可以同时生成iOS和Android两个高性能、高保真的应用程序。 Flutter目标是使开发人员能够交付在不同平台上都感觉自然流畅的高性能应用程序。我们兼容滚动行为、排版、图标等方面的差异。 在全世界&#xff0c;Flutter正在被越…

基于SpringBoot+Vue+MySQL的滑雪场管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 在快速发展的冰雪运动热潮下&#xff0c;为了提升滑雪场的管理效率与顾客体验&#xff0c;我们设计并实现了一套基于SpringBoot后端框架、Vue前端框架以及MySQL数据库的滑雪场管理系统。该系统旨在通过数字化手段&#xff0c;优…

(pandas读取DataFrame列报错)raise KeyError(key) from err KeyError: (‘name‘, ‘age‘)

&#xff08;pandas读取DataFrame列报错&#xff09;raise KeyError(key) from err KeyError: (‘name‘, ‘age‘) 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页&#xff0c;我是博主英杰&#xff0c;211科班出身&#xff0c;就职于医疗科技公司&…

瑞吉外卖—读写分离

文章目录 1. 概述2. MySQL主从复制2.1 介绍2.1 配置2.1.1 前置条件2.1.2 主库Master2.1.3 从库Slave 3. 读写分离案例3.1 背景3.2 Sharding-JDBC介绍3.3 入门案例 1. 概述 读写分离、主从复制。就是dml操作在主库、query操作在备份的从库。分担压力&#xff0c;减轻单点故障。…

标准库标头 <barrier>(C++20)学习

此头文件是线程支持库的一部分。 类模板 std::barrier 提供一种线程协调机制&#xff0c;阻塞已知大小的线程组直至该组中的所有线程到达该屏障。不同于 std::latch&#xff0c;屏障是可重用的&#xff1a;一旦到达的线程组被解除阻塞&#xff0c;即可重用同一屏障。与 std::l…

django自用教程

编程软件: pycharm django介绍:django是Pythonweb的一个框架&#xff0c;是用来构建网站的工具。 要想使用django&#xff0c;首先需要下载django模块&#xff0c;通过使用以下代码实现: pip install django 安装完成后&#xff0c;在django的目录下有一个文件django-admin&am…

Docker启动Mysql镜像报错问题?

docker中启动mysql镜像报错如下&#xff1a;ls: cannot access /docker-entrypoint-initdb.d/: Operation not permitted 百度上查到了很多解决方案&#xff0c;也咨询了很多大佬&#xff0c;加权限&#xff0c;改用户&#xff0c;均无果。最终在阿里巴巴上找到了解决方案&…

【有啥问啥】深入理解数据结构 Merkle 树:数据完整性保障的基石

深入理解 Merkle 树&#xff1a;数据完整性保障的基石 在当今的分布式系统和区块链应用中&#xff0c;数据的完整性验证变得至关重要。随着区块链技术、分布式存储系统&#xff08;如 IPFS&#xff09;、以及版本控制系统&#xff08;如 Git&#xff09;的大规模应用&#xff…

【Linux】文件权限与类型全解:你的文件安全指南

欢迎来到 CILMY23 的博客 &#x1f3c6;本篇主题为&#xff1a;文件权限与类型全解&#xff1a;你的文件安全指南 &#x1f3c6;个人主页&#xff1a;CILMY23-CSDN博客 &#x1f3c6;系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法专题…

kubectl 命令介绍以及使用

文章目录 kubectl 基本命令查看集群信息管理命名空间操作节点 操作 Pods查看 Pods 状态创建和删除 Pods调试 Pods 操作 Deployments创建 Deployment更新 Deployment回滚 Deployment 操作 Services暴露服务查看服务状态 更多 kubectl 命令资源描述资源过滤日志查看配置上下文和切…

热门语音转文字工具大比拼

现在工作、生活的节奏越来越快&#xff0c;很多时候会议上并没有充足的时间来记录会议内容&#xff0c;最快捷的方式就是用录音来记录每一个观点。录音文件后期转化为文字需要花费大力气吗&#xff1f;并不是&#xff0c;现在有着讯飞语音转文字这类高速高效的转换工具可以轻松…

PMP–一、二、三模–分类–13.干系人管理--技巧--1、干系人分析

文章目录 二模13.干系人管理--干系人分析--题干关键词 “干系人信息&#xff08;权力、角色、利益、关系、态度、影响……&#xff09;、识别完干系人、某干系人抵制项目”。5、 [单选] 一家公司启动了一个与开发新服务相关的项目&#xff0c;而该公司并不具有此类专业知识。项…

分布式集群下如何做到唯一序列号

优质博文&#xff1a;IT-BLOG-CN 分布式架构下&#xff0c;生成唯一序列号是设计系统常常会遇到的一个问题。例如&#xff0c;数据库使用分库分表的时候&#xff0c;当分成若干个sharding表后&#xff0c;如何能够快速拿到一个唯一序列号&#xff0c;是经常遇到的问题。实现思…