Transformer中的矩阵问题

本文详细介绍了如何在NumPy库中进行3D矩阵的乘法操作,包括矩阵维度的要求和相关示例,帮助读者理解二维数组扩展到三维的运算规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

### Transformer模型中的权重矩阵结构与作用 Transformer模型的核心机制之一是自注意力机制(Self-Attention Mechanism),其中涉及三个重要的权重矩阵:查询矩阵 \( W_q \)、键矩阵 \( W_k \) 和值矩阵 \( W_v \)[^4]。这些矩阵通过线性变换分别计算输入序列的查询向量(Query)、键向量(Key)和值向量(Value)。具体来说: #### 查询、键和值的定义 在自注意力机制中,每个位置上的词会被表示为三部分: - **查询(Query, Q)**:代表当前词与其他词的关系。 - **键(Key, K)**:类似于其他词的特征描述。 - **值(Value, V)**:实际要提取的信息。 这三个部分通过以下公式计算得出: \[ Q = XW_q,\quad K = XW_k,\quad V = XW_v \] 其中 \( X \) 是输入嵌入向量组成的矩阵,\( W_q \), \( W_k \), \( W_v \) 则是可训练的权重矩阵。 #### 自注意力机制的工作流程 1. 计算点积得分:对于每一个 Query 向量,与其对应的 Key 向量做点乘操作得到匹配程度分数。 2. 缩放处理:为了避免数值过大影响后续 Softmax 的稳定性,通常会将上述点积结果除以 \( \sqrt{d_k} \),这里 \( d_k \) 表示 Key 向量维度大小[^3]。 3. 应用 Softmax 归一化:使得每一对 (Query, Key) 得分转换成概率分布形式作为最终加权系数。 4. 加权求和:利用上一步获得的概率分布对 Value 进行加权平均运算从而获取新的上下文表征。 这种设计允许模型并行地关注整个句子的不同部分,捕捉到更丰富的语义信息而不受距离限制。 #### 权重矩阵的作用 - **捕获不同类型的依赖关系**:不同的头(Heads)能够学习到不同类型的关注模式,比如局部依存或者全局主题关联等。 - **提升表达能力**:多头注意机制增加了网络宽度方向上的容量,有助于更好地建模复杂的数据特性。 以下是实现一个多头注意力层的一个简单例子: ```python import torch import torch.nn as nn class MultiHeadedAttention(nn.Module): def __init__(self, num_heads, model_dim, dropout=0.1): super(MultiHeadedAttention, self).__init__() assert model_dim % num_heads == 0 self.head_dim = model_dim // num_heads self.num_heads = num_heads self.linears = clones(nn.Linear(model_dim, model_dim), 4) self.attn = None self.dropout = nn.Dropout(p=dropout) def forward(self, query, key, value, mask=None): nbatches = query.size(0) # Do all the linear projections in batch from d_model => h x d_k query, key, value = \ [l(x).view(nbatches, -1, self.num_heads, self.head_dim).transpose(1, 2) for l, x in zip(self.linears, (query, key, value))] # Apply attention on all the projected vectors in batch. x, self.attn = scaled_dot_product_attention(query, key, value, mask=mask, dropout=self.dropout) # Concatenate and apply final Linear transformation. x = x.transpose(1, 2).contiguous().view(nbatches, -1, self.num_heads * self.head_dim) return self.linears[-1](x) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值