前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GPT:Generative Pre-Training

GPT:Generative Pre-Training

作者头像
felixzhao
发布2022-05-12 15:58:59
8900
发布2022-05-12 15:58:59
举报
文章被收录于专栏:null的专栏

1. 概述

随着深度学习在NLP领域的发展,产生很多深度网络模型用于求解各类的NLP问题,从word2vec词向量工具的提出后,预训练的词向量成了众多NLP深度模型中的重要组成部分。然而传统的word2vec生成的词向量都是上下文无关的,其生成的词向量式固定,不会随着上下文的改变而改变,这种固定的词向量无法解决一词多义的问题。比如“bank”这个词,既可以表示“河岸”,也可以表示“银行”。Embeddings from Language Models(ELMo)[1]是2018年提出的一种基于上下文的预训练模型,通过大量语料学习到每个词的一般性embedding形式,学习到与上下文无关的语义向量表示,以此实现对多义词的建模。

Generative Pre-Training(GPT)[2]也是在2018年提出的实现对多义词建模的语义模型,与ELMo相同的是,在GPT中,也是采用了两阶段的过程,第一阶段是利用无监督的方式对语言模型进行预训练,第二阶段通过监督的方式在具体语言任务上进行Fine-tuning。不同的是在GPT中采用的特征提取算法是transformer,且是单向的语言模型,而在ELMo中采用的双向的LSTM算法。

2. 算法原理

2.1. GPT的基本原理

与ELMo模型的训练一样,在GPT的训练过程中采用两阶段的过程,第一个阶段是GPT模型的预训练,得到与上下文无关的语义向量的表示,第二阶段在具体任务上Fine-tuning,以解决具体的下游任务。具体的两阶段过程可由下图表示:

在这里插入图片描述
在这里插入图片描述

2.2. 第一阶段——GPT模型预训练

2.2.1. 与ELMo模型的对比

GPT模型的预训练与ELMo模型的预训练的主要不同集中在两点:

  1. GPT中采用的是Transformer作为语义特征的提取,而ELMo中采用的是LSTM;
  2. GPT中采用的是单向的语言模型,即通过上文预测当前的词,而ELMo中采用的是双向的语言模型,即上下文预测当前的词。

GPT模型与ELMo模型的对比可以由下图表示:

在这里插入图片描述
在这里插入图片描述

完整的Transformer是一个典型的Seq2seq的结构,包括了Encoder和Decoder两个部分,如下图所示:

在这里插入图片描述
在这里插入图片描述

在GPT模型中使用的是Transformer结构中的Decoder结构,如上图中的右半部分,并对上述的Decoder部分进行了一些改动,原本的Decoder中包含了两个Multi-Head Attention结构,分别为Masked Multi-Head Attention和Multi-Head Attention,而在GPT中只保留了Mask Multi-Head Attention。

2.2.2. GPT模型的预训练

对于GPT模型的预训练,同样采用的是语言模型,即通过上文预测当前的词。假设词的集合为U=\left \{ u_1,\cdots ,u_n \right \} ,语言模型的目标函数为:

L_1\left ( U \right )=\sum _ilog\; P\left ( u_i\mid u_{i-k},\cdots ,u_{i-1};\Theta \right )

其中,k 是窗口的大小。此时需要求此目标函数的最大值。在GPT模型的预训练中,采用的基本特征提取模块是Transformer中的Decoder结构,模型的输入向量h_0 为:其中,U=\left ( u_{-k},\cdots ,u_{-1} \right ) 表示的当前词u 的以k 为窗口的上文,W_e 表示的词向量,W_p 表示的是位置向量,通过上文的词向量和位置向量的和得到当前词的输入向量。经过多个Transformer结构,得到第l 层的输出:

h_l=transformer\_block\left ( h_{l-1} \right )

由于是decoder结构,我们希望得到当前词的位置是词u 的概率,即为:

P\left ( u \right )=softmax\left ( h_nW_e^T \right )

以此,我们便可以得到预训练的GPT模型,同时W_e 即为训练好的词向量。

2.3 第二阶段——Fine-tuning

2.3.1. Fine-tuning具体计算

在GPT模型的下游任务中,需要根据GPT的网络结构,对下游任务做适当的修改,具体如下图所示:

在这里插入图片描述
在这里插入图片描述

假设带有标签的数据集为C ,其中,词的序列为x^1,\cdots ,x^m ,标签为y 。实际上就是通过标签y 的上文预测当前词是y ,假设通过上述第一阶段,得到最后一个词的输出h_l^m ,此时需要预测标签y ,即为:

P\left ( y\mid x^1,\cdots ,x^m \right )=softmax\left ( h_l^mW_y \right )

此时,目标函数为:

L_2\left ( C \right )=\sum _{\left ( x,y \right )}log\; P\left ( y\mid x^1,\cdots ,x^m \right )

此时需要使得L_2 取得极大值,为了能够对原先的网络结构fine-tuning,对具体任务可结合目标函数L_1L_2

L_3\left ( C \right )=L_2\left ( C \right )+\lambda \ast L_1\left ( C \right )

2.3.2. 不同的下游任务构造

对于不同的下游任务,在Fine-tuning的过程中,需要不同的改造方法以适应GPT的模型结构,如上图所示:

  1. 对于分类任务,只需要在特征序列前后分别加上开始(Start)和结束(Extract)标记;
  2. 对于句子关系判断任务,如Entailment,除了开始和结束标记,在两个句子中间还需要加上分隔符(Delim);
  3. 对文本相似性判断任务,与句子关系判断任务相似,不同的是需要对两个句子的位置做变换;
  4. 对于多项选择任务,则需要根据Context与不同的Answer组合出不同的句子对,分别输入到模型中,句子对的形式与句子关系判断一致。

3. 总结

GPT模型中通过采用Transformer结构中的Decoder作为语义模型的提取模型,可以显著提升文本语义的学习能力,同时两阶段的学习方法对于可以方便的将GPT应用在不同的任务中。

参考文献

[1] Peters M , Neumann M , Iyyer M , et al. Deep Contextualized Word Representations[J]. 2018.

[2] Radford A, Narasimhan K, Salimans T, et al. Improving language understanding by generative pre-training[J]. 2018.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 概述
  • 2. 算法原理
    • 2.1. GPT的基本原理
      • 2.2. 第一阶段——GPT模型预训练
        • 2.2.1. 与ELMo模型的对比
        • 2.2.2. GPT模型的预训练
      • 2.3 第二阶段——Fine-tuning
        • 2.3.1. Fine-tuning具体计算
        • 2.3.2. 不同的下游任务构造
    • 3. 总结
    • 参考文献
    相关产品与服务
    NLP 服务
    NLP 服务(Natural Language Process,NLP)深度整合了腾讯内部的 NLP 技术,提供多项智能文本处理和文本生成能力,包括词法分析、相似词召回、词相似度、句子相似度、文本润色、句子纠错、文本补全、句子生成等。满足各行业的文本智能需求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档