预训练模型语义相似性计算(二)--BERT-flow

 SBERT的缺点和留下的疑问:

        1.需要监督语料。 微调时间不久,但是对语料质量还是有要求的。
        2.为什么bert句向量cosine不能用做相似性计算?
            i.没有学到语义相似性信息?
            ii.cosine无法刻画相似度?

BERT-flow:

        训练到的句向量应该是包含了语义相似性信息。因为训练目标和相似性计算目标是一致的。
        所以原因应该是 ii.cosine不能很好刻画相似性。

        语言模型学习到的词向量是各向异性的,句向量是不是也有这个问题呢?
        词向量的分布和词频有关。
            高频词离原点更近,低频词离原点较远,「这会导致即使一个高频词和一个低频词的语义是等价的,但词频的差异也会带来很大的距离偏差,从而词向量的距离就不能很好地代表语义相关性」。
            高频词分布得更紧凑,低频词分布得更稀疏,而稀疏性会导致一些词向量之间的空间是"空"的,这些地方没有明显的语义对应。BERT句向量空间在一定程度上是「语义不平滑的(semantically non-smoothing)」

今天无意间看到了这篇文章:你可能不需要BERT-flow:一个线性变换媲美BERT-flow

什么是flow?
    总的来看,flow就是想办法得到一个encoder将输入x编码为隐变量z,并且使得z服从标准正态分布。
    得益于flow模型的精巧设计,这个encoder是可逆的,从而我们可以立马从encoder写出相应的decoder(生成器)出来,因此,只要encoder训练完成,我们就能同时得到decoder,完成生成模型的构建。

生成模型的本质
    就是希望用一个我们知道的概率模型来拟合所给的数据样本,也就是说,我们得写出一个带参数θ的分布qθ(x)。
    然而,我们的神经网络只是“万能函数拟合器”,却不是“万能分布拟合器”,也就是它原则上能拟合任意函数,但不能随意拟合一个概率分布,因为概率分布有“非负”和“归一化”的要求。
    这样一来,我们能直接写出来的只有离散型的分布(无法并行,计算量大),或者是连续型的高斯分布。

    VAE,优化一个上界,是一个近似模型。
    GAN,通过交替交替训练,精确了模型准确率。
    flow,硬刚,直接算积分。

作者得出这样的结论:
        flow模型本身很弱,BERT-flow里边使用的flow模型更弱,所以flow模型不大可能在BERT-flow中发挥至关重要的作用。

        反过来想,那就是也许我们可以找到更简单直接的方法达到BERT-flow的效果。那就是将向量变换为均值为0,协方差为单位阵(方法简单粗暴,也达到了和bert-flow相当的效果)。

实验结果:

        自己尝试了上述线性变换的方式进行句向量变换,在未微调的模型上效果上升0.9%(75.7%->76.6%),而在微调后的模型上效果下降0.9%(85.4%-84.5%)。在自己的测试集上没有达到论文和博客说的结果。在这里我也有一个问题,就是我微调的模型是使用的交叉熵损失,但最后结果使用cosine计算的相似性,我觉得会分类和拟合任务上对于句向量应该会有影响吧。所以我尝试使用cosine来微调模型,但是最后没有收敛,暂时没有找到原因。

参考文献:On the Sentence Embeddings from Pre-trained Language Models

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值