【自学习】- 怎么让对话机器人越来越强?

对话机器人如果能够检测到服务失败的case,再强一点,最好还能够自动纠正,就和人一样,在学习中成长,在成长中学习,越来越强。理想和美好,那么怎么做呢?怎么学习呢?

对话机器人在与人交互过程中,人的反应,例如赞扬、骂人、嘲笑等,这些反应满意度的指标,天然的就是标签数据,为我们对话助手的服务打上了满意度标签,如果能够挖掘出这种标签,那么会话助手就会再和人交互中发现badcase,然后利用badcase优化模型,从而优化对话助手让它越来越强,是不是有可能呢?

对话中如何检测到服务失败的case,最好还能够自动纠正,这里面主要会包含以下的一些内容:

image.png

query聚类

2008, kdd, Context-Aware Query Suggestion by Mining Click-Through and Session Data

  1. query聚类:将query通过点击二部图计算距离,然后进行聚类,解决稀疏性问题。基于假设:如果两个query很相似,那么他们的点击URL分布也会很相似,所以通过query的点击url的分布来表示query。
image.png

其中边的权重$w_{ij}$为$query_i$到$\\text{url}_i$的点击次数。如果一个query经常呗搜索,一个不经常被搜索,即使他们分布相似,但他们之间的点击次数会相差很大,为了消除这一影响,对于w会做一个平滑:

\\operatorname{norm}\\left(w_{i j}\\right)=\\frac{w_{i j}}{\\sqrt{\\sum_{\\forall e_{i k}} w_{i k}^{2}}}

聚类距离计算:

\\operatorname{distance}\\left(q_{i}, q_{j}\\right)=\\sqrt{\\sum_{u_{k} \\in U}\\left(\\overrightarrow{q_{i}}[k]-\\overrightarrow{q_{j}}[k]\\right)^{2}} \\tag{2}

同时,聚类需要query两两计算距离,真实情况下query会十分多,这样计算效率低下,十分耗时。另外,聚类的个数也是未知的。而且不同的url作为query的表示向量,会十分巨大且稀疏。最后日志也是增量变化,类簇也需要逐步更新。
聚类算法:

image.png

同时,由于URL非常多,会造成表达矩阵维度过大,并且十分稀疏(query的平均度只有8.2,url只有1.8)。因此在寻找和q最相近的C的时候,找寻的类簇C必须要和q有过共享的url,即有过一条边(这里感觉还可以优化)

因此提出了dimension array data structure。

image.png

同时边的连接仍然会很多,作者认为其中一些权重较小的边可能会是潜在的噪声(用户随机点击),可以对其进行修剪来减少计算量。设定$w{ij}$为$q_i$对于$utl_j$的权重(点击了多少次),那么$w_i = \\sum_j w{ij}$,会设置一个绝对权重和相对权重的阈值来做过滤,文中设定的绝对阈值5相对阈值0.1。

query推荐:通过用户的历史查询构建session,并将query用其类簇c表示,构建后缀树来做推荐。

在对话领域,对于未知类别功能的query,可以使用此方法来对query做粗粒度聚类,然后类簇的内部在做一个细粒度的拆分,例如训练一个相似度模型来做区分。

query 改写

2017, CIKM, Learning to Attend, Copy, and Generate for Session-Based Qery Suggestion

假设:用户说的话未被理解正确,通常会换个说法再说一遍。
那么如何来挖掘出这种改写呢?

image.png

将用户历史query构建为session,通过seq2seq模型来对语义建模,生成推荐的query。

训练目标:1. 生成的损失:每个token预测和标签的交叉熵。2. copy的损失,和生成的损失类似

有用户错误、asr错误,通过这种seq2seq的模型,学习session中的语言模型,能够对其中一些错误进行纠正,获得正确的query改写。

2020, AAAI, Feedback-Based Self-Learning in Large-Scale Conversational AI Agents

假设:用户执行query失败之后,部分人还会继续尝试:1)更清晰准确地说话。2)换一种说法(复述)。3)换意图or放弃。

通过sf表征query,通过会话中的sf构建会话图,建立转移概率句子,利用消融马尔科夫,并统计每个sf的成功率,来对query进行改写。

image.png

定义状态:

  • final state. 不可能转移到其他系统状态,可以从其他任何状态转移过来。
  • absorbing states。=成功 or 失败。系统通过系列用户行为判断,例如用户说”stop“或者没有理解,会变成失败状态。如果用户说听歌,播放歌曲之后持续停了一段时间,就是成功状态。
image.png

每个h之间的转移概率来源于用户日志,每个h的成功率来自于统计的平均成功率。
这里判断一个query成功是否成功也需要一套指标体系,本文没有详细说明。

Coling, 2020, Leveraging User Paraphrasing Behavior In Dialog Systems To Automatically Collect Annotations For Long-Tail Utterances

用户用各种各样的替代query来表达相同的请求,这些query可以是一些长尾低频的表达。同时当用户的话没有被系统理解的时候,用户也会提供隐式的反馈,比如换一句话。文章提出了MARUPA方法,利用用户反馈标注,自动进行用户摩擦检测。

整体是pipeline结构,包含三个模块:

image.png
  • PD: 复述检测,检测用户上下文是否有复述,因为复述一般都存在服务失败。输入就是用户上下文的句子,预测是否是复述。
  • FD:用户摩擦检测:检测当前用户的话是否被正确的执行。有点类似用户满意度和用户反馈检测,输入是用户的话u,意图识别和槽位识别结果,判断用户是否满意(二分类问题)

感觉这个FD如果要准确的话,和做好意图检测和槽位识别一样困难,有点悖论。

  • LP:标签映射,通过相似度将实体u最相关的实体u'召回回来,然后通过所有token的平均相似度对齐n个源token和u'的目标token,如下图:
image.png

2021, EMNLP, A Scalable Framework for Learning From Implicit User Feedback to Improve Natural Language Understanding in Large-Scale Conversational AI Systems

怎么从用户交互和对话历史的丰富信息中挖掘出用户是否满意,标注出意图。本文提出一个领域无关的框架,通过从日志数据中产生新的标注数据提升NLU的效果。

框架:

image.png

对于输入query的日志:

  • DIM模块检测是否存在缺陷,或者不满足用户。
  • 对于高置信度存在缺陷的query,通过DCM模型给其标注一个更优的SF。
  • 通过这些更正SF的query+原有训练数据 再来重新训练NLU模型,提升效果。

Model

DIM和DCM模型都是下图,输出包含三部分。1)query。2)SF,包含domain、intent、slot、得分等、3)一些手工提取的特征,

  • 对于DIM模型,预估的是是否存在缺陷。
  • 对于DMC会额外输入一个候选domain/intent的特征,预估的是是否当前候选domain/intent是一个正确的label
image.png

自动服务满意度打标

2020, kdd, IQ-Net: A DNN Model for Estimating Interaction-level Dialogue Quality with Conversational Agents

之前手工提取的一些特征来评估会话质量,但是面对多域难以迁移。通过历史会话来评估当前的会话服务满意度,主要解决的问题:

image.png

模型结构,其中融入了tts来评估服务满意度:

image.png

模型函数,预测$U_t$的是否存在缺陷:

p\\left(\\text { Defect }=\\operatorname{true} \\mid<U_{t}, R_{t}, U_{t+1}>, f_{M}\\right)

其中$f_m$表示meta-data features,这些特征包括:

image.png

实验结果,其中baseline使用了GBDT模型:

image.png

Large-scale Hybrid Approach for Predicting User Satisfaction with Conversational Agents

评估会话的用户满意度十分重要,目前通过人工标注方法搜集输出,然后评估或者训练模型,这类方法依赖人工标注,域增加难以扩展,一种方式是收集用户的直接反馈,来训练模型。但是对于某些意图和场景可能不太适合(哪些领域呢?)因此本文提出一种hybrid approach将用户显式反馈用户满意度预测模型(一个基于用户反馈数据训练,另一个基于人类注释数据)推断的用户满意度预测,能能够减少对人工标注的依赖。

对于那些意图和场景可能不太适合直接问用户呢?例如用户主动打断tts或者终止会话,询问会很不自然,这时候使用用户满意度预测模型就能够排上用处。

显示反馈的举例:

image.png

整个方法的流程:

image.png

模型的结构:

image.png

对话交互

上述各种显示反馈和显示反馈都有提及,但是但是也有显示反馈的,例如在每句话,或者任务完成时候,反馈一些点赞或者点踩的按钮。

语言模型

Style Attuned Pre-training and Parameter Efficient Fine-tuning for Spoken Language Understanding

  • 利用预训练的语言模型减少模型对数据的依赖,更少的数据进行领域适配。提出conversational language modeling (CLM) pre-training task :利用历史会话作为语料训练
image.png
  • light encoder architecture:不同领域使用共享的CLM,下游接入一个light encoder,提高效率
image.png

2020, ICASSP, Pre-training for query rewriting in a spoken language understanding system

  • 提出一个 neural-retrieval based approach for query rewriting
  • 利用预训练语言模型弥补训练语料不足的问题。基于用户的历史会话和隐式反馈训练语言模型。
  • 同时结合nlu任务一起作为正则化进行训练。

Query Rewrite

  • 通过encoder将query转换为向量。结构如下图,同时引入了预训练模型(预测会话下一句任务)和联合nlu任务训练,(数据中删除不满意的)
image.png
  • 通过faiss召回top-k近邻的query。
image.png
本站文章资源均来源自网络,除非特别声明,否则均不代表站方观点,并仅供查阅,不作为任何参考依据!
如有侵权请及时跟我们联系,本站将及时删除!
如遇版权问题,请查看 本站版权声明
THE END
分享
二维码
海报
【自学习】- 怎么让对话机器人越来越强?
对话机器人如果能够检测到服务失败的case,再强一点,最好还能够自动纠正,就和人一样,在学习中成长,在成长中学习,越来越强。理想和美好,那么怎么做呢?怎么学习呢...
<<上一篇
下一篇>>