赞
踩
很多研究发现BERT表示存在问题:未经微调的BERT模型在文本相似度匹配任务上表现不好,甚至不如Glove?作者通过分析BERT的性质,如图:
在理论上BERT确实提取到了足够的语义信息,只是这些信息无法通过简单的consine直接利用。主要是因为:
①BERT的词向量在空间中不是均匀分布,而是呈锥形。高频词都靠近原点,而低频词远离原点,相当于这两种词处于了空间中不同的区域,那高频词和低频词之间的相似度就不再适用;
②低频词的分布很稀疏。低频词表示得到的训练不充分,分布稀疏,导致该区域存在语义定义不完整的地方(poorly defined),这样算出来的相似度存在问题。
针对以上问题,提出了BERT-Flow,基于流式生成模型,将BERT的输出空间由一个锥形可逆地映射为标准的高斯分布空间。
Flow-based Generative Model:
基于流的生成模型建立了从潜在空间 z \LARGE z z到观测空间 u \LARGE u u的可逆转换,变换过程: z ∼ p z ( z ) , u ∼ f ϕ ( z ) z\sim pz(z),u\sim f_\phi(z) z∼pz(z),u∼fϕ(z) p u ( u ) = p z ( f ϕ − 1 ( u ) ) ∣ d e t ∂ f ϕ − 1 ( u ) ∂ u ∣ pu(u)=pz(f_\phi^{-1}(u))|det\frac{\partial f_\phi^{-1}(u)}{\partial u}| pu(u)=pz(fϕ−1(u))∣det∂u∂fϕ−1(u)∣
简单理解,就是将服从高斯分布的随机变量 z \Large z z映射到BERT编码的 u \Large u u,则反函数 f − 1 f^{-1} f−1就能把 u \Large u u映射到高斯分布上。在训练的过程中保持BERT的参数不变,只优化标准化流的参数,优化目标为最大化从高斯分布中产生BERT表示的概率: m a x ϕ E u = B E R T ( s e n t e n c e ) , s e n t e n c e ∼ D max_\phi\;E_u=BERT(sentence),sentence\sim D maxϕEu=BERT(sentence),sentence∼D l o g p z ( f ϕ − 1 ( u ) ) + l o g ∣ d e t ∂ f ϕ − 1 ( u ) ∂ u ∣ log\;pz(f_\phi^{-1}(u))+log\;|det\frac{\partial f_\phi^{-1}(u)}{\partial u}| logpz(fϕ−1(u))+log∣det∂u∂fϕ−1(u)∣
此外,作者还研究了语义相似度和词汇相似度的关系,将编辑距离作为文本词汇相似度的度量,分别计算了人类标注、BERT、BERT-Flow三者语义相似度和词汇相似度的Spearman相关系数 ρ \rho ρ:
由图可以看出真实的语义相似度和词汇相似度的相关性很弱 ρ = − 24.61 \rho=-24.61 ρ=−24.61,因为一个词的变动就可能使文本的语义完全相反(比如加入一个否定词),而BERT计算的语义相似度和词汇相似度表现出了较强的相关性 ρ = − 50.49 \rho=-50.49 ρ=−50.49,且当编辑距离小于4的时候( g r e e n \color{green}green green)相关性非常强,这会导致BERT可能难以区分like和dislike的语义差别。而引入flow之后,可以发现上述情况有明显的改善,尤其是当编辑距离小于4的时候改善更明显,这表明BERT-Flow计算的相似度相较于词汇相似度更接近于真实的语义相似度。
★ 作者还发现取BERT最后两层的平均要比取最后一层好很多 \bigstar\small\textbf{作者还发现取BERT最后两层的平均要比取最后一层好很多} ★作者还发现取BERT最后两层的平均要比取最后一层好很多
BERT-Whitening首先分析了余弦相似度为什么可以衡量向量的相似度。我们知道 A ⋅ B = ∣ A ∣ ∣ B ∣ c o s ( α ) ,即 c o s ( α ) = A ⋅ B ∣ A ∣ ∣ B ∣ A\cdot B=|A||B|cos(\alpha),即\;cos(\alpha)=\frac{A\cdot B}{|A||B|} A⋅B=∣A∣∣B∣cos(α),即cos(α)=∣A∣∣B∣A⋅B
向量 A A A与 B B B的乘积等于 A A A在 B B B所在直线上投影的长度。将两个向量扩展到 d d d维,则: c o s ( A , B ) = ∑ i = 1 d a i b i ∑ i = 1 d a i 2 ∑ i = 1 d b i 2 , 模的计算公式: ∣ A ∣ = a 1 2 + a 2 2 + . . . + a n 2 cos(A,B)=\frac{\sum^d_{i=1}a_ib_i}{\sqrt{\sum^d_{i=1}a^2_i}\sqrt{\sum^d_{i=1}b^2_i}}, \\ 模的计算公式:|A|=\sqrt{a^2_1+a^2_2+...+a^2_n} cos(A,B)=∑i=1dai2 ∑i=1dbi2 ∑i=1daibi,模的计算公式:∣A∣=a12+a22+...+an2
上述等式的成立,都是在标准正交基(忘了的同学可以自行复习一下)的条件下,也就是说向量依赖我们选择的坐标基,基底不同,内积对应的坐标公式就不一样,从而余弦值的坐标公式也不一样。
所以,BERT的句向量虽然包含了足够的语义,但有可能是因为此时句向量所属的坐标系并非标准正交基,而导致用基于标准正交基的余弦相似度公式计算时效果不好。那么怎么知道具体用了何种基底呢?可以依据统计学去判断,在给向量集合选择基底时,尽量平均地用好每一个基向量,这就体现为每个分量的使用都是独立的、均匀的,如果这组基是标准正交基,那么对应的向量集应该表现出“各向同性”来,如果不是,可以想办法让它变得更加各向同性一写,然后再用余弦公式计算,BERT-Flow正是想到了“flow模型”的办法,而作者则找到了一种更简单的线性变换的方法。
标准化协方差矩阵
思想很简单,因为标准正态分布的均值为0、协方差矩阵为单位阵,假设 { x i } i = 1 N \{x_i\}^N_{i=1} {xi}i=1N为向量集合,则执行变换 x ~ i = ( x i − μ ) W \tilde{x}_i=(x_i-\mu)W x~i=(xi−μ)W使得 { x i ~ } i = 1 N \{\tilde{x_i}\}^N_{i=1} {xi~}i=1N均值为0,协方差矩阵为单位阵。 μ = 1 N ∑ i = 1 N x i \mu=\frac{1}{N}\sum^N_{i=1}x_i μ=N1∑i=1Nxi,现在的问题就是矩阵 W \huge W W的求解。将原始协方差矩阵记为:
Σ = 1 N ∑ i = 1 N ( x i − μ ) T ( x i − μ ) = ( 1 N ∑ i = 1 N x i T x i ) − μ T μ \Sigma=\frac{1}{N}\sum^N_{i=1}(x_i-\mu)^T(x_i-\mu)=\left(\frac{1}{N}\sum^N_{i=1}x_i^Tx_i\right)-\mu^T\mu Σ=N1i=1∑N(xi−μ)T(xi−μ)=(N1i=1∑NxiTxi)−μTμ变换后的数据协方差为 Σ ~ = W T Σ W \tilde{\Sigma}=W^T\Sigma W Σ~=WTΣW,需要解的方程为: W T Σ W = I ⇒ Σ = ( W T ) − 1 W − 1 = ( W − 1 ) T W − 1 W^T\Sigma W=I \quad \Rightarrow\quad \Sigma=(W^T)^{-1}W^{-1}=(W^{-1})^TW^{-1} WTΣW=I⇒Σ=(WT)−1W−1=(W−1)TW−1
协方差矩阵 Σ \Sigma Σ是半正定对称矩阵,且数据多时通常是正定的,所以有SVD分解: Σ = U Λ U T \Sigma=U\Lambda U^T Σ=UΛUT U U U为正交矩阵, Λ \Lambda Λ为对角阵,且对角线元素都是正的,因此直接让 W − 1 = Λ U T W^{-1}=\sqrt{\Lambda}U^{T} W−1=Λ UT,求解得: W = U Λ − 1 W=U\sqrt{\Lambda^{-1}} W=UΛ−1
BERT-Whitening还支持降维操作,能达到提速和提效的效果。
★ \bigstar ★PCA和SVD差异分析:PCA可以将方阵分解为特征值和特征向量,SVD则可以分解任意形状的矩阵。
美团技术团队提出了基于对比学习的句子表示迁移方法——ConSERT,主要证实了以下两点:
①BERT对所有的句子都倾向于编码到一个较小的空间区域内,这使得大多数的句子对都具有较高的相似度分数,即使是那些语义上完全无关的句子对。我们将此称为BERT句子表示的“坍缩(Collapse)”现象。
②BERT句向量表示的坍缩和句子中的高频词有关。当通过平均词向量的方式计算句向量时,高频词的词向量将会主导句向量,使之难以体现其原本的语义。当计算句向量时去除若干高频词时,坍缩现象可以在一定程度上得到缓解。
为了解决BERT存在的坍缩问题,作者提出了句子表示迁移框架:
对BERT encoder做了改进,主要包括三个部分:
①数据增强模块,作用于embedding层,为同一文本生成不同的编码。
shuffle:更换position id的顺序
token cutoff:在某个token维度把embedding置为0
feature cutoff:在embedding矩阵中,有768个维度,把某个维度的feature置为0
dropout:embedding中每个元素都有一定概率为0,没有行或列的约束
数据增强效果:Token Shuffle > Token Cutoff >> Feature Cutoff ≈ Dropout >> None
②共享的Bert encoder,生成句向量。
③一个对比损失层,在一个Batch内计算损失,拉近同一样本不同句向量的相似度,使不同样本之间相互远离。损失函数: L i , j = − l o g e x p ( s i m ( r i , r j ) / τ ) ∑ k = 1 2 N 1 [ k ≠ i ] e x p ( s i m ( r i , r k ) / τ ) N : B a t c h s i z e , 2 N 表示 2 种数据增强方式, s i m ( ) : 余弦相似度函数, r : 句向量, τ : 实验 0.08 − 0.12 最优 L_{i,j}=-log\;\frac{exp(sim(r_i,r_j)/\tau)}{\sum^{2N}_{k=1}1_{[k\neq i]}exp(sim(r_i,r_k)/\tau)} \\ \scriptsize N:Batch\;size,\;2N表示2种数据增强方式,sim():余弦相似度函数,\;r:句向量,\;\tau:实验0.08-0.12最优 Li,j=−log∑k=12N1[k=i]exp(sim(ri,rk)/τ)exp(sim(ri,rj)/τ)N:Batchsize,2N表示2种数据增强方式,sim():余弦相似度函数,r:句向量,τ:实验0.08−0.12最优
除了无监督训练之外,作者还提出了三种进一步融合监督信号的策略:①联合训练(joint):有监督的损失和无监督的损失通过加权联合训练模型。
②先有监督再无监督(sup-unsup):先使用有监督损失训练模型,再使用无监督的方法进行表示迁移。
③联合训练再无监督(joint-unsup):先使用联合损失训练模型,再使用无监督的方法进行表示迁移。
本篇主要介绍了在文本相似度匹配任务上Bert encoder存在的问题,以及三种针对此所做的改良算法。当然除此之外,还有SimBERT、Sentence BERT等算法,感兴趣的同学可以自行了解,总的来说,可以说是一脉相承的,不在赘述。后面将会以前面我们提到的对比学习最重要的两个优化方向来展开,剖析SimCSE、ESimCSE、SNCSE等算法原理。
参考文献:
1.《对比学习》https://zhuanlan.zhihu.com/p/434823574
2.《BERT-Flow:BERT词向量的性质分析+标准化流》https://zhuanlan.zhihu.com/p/337134133
3.《BERT-flow:CMUx字节提出的文本表示新SOTA》https://zhuanlan.zhihu.com/p/318061606
4.《BERT-flow: Sentence-BERT + Normalizing flows》https://zhuanlan.zhihu.com/p/331807184
5.《细说Bert-whitening的原理》https://zhuanlan.zhihu.com/p/380874824
6.《ACL 2021|美团提出基于对比学习的文本表示模型,效果相比BERT-flow提升8%》https://tech.meituan.com/2021/06/03/acl-2021-consert-bert.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。