news 2026/5/11 3:35:44

大模型学习基础(四) Transformer架构 下

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大模型学习基础(四) Transformer架构 下

上一篇文章里介绍了Encoder,本篇文章来介绍Decoder

以语音辨识问题为例。

一种典型的Decoder结构是Autoregressive(自回归)的Decoder。即每一步的输出依赖于之前的所有输出

有了Encoder的输出以后,将其一次性输入Decoder,并且伴随一个起始标识,Decoder的直接输出的是一个概率分布,例如如果是语音转中文辨识问题,会给出一组中文字表(这个中文字表需要事先人为设定)以及其对应的概率分布,然后将最大概率对应的字作为输出;有了第一个输出,Decoder会把这个输出连带之前的输入一起作为新的输入,再得到新的概率分布,再找到对应的中文字,然后重复上述过程。

Decoder的内部结构如下:

可以将其和Encoder做一个对比:

比较重要的几个点:
这里的Multi-Head Attention机制增加了Masked操作。

完整的Self-Attention机制如上,我们知道Self-Attention机制就是结合上下文机制,即每一个输入向量分量要考虑其它所有分量的相关度。

而增加了Masked以后,其表示图如下:

其实是每一个输入向量分量在计算相关度时,只能考虑在它之前出现过的分量,而不能考虑在它之后出现过的分量。

Decoder在上述语音辨识问题中还要遇到一个问题,就是判断输出何时停止。那么这时需要在前面提到的中文字表中添加一个“end”即停止标识。

Encoder和Decoder交互的地方实际如下图(Cross attention部分):

其详细作用过程如下:

给Encoder输入语音序列,在经过Encoder的多block处理后,得到一排向量。首先将begin向量作为Mask Self-attention层的输入,得到第一个输出向量,计算该向量的q向量,利用self-attention中的k、v向量生成机制计算出Encoder每个输出向量的k、v向量,将其组合产生输出向量,通过全链接神经网络,最终得到一个输出词;将这个输出词作为新的输入交给Mask Self-attention层,计算和之前的所有输入向量的相关度继续得到新的输出,然后继续和Encoder的输出进行self-attention操作,然后循环此操作。

将Mask Self-Attention的输出向量和Encoder的输出向量进行Self-Attention操作称之为Cross attention计算。

下面介绍Transformer如何训练。

以中文语音辨识为例,显然数据集格式应该为:输入(语音),输出(文字序列)

我们知道Decoder直接输出每个向量是一组概率分布,如第一个输出:{机(0.8)器(0.1)学(0.1)习(0)}

而实际上第一个输出向量标签为“机”,转化成独热码形式应该是:{机(1)器(0)学(0)习(0)}

显然这类似一个多分类问题,可以用交叉熵作为损失函数,

,在第一个输出向量中,

这里需要特别提醒的是,在训练阶段,Decoder的输入是人为给定正确答案,而不是用其自己根据起始Begin向量生成的向量通过cross attention生成的输出向量作为输入再做mask self-attention。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!