数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
四、GPT1 [2018]
从原始文本中有效学习的能力,可以大大缓解
NLP
中对监督学习的依赖。大多数深度学习方法需要大量手动标记的数据,这限制了它们应用于许多缺乏标注资源的领域。在这些情况下,那些可以利用语言信息(这些语言信息来自于未标记数据)的模型,它们提供了一种有价值的替代方法从而免于收集更多标注数据(后者可能既耗时又昂贵)。此外,即使在有大量监督数据可用的情况下,以无监督的方式学习良好的representation
也可以显著提高性能。迄今为止,最令人信服的证据是广泛使用预训练的word emebdding
来提高一系列NLP
任务的性能。然而,利用来自未标记文本的
word-level
信息以外的信息具有挑战性,主要有两个原因:首先,尚不清楚哪种类型的优化目标在学习对迁移有用的
text representation
方面最有效。最近的研究着眼于各种目标,如语言建模language modeling
、机器翻译machine translation
、篇章连贯性discourse coherence
,每种方法在不同任务上的表现都优于其它方法。即,如何获得
text representation
?其次,对于将这些学到的
repersentation
迁移到目标任务的最有效方法没有达成共识。现有的技术涉及对模型架构进行task-specific
修改、使用复杂的学习方案、添加辅助学习目标等等方法的组合。即,如何迁移
text representation
?
这些不确定性使得为语言处理
language processing
开发有效的半监督学习方法变得困难。在论文
《Improving Language Understanding by Generative Pre-Training》
中,作者为语言理解任务language understanding task
探索了一种结合无监督预训练unsupervised pre-training
和监督微调supervised fine-tuning
的半监督方法,即Generative Pre-Training: GPT
。GPT
的目标是学习一种通用representation
,该representation
只需要很少的适配adaption
就可以迁移到广泛的任务。作者假设可以访问大量未标记文本的语料库、以及若干个标记数据集(这些数据集包含人工标注的训练样本,即target task
)。GPT
的setup
不要求这些目标任务与未标记语料库位于同一个domain
中。GPT
采用两阶段的训练过程:- 首先,
GPT
对未标记的数据使用语言建模目标language modeling objective
来学习神经网络模型的初始参数。 - 然后,
GPT
使用相应的监督目标使这些参数适配目标任务。
作者使用
Transformer
来作为GPT
的模型架构,其中Transformer
已被证明在机器翻译machine translation
、文档生成document generation
、句法解析syntactic parsing
等各种任务上表现出色。与RNN
等替代方案相比,Transformer
为GPT
提供了更结构化的内存more structured memory
来处理文本中的长期依赖,从而在多样化diverse
的任务中实现鲁棒的迁移性能。在迁移过程中,作者利用源自
traversal-style
方法的task-specific
的输入适配input adaption
,将结构化的文本输入处理为token
的一个连续序列。正如作者在实验中所证明的那样,这些适配使得GPT
能够有效地微调,而只需对预训练模型的架构进行最小的调整。作者在四种类型的语言理解任务上评估了
GPT
:自然语言推理natural language inference
、问答question answering
、语义相似性semantic similarity
、文本分类text classification
。论文的通用任务无关模型general task-agnostic model
超越了那些采用专门为每个任务设计架构的模型,在所研究的12
个任务中的9
个中显著提高了state-of-the-art
。例如:GPT
在常识推理commonsense reasoning
(Stories Cloze Test
数据集)上实现了8.9%
的绝对提升。GPT
在问答(RACE
数据集)上实现了5.7%
的绝对提升。GPT
在在文本蕴含textual entailment
(MultiNLI
数据集)上实现了1.5%
的绝对提升。GPT
在最近引入的GLUE
多任务benchmark
上实现了5.5%
的绝对提升。
作者还分析了预训练模型在四种不同
setting
下的zero-shot
行为,并证明预训练模型为下游任务获得了有用的语言知识。相关工作:
用于
NLP
的半监督学习:我们的工作大致属于自然语言的半监督学习的类别。这种范式引起了人们的极大兴趣,并被应用到序列标记sequence labeling
、文本分类等任务。- 最早的方法使用未标记的数据来计算
word-level
或phrase-level
的统计量,然后将其用作监督模型中的特征(《Semi-supervised learning for natural language》
)。 - 在过去的几年中,研究人员已经证明了使用在未标记语料库上训练的
word embedding
(《Natural language processing(almost) from scratch》
、《Distributed representations of words and phrases and their compositionality》
、《Glove: Global vectors for word representation》
)来提高各种任务的性能的好处。
然而,这些方法主要是迁移
word-level
信息,而我们的目标是捕获更高level
的语义。最近的方法已经研究了从未标记的数据中学习和利用不仅限于
word-level
语义的信息。可以从未标记的语料库中训练phrase-level
或sentence-level
,从而用于将文本编码为适合各种目标任务的vector representation
,如:《Skip-thought vectors》
、《Distributed representations of sentences and documents》
、《A simple but tough-to-beat baseline for sentence embeddings》
、《An efficient framework for learning sentence representations》
、《Discourse-based objectives for fast unsupervised sentence representation learning》
、《Supervised learning of universal sentence representations from natural language inference data》
、《Learning general purpose distributed sentence representations via large scale multi-task learning》
、《Unsupervised machine translation using monolingual corpora only》
。- 最早的方法使用未标记的数据来计算
无监督预训练:无监督预训练是半监督学习的一种特殊情况,其目标是找到一个好的初始化点,而不是修改监督学习目标。
早期的工作探索了该技术在图像分类和回归任务中的应用。随后的研究表明(
《Why does unsupervised pre-training help deep learning?》
),预训练作为一种正则化方案,可以在深度神经网络中实现更好的泛化。在最近的工作中,该方法已被用于帮助在各种任务上训练神经网络,如图像分类image classification
、语音识别speech recognition
、实体消岐entity disambiguation
、机器翻译machine translation
等。与我们最接近的工作包括使用语言建模目标
language modeling objective
对神经网络进行预训练pre-training
,然后在下游带监督的目标任务上进行微调fine-tuning
。《Semi-supervised sequence learning》
和《Universal language model fine-tuning for text classification》
遵循这种方法来改进文本分类。然而,尽管预训练阶段有助于捕获一些语言信息,但由于它们使用的是LSTM
模型,从而使得它们的预测能力限制在一个短的范围short range
(因为LSTM
的局限性,无法捕获长期依赖)。相比之下,我们选择的
transformer
网络使得我们能够捕获更长范围longer range
的语言结构,如我们的实验所示。此外,我们还展示了我们的模型在更广泛的任务上的有效性,包括自然语言推理natural language inference
、复述检测paraphrase detection
(也叫语义相似性)、故事补全story completion
。其它一些方法使用来自预训练语言模型或机器翻译模型的
hidden representation
作为辅助特征,同时在目标任务上训练监督模型(《Semi-supervised sequence tagging with bidirectional language models》
、《Deep contextualized word representations》
、《Learned in translation: Contextualized word vectors》
)。这涉及到每个单独的目标任务的大量新参数,而我们的方法在迁移过程中只需要对模型架构进行最小化的调整。
辅助训练目标:添加辅助的无监督训练目标是半监督学习的另一种形式。
- 早期工作
《A unified architecture for natural language processing: Deep neural networks with multitask learning》
使用各种辅助NLP
任务(如词性标注POS tagging
、分块chunking
、命名实体识别named entity recognition
、语言建模language modeling
)来改进语义角色标注semantic role labeling
。 - 最近,
《Semi-supervised multitask learning for sequence labeling》
在其target task objective
中添加了辅助语言建模目标,并展示了序列标注任务的性能提升。
我们的实验也使用辅助目标,但正如我们所展示的那样,无监督的预训练已经学习了与目标任务相关的几个
linguistic aspect
。- 早期工作
4.1 模型
我们的训练过程分为两个阶段:
- 第一个阶段是在大型文本语料库上学习
high-capacity
的语言模型。 - 第二个阶段是在下游监督目标任务上执行微调,其中我们将模型针对带标签的
discriminative task
进行适配。
- 第一个阶段是在大型文本语料库上学习
无监督预训练:给定
token
集合为 $ \mathcal U = \{u_1,\cdots,u_n\} $ 的一个无监督语料库,我们使用标准的语言建模目标来最大化似然likelihood
:其中:
$ k $ 为上下文窗口context window
的大小, $ \Theta $ 为模型参数。条件概率
$ P $ 是采用带参数 $ \Theta $ 的神经网络来建模的。这些参数通过随机梯度下降进行训练。这是一种自回归模型,只能看到历史信息而无法看到整个序列信息。
在我们的实验中,我们使用
multi-layer Transformer decoder
作为语言模型,这是transformer
的一种变体。该模型对输入的context tokens
应用多头自注意力操作multi-head self-attention operation
,然后应用position-wise feed-forward
层从而在目标token
上生成输出分布:其中:
$ \mathbf U = \left(\mathbf{\vec u}_{-k},\cdots,\mathbf{\vec u}_{-1}\right)^\top\in \mathbb R^{k\times |\mathcal V|} $ 为contect vector
, $ |\mathcal V| $ 为词表大小, $ \mathbf{\vec u}_i $ 为 $ u_i $ 的one-hot
向量。 $ n $ 为网络的层数。 $ \mathbf W_e\in \mathbb R^{|\mathcal V|\times d} $ 为token embedding
矩阵, $ \mathbf W_p\in \mathbb R^{k\times d} $ 为positional embedding matrix
, $ d $ 为embedding
维度。 $ \mathbf{\vec h}_{n,-1}\in \mathbb R^d $ 表示 $ \mathbf H_n\in \mathbb R^{k\times d} $ 的最后一行(代表 $ u_{-1} $ 的位置)上的representation
。
监督微调:使用
$ \mathcal L_1(\mathcal U) $ 目标来训练模型之后,我们适配参数到监督的目标任务。我们假设有一个带标签的数据集 $ \mathcal C $ ,其中每个样本由输入token
的一个序列 $ \mathbf x = \left\{x_1,\cdots,x_m\right\} $ 、以及一个标签 $ y $ 来组成。input
经过我们的预训练模型获得final transformer
块的激活 $ \mathbf{\vec h}_{n,m} $ ,然后它被馈入一个线性输出层(参数为 $ \mathbf W_y $ ) 来预测 $ y $ :这为我们提供了以下最大化目标:
我们还发现,将语言建模作为微调的辅助目标来微调有助于学习,因为:该辅助目标提高监督模型的泛化能力,以及该辅助目标加速训练的收敛。这与之前的工作一致(
《Semi-supervised multitask learning for sequence labeling》
、《Semi-supervised sequence tagging with bidirectional language models》
),他们也观察到使用这种辅助目标可以提高性能。具体而言,我们优化了以下目标:
其中
$ \lambda $ 为超参数,它控制不同目标之前的重要性。总体而言,我们在微调期间唯一需要的额外参数是
$ \mathbf W_y $ 和delimiter token
的embedding
(delimiter token
是一些人工添加的分隔符,如start token
、end token
等等,参考输入转换部分的内容)。预训练的语言模型一方面作为微调的初始化,另一方面也作为微调的辅助损失函数。
Task-specific
输入转换input transformation
:对于某些任务(如文本分类),我们可以如上所述直接微调我们的模型。某些其它任务(如问答或文本蕴含)具有结构化输入,例如有序的sentence pair
、或者(document, question, answers)
三元组。由于我们的预训练模型是针对连续的文本序列进行训练的,因此我们需要进行一些修改才能将预训练模型应用于这些任务。先前的工作提出:将任务特定的架构作用于被迁移学习的
representation
之上(ELMo
)。这种方法重新引入了大量特定于任务的定制化customization
,并且未对这些额外的架构组件使用迁移学习。相反,我们使用traversal-style
方法(《Reasoning about entailment with neural attention》
),将结构化输入转换为我们的预训练模型可以处理的有序序列。这些输入转换使我们能够避免跨任务对架构进行大量修改。我们在下面提供了这些输入转换的简要描述,下图提供了可视化说明。所有转换都包括添加随机初始化的start token
$$ 和end token
$$ 。 下图中的
Extract
就是end token
。文本蕴含
textual entailment
:对于文本蕴含任务,我们拼接前提premise
(p
) 和假设hypothesis
(h
)的token
序列,中间用delimiter token
($
) 来分隔。相似性
Similarity
:对于相似性任务,被比较的两个句子之间没有固有的顺序。为了反映这一点,我们修改输入序列从而同时包含两种可能的句子排序(中间有一个delimiter token
),并独立处理每个输入序列从而得到两个sequence representation
。然后我们将这两个sequence representation
执行逐元素相加,并馈入到线性输出层。sum
池化等价于均值池化,这里是否可以选择max
池化?可以通过实验来验证。问答和常识推理
Question Answering and Commonsense Reasoning
:对于这些任务,我们被给定一个上下文的document
(z
)、一个问题q
、一组可能的回答 $ \{a_k\} $ 。我们将上下文文档、问题与每个可能的答案拼接起来,在答案之前添加一个delimiter token
从而得到序列 $ [z;q;\$;a_k] $ 。 这些序列中的每个都使用我们的模型独立处理,然后通过softmax
层进行归一化,从而在可能的答案上生成输出分布。注意:这里直接拼接了上下文文档和问题,并没有在它们之间添加
delimiter token
。个人猜测这是为了区分问题和答案,而没必要区分问题和文档,因为问题可以作为文档的最后一句话。
4.2 实验
无监督预训练语料库:我们使用
BooksCorpus
数据集来训练语言模型。BooksCorpus
数据集包含来自各种风格的7k
多本unique
的未出版书籍,包括Adventure, Fantasy, Romance
等风格。至关重要的是,它包含长篇连续的文本,这使得生成模型能够学会以长距离信息long-range information
为条件。另一个候选数据集是
1B Word Benchmark
,它被一个类似的方法ELMo
所使用的,其规模与BooksCorpus
大致相同。但是,1B Word Benchmark
在sentence level
上进行了混洗,这破坏了long-range
结构。我们的语言模型在这个语料库上实现了非常差的token level perplexity
(即18.4
)。模型配置:我们的模型很大程度上遵循了原始的
transformer
工作。- 我们训练了一个
12
层的ecoder-only transformer
,其中带有masked self-attention head
(768
维的状态state
,12
个注意力头)。对于position-wise feed-forward
网络,我们使用3072
维的inner state
。 - 我们使用
Adam
优化器,最大学习率为 $ 2.5\times 10^{-4} $ 。在最开始的2000
个step
,学习率从零线性地增加到最大学习率,然后使用余弦方案退火到0
。 - 我们训练
100
个epoch
,采用随机采样的mini-batch
,batch size = 64
,每个样本都是包含512
个连续token
的一个序列。 - 由于
layernorm
在整个模型中被广泛使用,一个简单的正态分布 $ \mathcal N(0,0.02) $ 的权重初始化就足够了。 - 我们使用一个具有
40k merges
的byte-pair encoding (BPE) vocabulary
。 - 我们为
residual
、embedding
、attention
应用rate = 0.1
的dropout
从而用于正则化。我们还采用了《Fixing weight decay regularization in adam》
中提出的L2
正则化的一个修订版,其中在所有non bias or gain weights
上使用 $ w=0.01 $ 。 - 对于激活函数,我们使用
Gaussian Error Linear Unit: GELU
。 - 我们使用可学习的
positional embedding
而不是原始工作中提出的正弦版本。 - 我们使用
ftfy library
来清理BooksCorpus
中的原始文本,规范一些标点符号和空白符,并使用spaCy tokenizer
。
- 我们训练了一个
微调配置:除非特别说明,否则我们重用无监督预训练中的超参数配置。
- 我们在
classifier
中加入rate = 0.1
的dropout
。 - 对于大多数任务,我们使用
$ 6.25\times 10^{-5} $ 的初始学习率和batch size = 32
。 - 我们使用一个线性衰减的学习率调度,
warmup
超过0.2%
的训练step
。 - 我们的模型微调期间收敛很快,
3
个epoch
的训练对大多数情况而言就足够了。 - 超参数
$ \lambda $ 设置为0.5
。
- 我们在
4.2.1 监督微调
我们对各种监督任务进行了实验,包括自然语言推理、问答、语义相似性、文本分类。其中的一些任务是作为最近发布的
GLUE multi-task benchmark
的一部分,我们这里也使用了这个benchmark
。实验的任务及其对应的数据集如下表所示。自然语言推理
Natural Language Inference: NLI
:该任务也被称作识别文本蕴含,它读取一对句子并判断它们之间的关系是蕴含entailment
、冲突contradiction
、还是中性neutral
。尽管最近有很多学者对此感兴趣,但是由于存在各种各样的现象(如,词法蕴含lexical entailment
、共指coreference
、词法和句法歧义lexical and syntactic ambiguity
),这项任务仍然具有挑战性。我们在五个多样化的数据集上进行评估,包括:
SNLI
数据集:包含图像标题image caption
。MNLI
数据集:包含转录的语音transcribed speech
、流行小说popular fiction
、和政府报告government report
。QNLI
数据集:包含维基百科文章Wikipedia article
。SciTail
数据集:包含科学考试science exam
。RTE
数据集:新闻文章news article
。
下表详细列出了我们的模型和以前
state-of-the-art
方法在不同的NLI
任务的各种结果。可以看到:- 我们的方法在五个数据集中的四个数据集上的表现显著优于
baseline
。与之前的最佳结果相比,在MNLI
上取得了高达1.5%
的绝对改进,在SciTail
上为5%
,在QNLI
上为5.8%
,在SNLI
上为0.6%
。这证明了我们的模型能够更好地对多个句子进行推理,并处理语言歧义linguistic ambiguity
的问题。 - 在
RTE
数据集上(我们所评估的较小的数据集,只有2490
个样本),我们取得了56%
的准确率,这低于多任务biLSTM
模型所报告的61.7%
。鉴于我们的方法在较大的NLI
数据集上的强大性能,我们的模型很可能也会从多任务训练中收益,但是我们目前还没有对此进行探索。
问答和常识推理
Question Answering and Commonsense Reasoning
:另一项需要单句推理和多句推理的任务是问答。我们使用最近发布的RACE
数据集,该数据集由初中考试(RACE-m
)和高中考试(RACE-h
)的英语段落和相关问题组成。这个语料库已被证明包含了比CNN
或SQuaD
等其它数据集更多的推理类型的问题,为我们的模型提供了完美的评估,其中我们的模型被训练用于处理长程上下文long-range context
。此外,我们还在Story Cloze Test
数据集上进行评估,该数据集涉及从两个选项中选择多句子故事的正确结局。实验结果如下表所示,在这些任务中,我们的模型再次以显著的优势超越了以前的最佳结果:在
Story Cloze
数据集上高达8.9%
的绝对改进,在RACE
数据集上平均5.7%
的绝对改进。这表明我们的模型有能力有效处理长程上下文。语义相似性
Semantic Similarity
:该任务涉及预测两个句子是否在语义上相等。挑战在于识别概念的改写rephrasing
、理解否定句negation
、以及处理句法歧义syntactic ambiguity
。我们使用三个数据集来完成这项任务:Microsoft Paraphrase corpus: MRPC
(从新闻来源收集到的)、Quora Question Pairs: QQP
、Semantic Textual Similarity benchmark: STS-B
。实验结果如下表所示,在这三个语义相似性任务中,我们在其中两个上面获得了
state-of-the-art
结果:在STS-B
上获得了1%
的绝对收益,在QQP
上获得显著的4.2%
的绝对收益。分类
Classification
:最后,我们还对两个不同的文本分类任务进行了评估。Corpus of Linguistic Acceptability: CoLA
包含专家对一个句子是否符合语法的判断,并测试训练好的模型的innate linguistic bias
。Stanford Sentiment Treebank: SST-2
是一个标准的二元分类任务。实验结果如上表所示,可以看到:
- 我们的模型在
CoLA
上获得了45.4
分,比之前的最佳结果35.0
分有了重大的飞跃,展示了我们的模型学到的innate linguistic bias
。 - 在
SST-2
数据集上我们的模型也取得了91.3%
的准确率,这与state-of-the-art
结果相比也是有竞争力的。 - 我们还在
GLUE benchmark
上取得了72.8
分的总分,这比之前的68.9
分的最好成绩要好得多。
- 我们的模型在
总体而言,在我们评估的
12
个数据集中,我们的方法在其中的9
个数据集上取得了新的state-of-the-art
结果,在许多case
中超越了ensembles
的结果。我们的结果还表明:我们的方法在不同规模的数据集上都运行良好,从较小的数据集(如5.7k
个训练样本的STS-B
)到最大的数据集(如550k
个训练样本的SNLI
)。
4.2.2 分析
被迁移的层数的影响
Impact of number of layers transferred
:我们观察了从无监督的预训练到监督的目标任务中迁移不同数量的层的影响。下图(左)展示了我们的方法在MultiNLI
和RACE
数据集上的性能与被迁移的层数的关系。可以看到:
- 仅迁移
embedding
层(即,被迁移的层数为1
)可以提高性能。 - 每个
transformer layer
的迁移都能提供进一步的收益。 - 在
MultiNLI
数据集上完全迁移所有层时,效果提升达到9%
。
这表明:预训练模型中的每一层都包含了解决目标任务的有用功能
functionality
。- 仅迁移
Zero-shot Behaviors
:我们想更好地了解为什么语言模型对transformer
的预训练是有效的。一个假设是:底层的生成模型generative model
学习执行许多我们所评估的任务,从而提高其语言建模能力。而且与LSTM
相比,transformer
的更加结构化注意力记忆more structured attentional memory
有助于迁移。我们设计了一系列的启发式解决方案,这些解决方案使用底层的生成模型来执行任务而不需要监督微调(即,
zero-shot
):- 对于
CoLA
(句子是否符合语法),样本的得分为:生成模型分配的token
概率的对数均值。然后预测是通过阈值进行的。 - 对于
SST-2
(情感分析sentiment analysis
),我们在每个样本中添加一个token
very
,并将语言模型的输出分布限制在单词positive
和negative
上,并认为概率较高的单词即为预测值。 - 对于
RACE
(问答),我们挑选在给定文档和问题的条件下,生成模型赋予最高平均token
对数概率的答案。 - 对于
DPRD
(winograd schemas
),我们用两个可能的指代词referrent
替换定语代词definite pronoun
,并选择替换后序列的平均token
对数概率更高的那一个。
我们在上图(右)中直观地看到了这些启发式解决方案在生成式预训练
generative pre-training
过程中的有效性。- 我们观察到这些启发式方案的性能是稳定的,并且随着训练的推进而稳步增加,这表明生成式预训练支持学习各种任务相关的功能。
- 我们还观察到
LSTM
的zero-shot
性能表现出较高的方差,这表明Transformer
架构的归纳偏置inductive bias
有助于迁移。
- 对于
消融研究:我们进行了三种不同的消融研究,如下表所示。
- 首先,我们检查了我们的方法在微调期间没有辅助语言模型目标的性能。我们观察到,辅助目标对
NLI
任务和QQP
任务有帮助。总体而言,这一趋势表明:较大的数据集从辅助目标中受益,而较小的数据集则没有。 - 其次,我们通过比较
Transformer
和使用相同框架的单层2048 unit LSTM
来分析其效果。我们观察到,当使用LSTM
而不是Transformer
时,平均得分下降了5.6
。LSTM
仅在一个数据集(即,MRPC
)上优于Transformer
。 - 最后,我们还比较了我们在监督目标任务上直接训练的
transformer
架构而没有预训练。我们观察到:缺乏预训练损害了所有任务的性能,导致与我们的完整模型(即,有预训练的模型)相比,性能下降了14.8%
。
- 首先,我们检查了我们的方法在微调期间没有辅助语言模型目标的性能。我们观察到,辅助目标对
4.2.3 结论
长期以来,使用无监督训练(或预训练)来提高判别式任务
discriminative task
的性能一直是机器学习研究的一个重要目标。我们的工作表明:实现显著的性能提升是可能的,并提示了哪些模型(即Transformer
)、哪些数据集(即具有长程依赖的文本)在这种方法下效果最好。我们希望这将有助于对自然语言理解和其它领域的无监督学习进行新的研究,并进一步提高我们对无监督学习如何、以及何时发挥作用的理解。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论