栗友们好!我是Zarc
“写这篇文章的时候给大家分享一个好消息,毕业答辩通过了。
毕业论文中有一个主要的工作就是解决BERT模型在进行文本表示时候出现的语义坍缩问题。”
关于BERT模型的语义坍缩问题,其实早在去年六月就发现了这个问题,当时是在公司做文本匹配任务时候发现:用BERT来表示文本句向量,然后进行相似度的计算,它们的相似度会特别高,具体见下图:
BERT模型计算相似度
这个问题导致的最终结果就是在进行召回排序的时候,根据模型计算得到的相似度来进行排序完全是没有意义的,因为任何两个词之间的相似度都不低,如上图的大腿骨折和 糖尿病 的相似度都达到了0.857,好在当时正焦头烂额准备离职跑路的时候,看到了几篇关于这个问题的研究论文——《ConSERT: A Contrastive Framework for Self-Supervised Sentence Representation Transfer[1]》和《SimCSE: Simple Contrastive Learning of Sentence Embeddings[2]》,这篇文章就来分享一下这个语义坍缩问题。
01
—
什么是语义坍缩?
关于Bert的语义坍缩问题,早在2019年就有很多论文研究指出BERT这些预训练模型存在的表达不一致性问题,也通过计算模型进行文本表示的 L2 距离进行验证,最终结果大概就是下面这样:
总结起来就是以下两点:
BERT的词向量在空间中不是均匀分布,而是呈锥形。作者发现高频词都靠近原点(所有的均值),而低频词远离原点,相当于这两种词处于了空间中不同的区域,那高频词和低频词之间的相似度就不再适用了,句子的语义表达可能会更容易被高频词所主宰。 低频词的分布很稀疏。正如我画的那样,低频词表示得到的训练不充分,分布稀疏,导致该区域存在语义定义不完整的地方(poorly defined),这样算出来的相似度也有问题。
除此之外,有研究人员比较了BERT句向量计算相似度和人工评定的相似度的差异
结果显示BERT句向量给出的语义相似度大多聚集在0.5-1.0之间,而这些句子是由人工评定的相似度高低被均匀分为在5档,也就是说BERT模型在做语义相似度任务时候的表现是极其糟糕的。
02
—
怎么解决语义坍缩?
-
向量空间转换
Bert-flow是最早提出对原生Bert的向量空间进行转换来解决它的语义向量空间分布不均匀,具体做法是采用一种流式变换:
Bert-flow模型的流式变换过程图
它将左侧的BERT编码器产生的的句子表征向量转换到右侧的各向同性且分布较均匀的空间,而标准的高斯分布刚好是一个各向同性的空间,且是一个凸函数,语义分布也更平滑均匀。后续研究发现,Bert-flow这种变换方式过于复杂,于是论文Bert-whitening提出了一种更为简单的变换方法,即通过一种白化的操作直接校正句向量的协方差矩阵,方式较为简单,也达到了和Bert-flow差不多的效果,同时在SVD矩阵分解的过程中,针对对角矩阵Λ进行一个降维操作,只保留特征值大的前n个维度,剔除冗余维度,这无疑在工程上应用节省了内存,也提升了性能。
-
对比学习
Bert-flow和Bert-whitening更像是对BERT的输出进行一定的处理来解决语义空间分布不平滑的问题,而SimCSE则是通过自监督的方式来提升模型对句子的表征能力,采用了简单的Dropout方式和对比学习的方法在文本表达上就取得了领先的水平,它的目标是将同一样本的近似样本的词嵌入到彼此相近的位置,同时尝试将不同样本的词嵌入推开到更远的位置。关于对比学习的具体细节可以看相关论文,这里就不再一一赘述。
03
—
实验效果
我在真正解决这个语义坍缩问题时采用的方案是SimCSE,因为在当时它是文本匹配方向的SOTA,当然当时也有ESimCSE这些改进的模型,不过大同小异。SimCSE在真正的使用过程中确实是效果提升巨大,在文本匹配的推理正确率提升了十几个点,而且模型训练起来速度也很快,这里用一下我在答辩ppt上面的图:

04
—
总结
面试中真正问到文本表示、对比学习相关内容一般是在介绍相关工程实践过程中进行引入的,比如说:
为什么会出现BERT模型计算文本相似度过高这个问题? 在项目中怎么解决BERT模型计算文本相似度过高的问题? 对比学习的思想介绍一下,对比学习的损失函数怎么构造?
BERT语义坍缩问题,本质上就是BERT进行文本表示的向量空间分布不均匀,它的解决方案还有很多种,并且随着提示学习的兴起,文本表示方向也是发展迅猛,如前段时间提出的PromptBERT就是结合提示学习+对比学习直接刷新了文本表示方向的SOTA
说到提示学习,就不得不推荐我的上篇关于介绍Prompt Learning的文章了……
关注六只栗子,面试不迷路!
参考资料
ConSERT: A Contrastive Framework for Self-Supervised Sentence Representation Transfer: https://arxiv.org/abs/2105.11741
[2]
SimCSE: Simple Contrastive Learning of Sentence Embeddings: https://arxiv.org/pdf/2104.08821.pdf
作者 Zarc
编辑 一口栗子
原文始发于微信公众号(六只栗子):BERT语义坍缩,这是可以说的么?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/88676.html