关于 spearman 得分很高但检索很差的询问
数据集是 0-1 格式的数据集,0 表示不相似,1 表示相似,各有10 万对。语料库中总共有 200 万个句子,也就是说有些样本没参与训练。不太一样的就是:第一个句子很短,5 6 个字左右,第二个句子很长,50字左右。比如淘宝搜索:XXX零食,推荐的结果会有:XXX商店XXX口味XXX面包。
我使用 CoSENT 进行训练,在 bert 后接入一个降维层,生成文本的 128 维度特征向量,期待相似样本的距离近,不相似样本距离远。微调 3 个 epoch 左右,spearman 得分在 0.86 左右。
而后,将所有文本生成特征向量,构建向量索引(这里用的别人成熟的框架,不是构建索引出错),并查询距离最近的向量,发现很难查回正样本,MRR 指标也很差,这个问题我怀疑是距离还是没有拉开,请问您在使用这个方法的时候有没有遇到过类似问题呢?~~仿佛偏题了~~
我有碰到过跟你一样的情况,我的原因是句向量pooling操作没有去除[PAD]位置,spearman系数特别高, 但是召回的时候100个召回率确只有0.2左右.
我有碰到过跟你一样的情况,我的原因是句向量pooling操作没有去除[PAD]位置,spearman系数特别高, 但是召回的时候100个召回率确只有0.2左右.
我的应该是负样本比例太低了,把正负样本设置为 1: 10,结果好了很多,但比不上 simcse。
我有碰到过跟你一样的情况,我的原因是句向量pooling操作没有去除[PAD]位置,spearman系数特别高, 但是召回的时候100个召回率确只有0.2左右.
我的应该是负样本比例太低了,把正负样本设置为 1: 10,结果好了很多,但比不上 simcse。
为什么要把正负比例设置这么大呢?
为什么要把正负比例设置这么大呢?
负样本数据量比较大,可能当时想的是把所有样本都用上吧
为什么要把正负比例设置这么大呢?
负样本数据量比较大,可能当时想的是把所有样本都用上吧
多谢,请教2个问题: 1、本来模型得到的embedding是768维的,为啥要去降维到128维去计算相似距离? 2、你的测试集是断句有很多语义相似的数据对,然后短句和测试集中的每一个长句计算相似度排序,然后看对应相似的长句排序位置计算MRR的吗?
多谢,请教2个问题:
- 768 用于实际召回计算,维度太高了
- 除了语义相似,其他是对的,测试集也没多少语义相似的
补充,建议 simcse,效果很好