数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 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
- 并发
三十四、BERT-Flow [2020]
最近,像
BERT
这样的预训练语言模型及其变体已被广泛用作自然语言的representation
。尽管它们通过微调在许多NLP
任务上取得了巨大的成功,但来自没有微调的BERT
的sentence embedding
在语义文本相似性semantic textual similarity: STS
方面明显逊色。例如,它们甚至不如GloVe embedding
的表现,后者没有上下文并且用一个更简单的模型训练。这些问题阻碍了将BERT sentence embedding
直接应用到许多现实世界的场景中,在这些场景中,收集标记数据是非常昂贵的,甚至是难以解决的。在论文
《On the Sentence Embeddings from Pre-trained Language Models》
中,作者旨在回答两个主要问题:为什么
BERT
导出的sentence embedding
在检索语义相似的句子时表现不佳?是它们携带的语义信息太少,还是仅仅因为这些embedding
中的语义信息没有被正确利用?如果
BERT embedding
捕获到了足够的语义信息,但很难被直接利用,那么我们如何才能在没有外部监督信息的情况下使其更容易被利用?
为此,作者首先研究了
BERT
预训练目标与语义相似性任务之间的联系。作者的分析显示,BERT
的sentence embedding
应该能够直观地反映句子之间的语义相似性,这与实验观察相矛盾。《Representation degeneration problem in training natural language generation models》
发现语言建模性能会受到所学的各向异性的word embedding space
的限制,其中word embedding
占据了一个狭窄的锥体;《How contextual are contextualized word representations? comparing the geometry of bert, elmo, and gpt-2 embeddings》
也发现BERT
的word embedding
也受到各向异性的影响。受到这些论文的启发,作者假设,来自BERT
的sentence embedding
(作为来自最后几层的context embedding
的平均值)可能存在类似问题。通过对embedding
的经验探测,作者进一步观察到,BERT
的sentence embedding space
在语义上是不平滑的,而且在某些方面被定义得很差,这使得它很难通过简单的相似度量(如点积相似度或余弦相似度)直接使用。为了解决这些问题,作者提出通过
normalizing flows
将BERT sentence embedding
分布转化为平滑的和各向同性的高斯分布,这是一个由神经网络参数化的可逆函数。具体来说,该方法学习一个flow-based generative model
,从而最大化一个似然函数,该似然函数代表通过无监督的方式从标准的高斯潜变量Gaussian latent variable
中生成BERT sentence embedding
的可能性。在训练过程中,只有flow network
被优化,而BERT
参数保持不变。学到的flow
是BERT sentence embedding
和高斯潜变量之间的可逆映射函数,然后被用来将BERT sentence embedding
转换到高斯空间。作者将所提出的方法命名为BERT-flow
。作者在不使用任何下游监督的情况下对
7
个标准的语义文本相似性benchmark
进行了广泛的实验。实验结果表明:flow transformation
能够一致地将BERT
提高12.70
个点,在cosine embedding
相似性和人类标注的相似性之间的Spearman
相关系数方面平均提高8.16
个点。当考虑外部监督信息时,
BERT-flow
优于Sentence-BERT
,导致了新的SOTA
。除了语义相似性任务外,作者还将sentence embedding
应用于question-answer entailment task QNLI
,直接不需要task-specific
监督,并证明了BERT-flow
的优越性。此外,进一步分析表明,BERT
导出的相似性会与lexical similarity
过度相关(与语义相似性相比),而,BERT-flow
可以有效地补救这一问题。Lexical Similarity
由编辑距离来衡量,刻画了两个句子在word-level
上的相似性,而不是语义相似性。
34.1 理解 BERT 的 Sentence Embedding Space
为了用
BERT
将一个句子编码成一个固定长度的向量,通常做法是在BERT
的最后几层计算context embeddings
的平均值,或者在[CLS] token
的位置提取BERT context embedding
。请注意,在生成sentence embedding
时没有被掩码的token
,这与pretraining
是不同的。SBERT
证明,这种BERT sentence embedding
在语义相似度方面落后于SOTA
的sentence embedding
。在STS-B
数据集上,BERT sentence embedding
与averaged GloVe embedding
相比更没有竞争力,其中GloVe
是几年前提出的一个简单的、non-contextualized
的baseline
。尽管如此,这种效果差在现有文献中还没有得到很好的理解。注意,正如
SBERT
所证明的那样,averaging context embeddings
一直优于[CLS] embedding
。因此,除非另有提及,否则我们将context embeddings
的均值作为BERT sentence embedding
,并在本文的其余部分中不区分它们。
34.1.1 语义相似性和 BERT Pre-training 之间的联系
考虑关于
token
的一个序列 $ \mathbf x_{1:T} = (x_1,\cdots,x_T) $ 。语言建模language modeling: LM
以自回归方式来因子化联合概率 $ p(\mathbf x_{1:T}) $ ,即: $ p(\mathbf x_{1:T}) = \sum_{t=1}^T \log p(x_t\mid \mathbf c_t) $ ,其中 $ \mathbf c_t = \mathbf x_{1:t-1} $ 为 $ t $ 时刻的上下文序列。为了捕获预训练期间的双向上下文,
BERT
提出了一个masked language modeling: MLM
目标,它因子化了noisy reconstruction
的概率 $ p(\bar x \mid \hat {\mathbf x})=\sum_{t=1}^T m_t p(x_t\mid \mathbf c_t) $ ,其中 $ \hat {\mathbf x} $ 是一个被破坏的序列, $ \bar x $ 是被掩码的token
,当 $ x_t $ 被掩码时 $ m_t = 1 $ 否则等于 $ m_t=0 $ ,上下文 $ \mathbf c_t = \hat{\mathbf x} $ 。注意,
LM
和MLM
都可以简化为,建模在给定上下文 $ \mathbf c $ 的条件下token
$ x $ 的条件分布,这通常由一个softmax
函数来描述:其中:
$ \mathbf{\vec h}_c $ 为context embedding
,它是上下文 $ \mathbf c $ 的函数,通常由一个神经网络来建模。 $ \mathbf w_x $word embedding
,它是token
$ x $ 的函数,通常由embedding lookup table
来参数化。
注意,虽然
MLM
和LM
的条件分布的形式相同,但是二者的上下文不同:MLM
的上下文 $ \mathbf c_t = \hat{\mathbf x} $ ,即被破坏的完整序列,对于任何 $ t $ 都是相同的一个序列。LM
的上下文 $ \mathbf c_t = \mathbf x_{1:t-1} $ ,即 $ t $ 时刻之前的序列,对于不同的 $ t $ 为不同的值。
BERT sentence embedding
之间的相似性可以简化为BERT context embedding
之间的相似性 $ \mathbf{\vec h}_{c}^\top \mathbf{\vec h}_{c^\prime} $ 。 然而,正如 $ p(x\mid \mathbf c) $ 的公式所示,BERT
的预训练并不明确涉及 $ \mathbf{\vec h}_{c}^\top \mathbf{\vec h}_{c^\prime} $ 的计算。因此,我们很难得出 $ \mathbf{\vec h}_{c}^\top \mathbf{\vec h}_{c^\prime} $ 具体代表什么数学公式。作为语义相似性代理的
Co-Occurrence
统计:我们不直接分析 $ \mathbf{\vec h}_{c}^\top \mathbf{\vec h}_{c^\prime} $ ,而是考虑 $ \mathbf{\vec h}_{c}^\top \mathbf{\vec w}_x $ ,即context embedding
$ \mathbf{\vec h}_{c} $ 和word embedding
$ \mathbf {\vec w}_x $ 之间的点积。根据《Breaking the softmax bottleneck : A high-rank rnn language model》
的研究,在一个训练良好的语言模型中, $ \mathbf{\vec h}_{c}^\top \mathbf{\vec w}_x $ 可以近似地分解为:其中:
$ \text{PMI}(x, \mathbf c) = \log \frac{p(x, \mathbf c)}{p(x)\times p(\mathbf c)} $ 为 $ x $ 和上下文 $ \mathbf c $ 之间的point-wise
互信息。 $ \log p(x) $ 为word-specific
项。 $ \lambda_c $ 为context-specific
项。
PMI
刻画了两个事件共同发生的频率,相比比它们独立发生的频率,要高多少。注意,co-occurrence statistics
是以计算的方式处理 "语义" 的典型工具,用于近似word-level semantic similarity
。因此,大致上说,计算context embedding
和word embedding
之间的点积是有语义的。Higher-Order Co-Occurrence Statistics
作为Context-Context Semantic Similarity
:在预训练期间,两个上下文 $ \mathbf c $ 和 $ \mathbf c^\prime $ 之间的语义关系可以通过它们与单词的联系来推断和加强。具体而言,如果上下文 $ \mathbf c $ 和 $ \mathbf c^\prime $ 都与同一个单词 $ w $ 共同出现,那么这两个上下文就可能具有相似的语义。higher-order context-context co-occurrence
也可以在预训练期间被推断和被传播。context embedding
$ \mathbf{\vec h}_c $ 的更新可以影响另一个context embedding
$ \mathbf{\vec h}_{c^\prime} $ 也可以进一步影响另一个 $ \mathbf{\vec h}_{c^{\prime\prime}} $ 。因此,context embedding
可以通过高阶共现关系在它们之间形成隐式交互。
34.1.2 各向异性的 Embedding Space 诱发了很差的语义相似性
正如前面所讨论的,
BERT
的预训练应该隐式地鼓励具有语义的context embedding
。为什么没有微调的BERT sentence embedding
会产生较差的性能?为了研究失败的根本问题,我们使用
word embedding
作为代理,因为单词和上下文共享相同的embedding
空间。如果word embedding
表现出一些误导性的属性,那么context embedding
也会有问题,反之亦然。《Representation degeneration problem in training natural language generation models》
和《Improving neural language generation with spectrum control》
发现,根据最大似然 $ p(x\mid \mathbf c) $ 的训练,通常会产生一个各向异性anisotropic
的词嵌入空间word embedding space
。 "各向异性" 是指word embedding
在向量空间中占据一个狭窄的锥体。《How contextual are contextualized word representations? comparing the geometry of bert, elmo, and gpt-2 embeddings》
也观察到这一现象。此外,我们对学到的各向异性的
embedding
空间有两个经验性的观察:观察一:
Word Frequency Biases the Embedding Space
:我们预期embedding
诱导的相似性与语义相似性一致。正如
《Representation degeneration problem in training natural language generation models》
所讨论的,各向异性与词频的不平衡性高度相关。他们证明,在某些假设下,Transformer
语言模型中non-appeared token
的最佳embedding
可以离原点极远。他们还试图将这一结论粗略地推广到很少出现的单词。为了在
BERT
的背景下验证这一假设,我们计算了BERT word embedding
和原点之间的平均L2
距离。在下表的上半部分,我们观察到高频词都离原点更近,而低频词则离原点更远。这一观察表明:
word embedding
可以被单词频率带偏。这与 $ \mathbf{\vec h}_{ c}^\top \mathbf{\vec w}_x \simeq \text{PMI}(x, \mathbf c) + \log p(x) + \lambda_c $ 中的 $ \log p(x) $ 项相吻合,即单词的对数密度。由于word embedding
在训练过程中起到了连接context embedding
的作用,因此context embedding
可能会相应地被单词频率信息所误导,context embedding
保存的语义信息也会被破坏。即,单词频率会影响
word embedding
进而影响context embedding
。观察二:
Low-Frequency Words Disperse Sparsely
:我们观察到,在学到的各向异性的embedding
空间中,高频词集中在一起,而低频词则分散开。这一观察是通过计算word emebdding
与它们的k
近邻的平均L2
距离实现的。在下表的下半部分,我们观察到,与高频词的embedding
相比,低频词的embedding
往往离其k-NN
邻居更远。这表明,低频词往往是稀疏分散的。由于稀疏性,在
embedding
空间中的低频单词的embedding
周围可能会形成许多 "洞",在这些洞里的语义可能不好定义。注意,BERT sentence embedding
是通过对context embeddings
取平均产生的,这是一个保凸的操作。然而,这些洞违反了embedding
空间的凸性。这是representation learining
中的一个常见问题。因此,所得到的sentence embedding
可以位于定义不明确的区域,并且诱导的相似性也会有问题。
34.2 模型
为了验证前面提出的假设,并避免
BERT sentence embedding
的无效,我们提出了一种称为BERT-flow
的校准方法。该方法利用了从BERT embedding space
到标准高斯潜在空间Gaussian latent space
的可逆映射,如下图所示。可逆性条件保证了embedding
空间和数据实例之间的互信息不会改变。动机:标准的高斯潜在空间可能具有有利的特性,可以帮助我们解决问题:
与观察一的联系:
首先,标准高斯分布满足各向同性。标准高斯分布的概率密度不随角度的变化而变化。如果标准高斯的样本的
L2
范数被归一化,这些样本可以被看作是均匀分布在一个单位球体上。我们还可以从奇异谱
singular spectrum
的角度来理解各向同性。如上所述,embedding
空间的各向异性源于词频的不均衡性。在传统word embedding
的文献中,《All-but-the-top: Simple and effective postprocessing for word representations》
发现,dominating singular vectors
可能与词频高度相关,从而误导mislead
了embedding
空间。通过拟合一个映射,该映射是各向同性分布的,embedding
空间的奇异谱可以被拉平。通过这种方式,与词频相关的奇异值方向,也就是dominating singular vectors
,可以被抑制。与观察二的联系:
其次,高斯分布的概率密度在整个实空间上定义良好,这意味着没有 "洞" 的区域。高斯先验对于缓解 "洞" 的问题,已经在现有的
deep latent variable models
的文献中被广泛观察到。
Flow-based Generative Model
:flow-based generative model
(《Normalizing flows: Introduction and ideas》
)建立了一个从潜空间 $ \mathcal Z $ 到被观测空间observed space
$ \mathcal U $ 的可逆变换。 生成过程定义为:其中:
$ \mathbf z\sim p_\mathcal Z(\mathbf z) $ 为先验分布。 $ f:\mathcal Z\rightarrow \mathcal U $ 为可逆变换。
根据
change-of-variables
定理,可观察到的 $ \mathbf u $ 的概率密度函数probabilistic density function: PDF
为:在我们的方法中,我们通过最大化从标准高斯潜变量生成
BERT sentence embedding
的可能性来学习flow-based generative model
。换句话说,base
分布 $ p_\mathcal Z(\mathbf z) $ 是标准高斯分布,我们将抽取的BERT sentence embedding
视为被观测空间 $ \mathcal U $ 。我们通过以下方程以完全无监督的方式最大化 $ \mathcal U $ 的边际概率:其中:
$ \mathcal D $ 为数据集,即句子的集合。请注意,在训练期间,只有
flow
参数被优化,而BERT
参数保持不变。最终,我们学习了一个可逆的映射函数 $ f_\phi^{-1} $ ,它可以将每个BERT sentence embedding
$ \mathbf u $ 转化为latent Gaussian representation
$ \mathbf z $ ,而不损失信息。可逆映射
$ f_\phi $ 被参数化为一个神经网络,其架构通常被精心设计以保证其可逆性。此外,行列式 $ \left|\det \frac{\partial f^{-1}_\phi(\mathbf u)}{\partial \mathbf u}\right| $ 也应该很容易计算,以便使最大似然训练变得可行。在我们的实验中,我们遵循Glow
的设计(《Glow: Generative flow with invertible 1x1 convolutions》
)。Glow
模型是由多个可逆变换堆叠而成,即actnorm
、可逆1 * 1
卷积、以及affine coupling layer
。 我们通过用additive coupling
取代affine coupling
来简化模型,以降低模型的复杂性,并用random permutation
取代可逆1 * 1
卷积,从而避免数值误差。具体而言,
flow-based model
由一组堆叠的可逆变换层所组成,即 $ f=f_1\circ f_2\circ\cdots \circ f_K $ ,一共 $ K $ 层。每一层 $ f_i: \mathbf x\rightarrow \mathbf y $ 为一个additive coupling layer
,公式为:其中:
$ g_\psi $ 可以被参数化为一个深度神经网络; $ \mathbf x \in \mathbb R^{d+D} $ 为 $ d+D $ 维的。如果仅仅只是简单地堆叠多层
additive coupling layer
,可以发现每一层输出的前 $ d $ 维的内容保持不变。为此,在每一层之后,都需要交换需要变换的维度。additive coupling layer
的逆变换 $ f_i^{-1} : \mathbf y\rightarrow \mathbf x $ 的公式为:论文的核心在于这个
flow-based model
,网络结构(多少层、有没有batch normalization
等等)没有说明。网络优化的目标函数也没有说明。
34.3 实验
在整个实验中,我们采用
BERT
的官方Tensorflow
代码作为我们的codebase
。请注意,我们将最大的序列长度改为64
,以减少对GPU
内存的消耗。对于siamese BERT
的NLI finetuning
,我们遵循SBERT
中的设置(epochs=1
、学习率为3e-5
、以及batch size =16
)。我们的结果可能与他们公布的结果不同。作者在https://github.com/UKPLab/sentence-transformers/issues/50
中提到,这是一个常见的现象,可能与随机数种子有关。请注意,他们的实现依赖于Huggingface
的Transformers repository
。这也可能导致具体结果之间的差异。我们对
flow
的实现是由GLOW
的官方repository
以及Tensor2tensor
库的实现而改编的。我们的flow
模型的超参数在下表中给出。在target
数据集上,我们以1e-3
的学习率对flow
参数学习一个epoch
;在NLI
数据集上,我们以2e-5
的学习率对flow
参数学习0.15
个epoch
。优化器是Adam
。在我们对
STS-B
的初步实验中,我们在STS-B
的数据集上调优超参数。从经验上看,与learning schedule
相比,架构超参数对性能的影响不大。之后,我们在其他数据集上工作时不再调优超参数。根据经验,我们发现flow
的超参数在不同的数据集上并不敏感。
34.3.1 语义文本相似性
数据集:
STS benchmark (STS-B)
、SICK-Relatedness (SICK-R)
、STS tasks 2012 - 2016
等七个数据集。我们通过
SentEval
工具包获得所有这些数据集。这些数据集为每个sentence pair
提供了0 ~ 5
之间的细粒度的gold standard semantic similarity
。评估程序:我们遵循先前工作中的程序,如用于
STS
任务的SBERT
。预测相似性包括两个步骤:首先,我们用一个句子编码器为每个句子获得
sentence embedding
。然后,我们计算
input sentence pair
的两个embedding
之间的余弦相似度,作为我们的模型预测的相似度。
报告中的数字是
predicted similarity
和gold standard similarity
之间的Spearman
相关系数,这与SBERT
中的方法相同。配置:我们在实验中同时考虑
BERT_base
和BERT_large
。具体来说,我们使用最后一层或两层的BERT context embeddings
的平均池化作为sentence embedding
,这种方式的性能优于[CLS] embedding
。有趣的是,我们的初步探索表明,与仅对最后一层进行平均池化相比,对BERT
的最后两层进行平均池化(用-last2avg
表示)一直产生更好的结果。因此,在评估我们自己的方法时,我们选择-last2avg
作为默认配置。在我们的方法中,
flow-based objective
被最大化,并且BERT
参数保持不变而仅更新invertible mapping
。flow model
默认是通过完整的目标数据集(train + validation + test
)学习的。我们将这种配置记做flow (target)
。请注意,虽然我们使用了整个目标数据集的句子,但学习flow
并不使用任何标签进行训练,因此它是对BERT sentence embedding space
的一个纯粹的无监督校准。我们还测试了在
SNLI
和MNLI
的concatenation
上学到的flow-based model
,以进行比较(flow (NLI)
)。concatenated NLI
数据集包括大量的sentence pair
(SNLI 570K + MNLI 433K
)。注意,"flow (NLI)"
不需要任何监督标签。当在NLI
语料库上拟合flow
时,我们只使用原始句子而不是entailment label
。flow (NLI) setting
背后的一个直觉是,与Wikipedia
的句子(BERT
在其上进行了预训练)相比,NLI
和STS
的原始句子都更简单、更短。这意味着NLI-STS
的差异可能比Wikipedia-STS
的差异相对要小。我们在两种情况下进行了实验:
当外部标记数据不可用时。这是一个自然的设置,我们用无监督的目标来学习
flow
参数(即, $ \max_\phi \mathbb E_{\mathbf u } $ ),同时BERT
参数是不变的。我们将这种方式称作BERT-flow
。我们首先在
SNLI+MNLI
文本对应分类任务上以siamese
方式微调BERT
(SBERT
)。对于BERT-flow
,我们进一步学习flow
参数。这种设置是为了与利用NLI
监督的SOTA
结果进行比较(SBERT
)。我们将这两个不同的模型分别表示为BERT-NLI
和BERT-NLI-flow
。
不使用
NLI
监督的结果如下表所示:原始的
BERT sentence embedding
(采用BERT_base
和BERT_large
)未能超过averaged GloVe embedding
。对
BERT
模型的最后两层进行平均池化可以一致地改善结果。仅仅采用
last2avg
就能大幅提升效果!对于
BERT_base
和BERT_large
,我们提出的flow-based
方法(BERT-flow (target)
)可以进一步提高性能,分别平均提高5.88
个点和8.16
个点。对于大多数数据集来说,在目标数据集上学习
flow
导致了比在NLI
上学习flow
带来更大的性能提升。唯一的例外是
SICK-R
,在NLI
上训练flow
的效果更好。我们认为这是因为SICK-R
是同时为entailment
和relatedness
而收集的。由于SNLI
和MNLI
也被收集用于textual entailment
评估,SICK-R
和NNLI
之间的分布差异可能相对较小。另外,由于NLI
数据集的规模更大,所以在NNLI
上学习flow
的性能更强也就不奇怪了。
使用
NLI
监督的结果如下表所示:与之前完全无监督的结果类似,我们来自可逆变换的各向同性embedding
空间在大多数情况下能够持续改善SBERT
基线,并以很大的幅度超过了SOTA
的SBERT/SRoBERTa
结果。随机种子的鲁棒性分析:我们在
STS-B
上用不同的随机种子进行了5
次实验,在NLI
监督的设置下。下表显示了带有标准差和中位数的结果。尽管NLI finetuning
的方差不可忽略,但我们提出的flow-based
的方法始终能带来改进。
34.3.2 无监督的 Question-Answer Entailment
除了语义文本相似性任务外,我们还研究了我们的方法在无监督的
question-answer entailment
上的有效性。我们使用Question Natural Language Inference: QNLI
数据集,这是一个包含110K
个question-answer pair
的数据集,其中5K+
个pair
用于测试集。QNLI
从SQUAD
中抽取问题及其相应的上下文句子,并将每个pair
标注为entailment
或no entailment
。在本文中,我们进一步将QNLI
调整为一个无监督的任务。一个问题和一个答案之间的相似性可以通过计算它们的sentence embedding
的余弦相似度来预测。我们将entailment
视为1
,no entailment
视为0
,并用AUC
来评估方法的性能。如下表所示,我们的方法在
QNLI
的验证集上一致地提高了AUC
。同时,与在NLI
上学习的flow
相比,在target
数据集上学习flow
可以产生更好的结果。
34.3.3 和其他 Embedding Calibration Baselines 相比
在传统的
word embedding
的文献中,《A simple but tough-to-beat baseline for sentence embeddings》
和《All-but-the-top: Simple and effective postprocessing for word representations》
也发现了embedding
空间的各向异性现象,他们提供了几种方法来鼓励各向同性isotropy
:Standard Normalization: SN
:在这个想法中,我们通过计算sentence embedding
的均值 $ \vec\mu $ 和标准差 $ \vec\sigma $ ,从而对embedding
进行简单的后处理,并通过 $ \frac{\mathbf u - \vec\mu}{\vec\sigma} $ 将embedding
归一化。Nulling Away Top-k Singular Vectors: NATSV
:《All-but-the-top: Simple and effective postprocessing for word representations》
发现,通过平均池化传统word embedding
从而得到的sentence embedding
往往有一个快速衰减的奇异谱。他们声称,通过将top -k
个奇异向量singular vectors
归零,可以避免embedding
的各向异性,实现更好的语义相似性表现。
我们在
STS-B
数据集上与这些embedding calibration
方法进行比较,结果如下表所示:SN
有助于提高性能,但它落后于NATSV
。这意味着standard normalization
不能从根本上消除各向异性。通过结合这两种方法,并在验证集上仔细调优 $ k $ ,可以实现进一步的改进。我们的方法仍然产生了更好的结果。我们认为,
NATSV
可以帮助消除各向异性,但它也可能丢弃nulled vectors
中的一些有用信息。相反,我们的方法直接学习了一个可逆映射到各向同性的潜在空间,而没有丢弃任何信息。
34.3.4 语义相似性 Vs 词汇相似性
除了语义相似性
semantic similarity
,我们还进一步研究了由不同sentence embedding
方法诱导的词汇相似性lexical similarity
。具体来说,我们使用编辑距离edit distance
作为一对句子之间词汇相似性的衡量标准,并关注句子相似性(BERT sentence embedding
的余弦相似性)和编辑距离之间的相关性。在由许多sentence pair
组成的数据集中,我们计算了语义相似性和编辑距离之间的Spearman
相关系数 $ \rho $ ,以及不同模型的语义相似性之间的Spearman
相关系数。我们在STS-B
数据集上进行实验,并将人类标注的gold similarity
纳入该分析。BERT-Induced Similarity
与Lexical Similarity
过度相关:下表显示,BERT
诱导的相似性与编辑距离之间的相关性非常强( $ \rho = -50.49 $ ),相比之下gold standard labels
与编辑距离的相关性小得多( $ \rho = -24.61 $ )。这种现象在Figure 2
中也可以观察到。特别是,对于编辑距离为 $ \le 4 $ 的sentence pair
(用绿色突出显示),BERT
诱导的相似性与编辑距离极为相关。Lexical Similarity
由编辑距离来衡量,刻画了两个句子在word-level
上的相似性,而不是语义相似性。然而,
gold standard
语义相似度与编辑距离的相关性并不明显。换句话说,经常出现这样的情况:通过修改一个词,一个句子的语义就会发生巨大的变化。"I like this restaurant"
和"I dislike this restaurant"
这两个句子只相差一个词,但表达的语义是相反的。在这种情况下,BERT embedding
可能会失败。因此,我们认为,BERT sentence embedding
的lexical proximity
过高,会破坏其诱导的语义相似性。Flow-Induced Similarity
与Lexical Similarity
表现出较低的相关性:通过将原始的BERT sentence embedding
转化到学到的各向同性的潜在空间,embedding-induced similarity
不仅与gold standard
的语义相似性更加一致,而且与lexical similarity
的相关性也更低,如下表的最后一行所示。这一现象在编辑距离 $ \le 4 $ 的例子中尤为明显(Figure 2
中以绿色标示)。这表明我们提出的flow-based
的方法可以有效地抑制lexical similarity
对embedding
空间的过度影响。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论