数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
十五、MT-DNN [2019]
学习文本(如单词和句子)的
vector-space representation
是许多自然语言理解natural language understanding: NLU
任务的基础。两个流行的方法是多任务学习multi-task learning: MTL
和语言模型预训练language model pre-training
。在论文《Multi-Task Deep Neural Networks for Natural Language Understanding》
中,作者通过提出一个新的Multi-Task Deep Neural Network: MT-DNN
来结合这两种方法的优势。多任务学习的灵感来自于人类的学习活动,人们经常应用从以前的任务中学到的知识来帮助学习新的任务。例如,一个知道如何滑雪的人比不知道的人更容易学习滑冰。同样地,多个(相关的)任务联合起来学习是很有用的,这样在一个任务中学到的知识可以使其他任务受益。
最近,人们对将多任务学习应用于深度神经网络的
representation learning
越来越感兴趣,有两个原因:- 首先,
DNN
的监督学习需要大量的task-specific
的标记数据,而这些数据并不总是可用的。多任务学习提供了一种有效的方式来利用来自许多相关任务的监督数据。 - 其次,多任务学习通过缓解对特定任务的过拟合从而从正则化效应中获益,从而使学到的
representation
在不同的任务中通用。
- 首先,
与多任务学习不同的是,通过利用大量未标记的数据,语言模型预训练显示出针对学习通用
language representation
的有效性。一些最突出的例子是ELMo
、GPT
、以及BERT
。这些都是使用无监督目标在文本数据上训练的神经网络语言模型。例如,BERT
基于多层双向Transformer
,在纯文本上进行训练从而用于masked word prediction
任务和next sentence prediction
任务。为了将预训练的模型应用于特定的自然语言理解任务,我们通常需要针对每项任务,利用task-specific
的训练数据来微调具有task-specific layer
的模型。例如,BERT
原始论文表明:BERT
可以通过这种方式进行微调从而为一系列自然语言理解任务(如,问答、自然语言推理)创建SOTA
的模型。
作者认为,多任务学习和语言模型预训练是互补的技术,可以结合起来改善
text representation
的学习,以提升各种自然语言理解任务的性能。为此,作者扩展了最初在《Representation learning using multi-task deep neural networks for semantic classification and information retrieval》
中提出的MT-DNN
模型,将BERT
作为其shared text encoding layer
。如下图所示:- 较低的层(即文本编码层)在所有任务中都是共享的。
- 而顶层是
task-specific
,结合了不同类型的自然语言理解任务,如单句分类、成对文本pairwise text
分类、文本相似性、以及相关性排名。
这里的多任务指的是 微调期间的多任务,而不是预训练期间的多任务。
BERT
在预训练期间就是多任务的。与
BERT
模型类似,MT-DNN
可以通过微调来适配特定的任务。与BERT
不同,MT-DNN
除了语言模型预训练外,还使用多任务学习来学习text representation
。MT-DNN
在通用语言理解评估General Language Understanding Evaluation: GLUE
基准中使用的9
个自然语言理解任务中的8
个获得了SOTA
的结果,将GLUE benchmark
得分推到82.7%
,相比于BERT
有2.2%
的绝对改进。论文进一步将
MT-DNN
的优势扩展到SNLI
和SciTail
任务。由MT-DNN
学到的representation
允许以比预训练的BERT representation
少得多的域内标签in-domain label
进行域适应domain adaption
。例如:因为训练数据的
domain
和目标任务的domain
不同,因此需要执行domain adaption
。MT-DNN
在SNLI上
实现了91.6%
的准确率、在SciTail
上实现了95.0%
的准确率,分别比SOTA
高出1.5%
和6.7%
。- 即使只有
0.1%
或1.0%
的原始训练数据,MT-DNN
在SNLI
和SciTail
数据集上的表现也优于许多现有模型。
所有这些都清楚地表明,
MT-DNN
通过多任务学习具有卓越的泛化能力。
15.1 模型
15.1 任务
MT-DNN
模型结合了四种类型的自然语言理解任务:单句分类single-sentence classification
、成对文本分类pairwise text classification
、文本相似度评分text similarity scoring
、以及相关性排名relevance ranking
。单句分类:给定一个句子,模型使用预定义的类标签之一对其进行标注。例如:
CoLA
的任务是预测一个英语句子在语法上是否合理。SST-2
的任务是判断从电影评论中提取的句子的情感是正面positive
的还是负面negative
的。
文本相似度评分:这是一项回归任务。给定一对句子,模型预测一个实值分数来表示这两个句子的语义相似度
semantic similarity
。STS-B
是GLUE
中该任务的唯一例子。成对文本分类:给定一对句子,模型根据一组预先定义的标签来确定这两个句子之间的关系。例如:
RTE
和MNLI
都是语言推理任务,其目标是预测一个句子相对于另一个句子是蕴含关系entailment
、矛盾关系contradiction
还是中性关系neutral
。QQP
和MRPC
是由句子对组成的同义转述paraphrase
数据集,其任务是预测这对句子是否在语义上等价。
相关性排名:给出一个
query
和一个候选答案列表,该模型按照与query
的相关性顺序对所有候选答案进行排名。QNLI
是Stanford Question Answering Dataset
数据集的一个版本。该任务涉及评估一个句子是否包含给定query
的正确答案。虽然QNLI
在GLUE
中被定义为二分类任务,但在本研究中,我们将其表述为pairwise ranking task
,其中预期模型将包含正确答案的候选candidate
排在比不包含正确答案的候选更高的位置。我们将表明,这种形式化导致了比二分类更高的准确性。
15.2 MT-DNN Model
MT-DNN
模型的架构如下图所示。低层是所有任务共享的,而顶层代表task-specific
的输出。- 输入
$ X $ 是一个单词序列(要么是一个句子,要么是打包在一起的sentence pair
),首先在 $ l_1 $ 中被表示为embedding vector
的一个序列,每个单词都有一个embedding
。 - 然后,
transformer encoder
通过自注意力捕获每个单词的上下文信息,并在 $ l_2 $ 中生成contextual embedding
的一个序列。这就是我们的多任务目标所训练的shared semantic representation
。
在下面的内容中,我们将详细阐述该模型。
- 输入
Lexicon Encoder
( $ l_1 $ ): 输入 $ X=\{x_1,\cdots,x_m\} $ 是一个长度为 $ m $ 的token
序列。遵从BERT
的做法,第一个token
$ x_1 $ 总是[CLS] token
。如果 $ X $ 是根据一对句子 $ (X_1, X_2) $ 打包而来,我们用一个特殊的token
,即[SEP]
,来分隔这两个句子。lexicon encoder
将 $ X $ 映射成input embedding vectors
的一个序列,每个token
对应一个embedding
向量(由相应的word embedding
、segment embedding
和positional embedding
相加而成)。Transformer Encoder
( $ l_2 $ ): 我们使用多层双向Transformer encoder
将input representation vector
$ l_1 $ 映射为contextual embedding vector
的一个序列 $ \mathbf C\in \mathbb R^{d\times m} $ ,这是跨不同任务之间的shared representation
。与通过预训练学习
representation
的BERT
模型不同,MT-DNN
除了预训练之外还使用多任务目标学习representation
。下面,我们将以
GLUE
中的自然语言理解任务为例来描述具体的task specific layer
,尽管在实践中我们可以加入任意的自然语言任务(如文本生成,其中output layer
被实现为神经解码器)。单句分类输出
Single-Sentence Classification Output
:假设 $ \mathbf{\vec x} $ 是token [CLS]
的contextual embedding
( $ l_2 $ ),它可以被视为输入句子 $ X $ 的semantic representation
。 以SST-2
任务为例, $ X $ 被标记为 $ c $ 类(即情感分类)的概率是根据具有softmax
的逻辑回归来预测的:其中:
$ \mathbf W_\text{SST} $ 为task-specific
参数矩阵。文本相似性输出
Text Similarity Output
:以STS-B
任务为例。假设 $ \mathbf{\vec x} $ 是[CLS]
的contextual embedding
( $ l_2 $ ),可以看作是输入句子对 $ (X_1,X_2) $ 的semantic representation
。我们引入一个task-specific
的参数向量 $ \mathbf{\vec w}_\text{STS} $ 来计算相似性分数,即:其中
$ \text{Sim}(X_1,X_2) $ 是一个实数,取值范围: $ (-\infty,\infty) $ 。成对文本分类输出
Pairwise Text Classification Output
:以自然语言推理natural language inference: NLI
为例。这里定义的NLI
任务涉及一个由 $ m $ 个词组成的前提premise
$ P=(p_1,\cdots,p_m) $ 和一个由 $ n $ 个词组成的假设hypothesis
$ H=(h_1,\cdots,h_n) $ 。NLI
任务旨在找到 $ P $ 和 $ H $ 之间的逻辑关系 $ R $ 。输出模块的设计遵循stochastic answer network: SAN
(一个SOTA
的neural NLI
模型)的答案模块answer module
。SAN
的答案模块使用多步骤推理multi-step reasoning
。它不是直接预测给定输入的蕴含entailment
,而是保持一个state
并迭代地refine
它的预测。直接用句子对
$ (X_1,X_2) $ 的semantic representation
馈入softmax layer
进行分类,简单又直接,不是挺好的吗?SAN
的答案模块工作如下:首先,我们通过拼接
premise
$ P $ 中单词的contextual embedding
(这是transformer encoder
的输出)来构建premise
的working memory
,记做 $ \mathbf M^p\in \mathbb R^{d\times m} $ 。类似的方法,我们也构建hypothesis
$ H $ 的working memory
,记做 $ \mathbf M^h\in \mathbb R^{d\times n} $ 。然后,我们对
memory
进行K-step reasoning
从而输出关系标签,其中 $ K $ 是一个超参数。开始时,初始状态
$ \mathbf{\vec s}^{0} $ 是 $ \mathbf M^h $ 的summary
:其中:
$ \mathbf{\vec m}^h_j $ 为 $ \mathbf M^h $ 的第 $ j $ 列,代表hypothesis
中的单词 $ h_j $ 的contextual embedding
; $ \mathbf {\vec w}_1\in \mathbb R^d $ 为待学习的权重向量。在
time step
$ k $ ,其中 $ 1\le k\le K-1 $ ,state
定义为:其中,
$ \mathbf{\vec x}^k $ 是根据前一个状态 $ \mathbf{\vec s}^{(k-1)} $ 和memory
$ \mathbf M^p $ 计算而来:其中:
$ \mathbf{\vec m}^p_j $ 为 $ \mathbf M^p $ 的第 $ j $ 列,代表premise
中的单词 $ p_j $ 的contextual embedding
; $ \mathbf W_2\in \mathbb R^{d\times d} $ 为待学习的权重矩阵。
最终,一个单层分类器被用来在每个
step
$ k $ 确定relation
:其中:
$ [\cdot;\cdot] $ 为向量拼接, $ |\cdot| $ 为向量的逐元素绝对值, $ \odot $ 为逐元素乘法, $ \mathbf W_3 $ 为待学习的权重矩阵, $ C $ 为分类的类别数。最后,我们通过均值池化来利用所有的
$ K $ 个输出(从而提高鲁棒性)。其中
$ \vec P_r $ 为所有 $ C $ 种关系的概率分布。
在训练期间,我们在上述均值池化之前应用
stochastic prediction dropout
。相关性排名输出
Relevance Ranking Output
:以QNLI
为例。假设 $ \mathbf{\vec x} $ 是[CLS]
的contextual embedding
( $ l_2 $ ),它是一对question
及其候选答案 $ (Q,A) $ 的semantic representation
。我们计算相关性分数为:其中:
$ \mathbf{\vec w}_\text{QNLI} $ 为待学习的权重向量, $ g(\cdot) $ 为变换函数(如sigmoid
)。对于一个给定的
question
,我们根据计算的相关性分数对其所有的候选答案进行排序。
15.3 训练过程
MT-DNN
的训练程序包括两个阶段:预训练阶段、多任务学习阶段。预训练阶段:遵循
BERT
模型的预训练。lexicon encoder
和Transformer encoder
的参数是通过两个无监督的预测任务来学习的:masked language modeling
和next sentence prediction
。根据
RoBERTa
的实验结论,应该去掉next sentence prediction
任务。多任务学习阶段:在多任务学习阶段,我们使用
mini batch-based
的随机梯度下降SGD
来学习模型的参数(即所有shared layer
和task-specific layer
的参数)。在每个epoch
中,选择一个mini-batch
$ b_t $ (即,在所有9
个GLUE
任务中),并根据任务 $ t $ 的特定目标来更新模型。这大约是优化所有多任务目标的sum
。即,一个
mini-batch
仅包含特定任务 $ t $ 的样本(而不是包含多个任务的样本)。具体做法为:首先随机选择任务 $ t $ (选择的概率不一定是均匀的,因为不同任务的样本数不同),然后随机选择该任务的一个mini-batch
。另外,这里并没有先训练完一个任务、然后再训练其他任务,而是不同任务之间交错地训练。
分类任务:即单句分类或成对文本分类,我们使用交叉熵损失作为目标。
其中:
$ \mathbb I(X,c) $ 为二元示性函数:如果 $ X $ 的ground-truth
标签为 $ c $ 则返回1
,否则返回0
。 $ \text{Pr}(c\mid X) $ 为模型预测 $ X $ 属于类别 $ c $ 的概率。
文本相似性任务:如
STS-B
,其中每个sentence pair
都被标注以一个实值分数 $ y $ 。我们使用均方误差作为目标。其中
$ \text{Sim}(X_1,X_2) $ 为模型预测句子对 $ (X_1,X_2) $ 的相似度。相关性排名任务:其目标遵循
pairwise learning-to-rank
范式。以QNLI
为例。给定一个query
$ Q $ ,我们得到一个候选答案的列表 $ \mathcal A $ ,其中包含一个正样本 $ A^+ $ (它包含正确答案)、以及 $ |\mathcal A|-1 $ 个负样本(它们不包含正确答案)。然后在训练数据中,我们最小化给定query
的正样本的负对数似然:其中:
$ \text{Rel}(Q,A) $ 为query
$ Q $ 和answer
$ A $ 之间的相关性; $ \gamma $ 为一个调节因子,它是一个超参数并在held-out data
上调优。在我们的实验中,我们设置 $ \gamma =1 $ 。
MT-DNN
模型的训练算法:输入:
- 模型参数
$ \Theta $ 。 - 预训练的数据集和任务。
- 最大的训练
epoch
数量 $ \text{epoch}_\max $ 。 $ T $ 个任务 $ t=1,2,\cdots,T $ 。- 学习率
$ \epsilon $ 。
- 模型参数
输出:训练好参数
$ \Theta $ 。算法步骤:
随机初始化模型的参数
$ \Theta $ 。根据预训练的数据集和任务,预训练
shared layer
(即,lexicon encoder
和transformer encoder
)。构建
dataset-level
的mini-batch
:迭代:
epoch
从1
到 $ \text{epoch}_\max $ ,迭代过程为:合并所有的数据集:
$ D=D_1\cup D_2\cup \cdots \cup D_T $ 。随机混洗
$ D $ 。遍历
mini-batch
$ b_t\in D $ :(注意,此时 $ b_t $ 是某个任务 $ t $ 的一个mini-batch
)计算损失函数
$ L(\Theta) $ :- 如果
$ t $ 是分类任务,则用 $ L(\Theta) = -\sum_{c} \mathbb I(X,c) \log(\text{Pr}(c\mid X)) $ 。 - 如果
$ t $ 是回归任务,则用 $ L(\Theta) = (y-\text{Sim}(X_1,X_2))^2 $ 。 - 如果
$ t $ 是排序任务,则用 $ L(\Theta) = -\sum_{(Q,\mathcal A^+)} \log \left(\text{Pr}( A^+\mid Q)\right) $ 。
- 如果
计算梯度
$ \nabla_\Theta L(\Theta) $ 。更新参数:
$ \Theta=\Theta-\epsilon\nabla(\Theta) $ 。
15.4 实验
数据集:我们使用了
GLUE
、SNLI
、以及SciTail
数据集,如下表所述。General Language Understanding Evaluation: GLUE
:GLUE benchmark
是一个由9
个自然语言理解任务组成的集合,如下表所示,包括问答、情感分析、文本相似性、以及文本相关性。它被认为是为评估自然语言理解模型的泛化性和鲁棒性而精心设计的。Stanford Natural Language Inference: SNLI
:SNLI
数据集包含57
万个人工标注的句子对,其中的前提premises
来自Flickr30
语料库的标题,假设hypotheses
则是人工标注的。这是最广泛使用的蕴含数据集entailment dataset
从而用于自然语言推断NLI
。在本研究中,该数据集仅用于domain adaptation
。SciTail
:SciTail
是一个源自科学问答science question answering: SciQ
数据集的文本蕴含数据集textual entailment dataset
。该任务涉及评估一个给定的前提premise
是否蕴含一个给定的假设hypothesis
。与前面提到的其他蕴含数据集不同,
SciTail
中的假设是从科学问题创建的,而相应的答案候选和前提来自于从大型语料库中检索的相关的web sentence
。因此,这些句子在语言上具有挑战性,而且前提和假设的词汇相似度lexical similarity
往往很高,从而使SciTail
特别困难。在本研究中,该数据集仅用于domain adaptation
。
实现细节:我们对
MT-DNN
的实现是基于BERT
的PyTorch
实现。- 遵循
BERT
,我们使用Adamax
优化器,学习率为5e-5
,batch size
为32
。除非另有说明,我们使用了一个线性学习率衰减的调度,并且在10%
的训练步上执行预热。 - 我们还将所有
task-specific
层的dropout rate
设置为0.1
,除了MNLI
设置为0.3
和CoLa
设置为0.05
。 - 最大的训练
epoch
数量被设置为5
。 - 为了避免梯度爆炸的问题,我们将梯度规范剪裁在
1
以内。 - 所有的文本都使用
wordpiece
进行tokenize
,并拆分为不超过512
个token
。
这里是预训练细节还是多任务学习的细节?从作者这里的描述来看,作者应该是用到了预训练好的
BERT
,然后再继续多任务学习,从而省略了预训练阶段。因此,将
MT-DNN
与BERT
直接进行比较是不公平的,因为MT-DNN
使用了更多的数据、训练了更多的轮次。因此作者引入了ST-DNN
从而与MT-DNN
进行更公平的对比。- 遵循
GLUE
结果:我们将MT-DNN
及其变体,与GLUE
排行榜的SOTA
模型的列表进行比较。结果如下表所示。BERT_LARGE
:这是large BERT
模型,我们将其作为baseline
。我们为每个GLUE
任务在task-specific
数据上微调了模型。为了公平地比较,
BERT_LARGE
也应该在多任务数据集上进行预训练相同的epoch
数。事实上,
ST-DNN
才是和MT-DNN
公平的比较,二者都采用预训练好的BERT_LARGE
,也都在多任务数据集上进行预训练。MT-DNN
:这是我们提出的模型。我们使用预训练好的BERT_LARGE
来初始化它的shared layer
,通过多任务学习在所有的GLUE
任务上refine
模型,并使用task-specific
数据为每个GLUE
任务微调模型。Table 2
中的测试结果显示,MT-DNN
在所有任务上都优于现有的系统,除了WNLI
,在八个GLUE
任务上创造了新的SOTA
结果,并将benchmark
推高到82.7%
,这比BERT_LARGE
有2.2%
的绝对改进。由于MT-DNN
使用BERT_LARGE
来初始化它的shared layer
,因此收益主要归功于使用多任务学习来refine shared layer
。收益不仅仅归功于多任务学习来
refine shared layer
,还归功于多任务学习来refine task-specific layer
。多任务学习对于域内
in-domain
训练数据少的任务特别有用。正如我们在表中所观察到的,在同一类型的任务上,对于域内训练数据较少的任务,相比那些有较多域内数据的任务,对BERT
的改进要大得多,即使它们属于同一任务类型,例如,两个NLI
任务(RTE vs. MNLI
),以及两个转述任务(MRPC vs. QQP
)。MT-DNN_no-fine-tune
:由于MT-DNN
的多任务学习使用了所有的GLUE
任务,因此可以直接将MT-DNN
应用于每个GLUE
任务,而不需要进行微调。MT-DNN
经过三个阶段的训练:预训练、多任务训练、task-specific
任务的微调。其中,前两个阶段是所有任务都共享的,得到一个所有任务都通用的模型。最后一个阶段是每个任务独自微调的,得到task-specific
的模型(有多少个任务就得到多少个模型)。MT-DNN_no-fine-tune
是两个阶段的训练:预训练、多任务训练。最后得到一个所有任务都通用的模型。ST-DNN
也是两个阶段的训练:预训练、task-specific
任务的微调。最后得到task-specific
的模型(有多少个任务就得到多少个模型)。Table 2
中的结果显示,除了CoLA
,MT-DNN_no-fine-tune
在所有任务中仍然一致地优于BERT_LARGE
。我们的分析表明,CoLA
是一个挑战性的任务,它的域内数据比其他任务小得多,而且它的任务定义和数据集在所有GLUE
任务中是独一无二的,这使得它很难从其他任务中获得知识。因此,多任务学习倾向于不适合CoLA
数据集。在这种情况下,有必要进行微调以提高性能。如下表所示,经过微调后,准确率从
58.9%
提高到62.5%
,尽管只有非常少量的域内数据可用于adaptation
。这个事实,再加上微调后的MT-DNN
在CoLA
上的表现显著优于微调后的BERT_LARGE
(62.5% vs. 60.5%
),显示出学到的MT-DNN representation
比预训练的BERT representation
得到更有效的domain adaptation
。我们将在接下来通过更多的实验重新审视这个话题。ST-DNN
:MT-DNN
的收益也归功于其灵活的建模框架,它允许我们纳入task-specific
的模型结构和训练方法。这些模型结构和训练方法都是在单任务setting
中开发的,有效地利用了现有的研究成果。两个这样的例子是:将SAN answer module
用于pairwise text classification output module
、以及将pairwise ranking loss
用于QNLI
任务(该任务在GLUE
中的设计是一个二分类问题)。为了研究这些建模设计选择的相对贡献,我们实现了MT-DNN
的一个变体,即Single-Task DNN: ST-DNN
。ST-DNN
使用与MT-DNN
相同的模型结构。但它的shared layer
是预训练好的BERT
模型,没有通过多任务学习进行refine
。然后,我们使用task-specific
数据为每个GLUE
任务微调ST-DNN
。因此,对于pairwise text classification
任务,其ST-DNN
和BERT
模型之间的唯一区别是task-specific output module
的设计。Table 3
中的结果显示:在所有四个任务(MNLI
、QQP
、RTE
和MRPC
)中,ST-DNN
都优于BERT
,证明了SAN answer module
的有效性。这四个任务上,
ST-DNN
相对于BERT
的提升都很小。这是因为多任务数据集的数据规模相比BERT
预训练数据集的数据规模小得多。我们还比较了
ST-DNN
和BERT
在QNLI
上的结果。ST-DNN
使用pairwise ranking loss
进行微调,而BERT
将QNLI
视为二分类,并使用交叉熵损失进行微调。ST-DNN
明显优于BERT
,清楚地表明了问题形式problem formulation
的重要性。ST-DNN
优于BERT
,除了task-specific
模块、问题形式的优势之外,还有更多的预训练数据(来自于多任务数据集)、更多的训练步数(来自于多任务 数据集上的预训练)。
SNLI
和SciTail
的domain adaption
结果:构建实际系统practical system
的最重要标准之一是快速适应新的任务和领域。这是因为为新的领域或任务收集带标签的训练数据是非常昂贵的。很多时候,我们只有非常小的训练数据,甚至没有训练数据。为了使用上述标准评估模型,我们在两个自然语言推断任务(即
SNLI
和SciTail
)上进行了domain adaptation
实验,使用如下过程:- 使用
MT-DNN
模型或BERT
作为初始模型,包括BASE
和LARGE
的model setting
。 - 为每个新任务(
SNLI
或SciTail
)创建一个task-specific
的模型,通过使用task-specific
的训练数据来适配训练好的MT-DNN
。 - 使用
task-specific
的测试数据评估模型。
我们以这些任务的默认
train/dev/test set
开始。但我们随机抽取训练数据的0.1%
、1%
、10%
和100%
。因此,我们为SciTail
获取了四组训练数据,分别包含23
、235
、2.3k
、23.5k
的训练样本。同样地,我们为SNLI
获取了四组训练数据,分别包含549
、5.5k
、54.9k
、549.3k
的训练样本。我们进行了五次随机采样,并报告了所有运行中的平均值。 来自
SNLI
和SciTail
的不同训练数据量的结果在下图中报告。可以看到:MT-DNN
的性能一直优于BERT baseline
,更多细节见Table 4
。使用的训练样本越少,
MT-DNN
比BERT
的改进就越大。例如在SNLI
数据集上:- 仅用
0.1%
(23
个样本)的训练数据,MT-DNN
就达到了82.1%
的准确率,而BERT
的准确率是52.5%
。 - 用
1%
的训练数据,MT-DNN
的准确率是85.2%
,BERT
是78.1%
。
我们在
SciTail
上观察到类似的结果。- 仅用
结果表明,由
MT-DNN
学到的representation
在domain adaptation
方面比BERT
更有效。在下表中,我们使用所有的
in-domain
训练样本,将我们的adapted model
与几个强大的baseline
(包括排行榜中报告的最佳结果)进行比较。可以看到:MT-DNN_LARGE
在两个数据集上都产生了新的SOTA
结果,在SNLI
上将baseline
推高到91.6%
(绝对改进1.5%
)、在SciTail
上将baseline
推高到95.0%
(绝对改进6.7%
)。这同时为SNLI
和SciTail
带来了新的SOTA
。所有这些都证明了MT-DNN
在domain adaptation
上的卓越表现。- 使用
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论