GPT模型

文本分类:

数据集

THUCNews 数据集子集,链接: https://pan.baidu.com/s/1hugrfRu 密码: qfud

Language Understanding

  • intent classification

  • dialogue state tracking

  • sentiment classification

Language Generation

  • information, structured, sentiment –> language

必读论文

GPT

Radford et. al., Improving Language Understanding by Generative Pre-Training

https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf

这篇文章推出了generative pre-training + discriminative fine-tuning的方法,后来也被BERT沿用。task-aware input transformation也是BERT借用的一个点。当年这篇文章刚出来的时候刷榜一波,不过离BERT太近,导致后来大家都不怎么关心这篇文章了。

a b c d e f

| | | | | | |

a b c d e f

1 0 0 0 0 0 0

1 1 0 0 0 0 0

1 1 1 0 0 0 0

1 1 1 1 0 0 0

1 1 1 1 1 0 0

1 1 1 1 1 1 0

预训练

语言模型objective

img

Transformer Decoder

img

训练使用BooksCorpus数据集,7000本书。

模型参数:

  • 12层transformer decoder

  • 768 hidden states, 12 attention heads

  • FFN层有3072维度inner states

Fine tuning

使用最后一层最后一个token的representation来做task specific的模型fine tuning

img

依然使用Log loss

img

作者发现在fine tuning的时候继续使用语言模型的loss也有好处

img

Task-specific Input Transformations

四种问题有四种不同的文本表示方法

img

Natural Language Inference

  • 判断两句话的关系,entailment 承接关系,contradiction 矛盾关系,neutral 中立关系

  • 在几个NLI任务上都有不小的提升

Question Answering and Common Sense Reasoning

Semantic Similarity 语义相似度

  • Microsoft Paraphrase Corpus

  • Quora Question Pairs

分类问题

  • Corpus of Lingustic Acceptability,判断一句话的语法是不是正确。

  • Stanford Sentiment Treebank 情感分类

GPT2

Radford et. al., Language Models are Unsupervised Multitask Learners

https://d4mucfpksywv.cloudfront.net/better-language-models/language_models_are_unsupervised_multitask_learners.pdf

比GPT更大的训练数据集

  • Common Crawl来自网页爬取,删除了Wikipedia,总共40GB数据。

evaluation任务

关于文本生成

https://arxiv.org/pdf/1904.09751.pdf

代码解读

我对代码添加了一些注释

https://github.com/ZeweiChu/gpt-2/blob/master/src/model.py

huggingface代码

https://github.com/huggingface/transformers/blob/master/src/transformers/modeling_gpt2.py

自动检测

def attention_mask(nd, ns, *, dtype):

​ “””1’s in the lower triangle, counting from the lower right corner.

​ 左下角的三角形都是1,其余是0,用于生成mask。

​ Same as tf.matrix_band_part(tf.ones([nd, ns]), -1, ns-nd), but doesn’t produce garbage on TPUs.

​ “””

​ i = tf.range(nd)[:,None]

​ j = tf.range(ns)

​ m = i >= j - ns + nd

​ return tf.cast(m, dtype)

0 0 0 0 0

1 1 1 1 1

2 2 2 2 2

3 3 3 3 3

4 4 4 4 4

0 1 2 3 4

1 0 0 0 0

1 1 0 0 0

1 1 1 0 0

1 1 1 1 0

1 1 1 1 1

w00 w01-inf w02-inf w03-inf w04-inf

w10 w11 w12-inf w13-inf w14-inf

w20 w21 w22 w23-inf w24-inf

w30 w31 w32 w33 w34-inf

w40 w41 w42 w43 w44

阅读GPT2代码:https://github.com/ZeweiChu/gpt-2/blob/master/src/model.py

Google T5: Transformer预训练模型大总结

论文地址:https://arxiv.org/pdf/1910.10683.pdf

代码+预训练模型:https://github.com/google-research/text-to-text-transfer-transformer

文章目录
  1. 1. 必读论文
  2. 2. GPT
    1. 2.1. 预训练
    2. 2.2. Fine tuning
    3. 2.3. Task-specific Input Transformations
  3. 3. GPT2
    1. 3.1. 代码解读
  4. 4. Google T5: Transformer预训练模型大总结
|