扳布的AI摘要
HunYuan-turbos

自回归模型 Autoregressive model,AR

本篇主要围绕GPT作为代表了解AR

2018年6月, OpenAI公司发表了论文“Improving Language Understanding by Generative Pre-training”《用生成式预训练提高模型的语言理解力》, 推出了具有1.17亿个参数的GPT(Generative Pre-training , 生成式预训练)模型

特点:decoder-only

基本原理:从左往右学习的模型,只能利用上文或者下文

AR模型通常用于生成式任务,在长文本的生成能力很强,比如NLG领域的任务:摘要、翻译、抽象问答

GPT模型架构

  • 从上图可以很清楚的看到GPT采用的是单向Transformer模型, 例如给定一个句子[u1, u2, …, un], GPT在预测单词ui的时候只会利用[u1, u2, …, u(i-1)]的信息, 而BERT会同时利用上下文的信息[u1, u2, …, u(i-1),u(i+1), …, un]

GPT采用了Transformer的decoder模块,但是做了修改

  • GPT移除了第二个encoder-decoder attention子层,只保留Masked Multi-head Attention子层和Feed Forward子层
  • 对比经典Transformer采用6层decoder,GPT采用了12层

GPT训练过程

GPT训练过程包括两个阶段:1.无监督的预训练语言模型 2.有监督的下游任务fine-tuning

无监督的预训练语言模型

给定句子U = [u1, u2, …, un], GPT训练语言模型时的目标是最大化下面的似然函数

  • 上述公式具体来说是要预测每个词 的概率,这个概率是基于它前面个词,以及模型,这里的k表示上文的窗口大小,理论上k取值越大,模型所能获取的信息越充足,能力越强

  • GPT是一个单向语言模型,模型对输入U 进行特征嵌入得到 transformer 第一层的输h0,再经过多层 transformer

    特征编码,使用最后一层的输出即可得到当前预测的概率分布,计算过程如下

    表示单词位置编码 → [max_seq_len, embedding_dim],可以看作是单位矩阵 → [vocab_size, embedding_dim]

  • 得到输入张量h0后, 要将h0传入GPT的Decoder Block中, 依次得到ht

  • 最后通过得到的ht来预测下一个单词

有监督的下游任务fine-tuning

GPT预训练后, 会针对具体的下游任务对模型进行微调. 微调采用的是有监督学习, 训练样本包括单词序列[x1, x2, …, xn]和label y. GPT微调的目标任务是根据单词序列[x1, x2, …, xn]预测标签y

其中Wy表示预测输出的矩阵参数, 微调任务的目标是最大化下面的函数

综合两个阶段的目标任务函数, 可知GPT的最终优化函数为:

整体训练架构图:

数据集和参数

GPT使用了BooksCorpus数据集,文本大小约5GB,包含7400w+的句子。这个数据集由7000本独立的、不同风格类型的书籍组成

参数 取值
transformer层数 12
特征维度 768
transformer head数 12
总参数量 1.17亿