数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- lightgbm
- xgboost
- scikit-learn
- spark
- numpy
- matplotlib
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
五、GPT2 [2019]
目前,机器学习系统通过使用大数据集、大容量模型、以及监督学习的组合,在它们所训练的任务中表现出色。然而,这些系统很脆弱,对数据分布(
《Do cifar-10 classifiers generalize to cifar-10?》
)和任务规范task specification
的轻微变化很敏感。目前的系统更多地被描述为狭隘的专家narrow expert
而不是称职的通才competent generalist
。我们希望迈向更通用的系统,该系统可以执行许多任务,并最终无需为每个任务手动创建和标注一个训练集。建立机器学习系统的主流方法是:
- 收集一个包含训练样本的数据集,这些样本展示所需任务的正确行为。
- 训练一个系统来模仿这些行为。
- 最后在独立同分布
independent and identically distributed: IID
的held-out
实例上测试其性能。
这对于狭隘专家上的进展起到了很好的作用。但是,
captioning model
、阅读理解系统、图片分类器在多样化和多变的、可能的input
上经常出现不稳定的行为,突出了这种方法的一些缺点。《Language Models are Unsupervised Multitask Learners》
的作者怀疑:单领域数据集上的单任务训练的盛行,是当前系统中观察到的缺乏泛化性的主要原因。要想在当前架构下实现强大的系统,可能需要在广泛的领域和任务上进行训练和度量性能。最近,人们已经提出了几个benchmark
(如GLUE
和decaNLP
)以开始研究这个问题。多任务学习是一个有前途的框架,它可以提高通用的性能
general performance
。然而,NLP
中的多任务训练仍然处于起步阶段。最近的工作报告了适当modest
的性能改进(《Learning and evaluating general linguistic intelligence》
),迄今为止两个最雄心勃勃的工作分别在17
个(dataset, objective) pair
上进行训练(《The natural language decathlon: Multitask learning as question answering》
、《Looking for elmo’s friends: Sentence-level pretraining beyond language modeling》
) 。从元学习meta-learning
的角度来看,每个(dataset, objective) pair
都是从数据集和目标的分布中采样到的一个训练实例。目前的机器学习系统需要数百到数千个样本来诱导induce
出泛化良好的函数。这表明,多任务训练需要同样多的有效的训练的(dataset, objective) pair
,从而实现良好的效果。继续扩大数据集的创建和目标的设计,从而达到所需要的程度将是非常困难的。这就促使我们去探索更多的setup
来进行多任务学习。目前在语言任务上表现最好的系统是利用预训练和监督微调的组合。这种方法有很长的历史,其趋势是更灵活的迁移形式。
- 首先,一些方法学习
word vector
并用作task-specific architecture
的输入(《Distributed representations of words and phrases and their compositionality》
、《Natural language processing (almost) from scratch》
)。 - 然后,另一些方法迁移
RNN
网络的contextual representation
(《Semi-supervised sequence learning》
、《Deep contextualized word representations》
)。 - 最近的工作表明,
task-specific architecture
不再是必须的,迁移许多自注意力块就足够了(《Improving language understanding by generative pre-training》
、《Bert: Pretraining of deep bidirectional transformers for language understanding》
)。
这些方法仍然需要有监督的训练,以便执行任务。当只有极少或者没有监督数据时,另一个方向已经证明了语言模型执行特定任务的前景,如常识推理
common-sense reasoning
、情感分析sentiment analysis
。在论文
《Language Models are Unsupervised Multitask Learners》
中,作者将这两个方向的工作联系起来(预训练和zero-shot
),并延续了更通用的迁移方法的趋势。作者证明了语言模型可以在zero-shot
中执行下游任务,无需修改任何参数或架构。作者通过强调语言模型在zero-shot setting
中执行各种任务的能力,从而证明这种方法的潜力。根据不同的任务,作者取得了有前景的、有竞争力的、和state-of-the-art
结果。其中,GPT-2
在8
个测试的语言建模数据集中的7
个上达到了state-of-the-art
的性能。相关工作:
这项工作的很大一部分衡量了在更大数据集上训练的更大语言模型的性能。
- 这与
《Exploring the limits of language model》
的工作类似,他们在1 Billion Word Benchmark
数据集上scale
了RNN-based
语言模型。 《Embracing data abundance:Booktest dataset for reading comprehension》
之前也通过从Project Gutenberg
中创建一个更大的训练数据集来补充标准的训练数据集,从而改善了Children’s Book Test
的结果。《Deep learning scaling is predictable, empirically》
对各种深度学习模型的性能如何随着模型容量和数据集大小而变化进行了深入分析。
我们的实验,虽然在不同的任务中更加
noisy
,但表明类似的趋势也存在于子任务中并且持续到1B+
的参数规模。- 这与
人们已经记录下来生成模型中有趣的学习功能,如
RNN
语言模型中的cell
执行line-width tracking
和quote/comment detection
(《Visualizing and understanding recurrent networks》
)。对我们的工作更有启发的是《Generating wikipedia by summarizing long sequences》
的观察,一个被训练用于生成维基百科文章的模型也学会了翻译语言之间的name
。先前的工作已经探索了过滤和构建大型网页文本语料库的替代方法,如
iWeb Corpus
(《The 14 billion word iweb corpus》
)。关于语言任务的预训练方法,已经有了大量的工作。
- 除了
Introduction
中提到的那些之外,GloVe
将word vector representation learning
扩展到所有的Common Crawl
。 - 关于文本
deep representation learning
的一个有影响力的早期工作是Skip-thought Vectors
。 《Learned in translation: Contextualized word vectors》
探索了使用来自机器翻译模型的representation
。《Universal language model fine-tuning for text classification》
改进了《Semi-supervised sequence learning》
基于RNN
的微调方法。《Supervised learning of universal sentence representations from natural language inference data》
研究了由自然语言推理模型natural language inference model
学到的representation
的迁移性能。《Learning general purpose distributed sentence representations via large-scale multi-task learning》
探索了大规模多任务训练。
- 除了
《Unsupervised pretraining for sequence to sequence learning》
证明了seq2seq
模型得益于用预训练的语言模型作为编码器和解码器的初始化。最近的工作表明,语言模型预训练在微调困难的生成任务(如闲聊对话和基于对话的问答系统)时也有帮助(《Transfertransfo: A transfer learning approach for neural network based conversational agents》
、《Wizard of wikipedia: Knowledge-powered conversational agents》
)。
5.1 模型
我们方法的核心是语言建模
language modeling
。语言建模通常是指从样本集合 $ (\mathbf x_1,\mathbf x_2,\cdots,\mathbf x_n) $ 中进行无监督的分布估计distribution estimation
,每个样本都由可变长度的符号symbol
序列 $ (s_1,s_2,\cdots,s_m) $ 组成。由于语言具有自然的序列顺序natural sequential ordering
,通常将符号的联合概率分解为条件概率的乘积:这种方法允许对
$ p(\mathbf x) $ 以及任何形式的条件概率 $ p(s_{m-k},\cdots,s_m\mid s_1,\cdots,s_{m-k-1}) $ 进行可操作的采样和估计。近年来,能够计算这些条件概率的模型的表达能力有了很大的提高,比如像Transformer
这样的自注意力架构。GPT-2
和GPT-1
一样都是自回归模型。单个任务的学习可以在概率框架中表示为估计一个条件分布
$ p(\text{output}\mid \text{input}) $ 。由于一个通用系统应该能够执行许多不同的任务,甚至针对相同的输入(即不同任务采用相同的输入),因此系统不仅应该以输入为条件,还应该以将要执行的任务为条件。即,系统应该建模 $ p(\text{output}\mid \text{input,task}) $ 。这在多任务multi-task
和元学习meta-learning
的环境中已经被不同程度地公式化了。任务调节
task conditioning
通常在架构层面上实现,如《One model to learn them all》
中的特定任务编码器和解码器;或者在算法层面上实现,如MAML
的内循环和外循环优化框架(《Model-agnostic meta-learning for fast adaptation of deep networks》
)。但是,正如
《The natural language decathlon: Multitask learning as question answering》
所举的例子,语言提供了一种灵活的方式来指定task, input, output
都是符号的一个序列。例如,一个翻译任务的训练样本可以写成序列(translate to french, english text, french text)
。同样地,一个阅读理解的训练样本可以写成(answer the question, document, question, answer)
。《The natural language decathlon: Multitask learning as question answering》
证明有可能训练单个模型,即MQAN
,来推断和执行具有这种类型格式样本的许多不同任务。语言建模原则上也能够学习
《The natural language decathlon: Multitask learning as question answering》
的任务,而无需明确监督哪些符号是要预测的输出。监督目标与无监督目标相同,但是监督目标只需要对序列的一个子集进行评估,无监督目标的全局最小值也是监督目标的全局最小值。在这个略微玩具性质的setting
中,《Towards principled unsupervised learning》
中讨论的对密度估计作为原则性训练目标的担忧被忽略了。现在的问题是,我们是否能够在实践中优化无监督目标以达到收敛。初步实验证实,足够大的语言模型能够在这种玩具性的setup
中进行多任务学习,但学习速度比显式的监督方法慢得多。因为将监督学习任务改写成
(task, input, output)
格式的符号序列之后,监督目标就变成了无监督目标。但是,在所有的序列中,仅有从监督任务改写而来的序列才可以构成验证集(或测试集)。虽然从上面描述的精心设计的
setup
到混乱的"language in the wild"
是一大步,但是《Dialog-based language learning》
认为,在dialog
的上下文中,有必要开发能够直接从自然语言中学习的系统,并展示了一个概念证明a proof of concept
:在没有奖励信号reward signal
的情况下,通过使用对teacher
的输出的前向预测forward prediction
来学习QA
任务。虽然dialog
是一种有吸引力的方法,但我们担心它过于严格。互联网包含了大量的信息,这些信息是被动可用的而无需交互式通信。我们的推测是:具有足够能力的语言模型将开始学习推断和执行自然语言序列中阐述的任务,以便更好地预测它们,而无论它们的获取方法如何。如果一个语言模型能够做到这一点,那么它实际上是在进行无监督的多任务学习。我们通过分析语言模型在各种任务上的
zero-shot setting
的表现,来测试情况是否如此。
5.1.1 训练集
大多数先前的工作是在单个领域的文本上训练语言模型,如新闻文章、维基百科、或小说书
fiction book
。我们的方法鼓励我们建立一个尽可能大和多样化的数据集,从而收集尽可能多的领域和上下文的自然语言演示natural language demonstration
任务。一个有前景的多样化的、几乎无限的文本源是网络爬虫
web scrape
,如Common Crawl
。虽然这些文档比目前的语言建模数据集大很多个数量级,但是它们有重大的数据质量问题。《A simple method for common-sense reasoning》
在他们关于常识推理的工作中使用了Common Crawl
,但是注意到大量的文件 “其内容几乎是不可理解的”。我们在使用Common Crawl
的初步实验中观察到了类似的数据问题。《A simple method for common-sense reasoning》
的最佳结果是使用Common Crawl
的一个小的子集来实现的,该子集仅包含与他们的target dataset
(Winograd Schema Challenge
)最相似的文件。虽然这是一个务实的方法从而提高特定任务的性能,但是我们希望避免提前对将要执行的任务做出假设。相反,我们创建了一个新的、强调文档质量的网络爬虫。为了做到这一点,我们仅爬取那些已经被人类精心管理/过滤的网页。人工过滤一个完整的网络爬虫将非常昂贵,因此作为一个开始,我们从
Reddit
(一个社交媒体平台)爬取了所有的外链outbound link
,这些外链至少收到了3
个karma
(类似于点赞数或评论数的一种计数机制)。这可以被认为是一个启发式指标,表明其它用户是否认为该链接有趣、有教育意义。由此产生的数据集
WebText
,包含了这4500
万个链接的文本子集。为了从HTML response
中提取文本,我们使用了Dragnet
和Newspaper
内容提取器的组合。本文介绍的所有结果都使用了WebText
的初步版本preliminary version
,该版本不包括2017
年12
月之后创建的链接,并且在去重和一些基于启发式的清理之后包含了略微超过800
万个文档,共计40GB
的文本。我们从
WebText
中删除了所有的维基百科文档,因为它是其它数据集的一个常见数据源,并且由于训练数据与测试评估任务的重叠overlapping
,可能会使分析变得复杂。下表所示为
WebText
训练集中发现的自然发生的English to French
和French to English
的例子:
5.1.2 Input Representation
一个通用的语言模型应该能够计算出任何字符串的概率(当然也能生成任何字符串)。目前的大型语言模型包括预处理步骤,如
lowercasing
、tokenization
、out-of-vocabulary tokens
,这些预处理步骤限制了可建模字符串的空间。虽然将
Unicode
字符串处理为UTF-8 bytes
序列可以优雅地满足这一要求(如《Multilingual language processing from bytes》
),但是目前的byte-level
语言模型在大型数据集(如One Billion Word Benchmark
)上与word-level
语言模型相比没有竞争力。在我们自己尝试在WebText
上训练标准的byte-level
语言模型时,我们也观察到了类似的性能差距。Byte Pair Encoding: BPE
(《Neural machine translation of rare words with subword units》
)是character-level
和word-level
语言建模之间的一个实用的中间地带middle ground
,它有效地在word-level input
和character-level input
之间进行插值。尽管它的名字叫BPE
,但是参考的BPE
实现通常是在Unicode code point
而不是字节序列上操作。这些实现需要包括Unicode symbol
的全部空间,以便为所有Unicode
字符串建模。这将导致在添加任何multi-symbol token
之前,base vocabulary
超过了130k
。与BPE
经常使用的32k
到64k
个token
的vocabulary
相比,这个规模太大了。相比之下,BPE
的byte-level
版本只需要256
大小的base vocabulary
。然而,直接将
BPE
应用于字节序列会导致次优的merge
,这是因为BPE
使用贪心的frequency-based
启发式方法来构建token vocabulary
。我们观察到BPE
包括了许多像dog
这样的常见词的变体,如dog.
、dog!
、dog?
。这导致了对有限的vocabulary slot
和模型容量的次优分配。为了避免这种情况,我们防止BPE
对任何字节序列进行跨character category
的合并。我们为空格space
增加了一个例外,这极大地提高了压缩效率,同时在多个vocabulary token
中仅添加最小的单词碎片word fragmentation
。这种
input representation
使我们能够将word-level
语言模型的经验优势与byte-level
方法的通用性相结合。由于我们的方法可以给任何Unicode
字符串分配一个概率,这使得我们可以在任何数据集上评估我们的语言模型,而无需考虑预处理、tokenization
、或vocabulary size
。
5.1.3 模型
我们的语言模型使用
Transformer-based
架构。该模型大体上遵循OpenAI GPT
模型的细节,并作了一些修改:layer normalization
被移到每个子块的input
,类似于一个pre-activation residual network
。并且在final self-attention block
之后增加了一个额外的layer normalization
。即:
$ \mathbf{\vec x} + \text{Sublayer}\left(\text{LayerNorm}\left(\mathbf{\vec x}\right)\right) $ 。使用了修改过的初始化,它考虑了随着模型深度的增加时残差路径
residual path
上的累积accumulation
。我们在初始化时将残差层的权重按照 $ \frac{1}{\sqrt N} $ 的系数进行缩放,其中 $ N $ 为残差层的数量。vocabulary
扩大到50257
个。我们还将上下文窗口大小从
512
增加到1024
,并使用更大的batch size = 512
。
5.2 实验
我们训练和评测了四个语言模型,它们具有大约对数均匀
log-uniformly
间隔的大小。下表中总结了这些架构。最小的模型相当于原始的GPT
,次小的模型相当于BERT
的最大模型。我们最大的模型,称之为GPT-2
,其参数规模比GPT
大一个数量级。每个模型的学习率都是手动调优的,以便在
WebText
的5%
的held-out
样本上获得最佳困惑度 。所有的模型对WebText
仍然欠拟合under-fit
,并且如果给定更多的训练时间那么held-out
数据上的困惑度将会进一步改善。这些模型在不同任务上的表现如下图所示:
5.2.1 语言建模
作为实现
zero-shot
的task transfer
的第一步,我们有兴趣了解WebText
语言模型在它们被训练的主要任务(即,语言建模language modeling
)上的表现。由于我们的模型是在byte-level
上运行的,不需要有损的预处理或tokenization
,我们可以在任何语言模型benchmark
上评估它。WebText
语言模型在大多数的数据集上的测试大大超出了分布范围out-of-distribution
,如必须预测极端标准化的文本aggressively standardized text
、标记化的人造物tokenization artifact
(如断开的标点符号和缩略语、混洗的句子)、甚至是WebText
中极其罕见的字符串<UNK>
(该字符串在400
亿的字节中仅出现26
次)。我们使用了可逆的
de-tokenizer
从而尽可能多地移除这些tokenization/pre-processing
的人造物artifact
。由于这些de-tokenizer
是可逆的,我们仍然可以计算出数据集的对数概率,它们可以被认为是一种简单的领域适配domain adaptation
形式。我们观察到,使用这些de-tokenizer
,GPT-2
的困惑度提高了2.5
到5
。WebText
语言模型在不同领域和数据集之间有很好的迁移,在zero-shot
的setting
下,在8
个数据集中的7
个上提高了state-of-the-art
。- 我们观察到在小的数据集上有很大的改进,如
Penn Treebank: PTB
和WikiText-2
(它们只有1
百万到2
百万个训练token
)。在为衡量长期依赖关系而创建的数据集上也有很大的改进,如LAMBADA
和Children’s Book Test: CBT
。 - 在
One Billion Word Benchmark: 1BW
上,我们的模型仍然比先前的工作要差很多。这可能是因为它既是最大的数据集,又有一些最具破坏性的预处理:1BW
的sentence-level
混洗移除了所有的长程结构long-range structure
。
- 我们观察到在小的数据集上有很大的改进,如
5.2.2 Children’s Book Test
Children’s Book Test: CBT
是为了考察语言模型在不同类别的单词上的表现:命名实体named entity
、名词noun
、动词verb
、介词preposition
。CBT
没有将困惑度作为评估指标,而是报告了自动构建的完形填空测试cloze test
的准确率,其中的任务是:预测一个被省略的单词的10
个可能的候选中,哪一个候选是正确的。按照原始论文中介绍的语言模型方法,我们根据语言模型计算每个候选的概率,和以该候选为条件的句子剩余部分的概率,并选择联合概率最高的那个选项。此外,我们应用一个de-tokenizer
从而移除CBT
中的PTB style
的tokenization artifact
。PTB style
指的是Penn Treebank style
的tokenization
,它是一种常用的tokenization
标准。如下图所示,随着模型大小的增加,模型性能稳步提高,并在该测试中缩小了与人类的差距的大部分。
数据重叠分析
data overlap analysis
表明:CBT
测试集中的一本书(即Rudyard Kipling
的《Jungle Book》
)在WebText
中,所以我们报告了没有重大重叠的验证集的结果:GPT-2
在普通名词上获得了93.3%
的new state-of-the-art
结果(即上表中的CTB-CN
),在命名实体上获得了89.1%
的new state-of-the-art
结果(即上表中的CBT-NE
)。
5.2.3 LAMBADA
LAMBADA
数据集测试了系统对文本中长距离依赖long-range dependency
的建模能力。任务是预测句子的最后一个单词。对于人类而言,该任务需要至少50
个token
的上下文才能成功预测。GPT-2
将state-of-the-art
从99.8
的困惑度提高到8.6
,并将语言模型在该测试中的准确率从19%
提高到52.66%
。其中,我们使用一个没有预处理的数据集版本。研究
GPT-2
的错误表明:大多数预测是句子的有效延续continuation
,但不是有效的最终词final word
。这表明:语言模型没有使用额外的有用的约束条件,即该词必须是句子的最后一个。在此基础上增加一个stop-word filter
作为近似approximation
,可以使准确率进一步提高到63.24%
,使该任务的整体state-of-the-art
提高了4%
。先前的
state-of-the-art
使用了一个不同的约束性的预测settting
,其中模型的输出被限制为仅出现在上下文中的单词。对于GPT-2
,这种约束是有害而无益的。因为19%
的答案不在上下文中。
5.2.4 Winograd Schema Challenge
Winograd Schema challenge
的目标是:通过衡量系统解决文本中的歧义ambiguity
的能力,来衡量系统进行常识推理common-sense reasoning
的能力。该数据集相当小,只有273
个样本,所以我们建议阅读《On the evaluation of common-sense reasoning in natural language understanding》
,从而帮助理解这一结果的背景。Winograd Schema challenge
任务要求机器识别出一个歧义的代词的祖先,如:xxxxxxxxxx
The fish ate the worm. It is hungry.问题:
It
指代fish
还是worm
?最近,
《A simple method for commonsense reasoning》
通过预测更高概率的歧义的解决方案,证明了使用语言模型在这个Challenge
上的重大进展。我们遵从了他们的问题表述,并在下图中直观地展示了我们的模型在完全评分技术full scoring technique
和部分评分技术partial scoring technique
下的表现。GPT-2
将state-of-the-art
准确率提高了7%
,达到了70.70%
(部分评分技术的准确率)。假设文本序列为
$ \mathbf x=(s_1,s_2,\cdots,s_{k-1},s_k,s_{k+1},\cdots,s_m) $ ,并且需要解决的歧义词为 $ s_k $ 。假设候选的词为 $ c $ ,那么:- 完全评分技术:将
$ c $ 替代 $ s_k $ 的评分为 $ f_\text{full}(s_k\leftarrow c) = P(s_1,s_2,\cdots,s_{k-1},c,s_{k+1},\cdots,s_m) $ 。 - 部分评分技术:将
$ c $ 替代 $ s_k $ 的评分为 $ f_\text{partial}(s_k\leftarrow c) = P(s_{k+1},\cdots,s_m\mid s_1,s_2,\cdots,s_{k-1},c) $ 。
然后选择评分最高的候选词作为预测结果。
- 完全评分技术:将
5.2.5 Reading Comprehension
《A conversational question answering challenge》
的Conversation Question Answering: CoQA
数据集包含来自7
个不同领域的文档,每个文档都是关于:问题提出者和问题回答者之间的自然语言对话的pair
对。CoQA
测试阅读理解能力,也测试模型回答那些依赖于对话历史的问题的能力(如why?
)。当以文档、相关对话历史、
final token
(即A:
)为条件时,来自GPT-2
的贪心解码greedy decoding
在验证集上达到了55 F1
。在没有使用127k
个人工收集的question-answer pair
的情况下,我们的方法达到了与4
个baseline system
中的3
个相当甚至更好的效果,而这些baseline system
是在这127k
个人工收集的question-answer pair
上训练的。监督的
state-of-the-art
是一个基于BERT
的系统,它接近人类的89 F1
的性能。虽然GPT-2
的性能对于一个没有任何监督训练的系统而言是令人振奋的,但是对GPT-2
的答案和错误的一些检查表明:GPT-2
经常使用简单的基于检索retrieval based
的启发式方法,例如在回答who
的问题时采用文档中的一个名字来回答。
5.2.6 Summarization
我们在
CNN
和Daily Mail
数据集上测试GPT-2
执行文本摘要的能力。为了诱发摘要行为induce summarization behavior
,我们在文章后面添加了文本TL;DR:
,并使用 $ k=2 $ 的Top-k
随机采样(《Hierarchical neural story generation》
)来生成100
个token
,这可以减少重复并鼓励比贪心解码更abstractive
的摘要(类似于beam search
)。我们使用这100
个token
中所生成的句子的前面三句话作为摘要。TL;DR:
是一个缩写,可以是Too long; Didn't read
(太长,所以没看)、也可以是Too long; Don't read
(太长,不要看)。它通常作为一篇很长的文章的摘要的标题。虽然从质量上讲,这些生成结果类似于摘要,如下表所示,但是它们通常关注文章中的最近的内容,或者混淆具体细节(如车祸中涉及多少辆车,或帽子/衬衫上是否有
logo
)。在通常报告的
ROUGE 1,2,L
指标上,生成的摘要仅开始接近经典的neural baseline
的性能,并且勉强超过了从文章中随机选择的3
个句子。ROUGE-N
(其中N
可以为1/2/...
)为N-gram
召回率:ROUGE-L
为最长公共子序列的重合率:其中:
lcs()
为最长公共子串函数, $ R $ 为召回率, $ P $ 为精准率。 $ \beta $ 为精准率权重。当任务提示被删除时(即没有
TL;DR:
提示),GPT-2
的性能在综合指标上下降了6.4
分,这表明了用自然语言在语言模型中调用特定任务行为的能力。
5.2.7 翻译
我们测试
GPT-2
是否已经开始学习如何从一种语言翻译到了另一种语言。为了帮助它推断出这是目标任务,我们将语言模型置于english sentence = french sentence
格式的样本pair
对的上下文中,然后在一个final prompt
(即english sentence =
)之后,我们使用贪心解码从模型中采样,并使用第一个生成的句子作为翻译。- 在
WMT-14 English-French
测试集上,GPT-2
达到了5 BLUE
,这比先前的无监督单词翻译工作(《Word translation without parallel data》
)略差,该方法通过推断出的双语词库bilingual lexicon
进行逐字替换。 - 在
WMT-14 French-English
测试集上,GPT-2
能够利用其非常强大的英语语言模型,表现明显更好,达到11.5 BLUE
。这超过了《Unsupervised neural machine translation》
和《Unsupervised machine translation using monolingual corpora only》
的几个无监督机器翻译baseline
,但是仍然比目前最好的无监督机器翻译方法的33.5 BLUE
差很多(《An effective approach to unsupervised machine translation》
)。
这项任务的表现让我们感到惊讶,因为我们故意从
WebText
中删除非英文网页作为过滤步骤。为了证实这一点,我们在WebText
上运行了一个byte-level
的语言检测器,该检测器仅检测到10MB
的法语数据,这比之前无监督机器翻译研究中常见的单语言法语语料库小了约500
倍。- 在
5.2.8 问答
测试语言模型中包含哪些信息的一个潜在方法是:评估语言模型对虚构风格
factoid-style
问题产生正确答案的频率。由于缺乏高质量的评估数据集,先前对神经系统中这种行为的showcasing
报告了定性的结果(《A Neural Conversational Model》
)。最近引入的
Natural Questions
数据集是一个有希望的资源,可以更定量地测试。与翻译类似,语言模型的上下文是以question answer pair
作为样本的,这有助于模型推断出数据集的简短答案风格short answer style
。当使用SQUAD
等阅读理解数据集上常用的精确匹配指标exact match metric
来评估时,GPT-2
能够正确回答4.1%
的问题。GPT-2
在所生成的答案上分配的概率是经过良好校准well calibrated
的,并且GPT-2
在它最有把握的1%
问题上的准确率为63.1%
。但是,
GPT-2
的最少参数的版本未能超越一个难以置信的、仅有1.0%
准确率的简单baseline
,该baseline
返回每个问题类型(who, what, where
等等)的最常见答案。GPT-2
最大参数的版本回答了5.3
倍正确的问题(相比较于最少参数的版本),这表明到目前为止,模型容量一直是神经系统在该任务上表现不佳的主要因素。下表展示了
GPT-2
在验证集问题上生成的30
个最有信心的答案。GPT-3
的性能仍然比混合了信息检索和抽取式文档问答的开方域问答系统open domain question answering system
的30% ~ 50%
区间差很多很多。
5.3 Generalization vs Memorization
最近在计算机视觉方面的工作表明:常见的图像数据集包含了不可忽略
non-trivial amount
的近乎重复的图像。例如,CIFAR-10
在训练集和测试集之间有3.3%
的重叠(《Do we train on test data? purging cifar of near-duplicates》
)。这导致了对机器学习系统的泛化性能的过度报告over-reporting
。随着数据集规模的增加,训练集和验证集重叠的问题变得越来越可能,而类似的现象可能也发生在WebText
上。因此,分析有多少测试数据也出现在训练集中是很重要的。为了研究这个问题,我们创建了
Bloom Filter
,其中包含了8-gram
的WebText
训练集的token
。为了提高召回率,字符串被规范化为仅包含小写字母的alpha-numeric
单词并以空格作为分隔符。Bloom Filter
的构造使得false positive rate
的上限为 $ 1/10^{8} $ 。我们通过生成100
万个字符串进一步验证了低false positive rate
,其中Bloom Filter
没有命中这100
万个字符串的任何一个。注意:这里评估的是
8-gram
的重复率,而不是整篇文档的重复率。每篇文档包含多个8-gram
。有可能存在这样的情况:两篇文档不重复,但是它们包含相同的8-gram
。通过
Bloom Filter
我们计算得到:给定一个数据集,该数据集中的8-gram
在WebText
训练集中出现的比例。下表展示了常见的语言模型benchmark
的这种overlap
分析。常见的语言模型数据集的测试集与WebText
训练集有1% ~ 6%
的重叠overlap
,平均重叠为3.2%
。令人惊讶的是,在许多数据集内部,它们的测试集与自己的训练集有较大的重叠,平均有5.9%
的重叠。我们观察到
GPT-2
在数据集中的那些较长且重复多次的字符串上的一些记忆行为,如名言或演讲。例如,当以Gettysburg Address
(该演说在整个WebText
中出现了40
次)的第一句半为条件时,GPT-2
的argmax
解码可以恢复该演说。甚至当使用无截断的采样时,我们发现模型在漂移drifting
之前会复制一段时间的演讲。模型通常在100-200
个token
内漂移,并且一旦漂移就会展示出很大的多样性。为了量化
exact memorization
在样本中出现的频率,我们从GPT-2
中生成了以WebText
测试集文章为条件的样本,并将GPT-2
的generation
的重叠率与ground-truth completion
的重叠率进行比较。比较结果如下所示,结果表明:GPT-2
重复训练集中的文本的频率低于held-out
文章(baseline
)的重叠率。这里的重叠率指的是:给定一段文本,在训练集中重复出现的
8-gram
数量占它总8-gram
数量的比例。下图中曲线上的点表示:重叠率低于指定值的文本数量占比。我们的方法针对召回率进行优化。虽然对重叠部分的人工检查显示了许多常见的短语,但是有许多更长的匹配
longer match
是由于重复的数据造成的。这并不是WebText
所独有的。例如:- 我们发现
WikiText-103
的测试集有一篇文章也在训练集中。由于测试集仅有60
篇文章,因此这导致至少有1.6%
的重叠。 - 可能更令人担忧的是,根据我们的程序计算到:
1BW
与它自己的训练集有大约13.2%
的重叠。 - 对于
Winograd Schema Challenge
,我们发现只有10
个schemata
与WebText
训练集有8-gram overlap
。其中,有2
个是虚假的匹配,而剩下的8
个中只有1
个泄露了答案。 - 对于
CoQA
而言,新闻领域中大约15%
的文档已经出现在WebText
中,该模型在这些数据集上提高了3 F1
的性能。CoQA
的验证集指标报告了5
个不同领域的平均性能,由于不同领域上的overlap
现象(与WebText
训练集的重叠),我们测得约0.5 ~ 1.0 F1
的增益。然而,由于CoQA
是WebText
的链接截止日期之后发布的,所以WebText
中没有实际的训练问题或答案。 - 在
LAMBADA
上,平均重叠为1.2%
。在重叠大于15%
的case
上,GPT-2
的表现提高了大约2 perplexity
。在排除了所有任何overlap
样本时,重新计算指标后,结果从8.6 perplexity
变为8.7 perplexity
,并将准确率从63.2%
降低到62.9%
。总体结果的变化较小,可能是因为200
个样本中只有1
个样本有明显的重叠。
总体而言,我们的分析表明:
WebText
训练数据和特定的评估数据集之间的数据重叠为报告的结果提供了一个小的但是一致的好处。然而,对于大多数数据集而言,我们并没有发现比原始训练集和测试集之间已经存在的重叠而明显更大的重叠,正如上表所强调的。- 我们发现
了解和量化高度相似的文本如何影响性能是一个重要的研究问题。更好的去重技术(如,可扩展的模糊匹配)也可以帮助更好地回答这些问题。目前,我们建议使用基于
n-gram
重叠的去重,作为新的NLP
数据集创建train-test split
时的一个重要验证步骤和理性检查。确定
WebText
语言模型的性能是否归因于memory
的另一个潜在方法是:检查它们在自己的held-out
上的性能。如下图所示,WebText
的训练集和测试集上的性能是相似的,并且随着模型规模的增加而共同提高。这表明,即使是GPT-2
,它仍然在WebText
上是欠拟合的。下表给出了最小的
WebText
语言模型(GPT-2
的最小版本)和GPT-2
在随机未见的WebText
测试集文章上的side-by-side completion
:GPT-2
也能写出关于发现会说话的独角兽的新闻文章。下表提出了一个例子。下表展示了同一个随机
WebText
测试集上下文的多个completion
,这显示了标准采样setting
下,completion
的多样性:
5.4 讨论
许多研究致力于学习
learning
、理解understanding
、批判性地评估evaluating
有监督和无监督预训练方法的representation
。我们的结果表明:无监督的任务学习是另一个有前途的、有待探索的研究领域。这些发现可能有助于解释预训练技术在下游NLP
任务中的广泛成功。因为我们表明,在极限情况下,某些预训练技术开始直接学习执行任务,而不需要监督的适配或修改。在阅读理解方面,
GPT-2
在zero-shot setting
下的性能与监督的baseline
是可比的。然而,在其它任务上(如summarization
),虽然GPT-2
执行了任务,但是根据定量指标,其性能仍然只是入门级的。作为一项研究成果而言,GPT-2
是有启发意义的。而就实际应用而言,GPT-2
的zero-shot
性能还远未达到可使用的程度。我们已经研究了
WebText
语言模型在许多典型NLP
任务上的zero-shot
性能,但还有许多其它任务可以评估。毫无疑问,在许多实际任务中,GPT-2
的性能仍然不比随机的好。即使在我们评估的常见任务上(如问答和翻译),语言模型只有在足够的模型容量时才开始超越最平凡的baseline
。虽然
zero-shot
性能为GPT-2
在许多任务上的潜在性能建立了一个baseline
,但是并不清楚微调的上限在哪里。在某些任务上,GPT-2
的fully abstractive output
与基于extractive pointer network
的输出有很大不同,后者是目前许多问答和阅读理解数据集上的state-of-the-art
。鉴于之前微调GPT
的成功,我们计划在decaNLP
和GLUE
等benchmark
上研究微调,尤其是目前还不清楚GPT-2
的额外训练数据和容量是否足以克服BERT
所展示的单向representation
的低效率问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论