数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
十八、SpanBERT [2019]
像
BERT
这样的预训练方法已经显示出强大的性能收益,其中BERT
使用自监督训练来掩码单个单词或单个子单词单元subword unit
。然而,许多NLP
任务涉及对两个或多个文本区间text span
之间的关系进行推理。例如,在抽取式问答extractive question answering
任务中,确定"Denver Broncos"
是"NFL team"
的一种类型,对于回答"Which NFL team won Super Bowl 50?"
的问题至关重要。这样的span
为自监督任务提供了更具挑战性的目标,例如,预测"Denver Broncos"
相比已知下一个词是"Broncos"
从而预测"Denver"
要难得多。在论文《SpanBERT: Improving Pre-training by Representing and Predicting Spans》
中,作者介绍了一种span-level
的预训练方法,其性能一致地优于BERT
,在span selection
任务(如问答question answering
任务、以及共指消解coreference resolution
任务)中的收益最大。论文提出了一种预训练方法,即
SpanBERT
,旨在更好地表示和预测文本的span
。论文的方法在掩码方案和训练目标上都与BERT
不同。- 首先,
SpanBERT
掩码随机的contiguous span
,而不是随机的单个token
。 - 其次,
SpanBERT
引入了一个新颖的区间边界目标span-boundary objective: SBO
,使模型学会从span
边界上观察到的token
来预测整个masked span
。
span-based masking
迫使模型只使用该span
的上下文来预测整个span
。此外,SBO
鼓励模型将这种span-level
的信息存储在boundary token
处。下图说明了SpanBERT
的方法。SpanBERT
的实现建立在BERT
的一个精心调优的副本replica
上,这个精心调优的BERT
本身就大大超过了original BERT
。在论文baseline
的基础上,作者发现对单个segment
进行预训练,而不是对two half-length segment
进行next sentence prediction: NSP
的目标,大大地提高了大多数下游任务的性能。因此,作者在调优后的single-sequence BERT baseline
之上添加所提出的修改。总之,论文提出的预训练程序产生的模型在各种任务上的表现超过了所有的
BERT baseline
,特别是在span selection
任务上的性能得到了大幅提高。具体而言,SpanBERT
在SQuAD 1.1
和SQuAD 2.0
上分别达到了94.6% F1
和88.7% F1
,与论文精心调优的BERT
副本相比,误差减少了27%
。作者还在另外五个抽取式问答benchmark
(NewsQA, TriviaQA, SearchQA, HotpotQA, Natural Questions
)上观察到类似的收益。对于
document-level
共指消解,SpanBERT
还在具有挑战性的CoNLL-2012 ("OntoNotes")
共享任务上达到了新的SOTA
,其中SpanBERT
达到了79.6% F1
,比之前的top model
高出6.6%
(绝对提升,而不是相对提升)。最后,论文证明SpanBERT
对没有显式涉及span selection
的任务也有帮助,并表明SpanBERT
甚至提高了TACRED
和GLUE
的性能。虽然其它工作展示了添加更多数据(
《XLNet: Generalized autoregressive pretraining for language understanding》
)和增加模型规模(《Cross-lingual language model pretraining》
)的好处,但这项工作表明了设计良好的预训练任务和目标的重要性,其中预训练任务和目标也会产生显著的影响。- 首先,
相关工作:无标签文本中训练的
pre-trained contextualized word representation
最近对NLP
产生了巨大的影响,特别是作为一种方法,用于针对特定任务在微调大模型之前先初始化该大模型。除了模型超参数和语料库的差异外,这些方法主要在其预训练任务和损失函数方面有所不同,相当多的当前文献提出了对BERT
的MLM
目标进行增强。虽然以前的、以及同时进行的工作已经研究了
masking
(ERNIE
)或dropping
(MASS
、KERMIT
)输入中的多个单词,尤其是作为语言生成任务的预训练。但SpanBERT
预训练span representation
(《Learning recurrent span representations for extractive question answering》
),这被广泛用于问答、共指消解、以及各种其他任务。ERNIE
显示了使用phrase masking
和named entity masking
对中文NLP
任务的改进。MASS
专注于语言生成任务,并采用encoder-decoder framework
,在给定句子剩余部分的情况下重建一个sentence fragment
。
我们试图使用
SBO
目标更显式地建模span
,并表明(几何分布的)random span masking
的效果与masking linguistically coherent span
一样好,有时甚至比后者更好。我们在英语benchmark
上评估了问答、关系抽取、以及共指消解,此外还有GLUE
。此外:
- 一个不同的
ERNIE
(《ERNIE: Enhanced language representation with informative entities》
)专注于将结构化的知识库与contextualized representation
相结合,着眼于entity typing
和relation classification
等知识驱动的任务。 UNILM
使用多个语言建模目标:单向(包括left-to-right
和right-to-left
)、双向、以及sequence-to-sequence
的预测,从而帮助摘要任务以及问题生成等生成任务。XLM
为翻译和跨语言分类等多语言任务探索了跨语言预训练。Kermit
是一种基于insertion
的方法,在预训练期间填补missing token
(而不是预测masked token
),他们显示了在机器翻译和zero-shot
问答上的改进。
- 一个不同的
与我们的工作同时:
RoBERTa
提出了一个BERT
预训练的副本研究replication study
,衡量了许多关键超参数和训练数据大小的影响。同时,
XLNet
结合了自回归损失和Transformer-XL
架构,数据增加了8
倍多,在多个benchmark
上取得了目前的SOTA
成果。XLNet
在预训练期间也掩码了span
(1-5
个token
),但对它们进行了自回归式的预测。我们的模型侧重于纳入span-based pretraining
,作为一个副作用,我们提出了一个更强大的BERT baseline
,在此同时控制了语料库、架构和参数规模。
有些工作与我们的
SBO
目标相关。pair2vec
(《pair2vec: Compositional word-pair embeddingsfor cross-sentence inference》
)在预训练期间使用基于负采样的多变量目标multivariate objective
来编码word-pair relation
。然后,word-pair representation
被注入下游任务的注意力层,从而编码了有限的下游上下文。与
pair2vec
不同,我们的SBO
目标产生"pair"
(span
的start token
和end token
)representation
,在预训练和微调期间更充分地编码上下文,因此更合适被视为span representation
。《Blockwise parallel decoding for deep autoregressive models》
专注于使用block-wise parallel decoding scheme
提高语言生成速度。他们并行地对多个时间步进行预测,然后退到由一个scoring model
验证的最长前缀。与此相关的还有
sentence representation
方法,这些方法侧重于从sentence embedding
中预测周围上下文。
18.1 模型
18.1.1 BERT 简介
BERT
是一种自监督的方法,用于预训练一个深层的transformer encoder
,然后再针对特定的下游任务来进行微调。BERT
优化了两个训练目标:掩码语言模型masked language model: MLM
和下一句预测next sentence prediction: NSP
。这两个训练目标只需要大量的无标记的文本集合。给定单词或子词
subword
的一个序列 $ X=(x_1,x_2,\cdots,x_n) $ ,BERT
训练一个编码器,该编码器为每个token
产生一个contextualized vector representation
:MLM
:MLM
也被称为cloze test
,它的任务是预测序列中的占位符placeholder
所对应的missing token
。具体而言,token
的一个子集 $ Y\sube X $ 被采样,并被不同的token
集合所取代。在BERT
的实现中, $ Y $ 占 $ X $ 中token
的比例为的15%
。在 $ Y $ 中,80%
的token
被替换为[MASK]
、10%
的token
被替换为random token
(根据unigram
分布)、10%
的token
保持不变。任务是根据modified input
来预测 $ Y $ 中的original token
。BERT
通过随机选择一个子集来独立地选择Y
中的每个token
。在SpanBERT
中,我们通过随机选择contiguous span
来定义 $ Y $ 。NSP
:NSP
任务将两个序列 $ (X_A,X_B) $ 作为输入,并预测 $ X_B $ 是否是 $ X_A $ 的直接延续。在BERT
中是这样实现的:首先从语料库中读取序列 $ X_A $ ,然后从序列 $ X_A $ 结束的地方继续读取序列 $ X_B $ (正样本)、或者从语料库中的一个随机的起点从而随机抽取序列 $ X_B $ (负样本)。这两个序列由一个特殊的
[SEP] token
分开。此外,一个特殊的[CLS] token
被添加到拼接序列( $ X_A $ 和 $ X_B $ 拼接)的开头从而形成input
,其中[CLS]
的target
是: $ X_B $ 在语料库中是否确实紧跟在 $ X_A $ 之后。总之,
BERT
通过在双序列bi-sequence
采样程序产生的数据中均匀地随机掩码word piece
,同时优化了MLM
和NSP
目标。接下来,我们将介绍我们对data pipeline
、掩码、以及预训练目标的修改。
18.1.2 SpanBERT
我们提出了
SpanBERT
,这是一种自监督的预训练方法,旨在更好地表达和预测文本的span
。我们的方法受到BERT
的启发,但在三个方面偏离了BERT
的bi-text classification framework
:- 首先,我们使用不同的随机程序来掩码
span of tokens
,而不是掩码单个token
。 - 其次,我们还引入了一个新颖的辅助目标(即,
span-boundary objective: SBO
),该目标试图仅使用span’s boundary
的token
的representation
来预测整个masked span
。 - 最后,
SpanBERT
对每个训练实例采样单个contiguous segment
(而不是两个),因此没有使用BERT
的next sentence prediction
目标。
- 首先,我们使用不同的随机程序来掩码
Span Masking
:给定一个token
序列 $ X = (x_1, x_2, \cdots , x_n) $ ,我们通过迭代地采样文本的span
从而选择token
的一个子集 $ Y\sube X $ ,直到masking budget
(例如, $ X $ 的15%
)耗尽。在每轮迭代中:- 首先,我们从一个几何分布
$ l\sim \text{Geo}(p) $ 中采样一个span length
(token
数量),该分布偏向于较短的span
。 - 然后,我们随机地(均匀地)选择
masked span
的起点。我们总是采样完整单词(而不是subword token
)的序列,而且起点必须是一个完整单词的开头。
根据初步试验,我们设定
$ p=0.2 $ ,并且在 $ l_\max=10 $ 的地方截断 $ l $ 。这产生了一个平均span length
为 $ \text{mean}(l) = 3.8 $ 。下图显示了span mask length
的分布。几何分布
$ \text{Geo}(p) $ 定义为:在 $ n $ 次伯努利试验中,单次成功的概率为 $ p $ ,那么前 $ k-1 $ 次都失败、第 $ k $ 次成功的概率为几何分布: $ f(k)=(1-p)^{k-1}p $ 。这里的
3.8
的计算过程为: $ \frac{\sum_{l=1}^{10} l\times f(l)}{\sum_{l=1}^{10} f(l)} $ 。和
BERT
一样,我们也掩码了总共15%
的token
,其中:80%
的masked token
用[MASK]
替换、10%
的masked token
用random token
替换、10%
的masked token
保持original token
不变。然而,我们是在span-level
进行这种替换,而不是对每个token
独立地进行替换。也就是说,一个span
中的所有token
都被替换成[MASK]
、random token
、或者保持不变。平均序列长度为
3.8/0.15=25.3
。- 首先,我们从一个几何分布
Span Boundary Objective
:span selection model
通常使用span boundary tokens
(开始和结束)创建一个固定长度的representation
。为了支持这样的模型,我们希望end of span
的representation
能够尽可能多地总结internal span content
。我们通过引入一个span boundary objective
来做到这一点,该目标涉及仅仅使用span
边界上所观察到的token
的representation
来预测masked span
的每个token
。正式地,我们用
$ \mathbf{\vec x}_1,\mathbf{\vec x}_2,\cdots,\mathbf{\vec x}_n $ 表示序列中每个token
的transformer encoder
的输出。给定一个由token
$ (x_s, \cdots,x_e) \in Y $ 组成的masked span
,其中 $ (s,e) $ 表示masked span
的开始位置和结束位置(即,两个端点),我们使用外部的boundary token
$ \mathbf{\vec x}_{s-1} $ 和 $ \mathbf{\vec x}_{e+1} $ 、以及target token
的position embedding
$ \mathbf{\vec p}_{i-s+1} $ ,来表达span
中的每个token
$ x_i $ :注意,在
BERT
的MLM
目标中,隐式地用到了target token
的position
信息(通过在[MASK] token
的token embedding
上添加positional embedding
)。其中:
position embedding
$ \mathbf{\vec p}_1,\mathbf{\vec p}_2,\cdots $ 标志着masked token
相对于left boundary token
$ x_{s-1} $ 的相对位置。注意,
BERT
采用了absolute positional embedding
,而这里是relative positional embedding
,因此SpanBERT
需要两套positional embedding
。我们将
representation function
$ f(\cdot) $ 实现为一个具有GeLU
激活函数 和layer normalization
的两层前馈神经网络:其中:
$ [;] $ 表示向量拼接, $ \mathbf W_1,\mathbf W_2 $ 为待学习的参数。
然后我们使用
vector representation
$ \mathbf{\vec y}_i $ 来预测token
$ x_i $ ,并计算交叉熵损失,这完全与MLM
目标一样。SpanBERT
对masked span
$ (x_s,\cdots,x_e) $ 中的每个token
$ x_i $ 的SBO
损失函数和常规的MLM
损失函数进行求和,同时对MLM
和SBO
为target token
复用input embedding
:MLM
目标利用了所有unmasked token
作为上下文,而SBO
仅使用boundary token
作为上下文,因此理论上MLM
的信息更丰富。SBO
迫使模型更关注boundary token
,是MLM
的一种特殊的case
,所以是否可以泛化MLM
从而支持SBO
?Single-Sequence Training
:如前所述,BERT
的样本包含两个文本序列 $ (X_A,X_B) $ ,以及一个next sentence prediciton: NSP
目标。我们发现,这种setting
几乎总是比简单地使用没有NSP
目标的单一序列要差。我们猜想,单序列训练single-sequence training
优于带有NSP
的双序列训练bi-sequence training
,有两个原因:- 在单序列训练中,模型从较长的
full-length
上下文中获益。 - 在双序列上下文中,以另一个文档中的、通常不相关的上下文为条件,会给
MLM
增加噪音。
因此,在我们的方法中,我们取消了
NSP
目标和two-segment
采样程序,而只是简单地采样单个contiguous segment
直到 $ n = 512 $ 个token
,而不是两个half-segment
加起来 $ n $ 个token
。- 在单序列训练中,模型从较长的
总之,
SpanBERT
通过以下方式预训练span representation
:- 使用基于几何分布的掩码方案来掩蔽
full word
的span
。 - 除了使用单序列
data pipeline
的MLM
之外,还优化了一个辅助的span-boundary objective: SBO
。
预训练程序如下:
将语料库划分为单个的、长度为
512 token
的contiguous block
。在预训练的每个
step
:- 均匀随机地采样
block
的一个batch
。 - 基于
span masking
方案对每个block
掩码15%
的word piece
。 - 对每个
masked token
$ x_i $ ,优化 $ \mathcal L(x_i) = \mathcal L_\text{MLM}(x_i) + \mathcal L_\text{SBO}(x_i) $ 。
- 均匀随机地采样
- 使用基于几何分布的掩码方案来掩蔽
18.2 实验
18.2.1 任务
我们对一组任务进行了评估,包括问答任务(七个)、共指消解任务、
GLUE benchmark
中的任务(九个)、以及关系抽取任务。我们预期,span selection
任务、问答、以及共指消解,将特别受益于我们的span-based
预训练。抽取式问答
Extractive Question Answering
:给定一个短的文本段落和一个问题作为输入,抽取式问答任务是选择文本段落中连续的一个text span
作为答案。我们首先在
SQuAD 1.1
和SQuQD 2.0
上进行评估,它们一直是主要的问答任务benchmark
,尤其是对于预训练模型。我们另外还在
MRQA
共享任务的五个数据集上进行评估:NewsQA
、SearchQA
、TriviaQA
、HotpotQA
、Natural Questions
。由于MRQA
共享任务没有公开的测试集,我们将验证集一分为二,构建为新的验证集和测试集。这些数据集在领域domain
和收集方法上都有所不同,这使得这些数据集成为一个很好的测试平台,用于评估我们的预训练模型是否能在不同的数据分布中很好地进行泛化。遵从
BERT
,我们对所有的数据集使用相同的QA
模型架构:首先,我们将段落
$ P=(p_1,p_2,\cdots,p_{l_p}) $ 和问题 $ Q=(q_1,q_2,\cdots,q_{l_q}) $ 转换为单个序列 $ X=\text{[CLS]}p_1p_2\cdots p_{l_p} \text{[SEP]} q_1q_2\cdots q_{l_q}\text{[SEP]} $ 。然后,我们将序列
$ X $ 馈入pre-trained transformer encoder
,并在其之上独立训练两个线性分类器,用于预测answer span boundary
(开始点和结束点)。对于
SQuAD 2.0
中的不可回答的问题,我们只需将answer span
设置为[CLS]
这个special token
(即,开始点和结束点都是0
)。
共指消解
Coreference Resolution
:共指消解是对文本中的mention
进行聚类的任务,这些mention
引用相同的现世界实体。我们对CoNLL-2012
共享任务进行了评估,用于document-level
的共指消解。我们使用《BERT for coreference resolution: Baselines and analysis》
的高阶共指模型higher-order coreference model
(《Higher-order coreference resolution with coarse-to-fine inference》
)的独立版本实现。文档被划分为预定义长度的non-overlapping segment
。每个segment
由预训练的transformer encoder
独立编码,它取代了原来的LSTM-based encoder
。对于每个mention span
$ \mathbf x $ ,该模型在可能的antecedent span
集合 $ \mathcal Y $ 上学习一个分布 $ P(\cdot) $ :span pair
评分函数 $ s(\mathbf x,\mathbf y) $ 是一个前馈神经网络,它作用在固定长度的span representation
、以及 $ \mathbf x,\mathbf y $ 的人工设计的特征之上:其中:
$ \mathbf x $ 为一个span
,它包含多个连续的token
; $ \mathbf y $ 也为一个span
,它也包含多个连续的token
。 $ \mathbf{\vec g}_\mathbf x ,\mathbf{\vec g}_\mathbf y $ 分别表示span representation
。一个span representation
是span
两个端点所对应的两个transformer output state
、以及一个attention vector
(它在当前span
种所有token
的output representation
上计算而来)的拼接。 $ \text{FFNN}_m(\cdot) $ 和 $ \text{FFNN}_c $ 分别代表两个具有单隐层的前馈神经网络。 $ \phi(\mathbf x, \mathbf y) $ 代表人工设计的特征(如,speaker
和题材的信息)。
$ s_c(\cdot,\cdot) $ 可以理解为两个span
的交互, $ s_m(\cdot) $ 可以理解为span
的bias
。关系抽取
Relation Extraction
:TACRED
是一个具有挑战性的关系抽取数据集。给定一个句子和其中的两个span
(主语和宾语),任务是从42
种预定义的关系类型中预测span
之间的关系,包括no relation
。我们遵循
《Position-aware attention and supervised data improve slot filling》
的entity masking
方案,用他们的NER tag
替换主语实体和宾语实体,如"[CLS] [SUBJ-PER] was born in [OBJ-LOC] , Michigan, . . . "
,最后在[CLS] token
之上添加一个线性分类器来预测关系类型。GLUE
:General Language Understanding Evaluation: GLUE
基准包括九个sentence-level
分类任务:两个
sentence-level
分类任务,包括:CoLA
:用于评估语言可接受性linguistic acceptability
。SST-2
:用于情感分类sentiment classification
。
三个
sentence-pair similarity
任务,包括:MRPC
,一个二元转述任务binary paraphrasing task
,其中sentence pair
来自于新闻。STS-B
,一个分级的相似性graded similarity task
任务,其中sentence pair
来自于新闻标题。QQP
,一个二元转述任务binary paraphrasing task
,其中sentence pair
来自于Quora question pair
。
四个自然语言推理任务,包括
MNLI, QNLI, RTE, WNLI
。
与问答、共指消解和关系抽取不同,这些
sentence-level
任务不需要显式建模span-level
语义。然而,它们仍然可能受益于隐式的span-based
推理(例如,首相Prime Minister
是政府首脑)。遵从之前的工作,我们将WNLI
排除在结果之外,以便进行公平比较。虽然最近的工作《Multi-task deep neural networks for natural language understanding》
应用了几个task-specific
策略来提高单个GLUE
任务的性能,但我们遵循BERT
的单任务设置,仅仅这些分类任务的[CLS] token
之上添加了一个线性分类器。
18.2.2 实现
我们在
fairseq
中重新实现了BERT
的模型和预训练方法。我们使用了BERT_large
的模型配置,也在相同的语料库上(即,BooksCorpus
和English Wikipedia
,使用带大小写的Wordpiece token
)预训练了我们所有的模型。与原始的
BERT
实现相比,我们的实现的主要区别包括:我们在每个
epoch
中使用不同的掩码(即,动态掩码),而BERT
在数据处理期间为每个序列采样10
个不同的掩码。我们删除了之前使用的所有短序列策略,这些短序列策略包括(被
BERT
所采用):- 以
0.1
的小概率采样较短的序列。 - 首先在前
90%
的训练步中以128
的较短序列进行预训练,然后在剩下的10%
的训练步中以正常序列长度进行预训练。
取而代之的是,我们总是采用高达
512 token
的序列,直到序列到达一个文档边界。- 以
关于这些修改及其影响,我们请读者参考
RoBERTa
原始论文的进一步讨论。与
BERT
一样,学习率在前10K
步中被预热到1e-4
的峰值,然后线性衰减。我们采用了 $ \beta $ 超参数( $ \beta_1=0.9, \beta_2=0.999 $ )和0.1
的decoupled weight decay
(《Decoupled weight decay regularization》
)。我们还在所有层和注意力权重上采用0.1
的dropout
,以及GeLU
激活函数。我们采用AdamW
优化器,其中epsilon = 1e-8
,迭代2.4M
步。我们的实现使用batch size = 256
,序列最大长度为512 token
。传统的
weight decay
: $ \lambda $ 为weight decay
系数。在常规SGD
的情况下,weight decay
等价于L2
正则化。但是,在
Adam
等方法中,L2
正则化与weight decay
并不等价。因此人们提出decoupled weight decay
从而用于Adam
等方法。预训练是在
32
个Volta V100 GPU
上进行的,花了15
天时间完成。微调是基于HuggingFace
的代码库实现的,更多的微调细节如下:抽取式问答:对于所有的问答任务,我们使用
max_seq_length = 512
,以及一个大小为128
的滑动窗口(如果序列长度大于512
)。对于所有的数据集,我们调优的学习率范围是:
{5e-6, 1e-5, 2e-5, 3e-5, 5e-5}
;调优的batch size
范围是:{16, 32}
;微调四个epoch
。共指消解:我们将文档划分为多个块
chunk
,每个块的长度为max_seq_length
并且独立地编码每个块。对于所有的数据集,我们调优的
max_seq_length
范围是:{128, 256, 384, 512}
;调优的BERT
学习率范围是:{1e-5, 2e-5}
;调优的task-specific
学习率范围是:{1e-4, 2e-4, 3e-4}
;微调20
个epoch
。我们使用
batch size = 1
(每次一篇文档)。TACRED/GLUE
:对于所有数据集,我们使用max_seq_length = 128
,调优的学习率范围是:{5e-6, 1e-5, 2e-5, 3e-5, 5e-5}
;调优的batch size
范围是:{16, 32}
;微调10
个epoch
。唯一的例外是
CoLA
数据集,我们为它微调4
个epoch
,因为10
个epoch
会导致严重的过拟合。
18.2.3 Baseline
我们将
SpanBERT
和如下三个baseline
进行比较:Google BERT
:由《BERT: Pre-training of deep bidirectional transformers for language understanding》
发布的预训练模型。Our BERT
:我们重新实现的BERT
,其中改进了数据预处理和优化过程(如,动态掩码,废除短序列策略)。OurBERT-1seq
:我们重新实现的另一个版本的BERT
,其中在单个full-length
序列上训练而没有NSP
任务。
18.2.4 实验结果
Extractive Question Answering
:下表展示了在SQuAD 1.1
和SQuAD 2.0
上的实验结果。SpanBERT
分别比Our BERT
高出2.0% F1
和2.8% F1
,比Google BERT
高出3.3% F1
和5.4% F1
。在SQuAD 1.1
中,SpanBERT
超出人类性能3.4% F1
。此外,
OurBERT-1seq > Our BERT > Google BERT
。下表表明,这一趋势不仅在
SQuAD
上成立,在每个MRQA
数据集上也成立。可以看到:- 平均而言,我们看到
SpanBERT
超越了Our BERT
高达2.9%
,尽管其中的一些改进来自于single-sequence training
(+1.1%
),但大部分改进来自于span masking
和span boundary objective
(+1.8%
)。 - 此外,
SpanBERT
在TriviaQA
和HotpotQA
上相对于Our Bert-1seq
有特别大的改进,分别高达+3.2%
和+2.7%
。这意味着span masking
和span boundary objective
起到了重要作用。
- 平均而言,我们看到
Coreference Resolution
: 下表显示了OntoNotes
共指消解benchmark
上的实验结果。可以看到:- 平均而言,
Our BERT
相比Google BERT
提高了1.2% F1
,而single-sequence training
(即,Our BERT-1seq
)相比于Our BERT
又带来了0.5%
的收益。 SpanBERT
在Our BERT-1seq
的基础上又有了很大的提高,达到了一个新的SOTA
结果79.6% F1
(之前的SOTA
结果是73.0%
)。
- 平均而言,
Relation Extraction
:下表显示了TACRED
上的实验结果。可以看到:SpanBERT
比Our BERT
高出3.3% F1
,并接近目前的SOTA
。SpanBERT
比他们的BERT_EM
表现更好,但比BERT_EM + MTB
差0.7
分,后者使用entity-linked text
进行额外的预训练。SpanBERT
超出Our BERT
的增益的大部分(+2.6% F1
)来自于single-sequence training
,尽管span masking
和span boundary objective
的贡献也是可观的 (0.7% F1
)。而span masking
和span boundary objective
的贡献主要来自于更高的召回率(即R
列)。single-sequence training
的贡献主要来自于更高的precision
。
GLUE
:下表展示了GLUE
上的实验结果。可以看到:- 对于大多数任务,不同的模型似乎表现相似。
- 没有
NSP
目标的single-sequence training
大大改善了CoLA
,并在MRPC
和MNLI
上产生了较小(但是仍然可观)的改善。 SpanBERT
的主要收益是在QNLI
数据集(+1.3%
,它基于SQuAD
)、以及RTE
数据集(+6.9%
),后者是SpanBERT
的GLUE
平均分上升的主要原因。
总体趋势:我们在
17
个benchmark
上将我们的方法与三个BERT
版本进行了比较,发现SpanBERT
在几乎每个任务上都优于BERT
。- 在
14
项任务中,SpanBERT
的表现优于所有baseline
。 - 在两项任务(
MRPC
和QQP
)中,SpanBERT
的准确率与single-sequence
训练的BERT
相当,但仍优于其他baseline
。 - 在一项任务(
SST-2
)中,Google BERT
比SpanBERT
的准确率高0.4%
。
当考虑到增益的大小时,似乎
SpanBERT
在抽取式问答方面特别好。例如:- 在
SQuAD 1.1
中,我们观察到2.0% F1
的增益,尽管baseline
已经远远高于人类的表现。 - 在
MRQA
中,SpanBERT
在Our BERT
的基础上提高了从2.0% F1
(Natural Questions
)到4.6% F1
(TriviaQA
)。
最后,我们观察到,在各种任务中,
single-sequence training
比带有NSP
的bi-sequence training
,在效果上要好得多。这是令人惊讶的,因为BERT
的消融研究显示了来自NSP
目标的收益。然而,消融研究仍然涉及bi-sequence
的数据处理(即,预训练阶段只控制NSP
目标,同时仍然采样两个half-length
的序列)。我们猜测:bi-sequence training
,正如它在BERT
中实现的那样,阻碍了模型学习较长距离的特征,并因此损害了许多下游任务的性能。- 在
18.2.5 消融研究
我们将我们的
random span masking
方案与linguistically-informed masking
方案进行比较,发现masking random span
是一种有竞争力的、并且通常是更好的方法。然后,我们研究了SBO
的影响,并将其与BERT
的NSP
目标进行对比。掩码方案:以前的工作
ERNIE
表明,在中文数据的预训练中,通过掩码linguistically informed span
,改善了下游任务的表现。我们将我们的random span masking
方案与linguistically informed span
掩码进行比较。具体而言,我们训练了以下五种baseline
模型,它们的区别仅仅在于token
的掩码方式:Subword Tokens
:我们采样随机的Wordpiece token
,就像在original BERT
中一样。Whole Words
:我们采样随机的单词,然后掩码这些单词中的所有subword token
。masked subword token
总共占所有token
的15%
。Named Entities
:在50%
的时间里,我们从文本中采样命名实体,而在剩下50%
的时间里随机采样全词whole word
。masked subword token
总共占所有token
的15%
。具体而言,我们在语料库上运行
spaCy
的named entity recognizer
,并选择所有非数值型的命名实体作为候选。Noun Phrases
:与Named Entities
类似,我们在50%
的时间内采样名词短语。名词短语是通过spaCy’s constituency parser
抽取的。Geometric Spans
:我们从几何分布中随机采样span
,如我们的SpanBERT
所示。
Whole Words, Named Entities, Noun Phrases, Geometric Spans
都是span-based
掩码策略。下表显示了不同的预训练掩码方案在不同任务验证集上的效果。所有的模型都是在验证集上评估的,并且是基于默认的
BERT
设置(即带NSP
的bi-sequence training
),其结果不能直接与main evaluation
相比较。可以看到:除了共指消解之外,
masking random span
比其他策略更好。尽管
linguistic masking
方案(命名实体和名词短语)通常与random span
的竞争力相当,但它们的性能并不是一致consistent
的。例如,在NewsQA
上,masking noun phrase
实现了与random span
相同的效果,但在TriviaQA
上表现不佳(-1.1% F1
)。在共指消解方面,
masking random subword token
比任何形式的span masking
都要好。然而,我们将在下面的实验中看到,将random span masking
与span boundary objective
相结合可以大大改善这一结果。
总体而言,这些掩码方案的差距不大。
辅助目标:如前所述,与
single-sequence training
相比,带NSP
目标的bi-sequence training
会损害下游任务的性能。 我们测试了这一点对于用span masking
预训练的模型是否成立,同时也评估了用SBO
目标替代NSP
目标的效果。下表证实了
single-sequence training
通常会提高性能。加入SBO
可以进一步提高性能,与span masking alone
相比,共指消解有很大的提高(+2.7% F1
)。不像NSP
目标,SBO
似乎没有任何不利影响。SBO
对模型性能提升的幅度不大,同时Geometric Spans
对模型性能提升的幅度也不大,但是SpanBERT
整体相对于Google BERT
的性能提升较大。这意味着数据预处理和优化过程(如,动态掩码,废除短序列策略)的影响也较大。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论