0. 前言
Embedding模型的主流框架基本上分为三类——基于bert结构的,基于GPT结构的和基于T5结构的,当然这些结构都是Transformer的变形。对于Embedding模型,使用bert结构目前看是最好的。有篇论文论文对基于bert的Embedding模型和基于GPT的Embedding模型做过比较,暂时找不到了,后续找到会附上。另外本人也对基于bert的embedding模型和基于GPT的embedding模型做了比较试验,结果表明基于bert的embedding模型完胜。
要让 embedding 模型性能提升,除了在模型结构和训练数据上做文章之外,还可以使用Whitening方法,特殊的pooling方法和Simcse方法来提升效果。本文先介绍Whitening方法和特殊的pooling方法,下一篇介绍Simcse方法。
1. Whitening
1.1 为什么可以用白化方法提升模型效果
白化操作不仅可以提升模型效果,还可以对句子向量进行降维。
白化(whitening)方法之所以能够在embedding模型上产生正向效果是因为我们通常会用两个句子向量的余弦相似度来衡量这两个句子的相似性。但是由于类似由BERT和GPT这样的预训练语言模型得到的句子向量往往是具备各向异性的,表现状态就是向量会不均匀分布,且充斥在一个狭窄的锥形空间下。但是,具备各向异性的向量之间直接计算余弦相似度会出现一些偏差,这就导致 embedding 模型的表现变差。所以,我们只要将各向异性的句子向量转化为一个各向同性的句子向量就可以提升 embedding 模型的效果。此时就用到了白化操作。