导航菜单
首页 » 问答 » 正文

聊天机器人Chatbot的训练质量如何评价?

关注了很久这个问题,其实去年初也做过一个相关的工作,所以自己也来答一波吧。但是各种事这几个字一个月了都没写完,励志年前一定要结掉。

回归正题,因为或者说NRG算是一个比较新的、data 、从NMT延伸出来的方向,所以比较认同 @ Tony 的回答,PPL评价学习效果(带有约束的语言模型概率)、bleu和rouge算生成结果的词覆盖但都不太好使,这部分就不重复说了。(不过先缩小一下范围,我觉着题主主要想讨论的是NRG面临的问题,如果是检索式,至少 是有一些衡量效果的本质上是接近真是目标的,这里就不讨论了。)

所以在没有合适的情况下,大部分都是靠人工评测,但是人工评测最大的问题是人工评测没办法同一批人工去评测,因此造成模型之间其实很难做完全客观的评测。(这也许是为什么会有Alexa Prize这样的比赛吧)。

言归正传,为什么这些在MT、工作的很好的到了NRG就不行了呢?最主要的原因就是聊天场景的语义、语言的多样性,例如:

Q:我们去年做了一篇对话有关的文章;

A1:什么会议啊?

A2:给讲讲?

A3:不错,我们也做了一篇跟对话有关的,不过不是。

A4:我看了的,很棒!

A5:我还没看,不过一定很棒!

……

可能能列举的完,可能不能列举完,但是语言的描述本身的多样性也是远远大于翻译和摘要等领域的,例如4和5。所以可能稍微做一些修改就可以给出一个合理的、跟 truth语义一致,但没有任何词语重叠的回复。因此后来比较直观有了的,直接来评价语义是不是接近,但是本身是有偏差的,尤其是作用在句子层面,所以也只能作为一个参考,不能取代人工。

那怎么解决这个呢,一个也许可行的直接的思路:我们能不能多给一些 truth的?如果足够多,那么如果生成的回复能跟其中某一个有一定程度的匹配,那么这个回复就可以认为与该再讲同一个回复的方向,因此可以用传统的进行度量。

NAACL这篇文章(后面括号有链接)主要尝试的核心思想(多写点字算是个链接之论文, 多写点字算是个链接之中文介绍)。

那么问题定义清楚了(给一个query配足够多的),接下里就比较容易了,因为通常用来做的query也不会很多,所以最简单的就是拿人去写。但是标注有个准则是,越控制标注的复杂程度,标注的结果就越稳定,也越快,即对错这种二分类是最容易达成的。这样想,人去写的复杂度是极高的,有无数种可能,所以能不能把问题变成给出一些,然后人工筛选,这样一方面可以提供更多的标准答案,一方面又减少了人力消耗。那问题进一步变成了如何给一个query‘找’足够多的备选、且尽可能合理的。

基于这个问题,分成两部分:

最直接的,找到手头的数据里本身就有很多的query是可以满足的。但是特别多的query一定是日常用语,所以不能过多的挑选这部分query,但是可以作为一个依据,随机抽取一部分放入test data。对于不够的,借助检索式自动回复系统的思想,找相似的query。如果是标准的系统应该是有 的,但是这一步如果数据足够大,是可以找到不少语义极其接近的query的。所以用/es做了query的扩展,并借助了排出最近接的query,选取这些下面的来补充test data。

那最后一步,当然还是要人工筛选,毕竟测试集需要保证正确性。最后,就得到了一个每个query包含多个回复的测试数据。

那测试的问题就迎刃而解了,对于一个生成的结果 r' 和标准回复集合\{r_i\},可以先用现有的值找到表现最好的 r_j ,然后用 (r_j, r') 作为评测的结果。这就一定程度解决了评测的 r' 和 truth并不是在讲一个事的情况。

如果说这个过程的目的是希望构建一套能够自动评价不同NRG模型的数据+,那这个过程还有个副产物,就是上面说到的过程本身也在评价模型多个生成结果之间的,即对应的不同标准回复越多,越好。而本身是NRG领域在研究/解决的一个非常重要的问题。(当然,有些标准答案也在讲同一件事情,所以在做数据的时候也进行了人工分组。如果是产品级应用,其实第一步就需要保证足够的量,量足够的前提下,分组和不分组的结果按说是线性的,不过这个暂时纯属猜测)。

最后,这里验证的是一个从做数据到提供的方法可行性,每个步骤都包括清洗数据、找备选(搜索)、(bleu)都是研究级别的方法,产品级应用都需要用更强的方法进行替换,但是对于产品如果能依赖一次人工就一劳永逸自然是非常棒的,哪怕多提供一些合理的回复,因为即便连最根本的标注人员也很难保证每次参与标注的人员稳定。最后的最后,再附上一下论文卡片,正文的链接太不明显了。

评论(0)

二维码