直观解释 Transformer 原理

1. 将句子分解成一个个 Token

2. 每个 Token 对应一个向量,构成一个 Embedding 矩阵

3. 这个 Embedding 矩阵通过Self-Attension 模块去”学习“句子的上下文信息,从而更新 Token 的向量表示

"学习"的形象表达是:找谁跟谁有关,例如:输入喜欢唱跳打篮球的帅哥,经过 Self-Attension ,帅哥这个名词就会”学习“到喜欢唱跳打篮球是和它有关系

"学习"从本质看:借助 Query、Key、Value 向量( 由 Token 的向量表示,乘上W_Q,W_K,W_V 矩阵得到 ),用某个 Token 的 Q 和其他 Token 的 K 向量进行乘积( 表示了他们之间的关联程度 ),经过 SoftMax 变成概率后,对 V 按概率加权相加,得到更新后的某个 Token 的新的向量表示

W_Q,W_K,W_V,这三个矩阵是由反向传播得到

4. 通过 MLP 模块来让 Token 学习到更多相关的信息,而不仅仅是输入句子的上下文信息

形象表达:依旧使用上面的例子:此时的帅哥还学习到其与吴彦祖、彭于晏这些帅哥相关

本质:也是更新 Token 的向量表示。先经过 W1 升维,再经过 ReLU 函数,再通过 W2 降维

W1,W2 由反向传播得到

ReLU 函数的作用:非线性激活,没有它网络会退化成一个单层线性模型。本质是放大有用信息,屏蔽无用信息

通过多次 Attension 和 MLP 的组合,得到最终的隐藏状态向量

5. 用最后一个 Token 的隐藏状态向量乘 unembedding 矩阵( embedding 矩阵的转置 ),作用是转回词汇空间

6. 最后经过 softmax 来预测下一个词的概率

### Transformer 模型工作机制详解 #### 输入表示与位置编码 在 Transformer 中,输入序列中的每个词被映射成高维向量。由于该模型不包含循环结构或卷积层来捕捉顺序信息,因此引入了位置编码(Positional Encoding),用于给定输入嵌入(Embedding)添加相对或绝对的位置信息[^1]。 #### 编码器部分 编码器由多个相同的层堆叠而成,每一层有两个子层组成:一个多头自注意力(Multi-head Self-Attention)机制和一个简单的全连接前馈网络(Fully Connected Feed-Forward Network)。多头自注意机制允许模型并行关注来自不同代表性的子空间的不同位置的信息;而前馈神经网络则应用于每一个位置上的独立相同的方式处理数据。 #### 解码器部分 解码器同样是由一系列重复的层次构成,不过每层包含了三个子组件而不是两个——除了类似于编码器里的两部分外还增加了一个额外的“编码头部”(Encoder-Decoder Attention Head), 它使得解码过程能够聚焦于源句子的相关片段之上。 #### 自注意力机制 这是整个架构的核心创新之一,在此过程中,任何给定时刻 t 的隐藏状态 h_t 都会与其他所有时间步长的状态相互作用以计算加权平均值作为新的上下文表征 c_t 。这种设计让远距离依赖关系变得更容易建模,并且极大地提高了训练效率和效果[^3]。 ```python import torch.nn as nn class MultiHeadedSelfAttention(nn.Module): def __init__(self, d_model, num_heads): super().__init__() self.d_k = d_model // num_heads self.h = num_heads # Linear layers for query, key and value projections. self.linear_layers = clones(nn.Linear(d_model, d_model), 3) def forward(self, query, key, value, mask=None): batch_size = query.size(0) # Do all the linear projections in batch from d_model => h x d_k query, key, value = \ [l(x).view(batch_size, -1, self.h, self.d_k).transpose(1, 2) for l, x in zip(self.linear_layers, (query, key, value))] scores = ... p_attn = ... return attention(query, key, value, mask=mask, dropout=self.dropout) ``` 通过上述描述可以看出,Transformer 不仅简化了传统RNN/LSTM复杂的内部逻辑,而且凭借其独特的平行化特性实现了更高效的并行运算能力,这正是它能够在众多NLP任务中取得优异成绩的关键因素所在[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值