在只用解码器的大模型中,其实原本的 Encoder-Decoder Attention 层关联编码器的方式发生了一些改变,因为没有编码器的存在,它需要通过其他途径获取类似编码器输出的信息,以下是具体解释:
传统关联方式
在完整的编码器 - 解码器模型中,Encoder-Decoder Attention 层(交叉注意力层)通过将解码器产生的查询(Query)向量与编码器输出的键(Key)和值(Value)向量进行交互,使解码器能够聚焦于输入序列中与当前生成位置相关的信息,从而实现对输入序列的有条件生成。这种机制让解码器在生成每个输出 token 时,都能参考输入序列的全局语义信息。
在只用解码器模型中的替代方式
- 输入序列编码替代 :输入序列先经过预处理,如分词、向量化等操作,然后通过位置编码等方式添加位置信息,得到输入序列的向量表示,这相当于替代了编码器对输入序列的初步编码功能,为后续的处理提供基础的输入特征。
- 自注意力机制先行 :解码器的第一个自注意力层会对输入序列的向量表示进行处理,让每个词的向量能够参考序列中的其他词向量,捕捉到序列内部的基本关系,这在一定程度上弥补了没有编码器对输入序列进行深度语义编码的不足。
- 生成键(Key)和值(Value)向量 :虽然没有编码器,但可以通过其他方式生成类似于编码器输出的键和值向量。例如,可以使用预训练的编码器单独对输入序列进行处理,得到键和值向量,然后将其提供给解码器中的交叉注意力层。或者,也可以通过在解码器中添加一些专门用于生成键和值向量的组件或层,基于输入序列的向量表示来生成这些向量,使得解码器内部能够产生用于交叉注意力计算的键和值向量,从而实现类似于传统编码器 - 解码器模型中的信息交互方式。
- 交叉注意力计算类似过程 :在解码器的交叉注意力层中,使用生成的查询向量与替代的键和值向量进行注意力计算,得到上下文向量。这个上下文向量融合了输入序列的信息,被用于后续的全连接层等组件中,指导解码器生成与输入序列相关的输出序列。
相关联的应用场景
- 语言模型的有条件生成 :例如在某些基于解码器的大语言模型中,用户输入的提示词相当于输入序列,模型通过上述替代方式生成与提示词相关的键和值向量,在生成后续文本时,解码器利用这些向量关注提示词中的关键信息,从而生成符合提示词主题和语义的连贯文本。
- 序列到序列任务的简化处理 :在一些对计算资源要求较高或追求模型结构简洁的序列到序列任务中,只用解码器的大模型通过这种方式替代传统的编码器 - 解码器结构,在机器翻译、文本摘要等任务中,能够在一定程度上保留对输入序列的关注能力,同时简化模型架构,提高处理速度。