JasonForJoy / SA-BERT

CIKM 2020: Speaker-Aware BERT for Multi-Turn Response Selection in Retrieval-Based Chatbots
75 stars 13 forks source link

训练Acc问题 #5

Closed rhyspang closed 4 years ago

rhyspang commented 4 years ago

你好,我使用预训练模型进行fine_tune任务训练,由于显存只有20G,调整--train_batch_size为16 发现train了一个多epoch(~5w step)后 loss已经降低到0.2左右,但acc一直是50%多 ,请问这种情况一般是什么原因导致的呢

image

JasonForJoy commented 4 years ago

@rhyspang 你好。 response selection这个任务更关注的是ranking 比如说,一个context对应的四个response candidate的分数分别是 0.6 (-),0.7 (-),0.8 (-),0.9 (+)。+表示正样例,-表示负样例。 单看每一个的分数,与阈值0.5比较,做二分类的话,acc = 1/4 但当做一个整体来看的话,recall@1 = 1 希望这个解释能对你有所帮助。祝好。

rhyspang commented 4 years ago

@JasonForJoy 您好,感谢回复 但这里有些疑问: 对于模型本身来说,训练的任务是做二分类,监督信息也是对于一个样本来说的,模型学习的目标是去判断一个context和一个answer是否匹配。我理解ranking是基于匹配程度的排序,就是说模型本身首先需要有对于正负例的判别能力

JasonForJoy commented 4 years ago

@rhyspang 如果模型既能做好二分类,也能做好ranking,那当然是再好不过。 但当前普遍的共识是优先考虑ranking,这也就是为什么评价指标用的是MRR和Recall,而不是Accuracy。

rhyspang commented 4 years ago

@JasonForJoy 我认可优先考虑ranking这个说法,但我理解的是 二分类是模型训练的元任务,ranking效果好是因为二分类效果好,我的一个简单的理解是,模型想要能够正确ranking10个答案(1个正例+9个负例),是因为模型对1个正例答案和上下文很匹配打了高分(最好接近1),9个负例答案和上下文不匹配打了低分(最好接近0),所以最后ranking 的top1是正确的。如果模型没有很好的二分类准确率,最后ranking效果好应该怎么解释呢

JasonForJoy commented 4 years ago

@rhyspang 如上所述,ranking效果好,大部分是因为当前的模型只能做到将candidate的分数计算成 0.6 (-),0.7 (-),0.8 (-),0.9 (+)。 当然,如果模型能做到0.1 (-),0.2 (-),0.3 (-),0.9 (+),这最好不过,是理想情况。 有一部分工作正是在研究 learn to rank,正是希望扩大正负样例之间的margin。例如这篇工作 Learning a Matching Model with Co-teaching for Multi-turn Response Selection in Retrieval-based Dialogue Systems. Jiazhan Feng, Chongyang Tao, Wei Wu, Yansong Feng, Dongyan Zhao, Rui Yan. ACL 2019.

rhyspang commented 4 years ago

@JasonForJoy 我学习一下,感谢指点