《你可能不需要BERT-flow:一个线性变换媲美BERT-flow》中,笔者提出了BERT-whitening,验证了一个线性变换就能媲美当时的SOTA方法BERT-flow。此外,BERT-whitening还可以对句向量进行降维,带来更低的内存占用和更快的检索速度。然而,在《无监督语义相似度哪家强?我们做了个比较全面的评测》中我们也发现,whitening操作并非总能带来提升,有些模型本身就很贴合任务(如经过有监督训练的SimBERT),那么额外的whitening操作往往会降低效果。

为了弥补这个不足,本文提出往BERT-whitening中引入了两个超参数,通过调节这两个超参数,我们几乎可以总是获得“降维不掉点”的结果。换句话说,即便是原来加上whitening后效果会下降的任务,如今也有机会在降维的同时获得相近甚至更好的效果了。

方法概要 #

目前BERT-whitening的流程是:
˜xi=(xiμ)UΛ1/2μ=1NNi=1xiΣ=1NNi=1(xiμ)(xiμ)=UΛU(SVD分解)


其中xi是给定的句向量(如无说明,向量默认为行向量),˜xi是变换后的向量,SVD分解的结果中,U是正交矩阵,Λ是对角矩阵,并且对角线的元素非负且从大到小排列。可以看到,目前的流程是完全固定的,即没有任何可调的超参数。

为了增加一定的调节空间,我们可以往里边引入两个超参数β,γ(标量),使其变为
˜xi=(xiβμ)UΛγ/2μ=1NNi=1xiΣ=1NNi=1(xiβμ)(xiβμ)=UΛU(SVD分解)

思路分析 #

可以看到,当β=γ=1时,就是原来的BERT-whitening;而当β=γ=0时,净变换就是
˜xi=xiU


由于U是正交矩阵,所以不改变内积结果,即˜xi˜xi=xiU(xiU)=xixi,所以当我们用余弦相似度作为相似度量时,它不会改变原有结果。换句话说,引入这组超参数后,它提供了“不逊色于变换前的效果”的可能性,那么当我们精调这组参数时,就有可能取得比变换前更好的效果。这也是这两个超参数的设计思路。

此外,在这样的改动之下,原来的降维能力还是得以保留的。我们可以将变换拆开为两部分看:
˜xi=(xiβμ)Upart 1Λγ/2part 2


第一部分主要是正交变换UUΣ矩阵SVD分解之后的结果,它能将向量xiβμ变换成每个分量尽量独立的新向量,并且新向量的每个分量与0的平均波动正好是由Λ1/2的对角线元素来衡量,如果对应的波动很接近于0,那么我们就可以认为它实际就是0,舍去这个分量也不会影响余弦值的计算结果,这就是降维的原理。而由于SVD分解的结果已经提前将Λ从大到小排好了顺序,因此我们可以直接通过保留前k维的操作˜xi[:k]就可以实现降到k维了。

至于第二部分Λγ/2,我们可以理解为当前任务对各向同性的依赖程度,如果γ=1,那么相当于每个分量都是各平权的,这可以作为一个无监督的先验结果,但未必对所有任务都是最优的,所以我们可以通过调节γ来更好地适应当前任务。

实验结果 #

文章《无监督语义相似度哪家强?我们做了个比较全面的评测》已经显示,在ATEC、BQ、LCQMC三个任务上,SimBERT加上默认的whitening操作(即β=γ=1)都会导致效果下降,而如果我们取β=γ=0,那么结果就不一样了(随便演示了两个组合,其他组合结果相似):
BERT-P4效果表ATECBQLCQMCPAWSXSTS-Bβ=γ=124.51/27.00/27.9138.81/32.29/37.6764.75/64.75/65.6515.12/17.80/15.3461.66/69.45/69.37β=γ=024.51/24.51/24.5938.81/38.81/38.9964.75/64.75/63.4515.12/15.12/14.5961.66/61.66/62.30SimBERT-P1效果表ATECBQLCQMCPAWSXSTS-Bβ=γ=138.50/23.64/30.7948.54/31.78/40.0176.23/75.05/74.5015.10/18.49/15.6474.14/73.37/75.29β=γ=038.50/38.50/38.8148.54/48.54/48.6676.23/76.23/76.2215.10/15.10/14.8874.14/74.14/74.46

跟之前的文章一样,表格中的每个元素是a/b/c的形式,代表该任务在该模型下“不加whitening”的得分为a、“加whitening”的得分为b、“加whitening并降到256维”的得分为c;如果b>a,那么b显示为绿色,小于则显示为红色;如果c>a,那么c显示为绿色,小于则显示为红色。前面说了,如果不降维的话,β=γ=0的净变换就是U,不改变余弦值结果,因此β=γ=0时的a,b都是相等的。

在这个表格中,我们主要看a/b/c中的第三个结果c,它是将向量从768维降低到256维的结果,可以看到当β=γ=0时,不管是无监督的BERT还是有监督的SimBERT,该结果基本都很接近原始向量的结果(即a),部分结果甚至还有提升。这就意味着,β=γ=0,k=256这个组合几乎可以算是“免费的午餐”,几乎无损效果,并且实现了降维。

笔者也试过精调β,γ,在一些任务上确实能取得比上述两个组合更好的效果,但精调需要标签数据,争议性可能会比较大,这里就不演示了。如果原来的句向量模型本就是有监督训练得到的,用BERT-whitening仅仅是奔着降维去的,那么就可以用验证集来精调一下β,γk了,这种场景下就是无争议的了。

文章小结 #

本文通过引入两个超参数的方式来赋予BERT-whitening一定的调参空间,使其具备“不逊色于变换前的效果”的可能性,并且保留了降维的能力。换言之,即便是之前已经训练好的句向量模型,我们也可以用新的BERT-whitening将它降维,并且保持效果基本不变,有时候甚至还更优~

转载到请包括本文地址:https://kexue.fm/archives/9079

更详细的转载事宜请参考:《科学空间FAQ》

如果您还有什么疑惑或建议,欢迎在下方评论区继续讨论。

如果您觉得本文还不错,欢迎分享/打赏本文。打赏并非要从中获得收益,而是希望知道科学空间获得了多少读者的真心关注。当然,如果你无视它,也不会影响你的阅读。再次表示欢迎和感谢!

如果您需要引用本文,请参考:

苏剑林. (May. 18, 2022). 《当BERT-whitening引入超参数:总有一款适合你 》[Blog post]. Retrieved from https://kexue.fm/archives/9079

@online{kexuefm-9079,
        title={当BERT-whitening引入超参数:总有一款适合你},
        author={苏剑林},
        year={2022},
        month={May},
        url={\url{https://kexue.fm/archives/9079}},
}