位置编码
位置编码(Position Embedding)是Transformer模型中用来引入序列中词语位置信息的一种机制,对每个词的嵌入向量进行加和,以保持模型对序列顺序的敏感性。具体来说,词嵌入是通过学习得到的,每个词的嵌入向量表示了该词在语义空间中的位置和上下文信息。例如,在词嵌入向量空间中,"king" 和 "queen" 可能在相似的区域,因为它们在语义上有相似的关系。
位置编码(Position Embedding) 通常不是模型参数的一部分,而是一种固定的或者可学习的嵌入向量,它们在模型训练过程中不会通过反向传播进行更新。
Encoder 的输入包含词向量(Word Embedding )和位置向量(Position Embedding)
词向量(Word Embedding) 是对每个输入词的语义表示,它将离散的词转换为一个连续的高维向量。每个词被映射到一个高维空间中,这些向量表示了该词的意义以及它与其他词的关系。
词嵌入(生成词向量的)
PyTorch中,nn.Embedding层用于实现词嵌入(Word Embedding)
1)使用预训练(Pre-trained) 的Embeddings并固化
- 在这种情况下,权重矩阵是从预训练的词嵌入模型中加载的,比如Word2Vec、GloVe或FastText等。
- 在加载这些预训练的嵌入向量后,通常会将这些权重设置为不可训练(即不需要梯度),这样在训练过程中这些嵌入向量保持不变。
- 这种方法的优点是可以利用预训练嵌入中包含的丰富语义信息,尤其是在训练数据不足的情况下,这有助于提高模型的性能。
2)对其进行随机初始化(当然也可以选择预训练的结果)并设为可训练的(Trainable)。这样在训练过程中不断地对 Embeddings 进行改进。
- 在这种情况下,权重矩阵是随机初始化的,通常使用均匀分布或高斯分布进行初始化。
- 这些嵌入向量在训练过程中是可训练的,意味着它们会随着模型的训练而更新。
- 这种方法的优点是嵌入向量可以根据特定任务进行调整,可能捕捉到预训练嵌入中未包含的特定领域信息。
具有位置信息的编码实现
优点是不需要训练参数,而且即使在训练集中没有出现过的句子长度上也能用。