1 概述
UNIT平台针对任务式对话提供了强大的理解与交互能力,深入的任务式对话往往需要多轮交互,需要具有很多单轮交互所不具有的能力,如澄清、纠正、干预、重复、打断等,因此我们引入了交互式学习的概念。在对话中,除了通过多轮交互的方式,实现任务信息的补充(槽位填充)外,还需要实现优化理解结果的目标:
通过多轮对话,允许用户对语音识别、SLU等多种中间结果进行反馈(包括确认、否认、纠正、干预等),从而获得更好的理解结果;同时利用上述能力积累下来的语料,对模型的理解能力进行持续优化,达到像人类一样的持续进化、终生学习能力。
以下是两个简单的例子:
图1. 交互式学习示例
图2. 交互式学习示例
2 交互式对话能力点详细说明
2.1 对话式理解
允许用户在对话时,像人和人之间对话一样,对理解失败、理解错误的结果进行干预(对于用户来讲,这是一个在对话中,会不自觉出现的行为),同时积累样本,优化模型。做到在对话中理解,在对话中学习。
对话式学习目前支持的学习方式有: 意图否定、意图修改、词槽否定、词槽修改等。
2.1.1 意图否定及意图修改:
图3(1). 意图否定及意图修改干预示例
图3(2). 意图否定及意图修改干预示例
目前支持的话术示例:错了/不对/我不是要查天气/不要查天气/我是要导航等,更多能力可以在平台上进行尝试
2.1.2 词槽否定
图4(1). 词槽否定干预示例
图4(2). 词槽否定干预示例
目前支持的话术示例:根据词槽值进行否定(不要一首歌/一首歌错了…)、根据词槽中文名进行否定(歌名错了/不要歌名/去掉歌名…)、根据词槽值和中文名同时否定(一首歌不是歌名/歌名不是一首歌…),更多能力可以在平台上进行尝试。
2.1.3 词槽修改
图5(1). 词槽修改干预示例
图5(2). 词槽修改干预示例
目前支持通过词槽中文名进行修改,如图5所示。
目前对话式学习的干预意图召回是依赖内置的模型,后续还会支持更多的召回话术,并开放允许开发者自行配置,也欢迎大家多尝试使用,反馈问题,帮助我们进行优化。
2.1.4 学习效果&持续迭代
对话式学习发生后,学习到的query结果会自动生效(仅限原query本身,不具备泛化能力),如图6所示:
图6. 对话式学习效果立即生效示例
同时,系统会自动将学习到的内容(弱标注样本)记录到对话所属的bot下,开发者可以实时看到用户在实际使用中所反馈的case,利用这些case优化模板集合、样本集合、词槽词表等,实现持续迭代,如图7所示:
图7. 通过对话式学习得到的对话样本
2.2 解析结果主动确认
即系统在对解析结果不确信时,主动发起反问,以提高解析准确率。
2.2.1 意图不置信
开发者配置的解析模型具有一定泛化能力,这是开发者所希望的,但太强的泛化能力会导致大量误召回,通过对模型召回的低置信度结果进行二次澄清,可以有效避免误召回,尤其对于追求强泛化能力而设置了低阈值的场景,示例如下:
图8. 意图不置信澄清示例
当前支持的应答类型有:
确定(是/是的/对…)
否定(不是/不对/错了…)
纠正(是xx/xx…)
意图转换
等,同时也会handle住非期望的结果,具体的效果可以在平台上进行尝试。
2.2.2 意图歧义
开发者在配置大量模板和实例时,难免会出现重复或矛盾的现象,如两个不同意图的模板都可以与同一个query匹配、两个相似度很高的实例属于不同意图,这时通过对歧义结果进行二次澄清,让用户自己选择正确的意图,保证准确率。
图9(1). 意图歧义澄清示例
图9(2). 意图歧义澄清示例
当前支持的应答类型有:
序数指代(第一个/1…)
表述指代
纠正
意图转换
等,同时也会handle住非期望的结果,具体效果可以在平台上进行尝试。
2.2.3 词槽不置信
和意图不置信类似,但是针对词槽
图10. 词槽不置信澄清示例
当前支持的应答类型有:
确定
否定
纠正value(e.g. 请问张艺是导演吗? 是张艺谋/张艺谋才是)
纠正tag(e.g. 请问张艺谋是演员吗?是导演)
等,同时会handle非期望结果,具体效果可以在平台上进行尝试。
2.2.4 学习效果&持续迭代
和对话式学习一样,系统澄清产生的有效反馈同样会即时生效并记录样本,帮助进行优化,如图7所示。
2.3 基于多轮交互的query纠错
允许用户通过多轮交互,对语音识别造成的query中单字、片段错误等进行纠正,适用于车载、家居、无屏幕设备等键盘输入不便的应用场景,以下是示例:
图11. 通过拆解对query中的单字进行纠正
图12. 通过偏旁部首对query中的单字进行纠正
图13. 通过词语对query中的单字进行纠正
图14(1). 片段式纠错
图14(2). 片段式纠错
图14(3). 片段式纠错
如以上图所示,目前UNIT平台已经开放通过词语、偏旁部首、拆解等方式对query里的错字进行纠正,以及一些片段式的纠错。
当然,有的同学会发现一个很大的问题,这个功能是针对ASR的,而用来纠正上一句的query本身可能就会有语音转换错误,像上图中的『下面是个小的京』可能被ASR转换为『下面是个小的静』、『三点水的那个津』很可能本身就被误识别为『三点水的那个金』,这样的话这个功能是不是应用价值不大?关于这个问题,你自己建个bot试试就知道了~
目前我们的纠错模型是一个通用模型,后续会考虑开放个性化配置,允许开发者进行深度定制,也欢迎大家给我们沟通各种需求及使用当中遇到的问题case等,帮助我们进行改进。
2.4 反馈学习
反馈学习是允许开发者在平台的测试对话框中,对解析结果进行实时反馈,即可达到优化解析效果的目的,同时积累样本,改进模型。其本质与对话式学习相同,只是在平台上为开发者提供了一个更方便快捷的途径。
图14. 反馈学习示例
图15. 反馈学习后再次解析相同query的效果
同对话式反馈一样,反馈的样本在平台端可以实时生效并加入到样本集合中,如图16所示。
图16. 反馈后的样本加入集合中,开发者可灵活处理
研发环境可以体验到吗
怎么样才能体验到啊?
厉害,我的多轮对话有问题,楼主可以在详细点吗
我想问一下这个是检索式的问答系统吗,可以用做知识推断吗,就像知识图谱关系推理一样
你是在生产环境上试的吗?
对话式理解和纠错好像都不生效啊,怎么试都没有体验到文中描述的效果啊
哪个用不了?
交互式学习也太有意义了
因为不是一个标准的强化学习框架,
为了不要误导大家,所以叫 交互式学习:)
嗯嗯,应该叫强化学习,要专业一点。
试了哪个不对?
这个现在可以用么?我试了一下好像用不了。是哪里不对么
火钳刘明
第二个
第一个!!!!