总的来说 , Transformer 模型的引入对于 NLP 领域产生了革命性的影响 。它的能力在于学习长距离依赖关系并理解上下文 , 使得它成为众多 NLP 任务的首选方法,并为未来的发展提供了广阔的可能性 。
三、Transformer 模型通用架构设计Transformer 架构是从 RNN(循环神经网络)的编码器-解码器架构中汲取灵感而来,其引入了注意力机制 。它被广泛应用于序列到序列(seq2seq)任务,并且相比于 RNN,Transformer 摒弃了顺序处理的方式 。
不同于 RNN , Transformer 以并行化的方式处理数据,从而实现更大规模的并行计算和更快速的训练 。这得益于 Transformer 架构中的自注意力机制,它使得模型能够同时考虑输入序列中的所有位置,而无需按顺序逐步处理 。自注意力机制允许模型根据输入序列中的不同位置之间的关系,对每个位置进行加权处理,从而捕捉全局上下文信息 。
class EncoderDecoder(nn.Module):"""A standard Encoder-Decoder architecture. Base for this and manyother models."""def __init__(self, encoder, decoder, src_embed, tgt_embed, generator):super(EncoderDecoder, self).__init__()self.encoder = encoderself.decoder = decoderself.src_embed = src_embedself.tgt_embed = tgt_embedself.generator = generatordef forward(self, src, tgt, src_mask, tgt_mask):"Take in and process masked src and target sequences."return self.decode(self.encode(src, src_mask), src_mask,tgt, tgt_mask)def encode(self, src, src_mask):return self.encoder(self.src_embed(src), src_mask)def decode(self, memory, src_mask, tgt, tgt_mask):return self.decoder(self.tgt_embed(tgt), memory, src_mask, tgt_mask)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
class Generator(nn.Module):"Define standard linear + softmax generation step."def __init__(self, d_model, vocab):super(Generator, self).__init__()self.proj = nn.Linear(d_model, vocab)def forward(self, x):return F.log_softmax(self.proj(x), dim=-1)
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
文章插图
基于如上的 Transformer 深度学习模型的整体架构参考模型图 , 我们可以看到:它由两个主要组件组成:
1.编码器堆栈这是由 Nx 个相同的编码器层组成的堆栈(在原始论文中,Nx=6) 。每个编码器层都由两个子层组成:多头自注意力机制和前馈神经网络 。多头自注意力机制用于对输入序列中的不同位置之间的关系进行建模,而前馈神经网络则用于对每个位置进行非线性转换 。编码器堆栈的作用是将输入序列转换为一系列高级特征表示 。
Transformer 编码器的整体架构 。我们在 Transformer 编码器中使用绝对位置嵌入,具体可参考如下:
文章插图
2.解码器堆栈这也是由 Nx 个相同的解码器层组成的堆栈(在原始论文中,Nx=6) 。每个解码器层除了包含编码器层的两个子层外 , 还包含一个额外的多头自注意力机制子层 。这个额外的自注意力机制用于对编码器堆栈的输出进行关注,并帮助解码器对输入序列中的信息进行解码和生成输出序列 。
【一文读懂 Transformer 神经网络模型】在编码器和解码器堆栈之间,还有一个位置编码层 。这个位置编码层的作用是利用序列的顺序信息,为输入序列中的每个位置提供一个固定的编码表示 。这样,模型可以在没有递归或卷积操作的情况下,利用位置编码层来处理序列的顺序信息 。
Transformer 解码器的整体架构 , 具体可参考如下所示:
文章插图
在实际的场景中,两者的互动关系如下:
文章插图
四、什么是 Transformer 神经网络?众所周知,Transformer 在处理文本序列、基因组序列、声音和时间序列数据等神经网络设计中起着关键作用 。其中,自然语言处理是 Transformer 神经网络最常见的应用领域 。
当给定一个向量序列时,Transformer 神经网络会对这些向量进行编码,并将其解码回原始形式 。而 Transformer 的注意力机制则是其不可或缺的核心组成部分 。注意力机制表明了在输入序列中,对于给定标记的编码,其周围其他标记的上下文信息的重要性 。
推荐阅读
- 一文学会Linux内核的编译和调试
- 一文带你了解Docker与Containerd的区别
- 一文搞懂Redis架构演化之路
- 一文搞懂二叉搜索树、B树、B+树、AVL树、红黑树
- 一文吃透JVM分代回收机制
- 一文看懂 Git 的底层工作原理
- 两年法考差1分通过,是不够努力吗,复习建议等一文全攻略
- 看电影《封神第一部》,读懂职场上位的博弈
- 一文解析「小米大模型」
- 一文带您了解线性回归:多个变量之间的最佳拟合线的算法