购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 自注意力与多头注意力机制

本节将详细阐述自注意力(Self-Attention)机制和多头注意力机制的计算过程及其在Transformer中的应用。

1.3.1 自注意力机制计算过程(QKV矩阵生成和点积运算)

自注意力机制是一种通过计算序列中各个位置的相互关系,使模型能够在处理每个单词时动态关注其他相关单词的重要机制。自注意力机制首先生成查询(Q)、键(K)和值(V)矩阵,通过这些矩阵计算不同位置之间的相似度权重,即注意力权重。该机制利用每个位置的查询向量与其他位置的键向量计算点积,以此获得注意力分布,然后将注意力权重作用在值向量上,得到每个位置的注意力输出。此过程允许模型捕捉到序列中的远距离依赖关系,为处理长文本中的上下文关联提供了支持。

Transformer中经典的单头自注意力机制架构如图1-5所示。

图1-5 Transformer中单头自注意力机制架构图

以下代码将展示自注意力机制的完整实现过程,包含查询、键和值矩阵的生成,点积运算和注意力权重的计算。

代码解析如下:

(1)SelfAttention:实现自注意力机制,首先生成查询(Q)、键(K)和值(V)矩阵,并计算Q与K的点积,然后将点积结果除以缩放因子来计算注意力权重,最后将注意力权重作用在V上,生成最终输出。

(2)前向传播:传入查询、键和值矩阵,经过自注意力层后得到的输出表示了输入序列在自注意力机制下的表示。

(3)SelfAttentionWithWeights:在自注意力基础上进一步返回注意力权重,以便更详细地分析注意力机制如何在不同位置间分配权重。

代码运行结果如下:

结果解析如下:

(1)输出的形状:自注意力机制输出的形状为[batch_size, seq_length, embed_size],与输入形状一致,确保输出可用于后续模型层。

(2)注意力权重:展示了注意力分配在不同位置间的情况,通过多头机制,模型可以捕捉序列中丰富的依赖关系,为后续的多头注意力机制提供了支持。

1.3.2 多头注意力机制与Transformer

多头注意力机制是Transformer模型中的关键组件,通过并行地计算多个自注意力层,模型可以在不同的子空间中捕捉序列中多层次的关系特征。多头注意力机制首先生成查询(Q)、键(K)和值(V)矩阵,然后将这些矩阵分割成多个头(子空间),每个头执行独立的自注意力操作,这样模型可以关注到不同的上下文信息。最后,拼接各个头的输出并通过线性变换得到最终输出。

多头注意力机制架构如图1-6所示。

图1-6 多头注意力机制

下面的代码将实现多头注意力机制,并展示其在捕捉序列依赖关系方面的作用。

代码解析如下:

(1)MultiHeadAttention:实现多头注意力机制,首先生成查询(Q)、键(K)和值(V)矩阵,并将这些矩阵分成多个头,然后计算每个头的自注意力,最后拼接各个头的结果并通过线性变换得到最终输出。

(2)前向传播:多头注意力层的输入为查询、键和值矩阵,输出为多头注意力的结果,该结果在多个子空间中并行捕捉序列依赖信息。

(3)MultiHeadAttentionWithWeights:在多头注意力基础上进一步返回注意力权重,用于分析模型在不同位置的注意力分布情况。

代码运行结果如下:

结果解析如下:

(1)输出的形状:多头注意力机制的输出形状为[batch_size, seq_length, embed_size],与输入形状一致,这样可确保输出直接接入后续层。

(2)注意力权重:展示注意力在不同位置间的分布,通过多头机制,模型可以在多个子空间中捕捉丰富的序列间依赖关系。 8xbyi6fTcN0w0ohohLUHrUj1kKACr2A4oSnEW+3KPxPekpWTjwgyQsM615r+vlIb

点击中间区域
呼出菜单
上一章
目录
下一章
×