今天介绍transformer模型的Input Embedding 嵌入层。
背景
嵌入层的目标是使模型能够更多地了解单词、标记或其他输入之间的关系。
从头开始嵌入Embeddings from Scratch
嵌入序列需要分词器tokenizer、词汇表和索引,以及词汇表中每个单词的三维嵌入。Embedding a sequence requires a tokenizer, a vocabulary of words and their indices, and a three-dimensional embedding for each word in the vocabulary.
- 分词器将序列分割为其标记tokens。
- 创建分词器后,可以为示例创建词汇表vocabulary 。词汇表包含构成数据的唯一单词列表。现在可以使用该词汇表将任何标记序列转换为其整数表示形式。
- 下一步是创建嵌入层,它只不过是一个大小为(vocab_size, d_model)的随机值矩阵。这些值可以使用torch.rand生成。
- 创建嵌入后,可以使用索引序列为每个标记选择适当的嵌入。
使用 PyTorch 模块实现嵌入
PyTorch 来实现变压器,可以使用nn.Embedding模块。
Embedding — PyTorch 2.2 documentation
理解(batch_size、seq_length、d_model):
- batch_size:一次提供的序列总数。
- seq_length:标记化后每个序列中的单词或标记的总数。
- d_model:嵌入每个标记后模型的大小。
如需代码实现,请参看原文链接:
https://medium.com/@hunter-j-phillips/the-embedding-layer-27d9c980d124