Transformer 是一种采用了 “自注意力机制” 的模型,主要应用于自然语言处理(NLP)和计算机(CV)视觉领域。Transformer 采用 “encoder+decoder” 的架构,输入和输出都可以是不定长的序列(seq2seq)。通过注意力机制,transformer 可以学习到输入序列中的上下文信息,从而表现出更强的学习能力。

Key words:seq2seq、Encoder、Decoder、Multi-headed Attention、Positional Encoding、Input Embedding

# Transformer 架构

为了方便解释,下文都以文本翻译为例来解释 transformer。在这个例子中,transformer 的输入是一段英文,输出是一段不定长度的中文。

原始的 Transformer 采用编码器 - 解码器(Encoder–Decoder)架构,Encoder 和 Decoder 又由多层小 encoder 和 decoder 组成。

Transformer架构

# 评估过程

评估过程

原始输入信息在进入 Encoder 之后,首先需要进行词嵌入位置信息编码转换为一组向量,然后将该组向量向量经过多层的抽取会被映射为一组抽象的连续表示,其中包含了原始输入的所有可学习信息(可以理解为一种总结概括,保留输入中对机器有用的信息,然后输出成一种机器能看懂的形式),然后将该组表示输入到 Decoder 中。每层小 decoder 利用输入的那些表示来生成输出信息,注意,小 decoder 生成的信息同样也会被输入到其他小 decoder 中参与后续的输出,即每一次小 decoder 的输入是其他小 decoder 之前的输出 Encoder 的输出

# 训练过程

训练过程

相比于使用 transformer,在训练 transformer 的时候,Decoder 的输入会有所不同。在训练时,Decoder 的输入是 Encoder 的输出正确答案,目的是让 Decoder 能根据正确的答案计算交叉熵,这样才能进行参数更新。关于这部分的细节,我会在后文中详细讲解。

# Transormer 细节

# 词嵌入

在机器学习中,为了快速运算,通常会将数据转换成各种 tensor。而 transformer 的输入是一段序列(可能是文本、像素等离散值),以什么规则来将这些值组成 tensor 会直接影响机器学习结果的好坏,所以需要探索一种好的转换规则。将单词转换(嵌入)到 tesnor 的过程就是词嵌入(word embedding)

假设现在有三个单词:

  • apple
  • orange
  • iphone

我们可以将每一个单词转换成一个 one-hot 向量,但这会带来两个问题:

# encoder 详解


更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

Gality 微信支付

微信支付

Gality 支付宝

支付宝