BERT可以使用无监督的预训练模型做文本相似度任务吗?

这个问题是个好问题, 也困扰了我好久,一般不熟悉的人会使用word2vector的思路考虑,那么这个问题显然是成立的,但是本质上是错的,不能这么去用。

看一下大神们的回答:

(1)先看一下苏神的: (大神说话就是硬气)

看了楼主的问题,以及你在前面几个回答下的评论,发现你总是反复反问一个事情:取最后一层pool out效果差的原因是什么?
我也来反问一个:你潜意识里觉得它会好的原因是什么?
别说“我就是直觉觉得它会好呀”这样的话,那只能说明你根本就没理由觉得它会好。既然没理由觉得它会好,那它差就是很容易接受的事情。说白了,差才是正常的,差才不需要理由,如果效果居然好,那就需要理由了。
说回特征,pool out的特征是用来做二分类的,既然是二分类,那么就意味着这个输出最终会被集中在两个向量附近,既然只有两个,那多数句子的cos很接近不是很正常的么?

(2)

最近工作也在做这个事,分享下我的实验结论
1.首先一点是在不finetune的情况下,cosine similairty绝对值没有实际意义,bert pretrain计算的cosine similairty都是很大的,如果你直接以cosine similariy>0.5之类的阈值来判断相似不相似那肯定效果很差。如果用做排序,也就是cosine(a,b)>cosine(a,c)->b相较于c和a更相似,是可以用的。总而言之就是你模型评价的标准应该使用auc,而不是accuracy
2.短文本(新闻标题)语义相似度任务用先进的word embedding(英文fasttext/glove,中文tencent embedding)mean pooling后的效果就已经不错;而对于长文本(文章)用simhash这种纯词频统计的完全没语言模型的简单方法也ok
3.bert pretrain模型直接拿来用作 sentence embedding效果甚至不如word embedding,cls的emebdding效果最差(也就是你说的pooled output)。把所有普通token embedding做pooling勉强能用(这个也是开源项目bert-as-service的默认做法),但也不会比word embedding更好。
4.用siamese的方式训练bert,上层通过cosine做判别,能够让bert学习到一种适用于cosine作为最终相似度判别的sentence embedding,效果优于word embedding,但因为缺少sentence pair之间的特征交互,比原始bert sentence pair fine tune还是要差些。参考Siamese bert,https://arxiv.org/abs/1908.10084

参考:https://www.zhihu.com/question/354129879/answer/886821182

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MachineLP

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值