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

【Transformer】自回归和解码器

为什么叫自回归

“自回归”(Autoregressive)这个词来源于时间序列分析中的自回归模型(Autoregressive Model),它描述了一种特定的统计关系,即一个变量的当前值可以通过它的过去值来预测。在自回归模型中,一个时间点的值是其之前若干时间点值的线性组合。

在自然语言处理(NLP)和Transformer模型的上下文中,“自回归”一词被用来描述一种序列生成策略,其中序列的每个元素(如一个词或字符)的生成依赖于它之前的所有元素。换句话说,模型在生成序列的每一步时,都会考虑到到目前为止已经生成的序列部分。

这种策略被称为“自回归”,原因如下:

依赖历史信息:在生成当前元素时,模型仅使用序列中之前的历史信息,而不依赖于未来的信息。这与时间序列中的自回归模型类似,后者也只使用过去的值来预测当前值。

递归预测:在生成序列时,模型递归地预测下一个元素,每次预测都建立在之前预测的基础上。这种递归性质与自回归模型的递归定义相呼应。

因果关系:自回归生成保持了因果关系,即在生成序列时,只有已经生成的部分会影响未来部分的生成,这与时间序列中的自回归模型保持时间顺序的因果关系一致。

预测下一个值:无论是在时间序列分析还是NLP中的文本生成,自回归模型的核心都是基于已知的过去信息来预测序列中的下一个值。

在Transformer模型中,自回归生成是通过解码器部分实现的,解码器使用自注意力机制来确保在生成每个词时,模型只能访问到当前时间步之前的信息,从而实现自回归生成。这种机制使得生成的序列在语言上是连贯的,并且能够捕捉到长距离的依赖关系。

在Transformer模型中,解码器是怎么实现自回归生成的

在Transformer模型中,解码器实现自回归生成的过程涉及以下几个关键步骤:

初始化:

解码器通常以特殊的起始标记(如 )作为序列的开始。
编码器的输出:

编码器对输入序列(如源语言句子)进行编码,生成一个上下文向量,这个向量包含了整个输入序列的信息。
自回归生成:

在每个时间步 t,解码器接收到编码器的上下文向量,并结合已经生成的目标语言序列的部分(直到时间步 t-1)来预测时间步 t 的词。
这意味着在预测第 t 个词时,解码器只能看到从开始标记到第 t-1 个词的所有历史信息。
掩蔽自注意力:

为了确保自回归性,解码器内部的自注意力层会对当前位置之后的时间步进行掩蔽(masking),这样模型在预测当前词时无法访问未来信息。
概率预测:

解码器会输出一个概率分布,表示在当前时间步生成各个可能词的概率。
采样或贪婪选择:

根据输出的概率分布,可以通过不同的策略选择下一个词。最常见的是贪婪选择(选择概率最高的词),但也可以使用随机采样(如温度采样)来增加生成序列的多样性。
迭代过程:

选择或采样出的词会被添加到已生成的序列中,并作为新的输入反馈到解码器,与上下文向量一起用于预测下一个词。
这个过程会一直迭代,直到生成特定的结束标记(如 )或达到预设的最大序列长度。
注意力机制:

解码器在每个时间步都会通过注意力机制与编码器的输出交互,以获取源语言序列的相关信息,这有助于生成与源序列语义一致的目标序列。
通过这种方式,Transformer模型的解码器能够逐步生成目标语言序列,每一步都依赖于之前的步骤,确保了生成的序列在语义上与输入序列保持一致,并且遵循自然语言的语法和结构。这种自回归生成方式使得Transformer非常适合于机器翻译、文本摘要、问答系统等NLP任务。


http://www.mrgr.cn/news/40807.html

相关文章:

  • openpnp - 底部相机高级校正的参数设置
  • 深度解析:Python蓝桥杯青少组精英赛道与高端题型概览
  • 983. 最低票价
  • G502 鼠标自定义(配合 karabiner)
  • 计算机知识科普问答--25(121-125)
  • 【AIGC】ChatGPT提示词解析:如何打造个人IP、CSDN爆款技术文案与高效教案设计
  • 03Frenet与Cardesian坐标系(Frenet转Cardesian公式推导)
  • Armeria gPRC 高级特性 - 装饰器、无框架请求、阻塞处理器、Nacos集成、负载均衡、rpc异常处理、文档服务......
  • leetcode每日一题day21(24.10.1)——最低票价
  • Python-o365:提升办公效率的利器
  • 排序算法之归并排序
  • 【开源鸿蒙】OpenHarmony 5.0.0 发布了,速来下载最新代码
  • 中国电信解锁万亿参数大模型:TeleAI的创新与突破
  • 2024年寒假开学赛题解
  • 10.数据结构与算法-线性表的应用(线性表与有序表的合并)
  • MQ高级:RabbitMQ小细节
  • 期权卖方怎么选择权利金高的品种,期货VIX高低对行情有什么影响
  • python 实现knapsack背包问题算法
  • Egg.js 系列(1):Egg是什么、快速入门、目录结构
  • C++入门(有C语言基础)