thu-coai / CDial-GPT

A Large-scale Chinese Short-Text Conversation Dataset and Chinese pre-training dialog models
MIT License
1.76k stars 255 forks source link

论文问题: The GPT2-chitchat reaches the highest distinct scores but poor generation quality where we attribute it to the small scale of the model. #53

Closed Ultraman-Orb closed 3 years ago

Ultraman-Orb commented 3 years ago

GPT2-chitchat得分高,但生成质量差。想知道依据什么评价指标来说明评价指标差,还想了解一下,这些评价指标(PPL,dist,Greedy Matching,Embedding Average)是在data/STC_test.json数据里测的吗?这部分代码能否公布一下吗(ppl,dist, Greedy Matching,Embedding Average)

lemon234071 commented 3 years ago

1、dist不是越高越好,全文乱码的dist也很高,最后是根据人工来评价对话质量的。个人观点:GPT2-chitchat主要是参数量小,他预训练的数据集小,在更大的数据上(STC)微调并不是一个好的训练策略,但是模型结构是一样的,经验上来说也是更大参数、更大数据预训练效果好。 2、是在STC_test.json测的 3、 ppl: https://github.com/OpenNMT/OpenNMT-py/blob/master/onmt/utils/statistics.py dist: https://github.com/microsoft/DialoGPT Greedy Matching: https://blog.csdn.net/qq_33772192/article/details/88936473 Embedding Average: https://blog.csdn.net/qq_33772192/article/details/88943393 词向量: https://ai.tencent.com/ailab/nlp/en/embedding.html

Ultraman-Orb commented 3 years ago

1、dist不是越高越好,全文乱码的dist也很高,最后是根据人工来评价对话质量的。个人观点:GPT2-chitchat主要是参数量小,他预训练的数据集小,在更大的数据上(STC)微调并不是一个好的训练策略,但是模型结构是一样的,经验上来说也是更大参数、更大数据预训练效果好。 2、是在STC_test.json测的 3、这几个指标实现有什么困难嘛? ppl: https://github.com/OpenNMT/OpenNMT-py/blob/master/onmt/utils/statistics.py dist: https://github.com/microsoft/DialoGPT Greedy Matching: https://blog.csdn.net/qq_33772192/article/details/88936473 Embedding Average: https://blog.csdn.net/qq_33772192/article/details/88943393 词向量: https://ai.tencent.com/ailab/nlp/en/embedding.html

非常感谢!

Cherryjingyao commented 3 years ago

这个PPL是怎么计算的呢,在OpenNMT里面的self.loss对应的是模型输出的loss吗,那self.words对应的是什么,请问这部分有代码实现吗?

lemon234071 commented 3 years ago

这个PPL是怎么计算的呢,在OpenNMT里面的self.loss对应的是模型输出的loss吗,那self.words对应的是什么,请问这部分有代码实现吗?

PPL我们的代码里有计算,只需要把valid集合换为test集合即可。

Cherryjingyao commented 3 years ago

这个PPL是怎么计算的呢,在OpenNMT里面的self.loss对应的是模型输出的loss吗,那self.words对应的是什么,请问这部分有代码实现吗?

PPL我们的代码里有计算,只需要把valid集合换为test集合即可。

但是在valid集合里用前n-1个预测第n个字,计算的是一个字的loss。而在test时时算一个sentence的loss,不太一样吧。(不知道是不是我的理解有误)

xiaoshengjun commented 2 years ago

词向量: https://ai.tencent.com/ailab/nlp/en/embedding.html 请问论文中做指标对比的时候是选的这个词向量吗?为什么要用这个词向量呢?是业界都使用这个词向量吗?谢谢回复!

WuDiDaBinGe commented 2 years ago

论文中做指标对比的时候是选的这个词向量吗?为什么

在valid的时候应该使用的teacher force方式 但是在测试的时候使用的是自回归的方式。可以直接将valid换成test吗?