Transformer架构 完整的处理流程

Transformer 是由多层的 Encoder 和 Decoder 构成的。每一层的 Encoder 和 Decoder 都包含了多头自注意力机制(Multi-head Self Attention)、前馈神经网络(Feed Forward)和添加及归一化(Add & Norm)。特别的,Decoder 还多了一个 Masked Multi-head Attention。

Transformer 完整的处理流程如下:

  1. Input Embedding:这是第一步,将输入的词(比如英文句子中的单词)转化为向量。词嵌入可以将每个单词映射到一个连续的向量空间,相近的词在向量空间中的距离也比较近。这样就可以用向量来表示每个词,而这个向量就包含了这个词的语义信息。
  2. Position Embedding:由于 Transformer 不像 RNN 那样有明确的顺序信息,所以需要加入位置编码来给出序列元素的位置信息。位置嵌入是一个与序列中词的位置有关的向量,这样模型就可以知道词的顺序了。
  3. Multi-head Self Attention:这个过程是 Transformer 的核心,它使得模型可以关注到输入句子中的不同部分(即每个词不仅仅只关注自己,还会关注到其它词)。多头自注意力就是做了多次不同的自注意力计算,可以从不同的角度去学习词的信息。
  4. Add & Norm:多头自注意力的输出会与输入相加(残差连接),然后进行层归一化(将输出压缩到一定范围内),这可以使得训练更稳定,加快收敛。
  5. Feed Forward:接着进行前馈神经网络处理,这是一个对输入进行非线性变换的过程,能够进一步提取特征。
  6. N层网络:前面提到的过程会在模型中重复 N 次。每一层都会学习到不同的特征,随着层数的增加,学到的特征也越来越抽象。
  7. Masked Multi-head Attention:这是 Decoder 独有的部分,它不仅要关注到之前的词,还要关注到后面的词。但在训练过程中,为了防止看到未来的信息,会进行屏蔽操作,即在自注意力计算时,不关注到未来的词。
  8. Output Embedding:最后,模型的输出会经过线性变换和 softmax 操作,得到每个词的概率分布,从而可以选出概率最高的词作为预测结果。

Output Embedding

  1. Decoder 输出:Decoder 的最后一层输出(包含多头自注意力、Masked Multi-head Attention 和前馈神经网络)会被送到输出层。
  2. 线性变换:输出层首先对 Decoder 的输出进行线性变换,使得它的维度与词汇表大小相同。这样每个位置上的向量就对应着词汇表中每个词的分数。
  3. Softmax:接着,对线性变换的结果进行 softmax 操作,将分数转换成概率分布。通过这一步,我们可以看到哪些词在当前位置的概率最高。
  4. 概率最大的词:在 softmax 的概率分布中,选择概率最大的词作为预测结果。在训练过程中,我们会将这个预测结果与实际的目标词进行比较,并计算损失,从而不断优化模型。

所以,在 Output Embedding 部分,还包括了 Decoder 输出、线性变换、Softmax 和选择概率最大的词等环节。希望这次的解释更加详细。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Transformer 模型在自然语言处理任务中广泛应用,数据处理是构建 Transformer 模型的重要步骤之一。下面是一些常见的 Transformer 数据处理方法: 1. 分词(Tokenization):将输入文本切分成单个的词或者子词(subwords)。常用的分词工具有 spaCy、NLTK 和 Hugging Face 的 tokenizers 库。 2. 生成词汇表(Vocabulary Generation):根据训练数据生成词汇表或者子词表。可以使用库中的工具实现,例如 Hugging Face 的 tokenizers 库提供了 `train_tokenizer` 函数来生成子词表。 3. 编码(Encoding):将分词后的文本转换为模型可以处理的张量形式。通常使用整数编码或者单词嵌入(word embedding)来表示每个词或子词。可以使用库中的工具实现,例如 TensorFlow 和 PyTorch 提供了相应的 API。 4. 填充(Padding):由于输入序列的长度不一致,需要进行填充操作使得输入序列具有相同的长度。常用的填充方式是在较短的序列后面添加特殊的填充标记。 5. 生成样本对:在训练过程中,Transformer 模型通常需要输入和输出对应的样本对。例如,在翻译任务中,一个样本对包括源语言句子和目标语言句子。 6. 批处理(Batching):为了高效地进行训练,可以将多个样本对组成一个批次进行并行计算。通常使用数据加载器(data loader)来管理批处理过程。 7. 数据增强(Data Augmentation):为了增加训练数据的多样性,可以通过对原始数据进行随机扰动或变换来生成新的训练样本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值