前言:今年8月份在与同学撰写deepfake相关论文的过程中偶然听导师提到各向同性与各向异性这两个词,当时以为这是cv领域的概念,回去一查发现是物理领域的,就没再深究。最近看到一篇使用对比学习解决开放式长文本生成中模型退化问题的文章 SimCTG(A Contrastive Framework for Neural Text Generation,NeurIPS 2022),这篇文章中恰好提到了这两个概念,且发现模型生成的 token 向量分布也存在 各向异性的现象(下图左),提出使用“对比训练”+“对比搜索”的方式消除这一问题(下图右)。
顺藤摸瓜才发现,早在2018年左右,已经有研究发现NLP领域存在模型表示的各向异性问题,且目前为止已有很多相关研究了~这篇博文是在现有资料和个人理解的基础上形成的总结,下面我们就来了解一下NLP领域中向量表示的各向同性与各向异性问题及其相关工作。
各向同性&各向异性
各向同性与各向异性可以作为表示学习模型能力的一个判断依据。表示学习的终极目标是表征的 Alignment 和 Uniformity,前者表示相似的向量距离应该相近,后者就表示向量在空间上应该尽量均匀,各向同性便是表示学习期望达到的理想状态。
-
各向同性的物理解释:物体的物理、化学等方面的性质不会因方向的不同而有所变化的特性,即某一物体在不同的方向所测得的性能数值完全相同,亦称均质性。
-
各向异性的物理解释:物质的全部或部分化学、物理等性质随着方向的改变而有所变化,在不同的方向上呈现出差异的性质。类比:肉的顺纹与横纹等。
NLP中的各向异性&表达退化
根据论文 Representation Degeneration Problem in Training Natural Language Generation Models(ICLR, 2019)和 Improving Neural Language Generation with Spectrum Control(ICLR, 2020),我们发现在NLP领域,模型学习到的词向量表征也存在各向异性的问题(如下图):
这种现象又称做表达退化(Representation Degeneration)。各向异性的问题在于,模型训练过程中会产生词向量各维度表征不一致的问题,从而使得获得的句向量也无法直接比较。模型学习到的向量表征分布较为集中,彼此间的余弦相似度很高,所以这并不是一个好的表示。向量分布的聚集性限制了句向量的语义表达能力,因此当采用Bert等模型得到句向量后,采用余弦相似度无法较好地衡量出两个句子的相似度,因为Bert输出的句向量不是基于一个标准正交基得到的。
各向异性校正方法
解决模型表征各向异性的方式本质上都是对模型生成的分布进行校正,按照校正与模型训练的先后关联,现有方法大致可分为两类:(1)以对比学习为代表的“训练中校正”;(2)以BERT-flow为代表的“训练后校正”,下面分别对其进行介绍。
“训练中校正”
“训练中校正”通过添加特定的约束或设计特定的训练方式,使得模型在学习向量表示过程中更加关注向量的各向同性特性。
嵌入矩阵正则化约束
这篇文章正式提出自然语言生成模型的“表达退化”这一问题,并给出针对这一问题的简单的解决办法,便是通过在损失中添加正则项的方式对词向量矩阵进行正则化。
相关论文:Representation Degeneration Problem in Training Natural Language Generation Models(ICLR, 2019)
对比学习
这种方法的核心思想是先对句子进行传统的文本增广,如转译、删除、插入、调换顺序等等,再将一个句子通过两次增广得到的新句子作为正样本对,取其他句子的增广作为负样本,进行对比训练,训练目标是拉近正样本对的距离,同时增加与负样本的距离,如此一来,训练出的表示向量便能够更加接近各向同性的目标。此类方法代表性工作有 SimCSE、ConSERT等。
- SimCSE:利用预训练模型中自带的Dropout mask作为增广手段得到句向量,且质量远好于其他增广方法。
相关论文:SimCSE: Simple Contrastive Learning of Sentence Embeddings(EMNLP, 2021)
- ConSERT:同样使用数据增强——对比学习的方式提高模型的表征能力。使用的数据增强方式有:Adversarial attack、shuffle、token cutoff、feature cutoff、dropout.
相关论文:ConSERT: A Contrastive Framework for Self-Supervised Sentence Representation Transfer(ACL, 2021)
“训练后校正”
“训练后校正”通过对表示学习模型输出的向量进行特定的变换,使得得到的向量分布更加接近各向同性。
线性变换
这种方法的核心思想是对模型输出的向量进行线性变换,代表工作有 BERT-flow、Bert-Whitening.
- BERT-flow:使用flow模型将分布进行校正为均匀的高斯分布,使得计算出的余弦相似度更为合理。
相关论文:On the Sentence Embeddings from Pre-trained Language Models(EMNLP, 2020)
- Bert Whitening:将所有的句向量转换为均值为0且协方差矩阵为单位矩阵的向量,之后再使用余弦相似度计算。
相关论文:Whitening Sentence Representations for Better Semantics and Faster Retrieval
主成分消除
- SIF:一种高效便捷的无监督句子建模工作,通过对词向量加权(Weighted)+消除主成分(Removal)等操作,得到良好的句向量。
相关论文:A Simple but Tough-to-Beat Baseline for Sentence Embeddings(ICLR, 2017) Princeton University
- All-but-the-Top:同样是通过消除词向量主成分的方式得到更加优越的向量表征。
相关论文:All-but-the-Top: Simple and Effective Postprocessing for Word Representations(ICLR, 2018) UIUC
总结
想起前段时间直接使用预训练的 Bert、Sentence Bert 和 SimCSE 提取句向量特征,使用 t-SNE 可视化之后发现三者对同一组数据的表示差异十分巨大,尤其是 Bert 的表征效果十分不堪,而 Sentence Bert 和 SimCSE 的表征效果相差无几。当时只觉得是模型本身的表征能力存在差距,并不清楚问题的本质,回想起来才发现后两个模型使用了对比学习,这就隐式缓解了模型的表达退化问题,即模型生成的句向量的各向异性,如此,上述问题便有了答案。