词嵌入通常是针对单个词元(如单词、字符或子词)的。然而,OpenAI 使用的是预训练的 Transformer 模型(如 GPT 和 BERT),这些模型不仅可以为单个词元生成嵌入,还可以为整个句子生成嵌入。
独热编码生成的向量是稀疏的,它们之间的距离相等,无法捕捉单词之间的语义关系。独热编码是固定的,无法在训练过程中进行调整。
嵌入层生成的向量是密集的,它们可以捕捉单词之间的语义关系。具有相似含义的单词在向量空间中距离较近。嵌入层的权重(即嵌入矩阵)可以在训练过程中进行调整,以便更好地捕捉词汇之间的语义关系。
跳元模型是一种常用的词嵌入模型,它的基本假设是一个词可以用来生成其周围的单词。例如,文本序列 “the”, “man”, “loves”, “his”, “son”,选择 “loves” 作为中心词,并将上下文窗口设置为2,跳元模型会考虑生成上下文词 “the”, “man”, “his”, “son” 的条件概率:
P
(
"
t
h
e
"
,
"
m
a
n
"
,
"
h
i
s
"
,
"
s
o
n
"
∣
"
l
o
v
e
s
"
)
P("the", "man", "his", "son" | "loves")
P("the","man","his","son"∣"loves")
我们通常假设上下文词是在给定中心词的情况下独立生成的,这被称为条件独立性。因此,上述条件概率可以被重写为:
P
(
"
t
h
e
"
∣
"
l
o
v
e
s
"
)
?
P
(
"
m
a
n
"
∣
"
l
o
v
e
s
"
)
?
P
(
"
h
i
s
"
∣
"
l
o
v
e
s
"
)
?
P
(
"
s
o
n
"
∣
"
l
o
v
e
s
"
)
P("the" | "loves") · P("man" | "loves") · P("his" | "loves") · P("son" | "loves")
P("the"∣"loves")?P("man"∣"loves")?P("his"∣"loves")?P("son"∣"loves")
这是跳元模型的基本工作原理。
连续词袋模型的主要假设是,中心词是基于其在文本序列中的周围上下文词生成的。例如,文本序列 “the”, “man”, “loves”, “his”, “son”,选择 “loves” 作为中心词,并将上下文窗口设置为2,连续词袋模型会考虑基于上下文词 “the”, “man”, “his”, “son” 生成中心词 “loves” 的条件概率:
P
(
"
l
o
v
e
s
"
∣
"
t
h
e
"
,
"
m
a
n
"
,
"
h
i
s
"
,
"
s
o
n
"
)
P("loves" | "the", "man", "his", "son")
P("loves"∣"the","man","his","son")
通过使用 Transformer 的双向自注意力机制,BERT 能够同时考虑一个单词在其上下文中的左侧和右侧的信息,从而更好地理解其含义。此外,通过预训练-微调的方式,BERT 能够在大规模未标注数据上学习到丰富的语言知识,然后将这些知识迁移到具体的 NLP 任务上,从而在许多任务上取得了显著的性能提升。
在这个任务中,BERT 的输入文本中的一部分单词被随机地替换为特殊的 [MASK] 标记。模型的目标是预测被遮蔽的单词。这种方法允许 BERT 在训练过程中学习到双向的上下文信息,因为它需要同时考虑被遮蔽单词左侧和右侧的上下文来预测其原始单词。MLM 任务的一个关键优势是,与传统的从左到右或从右到左的预训练方法相比,它可以更好地捕捉到双向上下文信息。
在这个任务中,BERT 需要预测两个给定句子是否是连续的。具体来说,模型接收一对句子作为输入,并需要判断第二个句子是否紧跟在第一个句子之后。这个任务的目的是帮助 BERT 学习句子之间的关系,从而更好地理解句子级别的上下文。
BERT 模型采用了多层的 Transformer 编码器。每一层都包含一个自注意力机制和一个前馈神经网络。这些层被堆叠在一起,形成了 BERT 的深度网络结构。
BERT 的嵌入主要包括三种类型:词嵌入、段落嵌入和位置嵌入。
GPT 由 OpenAI 在 2018 年提出,它也是建立在 Transformer 的基础上,但 GPT 采用的是 Transformer 的解码器结构。GPT 的关键思想是使用大量的文本数据进行无监督预训练,然后在特定任务上进行微调。GPT 在预训练阶段使用的是语言模型任务,即给定一个文本序列的前 N 个单词,预测第 N+1 个单词。这种方式使得模型能够学习到丰富的语言特征。
BPE 算法的工作原理是将频繁出现的字节对(在 NLP 中通常是字符对)合并为一个单独的符号。以下是 BPE 算法在 NLP 中的一般步骤:
通过这种方式,BPE 能够生成一个固定大小的词汇表,其中包含了单个字符、常见的字符序列以及完整的单词。