写在前面

hello大家好,我是fantasy,今天起打算在这里分享自己在NLP上的所学所得,第一篇博客相当于对整篇论文的翻译,并不能算严格意义上的论文“笔记”,希望之后可以越写越好,加上更多的个人理解吧。


Abstract

现有的对话系统大多是依靠数据驱动来学习,并不能够去对额外的专家知识图谱进行编码。这篇文章提出了一个端到端的知识路由关系对话系统,该系统将丰富的医学知识图谱无缝的融入到对话管理中的主题切换,并且使其与NLU和NLG相协作。这里使用了一种新奇的知识路由DQN(DQN是RL中的一种算法)来管理主题切换,它集成了一个关系细化分支来编码不同症状和症状疾病对之间的关系,以及一个知识路由图谱分支,用于主题决策。大量的实验研究表明这里提出的KR-DS(Knowledge-routed Relational Dialogue System)打败了主流的方法(以8%的优势)。

Introduction

之前提出的DQN仅仅是用DM来进行对话状态追踪(dialogue state tracking)和策略学习(policy learning),再利用额外的基于模板的模型来进行自然语言处理,这往往不能很好的匹配真实世界中的自动对话场景。

为了解决这个问题,文章提出了KR-DS,可以无缝地将丰富的医学知识图谱融入到DM中的主题切换,并且使其与NLU和NLG相协作。实际中医生给出诊断是基于其掌握的医学知识和诊断经验,受此启发文章提出了 KR-DQN,充分发挥了医学知识和历史诊断示例的优势,将 知识路由图谱分支(knowledge-routed graph branch)和关系细化分支(relational refinement branch) 结合到一块。relational refinement branch是用来细化DQN产生的粗略结果,而knowledge-routed graph branch则是用来决策。

此外文章创建了 新的数据集(保留了患者原始的self-reports以及患者和医生的交谈内容)来构建系统。

Proposed Method

文章提出的端到端的知识路由关系对话系统(KR-DS)是一个任务型对话系统,依然包括老三样:NLU, DM和NLG。其中:

  • NLU是用来从对话中辨别用户的意图和槽位值(slot指槽位,及约束条件) 。
  • DM则是根据当前的对话状态(current dialogue state)进行主题切换,DM中的代理(agent)会学着去向用户询问症状瞅瞅究竟是何种疾病,从而执行诊断任务。
  • 基于以上,NLG部分使用一些基于模板的模型生成语句。

此外通过强化学习 以端到端的方式来训练整个系统,还要添加一个用户模拟器(user simulator)执行以生成用户目标(user goal)为条件的对话交换。

Natural Language Understanding

因为数据集是从中文网站收集的,所以NLU的主要任务是对用户意图进行分类以及填补汉语槽位。这里提到了4种用户行为(user action),包括:request+disease, confirm+symptom, deny+symptom 和 not-sure+symptom.
因为这里的数据集中症状和意图已经被打过label,所以可以使用监督学习去训练 双向LSTM模型。此外,在预训练之后,也可以通过强化学习将NLU同KR-DS中的其余部分一起训练。

Policy Learning with KR-DQN

文章中使用了强化学习(RL)框架来设计DM模块,实际上这里的DM就是一个通过对话策略(dialogue policy)与环境(用户模拟器)进行交互的代理(agent),最优对话策略是选择一个能使future reward最大化的action,假设有M种疾病和N种症状,那么agent action space size D可以表示为:
D=num_greeting+M+ND=num\_greeting+M+N D=num_greeting+M+N
:num_greeting应该是代表你好谢谢之类的行为(num_greeting = 2)。
这里提到了4种代理行为(agent action),包括:inform+disease, request+symptom, thanks 和 closing. 还有4种症状状态(symptom state)positive, negative, not-sure 和 not mentioned 在症状向量中分别以1,-1,-2,0来表示。

奖励机制在策略学习中也非常的重要,很简单的道理:当agent给出正确的诊断便给予奖励,反之则给予处罚。此外还鼓励精简对话以及询问更精确的症状。文章中给出了如下的 奖励机制
成功的诊断+44,错误的诊断-22,以及在每一轮对话中若未达到现有症状要求的(existed symptom request)也会给予-1的惩罚。

DQN是一个许多问题中常用的策略网络(policy network),文章是在DQN(使用简单MLP(多层感知机))的基础上,提出了一种新颖的DQN:KR-DQN(Knowledge-routed Relational DQN),会考虑先验医疗知识和行为间的建模关系,从而产生更为合理的行为


Basic DQN Branch

首先用basic DQN branch产生一个粗略的行为结果atra_t^ratr​(rough action result),这里MLP(只有一个隐层)用状态sts_tst​作为输入,采用的激活函数是ReLU:
atr=MLP(st)(1)a_t^r=MLP(s_t)\tag{1} atr​=MLP(st​)(1)

Relational Refinement Branch

一个关系模块可以通过聚合一系列其他元素(e.g.other symptom and diseases)的信息来影响一个独立元素(e.g.a symptom or a disease),所以这里建立了一个关系矩阵R∈RD×DR\in R^{D\times D}R∈RD×D来表示所有行为之间的依赖关系,之后再用之前得到的粗略行为结果atra_t^ratr​乘上关系矩阵RRR得到一个细化的行为结果atfa_t^fatf​(refined action result):
atf=atr⋅R(2)a_t^f=a_t^r\cdot R\tag{2} atf​=atr​⋅R(2)
这样atfa_t^fatf​向量的每个元素恰是atra_t^ratr​元素的加权和。
关于关系矩阵的初始化问题:从数据集的统计信息得到的条件概率初始化关系矩阵,矩阵的每一项RijR_{ij}Rij​表示xjx_jxj​在xix_ixi​条件下的概率,其通过反向传播算法来获得行为之间的依赖关系。(实验显示了这种初始化方法比随机初始化的效果要好,凸显了先验知识的作用)
:如果不能理解所谓的action是什么的话,可以这么理解:这里RRR中初始的每个元素笼统的来说就是每个symptoms和每个diseases之间的条件概率。

Knowledge-routed Graph Branch

这个部分是受到医生看病的启发,即医生在拿到病人报告时会在心里列出几种可能的病情,再通过询问与这这些病情相关的症状去做排除法,直到作出诊断。

这里首先计算疾病和症状之间的条件概率来作为定向的医学知识路由图谱的权重,其中有病症和症状两种节点,节点之间则是由两种条件概率相联系:P(dis∣sym)∈RM×NP(dis|sym)\in R^{M\times N}P(dis∣sym)∈RM×N和P(sym∣dis)∈RN×MP(sym|dis)\in R^{N\times M}P(sym∣dis)∈RN×M
这里给出了P(dis)∈RMP(dis)\in R^MP(dis)∈RM和P(sym)∈RNP(sym)\in R^NP(sym)∈RN的计算方法:
P(dis)=P(dis∣sym)⋅Pprior(sym)(3)P(dis) = P(dis|sym)\cdot P_{prior}(sym)\tag{3} P(dis)=P(dis∣sym)⋅Pprior​(sym)(3)
其中Pprior(sym)P_{prior}(sym)Pprior​(sym)基于如下规则计算得来:
positive symptom设为1,negative symptom设为-1,其余的symptom(不确定或者未提及的)则根据数据集求得其先验概率。于是可计算P(sym)P(sym)P(sym):
P(sym)=P(sym∣dis)⋅P(dis)(4)P(sym) = P(sym|dis)\cdot P(dis)\tag{4} P(sym)=P(sym∣dis)⋅P(dis)(4)
将P(dis)P(dis)P(dis)和P(sym)P(sym)P(sym)填零(因为还有greeting action)拼接到一块,得到 知识路由行为概率atk∈Da_t^k\in Datk​∈D

最后,将三者放到一块计算得到 预测行为分布ata_tat​
at=sigmond(atr)+sigmond(atf)+atk(5)a_t = sigmond(a_t^r) + sigmond(a_t^f) + a_t^k\tag{5} at​=sigmond(atr​)+sigmond(atf​)+atk​(5)


User Simulator

为了训练对话系统需要一个用户模拟器。

如上图所示,这里的用户模拟器维持着一个用户目标(user goal),其一般由四个部分组成:disease_tag, self-report, implicit_symptoms, request_slots.

End-to-End Training With Deep Q-Learning

这里使用了Deep Q-Learning(DQN)去训练DM,NLU和NLG。
用Q(st,at∣θ)Q(s_t,a_t|\theta)Q(st​,at​∣θ)表示在基于状态sts_tst​采取行为ata_tat​后,期待的衰减奖励和,通过贝尔曼方程得到Q值:
Q(st,at∣θ)=rt+γmaxat+1Q∗(st+1,at+1∣θ′)(6)Q(s_t,a_t|\theta) = r_t + \gamma max_{a_{t+1}}Q^*(s_{t+1},a_{t+1}|\theta^{'})\tag{6} Q(st​,at​∣θ)=rt​+γmaxat+1​​Q∗(st+1​,at+1​∣θ′)(6)
其中θ′\theta^{'}θ′是旧参数,γ\gammaγ是衰减率。

Experiments

实验中用到了这里建立的新的数据集(from丁香园),起了个名字叫DX dataset,处理后得到覆盖5种疾病(1.过敏性鼻炎 2.上呼吸道感染 3.肺炎 4.小儿手足口病 5.小儿腹泻)和41种症状,一共有527组对话,选择了423个作为训练集,104个作为测试集。另外又用到了另一篇文章1提出的MZ dataset(from 拇指医生),其中包含710个user goals覆盖了4种疾病和66种症状。

Experimental Results

相对于basic DQN,KR-DS的优势在于:DQN通常会猜测正确的疾病,但由于没有症状和疾病关系的限制,会在对话过程中询问一些不合理和重复的症状。
一些实验结果如下:


其中,Table 5中:

rewards value
R1R1R1 +22, -11, -1
R2R2R2 +11, -6, -1
R1∗R1^*R1∗ +22, -11, -0.5
R2∗R2^*R2∗ +11, -6, -0.25


DX dataset的两个user goal results的可视化示例:


conclusion

这篇文章提出的KR-DS很有借鉴意义,这个任务型问答系统也仍然有改进的空间,医疗问答系统的研究与完善依然还有很长的路要走。


文章链接:
[1]End-to-End Knowledge-Routed Relational Dialogue System for Automatic Diagnosis
[2]Task-oriented Dialogue System for Automatic Diagnosis

注:该篇文章在DX dataset上的复现可见github主页:
https://github.com/fantasySE


  1. Task-oriented Dialogue System for Automatic Diagnosis ↩︎

【论文笔记】End-to-End Knowledge-Routed Relational Dialogue System for Automatic Diagnosis相关推荐

  1. End-to-End Knowledge-Routed Relational Dialogue System for Automatic Diagnosis翻译

    摘要 除了当前引起越来越多关注的对话聊天机器人或面向任务的对话系统外,我们进一步开发一种自动医学诊断的对话系统,该系统通过与患者对话,以收集超出其自我描述以外的其他症状,并自动诊断.除了对话对话系统自 ...

  2. 论文笔记:Distilling the Knowledge

    原文:Distilling the Knowledge in a Neural Network Distilling the Knowledge 1.四个问题 要解决什么问题? 神经网络压缩. 我们都 ...

  3. 【论文笔记】知识图谱推理PRA——Relational retrieval using a combination of path-constrained random walks

    知识图谱的概念于2012年由谷歌提出,这篇文章虽然发表于2010年,但文章中的对于数据的使用已经接近知识图谱了.文章提出的PRA算法是知识图谱推理的早期探索,在RWR(重启随机游走算法)的基础上进行了 ...

  4. 论文阅读笔记:A Network-based End-to-End Trainable Task-oriented Dialogue System

    提示:阅读论文时进行相关思想.结构.优缺点,内容进行提炼和记录,论文和相关引用会标明出处. 文章目录 前言 Abstract Introduction Model Intent Network Bel ...

  5. 论文笔记 DXSLAM: A Robust and Efficient Visual SLAM System with Deep Features

    论文链接:https://arxiv.org/pdf/2008.05416.pdf 代码链接:https://github.com/ivipsourcecode/dxslam 主要内容 本文的主要工作 ...

  6. 最新论文笔记(+1):Towards Secure Industrial IoT: Blockchain System with Credit-Based Consensus Mechanism

    Towards Secure Industrial IoT: Blockchain System with Credit-Based Consensus Mechanism(面向安全工业物联网:基于信 ...

  7. 论文阅读笔记《Multi-Task Pre-Training for Plug-and-Play Task-Oriented Dialogue System》

    面向即插即用任务的对话系统的多任务预训练 Abstract 预先训练的语言模型最近被证明有利于面向任务的对话(task-oriented dialogue,TOD)系统.尽管取得了成功,但现有方法通常 ...

  8. 【论文笔记】An End-to-End Model for QA over KBs with Cross-Attention Combining Global Knowledge

    一.概要   该文章发于ACL 2017,在Knowledge base-based question answering (KB-QA)上,作者针对于前人工作中存在没有充分考虑候选答案的相关信息来训 ...

  9. HAKE笔记:Learning Hierarchy-Aware Knowledge Graph Embeddings for Link Prediction

    原文:Learning Hierarchy-Aware Knowledge Graph Embeddings for Link Prediction 代码:https://github.com/MIR ...

最新文章

  1. signal---高级信号注册函数
  2. 第十六届全国大学生智能车竞赛全部比赛胜利结束了
  3. 在查找预编译头时遇到意外的文件结尾。是否忘记了向源中添加“#include “pch.h“”?
  4. 一文简单弄懂tensorflow_【TensorFlow】一文弄懂CNN中的padding参数
  5. linux 非登录shell自动,Linux登录shell和非登录(交互式shell)环境变量配置
  6. BJUI验证后弹窗不显示
  7. 自旋波matlab计算,[首藏作品](4865)从电子到磁振子,自旋波计算开启新篇章...
  8. 移动端怎么让底部固定_移动端排名应该怎么做?两种匹配移动端实战排名干货分享...
  9. python最小公倍数 菜鸟_Python实现的求解最小公倍数算法示例
  10. 复练-软考网规-虚拟化专题
  11. 开源管理项目管理_避免开源项目管理中的不良做法
  12. linkin大话面向对象--内部类
  13. 三种动态创建元素区别
  14. truffle部署到测试网rinkeby
  15. normalize.css下载
  16. [eclipse error]'Android Dependencies' which does not allow modifications to source attachments on it
  17. 实现文件及文件批量改名的工具(包含未确定盘符的情况下)
  18. 蓝桥杯java B组历年省赛真题汇总及题目详解
  19. 密码学系列之九:密钥管理
  20. 黑帽seo收徒之 微信视频号创作 变现

热门文章

  1. 迈凯伦考虑推SUV车型 或由MSO部门主导
  2. 四川计算机一级试题,四川省计算机一级考试的真题
  3. JAVA程序推送消息到企业微信
  4. linux shell 相关命令
  5. 分子对接教程 | (2) 选择合适的蛋白受体
  6. Go C画图 CSP-J CSP-S NOIP 信息学奥赛(51套)
  7. 西柚的大数据从踩坑到放弃-zookeeper:四、一些ZK的踩坑记录
  8. 用计算列实现移动加权平均算法
  9. 烟花仓库智能管理-RFID仓库管理解决方案-智能RFID仓库管理系统-新导智能
  10. Springboot访问静态文件的问题(WebContent)