数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
二十九、Muppet [2021]
最近语言模型预训练的成功是引人注目的,至少部分是由于使用自我监督而没有任何人工标记的数据。然而,对于许多任务,我们已经有了相关问题的训练样本,我们应该能够利用这些样本。最近的工作表明,多任务
multi-task
和多阶段multi-stage
的微调方案有收益,但很难知道哪些中间任务会有最好的迁移。在论文《Muppet: Massive Multi-task Representations with Pre-Finetuning》
中,作者展示了多任务监督调优multi-task supervised tuning
,如果在足够大的规模下用许多不同的任务进行调优,可以成为任务无感知task-agnostic
的预训练的有效第二阶段,消除了预先选择最佳中间任务的需要。更具体而言,除了学习语言任务的标准
pre-training/fine-tuning
方法外,作者引入了一个新的中间阶段,即预微调pre-finetuning
。预微调涉及一个大规模的多任务学习步骤(4.8M
个总的训练样本),在大约50
个分类、摘要、问答、以及常识推理等任务上进行。作者相信,在任务数量和任务类型方面,他们是第一个研究这种规模的多任务学习。作者特别表明,标准的多任务方案可能是不稳定的,而且往往不能学习高质量的representation
。然而,作者引入了一种新的训练方案,该方案使用loss scaling
和task-heterogeneous batch
,从而使gradient steps
在多个不同的竞争任务中得到更加均匀地平衡,大大改善了训练的稳定性和整体性能。作者把他们的预微调模型称为Massive Multi-task RePresentation with PrE-fineTuning: MUPPET
。广泛的实验表明:将预微调纳入
RoBERTa
模型和BART
模型会产生一致的改进,而无需指定具体的intermediate transfer task
。这些增益在低资源任务下尤其强大,因为在低资源任务下,用于微调的标记数据相对较少。论文还研究了为什么预微调比以前的多任务方案更出色。作者首先比较了不同的优化技术来稳定训练,发现使用task-heterogeneous batch
和task-rebalancing loss scaling
很重要。论文还表明,规模是有效的多任务学习的关键。作者从经验上看到了任务数量的临界点(通常超过15
个):较少的任务会使representation
退化,而在论文能够扩展的范围内,拥有更多任务似乎可以线性地提高性能。论文的贡献包括:
论文表明:可以通过一个额外的阶段进一步改善预训练的
representation
,作者称之为预微调pre-finetuning
,它利用了大规模的多任务学习。作者展示了标准的pre-trained representation
,当通过预微调进一步refine
后,可以持续改善下游任务的性能。论文引入了一种新的多任务训练方案,以实现有效的大规模的
learning
,该方案使用了loss scaling
和task-heterogeneous batch
。论文探讨了规模对多任务学习的影响,并展示了多任务训练中存在的临界点,超过这个临界点,增加任务的数量就会改善
generalizable representation
。论文围绕
standard pre-trained representation
的数据效率、以及它们各自的预微调的representation
进行了研究。论文表明,pre-finetuned model
在微调时需要的数据更少。
相关工作:在最近的文献中,多任务学习
multi-task learning
是一个越来越活跃的话题。最近的进展(如MT-DNN
)显示:通过利用多任务学习,我们可以在传统预训练的基础上进一步提高几个language benchmark
的性能。然而,T5
显示:在更大的模型之上加入多任务学习,并没有改善标准的pre-training/finetuning
。因此,人们还没有完全了解多任务学习在不同的预训练方法中的效果。最近
《Unifiedqa: Crossing format boundaries with a single qa system》
利用跨数据集的迁移学习,从而展示了在一系列QA
任务上做多任务学习的训练可以提高T5
的性能。与我们的方法不同,他们将所有的数据转换为seq2seq
格式、较小的Multi Task Learning: MTL
规模、有不同的batching strategy
、并且只聚焦于改善QA
任务。我们的工作表明:即使是看起来非常不同的数据集,例如,摘要和extractive QA
,也可以通过改善模型的representation
来相互帮助。我们的工作旨在探索更大规模的多任务学习。通过纳入更多的任务,我们表明我们可以持续地改善几个领域的
language benchmark
。与T5
相反的是,我们表明纳入多任务学习确实能带来更好的representation
。
29.1 模型
在多任务学习中,平衡来自不同任务的
loss
可能是一个挑战:upsampling
可能导致低资源任务low resource task
的过拟合,downsampling
可能导致特定任务的不当学习improper learning
。当任务规模更大时,这种困难尤其明显。这里介绍了我们的预微调方法,通过引入新的优化、loss scaling
和任务采样方案从而更好地平衡每个mini-batch
的更新,导致更稳定和更准确的多任务训练。多样化的任务:为了学习通用的
language representation
,我们包括许多领域的各种任务。我们选择了四个不同领域的语言任务:分类classification
、 常识推理commonsense reasoning
、 机器阅读理解machine reading comprehension
、摘要summarization
。在下表中,我们显示了每个任务类型的细分,以及在预微调期间每个任务的样本数量。总的来说,我们的多任务setup
在4
个系列任务中学习了超过4.8M
个监督样本。所有任务如下:
xxxxxxxxxx
CoLA , SST-2 , MRPC , QQP , MNLI , QNLI , RTE , WNLI , SuperGLUE , Bool Q , MultiRC , WIC , WSC , CB , COPA , AG News , IMDB , MultiNLI , SNLI , HANS , Rotten Tomatoes , Yelp Polarity , Eraser Multi RC , Wiki QA , Trec , SciTail , CNN Daily Mail , Billsum , XSUM , Aeslc , Multinews , Math QA , Openbook QA , SWAG , HellaSWAG , RACE , CommonSense QA , Cosmos QA , AI2 ARC - Easy , AI2 ARC - Challenge , SCIQ , SQUAD , NQ , DROP , RECORD , Hotpot , TriviaQA标准的损失函数:为了在多个数据集上进行训练,我们的模型包含
task-specific head
,每个head
都优化task-specific loss
。下表总结了损失函数。每个loss
都用接下来要描述的loss scaling
进行缩放。在loss scaling
之后,每个任务的梯度在进行模型更新步骤之前被平均。优化:我们展示了两种针对大规模学习
multi-task representation
的优化策略:跨任务累积梯度(Heterogeneous Batch
)、以及利用Better Finetuning
。跨任务累积梯度:我们的模型试图优化的不是一个单一的目标,而是几个可能相互竞争的目标,以便在模型训练期间为几个任务创建一个
unified representation
。在梯度下降过程中,沿着单个任务的梯度移动可能不是模型学习跨任务的单个unified representation
的最佳方向。为了克服这个问题,我们确保我们的模型优化的每个batch
都由几个任务组成。每个worker
从我们的任务集合中随机采样一个batch
,然后计算梯度,并累积到final update
。ExT5
对所有任务使用T5
的objective
,因此可以避免相互竞争的优化目标。根据经验,我们使用
64
个GPU
进行预微调,导致每个batch
由64
个sampled task
的梯度组成。在实验部分中,我们展示了这样的策略是如何让我们的模型对下游任务的微调有一个更好的representation
的。即,每个
GPU
对应一个任务,然后所有任务的梯度累加起来。Better Finetuning
:在预微调中,我们不是从头开始训练,而是用从自监督的预训练中学到的representation
来初始化我们的模型。这可以继承pre-trained representation
中的知识,加快训练速度。《On the stability of fine-tuning bert: Misconceptions, explanations, and strong baselines》
表明:pre-trained model
的标准微调可能是不稳定的,这在我们的案例中可能会加剧,因为我们同时在一组不同的任务上进行训练。因此,我们采用了R3F/R4F
方法(《Better fine-tuning by reducing representational collapse》
)来解决这个问题。具体而言,
R3F/R4F
包括一个额外的损失项,确保输入空间的小扰动导致similar representation
,这可以用来在预微调期间学习更鲁棒的representation
。R3F
添加了一个正则化项:其中:
$ x $ 为任务的输入; $ z $ 为满足 $ \mathcal N(0,\sigma^2\mathbf I) $ 的噪声; $ \text{output}(\cdot) $ 为该head
对应的输出分布; $ \text{KL}(\cdot,\cdot) $ 为KL
散度。这可以理解为一种数据增强方法。
在早期的实验中,我们发现
R3F
是让MUPPET
对BART
起作用的关键。所有其他的微调和预微调都是用标准的SGD
完成的。
Loss Scaling
:loss scaling
方法引入了对每个样本的损失的乘法加权。已经提出了各种loss scaling
技术,从inverse training loss
的动态缩放、到各自数据集中样本数量的简单缩放。由于预微调优化了几种不同类型的任务和数据集,每种任务和数据集都有自己的输出空间,因此
loss scaling
成为确保稳定训练的关键。在最初的实验中,我们尝试了各种形式的loss scaling
,但最有效的是我们下面描述的新方法。令
$ \mathcal L_i\left(\mathbf{\vec x}_i, y_i;\theta\right) $ 为数据点data-point
$ i $ 的损失,模型参数为 $ \theta $ 。注意,损失函数取决于任务的类型(常识推理任务的损失与二分类任务的损失不同)。此外,令 $ n:\mathbb N\rightarrow \mathbb N $ 为一个函数,对于每个数据点,它返回 $ \mathcal L $ 所作用的prediction
的数量。例如,对于二分类任务, $ n $ 将返回2
;而对于生成任务, $ n $ 将返回vocabulary size
(因为我们对生成的每个token
的损失进行平均)。 我们对数据点损失进行缩放:我们发现,这种静态缩放的效果非常好,在早期实验中超过了其他
loss scaling
方法。对于生成任务在每个位置的输出是
softmax
得到的一个分布。采样:在多任务
setup
中平衡各种任务的另一种方法是对较小的数据集进行up-sample
,对较大的数据集进行down-sample
,从而实现数据集大小之间的uniformity
。现有的多任务学习中的数据集采样方法的结果是矛盾的,但最近的工作表明,它对
pre-trained representation
的多任务学习效果不好。例如,T5
表明,所有各种形式的采样都没有改善overusing
数据集的natural size
。我们还发现,在最初的实验中,对数据集进行采样始终不利于在
pre-trained representation
上的多任务学习。具体而言,我们看到了难以处理的过拟合问题和稳定性问题。因此,我们选择在所有的实验中保持数据集的自然分布(即,没有采样)。实验配置:我们选择了
RoBERTa
和BART
作为我们最初的预训练模型来进一步预微调。对于每个任务类型,我们使用不同的预测方案:每个
Sentence Prediction
数据集都得到一个独立的classification head
。对于
Commonsense
和MRC
,我们为每个任务利用一个单独的unified head
。因为实验中我们发现:为每个独立的Commonsense
和MRC
数据集使用不同的head
会导致严重的过拟合。对于
Summarization
,我们没有添加任何参数,而是按原样使用BART decoder
和output layer
。
对于这两个模型,我们对
Base model
和Large model
都进行了预微调程序。每个模型都用64
个GPU
进行训练。训练到收敛的时间从1
天到4
天不等,取决于配置。超参数如下:
29.2 实验
29.2.1 预微调的实验结果
我们首先表明:预微调改善了预训练模型的
representation
。为此,我们在一组任务上对我们的pre-finetuned model
进行了微调。对于每个单独的下游任务,我们使用固定的超参数搜索来优化简单的超参数,如学习率、
Adam
、和dropout
。我们在两个Table
中展示了我们的结果:Table 3
显示了我们在GLUE benchmark
以及两个MRC
任务(SQuAD
、ReCoRD
)上的结果。Table 4
报告了其他的Sentence Prediction
任务以及Commonsense
任务的结果。
我们还包括
MT-DNN
、ELECTRA
和RoBERTa
模型的结果。对于Summarization
任务,我们表明:我们预微调的BART
模型优于所有其他摘要任务的baseline
。这两个table
都报告了pre-finetuning
阶段的可用数据集。鉴于我们的
pre-finetuned model
现在通过使用classification head
对预微调任务有了了解,我们在微调期间可以选择是否使用这些head
。一般而言,我们发现重用classification head
对小数据集的MRC
、Commonsense
、以及Sentence Prediction
任务是有益的。总的来说,通过预微调进一步
refine
的pre-trained representation
优于标准的pre-trained representation
。我们在较大的数据集上看到了更小的增益,很可能是因为如果微调的数据集很大,我们就不需要事先
refine representation
。在较小的数据集上,我们看到了巨大的收益。例如:
在
RTE
上预微调的RoBERTa-BASE
模型提高了接近9
分,与RoBERTa-Large
的准确性相媲美。而预微调的
RoBERTa-Large
模型在RTE
上获得了新的SOTA
,与比它大一个数量级的模型相匹敌。
我们不只是在
sentence prediction
任务上有所提高,而是在我们测量的每一组任务上都有所提高。例如,我们在HellaSwag
数据集上达到了新的SOTA
,以前的SOTA
是通过利用一个新的微调方法实现的。我们的方法没有增加参数数量或任何复杂度,但在为下游任务来refine feature
方面相当成功。微调不在
Pre-Finetuning Domain
的任务:我们还报告了未包含在pre-finetuning data
中的任务的性能。为此,我们在一组任务上对我们的模型进行了微调,这些任务包括:用于分类任务的
ANLI
和Hyperpartisan
。用于摘要任务的
Arxiv
和PubMed
。用于
structured prediction
任务的、来自Penn Treebank
数据集的Chunking
、Constituency Parsing
、以及Part-Of-Speech tagging
。
结果如
Table 5
和Table 6
所示。可以看到:在不同的任务类型和数据集上,我们的模型的
MUPPET
变体的表现一直优于baseline
。注意,这里的
MUPPET
变体指的是base
模型(如RoBERTa
)的MUPPET
变体。作为一个特例,我们对
RoBERTa
的MUPPET
变体在臭名昭著的ANLI
数据集上进行了深入分析,并看到了同样的pattern
。pre-finetuned model
的表现一直优于它们的base
模型。RoBERTa-B + MUPPET
要比base
模型更差。
29.2.2 理解大规模的多任务
scale
的重要性:我们想探讨的第一个方向是多任务学习的规模。以前的工作(如T5
和MT-DNN
)聚焦在大约十几个数据集的多任务学习的规模上。就我们所知,我们的论文拥有迄今为止最大的多任务学习的setup
。因此,我们有兴趣从经验上探索扩大数据集的数量对多任务学习期间学到的representation
的影响。我们用不同数量的数据集来预微调了一组
RoBERTa-Base
模型。我们训练七个模型,其中前六个包含10 ~ 40
个数据集,而且第 $ i $ 个模型所使用的数据集是第 $ i-1 $ 个模型的超集。最后一个模型是在所有数据集上完全训练的。具体而言,假设模型 $ A $ 使用了 $ m $ 个数据集,模型 $ B $ 使用了 $ n $ 个数据集,如果 $ m \gt n $ ,那么模型A
将包含用于预微调模型B
的所有数据集。对于每个
pre-finetuned model
,我们对五个数据集(STS-B, BoolQ, RACE, SQuAD, MNLI
)进行微调,并将结果绘制在下图中。我们在第一次预微调中包括这五个数据集(即,10
个数据集的版本),以消除在后期添加它们所产生的bias
。我们看到几个有趣的模式:首先,对于个别任务(如
RTE
),增加预微调规模单调地提高了性能。这与其他论文的观点一致,即首先在MNLI
上进行训练,然后在RTE
上进行微调。其次,对于其他数据集,我们看到在小于
15
个数据集的情况下进行多任务学习,不利于下游任务的微调。这也与其他的实验观察一致,即T5
报告说:多任务学习加微调,并没有改善仅仅微调的效果。然而,当我们增加任务的数量超过某个临界点时,我们
pre-trained representation
似乎变得更加通用。此外,尽管取决于数据集,这个临界点大致在10 ~ 25
个任务之间。这表明:以前观察到的多任务学习的局限性并不是根本性的,而是可以归因于缺乏足够的规模。
Heterogenous Batch
的重要性:学习可泛化的representation
的另一个关键因素是如何实现多任务学习,特别是对batch
的选择。为了更好地量化这一趋势,我们试验了三种平衡方案:dataset homogenous, batch homogenous, batch heterogenous
。dataset homogenous
:从数据集中依次选择batch
。所以我们首先在数据集A
上训练,然后在数据集B
上训练,等等。batch homogenous
:选择只包含来自同一任务的数据的batch
。因此,所有梯度都来自同一个数据集。因此在训练期间,首先在全部数据集中随机选择一个数据集,然后再随机选择该数据集的一个batch
。batch heterogeneous
:单个update
包含来自多个不同数据集的batch
,跨不同的任务。我们首先创建homogenous sub-batch
,计算每个GPU
每个sub-batch
的损失,然后在GPU
之间进行聚合。因此,单次的梯度更新包含各种数据集和各种任务。
为了分析
heterogeneous batch
的重要性,我们使用上述三种数据选择方法在35
个随机选择的任务上训练一个RoBERTa-Base
模型。然后我们在上一节提到的同样的五个数据集(STS-B, BoolQ, RACE, SQuAD, MNLI
)上对这三个模型进行微调。实验结果如下图所示。可以看到:
batching strategy
对于有效的多任务学习很重要。我们的发现也与(《Better fine-tuning by reducing representational collapse》
)一致,后者认为数据集的sequential training
会恶化generalizable representation
。低资源实验:前文提到,数据集规模较小的数据集往往能从多任务学习中得到更多的改善。为了验证这一假设,我们研究了两个因素:预微调的规模、以及微调的规模(微调数据集的大小)。
我们选择三个没有在预微调中使用的数据集,从而作为微调数据集。我们还为每个微调数据集选择九个
partition
,每个partition
是该数据集的10% ~ 100%
之间均匀随机采样得到的。然后,我们用前面实验中已经得到的每个
pre-finetuning checkpoint
来微调每个low-resource split
。我们绘制微调结果的热力图,如下所示。可以看到:出现了多种模式。首先,随着我们增加多任务学习的规模(纵轴),可以得到更好的
representation
从而用于下游任务的微调。此外,在更大的规模上,
pre-finetuned model
比标准的pre-trained model
的数据效率高得多。具体到下图中的
34/40
的预微调规模,我们看到我们比基本的RoBERTa
模型(第0
行)以更少的资源达到了更高的验证集准确率。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论