kosugi11037 / bert-int

46 stars 20 forks source link

Basic_Bert_Unit_model train-test相似度以及epoch-loss #2

Closed mkzzz closed 4 years ago

mkzzz commented 4 years ago

作者您好,有个问题没明白想请教一下,在basic-bert中训练时用的F.pairwise_distance(pos_emb1,pos_emb2,p=1,keepdim=True)#L1 distance,而test中用的是cos_sim_mat_generate(emb1,emb2,batch_size,cuda_num=CUDA_NUM),为什么没用相同的相似度进行衡量呢?还有一个问题是跑了5个epoch后,test的hit @ 1: 0.09190 hit @10 : 0.10610 hit @ 25: 0.10990 hit @ 50: 0.11743 指标一直是0.0x,而且epochloss也一直是震荡状态(从3千到1万2千之间),请问作者有没有遇到过这样的问题,还是我哪个地方搞错了,盼望回复,谢谢~

kosugi11037 commented 4 years ago

您好!感谢您对我们工作的关注!关于第一个问题,basic_BERT_Unit测试时,L1-norm distance和cosine similarity都是可以用于衡量实体表示之间的相似度的。两者最主要的区别在于有没有根据向量的模长对表示向量进行normalize,而在这里实体表示的scale影响比较小,两种相似度任选其一都可以;这里选择cosine similarity是出于直觉,我也试过用L1-norm distance来衡量表示之间的相似度并计算hit@k指标,结果和使用cosine similarity得到的结果是差不太多的

关于第二个问题,你的现象好像有点奇怪...我刚才在我这边的服务器上试了一下,直接运行basic_BERT_Unit结果还是比较正常的...比如在DBP15K JA-EN数据集上5个epoch对应的loss分别是[9574.516, 2850.803,1922.717,1461.772, 1134.332] (epochloss的值看着比较大是因为我把一个epoch中每个样本对应的loss值求和然后print出来了),总体上是呈一个下降的趋势的,hit@1是八十多;如果您运行代码仍一直是这种结果...我的邮箱是txb@ruc.edu.cn,不介意的话可以把代码和对应的一些环境设置发给我看一下么?咱们一起找找问题所在?

mkzzz commented 4 years ago

感谢回复~,关于第二个问题,昨天查了一下,是我的vocab.txt不对,使很多token是unk。现在运行结果和您的结果一致,谢谢~

kosugi11037 commented 4 years ago

嗯嗯好哒~ 再次感谢您对我们工作的关注,有问题欢迎随时交流~