CoSENT icon indicating copy to clipboard operation
CoSENT copied to clipboard

关于 spearman 得分很高但检索很差的询问

Open muyuuuu opened this issue 4 years ago • 6 comments

数据集是 0-1 格式的数据集,0 表示不相似,1 表示相似,各有10 万对。语料库中总共有 200 万个句子,也就是说有些样本没参与训练。不太一样的就是:第一个句子很短,5 6 个字左右,第二个句子很长,50字左右。比如淘宝搜索:XXX零食,推荐的结果会有:XXX商店XXX口味XXX面包。

我使用 CoSENT 进行训练,在 bert 后接入一个降维层,生成文本的 128 维度特征向量,期待相似样本的距离近,不相似样本距离远。微调 3 个 epoch 左右,spearman 得分在 0.86 左右。

而后,将所有文本生成特征向量,构建向量索引(这里用的别人成熟的框架,不是构建索引出错),并查询距离最近的向量,发现很难查回正样本,MRR 指标也很差,这个问题我怀疑是距离还是没有拉开,请问您在使用这个方法的时候有没有遇到过类似问题呢?~~仿佛偏题了~~

muyuuuu avatar Mar 14 '22 09:03 muyuuuu

我有碰到过跟你一样的情况,我的原因是句向量pooling操作没有去除[PAD]位置,spearman系数特别高, 但是召回的时候100个召回率确只有0.2左右.

di-osc avatar May 27 '22 14:05 di-osc

我有碰到过跟你一样的情况,我的原因是句向量pooling操作没有去除[PAD]位置,spearman系数特别高, 但是召回的时候100个召回率确只有0.2左右.

我的应该是负样本比例太低了,把正负样本设置为 1: 10,结果好了很多,但比不上 simcse。

muyuuuu avatar May 28 '22 06:05 muyuuuu

我有碰到过跟你一样的情况,我的原因是句向量pooling操作没有去除[PAD]位置,spearman系数特别高, 但是召回的时候100个召回率确只有0.2左右.

我的应该是负样本比例太低了,把正负样本设置为 1: 10,结果好了很多,但比不上 simcse。

为什么要把正负比例设置这么大呢?

graciechen avatar Jul 04 '23 10:07 graciechen

为什么要把正负比例设置这么大呢?

负样本数据量比较大,可能当时想的是把所有样本都用上吧

muyuuuu avatar Jul 05 '23 15:07 muyuuuu

为什么要把正负比例设置这么大呢?

负样本数据量比较大,可能当时想的是把所有样本都用上吧

多谢,请教2个问题: 1、本来模型得到的embedding是768维的,为啥要去降维到128维去计算相似距离? 2、你的测试集是断句有很多语义相似的数据对,然后短句和测试集中的每一个长句计算相似度排序,然后看对应相似的长句排序位置计算MRR的吗?

graciechen avatar Jul 07 '23 11:07 graciechen

多谢,请教2个问题:

  1. 768 用于实际召回计算,维度太高了
  2. 除了语义相似,其他是对的,测试集也没多少语义相似的

补充,建议 simcse,效果很好

muyuuuu avatar Jul 08 '23 02:07 muyuuuu