深入解析Transformer架构:从编码到解码
1. 注意力机制与前馈层
在示例中,输入由两个句子组成, [CLS] 和 [SEP] 是BERT分词器中的特殊标记。从可视化结果可以看出,属于同一句子的单词之间的注意力权重最强,这表明BERT能够识别出应关注同一句子中的单词。例如,对于单词 “flies”,BERT能在第一个句子中识别出 “arrow” 等重要信息,在第二个句子中识别出 “fruit” 和 “banana”,这些注意力权重使模型能够根据上下文区分 “flies” 作为动词或名词的用法。
接下来,我们来实现编码器层中缺失的部分:位置前馈网络。前馈子层是一个简单的两层全连接神经网络,但有一个特点,它不是将整个嵌入序列作为单个向量处理,而是独立处理每个嵌入,因此也被称为位置前馈层。在计算机视觉领域,它有时也被称为核大小为1的一维卷积。通常,第一层的隐藏大小设为嵌入大小的四倍,最常用的激活函数是GELU。以下是实现代码:
class FeedForward(nn.Module):
def __init__(self, config):
super().__init__()
self.linear_1 = nn.Linear(config.hidden_size, config.intermediate_size)
self.linear_2 = nn.Linear(config.intermediate_size, config.hidden_size)
self.gel
超级会员免费看
订阅专栏 解锁全文
2258

被折叠的 条评论
为什么被折叠?



