[PLM#2] (OpenAI 2019) Language Models are Unsupervised Multitask Learners

image-20200205195815668

1. 背景

  • 动机:(1)单个域的单个任务上的训练缺乏泛化性能;(2)多任务训练意味着需要更多的训练数据来实现良好的泛化性能;(3)目前的PLM仍需要具体任务进行fine-tuning。
  • 贡献点:(1)连接了两类工作(预训练和多任务学习),继续探索迁移;(2)展示了Language Model可以以zero-shot形式应用到下游任务。

2. 方法

  • 方法的本质:语言建模(Language Modeling)。
image-20200205211618696
  • 猜测:好的语言模型将能够infer和perform语言序列中的任务。
image-20200205230840083

2.1 训练数据集

  • 目标:建立一个尽可能大且多样的数据集。一个可能的数据集:Common Crawl。

  • 结果:WebText包含45m个链接。

2.2 输入表示

  • Byte Pair Encoding (BPE)在Unicode code points上实现的话,字典大小将会是130,000。Byte-level的BPE将容易导致sub-optimal。

  • 方案:To avoid this, we prevent BPE from merging across character categories for any byte sequence. We add an exception for spaces which significantly improves the compression efficiency while adding only minimal fragmentation of words across multiple vocab tokens.

  • 优点:(1)混合word-level和Byte-level的LM;(2)能够处理任何unicode字符串,因此能够处理任何数据集,无需pre-processing,tokenization,vocab size。

2.3 模型

  • 模型上与GPT模型类似,除了一些小改动。

3. 实验

  • 训练了四个语言模型,最小等效于GPT,最大的为GPT-2:
image-20200205222557460

3.1 语言建模

  • Zero-shot setting的实验结果,在七个任务中取得了SOTAs。
image-20200205224007038

4. 泛化与记忆

  • 背景:训练集与测试集数据的overlap。
  • 方案:构建了Bloom过滤器,计算8-grams在测试集和训练集同时出现的概率。
image-20200205225553724