当前位置:   article > 正文

GPT(Improving Language Understandingby Generative Pre-Training) 论文笔记_improving language understanding by generative pre

improving language understanding by generative pre-training

目录

1. 论文简介

2. GPT与ELMO区别与联系.

3. 贡献或主要改进

3.1. Transformer 的半监督学习

why 

how 

3.2. 基于不同任务在fine-tuning阶段对GPT输入数据改造。

4. 其它

4.1. 为什么GPT可以并行,虽然它也是自回归语言模型(AR模型)


Paper:GPT: Improving Language Understandingby Generative Pre-Training

Code:GPT

1. 论文简介

GPT是“Generative Pre-Training”的简称,是指的生成式的预训练。GPT采用两阶段过程,第一个阶段是利用语言模型进行预训练,第二阶段通过Fine-tuning的模式解决下游任务。下图展示了GPT的预训练过程。

2. GPT与ELMO区别与联系.


(1)相同点:GPT和ELMO是类似的都是两阶段模型。
(2)不同点:首先,特征抽取器不是用的RNN,而是用的Transformer,它的特征抽取能力要强于RNN;其次,GPT的预训练虽然仍然是以语言模型作为目标任务,但是采用的是单向的

3. 贡献或主要改进

3.1. Transformer 的半监督学习

why 

监督学习的问题,这里的监督学习是只用大量手动标记的数据去训练模型。

  • 大多数深度学习方法需要大量的手动标记的数据,但是其实我们是没有那么多的手动标记的数据,这限制了它们在许多受领域的适用性。
  • 一些可以利用无监督学习到语言信息,如果你利用手动标记的数据去学习。那么可能既耗时又昂贵
  • 即使在大量监督的情况下可用,以无监督的方式学习良好的表示可以提供一个重要的性能提升。迄今为止,最令人信服的证据是广泛使用预训练的词嵌入来提高一系列 NLP 任务的性能

how 

我们采用两阶段训练方式。 首先,我们使用语言模型在未标记的数据来学习神经网络模型的初始参数。 随后,我们根据下游的有标记的数据对语言模型进行Fine-tuning.x

下图左一是Transformer模型结构图和右图是GPT模型 

GPT整个过程如上右图所示,词向量(token embedding)和位置向量(position embedding)的和作为输入,经过12层的Masked Multi-Head Attention和Feed Forward(当然中间也包括Layer Norm),得到预测的向量和最后一个词的向量,最后一个词的词向量会作为后续fine-tuning的输入。

3.2. 基于不同任务在fine-tuning阶段对GPT输入数据改造。

(左)Transformer Decoder 架构和训练目标。 (右)输入用于微调不同任务的转换。 我们将所有结构化输入转换为令牌由我们的预训练模型处理的序列,然后是一个线性+softmax 层。

4. 其它

4.1. 为什么GPT可以并行,虽然它也是自回归语言模型(AR模型)

关键是在于这个Masked Self attention. 自回归是利用下面Masked的Self attention实现。

Masking的目的是确保左边得看不到右边的。比如下面这个图。横轴是Query,纵轴是Key. 空心的是Masked了值。

输入是1时,它什么也看不到,输入2时,它可以看到1.输入3时,它可以看到1,2. 依此类推,如果要实现,可以根据下面这个Masked self attention 实现。

1->2->3->4->5->6

这样就可以并行实现自回归了。不像RNN或LSTM这种串行方式实现自回归。

代码实现

  1. import numpy as np
  2. def test1():
  3. nd = 6
  4. ns = 6
  5. i = np.arange(nd)[:, None]
  6. j = np.arange(ns)
  7. m = i >= j - ns + nd
  8. print(m)
  9. if __name__ == '__main__':
  10. test1()

输出结果

  1. [[ True False False False False False]
  2. [ True True False False False False]
  3. [ True True True False False False]
  4. [ True True True True False False]
  5. [ True True True True True False]
  6. [ True True True True True True]]

其它

使用BPE (bytepaire encoding)  

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/858045?site
推荐阅读
相关标签
  

闽ICP备14008679号