layout: default
工作中做一个 query 相似度任务时,偶然看到孪生网络的一片经典论文,《Learning Text Similarity with Siamese Recurrent Networks》,用来做同类文本预料的相似度任务是极好的。
这篇文论主介绍孪生网络的基本思想,对于 query 相似度任务(同类型实体的相似度任务,比如图片、语音),可以设计一个网络结构 net,将两个 query 都经过相同的 net 投影到对应的空间,再该空间中对 net(x) 和 net(y) 求取相似度, net(x) 可以看到 x 在高纬空间的表征。 原 paper 中用 BiLSTM 网络结构来表征 query,模型结构如下:
数据取自百度千言的文本相似度评测数据 bq_corpus 数据集。 该论文的 loss 比较像 MSE 的变种,判定正负例的阈值对超参 m 有明显影响,从试验结论看该值设置的越小越好。
-|-|-|-|- | 版本 | 训练集acc | 验证集acc | 说明 | ---- | --- | --------- | ----| | bert | 0.979 | 0.841 | bert基准版本 | | mse m = 0.4 |0.60 |0.59 |原loss | | mse m = 0 |0.723 |0.724 |降低超参m比较有用| | mse m = 0 学习率3e-4|0.81 |0.758 |调整学习率,最优版本| | norm + cos | 0.722 | 0.721 | norm 没啥效果| | BCEloss | 0.637 |0.641 |修改loss效果不大| -|-|-|-|-
以上 acc 的预测阈值为 0.5,即预测值 > 0.5 算正例,否则算负例。 小结论如下:
孪生网络不同于 bert 把两个 query 合并在一起求二分类任务,定义了另一种解决相似度任务的方式。虽然从时间上看孪生网络的提出时间要更早一些。 另一个角度看孪生网络,更像是把一个构造 query 向量的任务,可以从这个角度寻找更多有意思的解法。
很多用 CNN 来做 query 理解的,很有意思,值得学习下
[1]、https://aclanthology.org/W16-1617.pdf [2]、https://mp.weixin.qq.com/s/UDG5z4lcOiRquRN0H6ELCQ