GPT

1 GPT为什么叫GPT

GPT是一个单向语言模型,输入的句子是从左到右的,因此在训练的时候,每个位置的词都可以看到前面的词,但是不能看到后面的词。

GPT的全称是Generative Pre-trained Transformer。与 BERT 专注于“理解”不同,GPT 的目标是“生成”。可以将BERT理解为Transformer的Encoder,而GPT可以理解为Transformer的Decoder。

GPT也采用两阶段过程:

  • 第一阶段使用LM进行预训练

  • 第二阶段使用fine-tuning的方式处理下游任务

GPT使用的是单项的语言模型:严格的“从左到右”的预测模式,通过 Decoder 内部使用 Masked Self-Attention 实现。与 BERT 复杂的 MLM 策略([MASK], random, unchanged)不同,GPT 的训练目标更加简单。通过大量数据,使得模型能够深入学习语言的内在结构和逻辑,从而获得了更好的生成能力。

2 GPT Embedding

输入 embedding 由 token embeddingposition embedding 相加得到。

  • Token Embedding

    • 与 BERT 相同,GPT 首先构建一个固定大小的词汇表

    • 使用输入的 input_ids 在词汇表矩阵中查找每个 token 对应的向量

    • 输出 shape 为 [batch_size, seq_length, embedding_size]

  • Position Embedding

    • 绝对位置信息:GPT 需要知道每个 token 在序列中的绝对位置,以理解词序

    • 学习嵌入向量:与 BERT 类似,GPT 的位置嵌入也是通过模型在预训练过程中学习得到的。模型会创建一个位置嵌入矩阵,大小为 [max_position_embeddings, embedding_size]max_position_embeddings 通常是一个固定的最大序列长度。无论输入序列内容是什么,第一个 token 总是加上第一个位置的嵌入向量,第二个 token 总是加上第二个位置的嵌入向量,以此类推。

3 GPT代码实现

参考

Last updated