UNIT平台内置的交互式学习能力大揭秘
置顶
tiancorn 发布于2018-09-11 13:52 浏览:428 回复:4
6
收藏
最后编辑于2018-09-17

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. 反馈后的样本加入集合中,开发者可灵活处理

 

 

 

 

 

 

 

 

 

 

收藏
点赞
6
个赞
共4条回复 最后由tiancorn回复于2018-09-17 10:19
#6tiancorn回复于2018-09-17
#5 rose20135188回复
这个现在可以用么?我试了一下好像用不了。是哪里不对么

试了哪个不对?

0
#5rose20135188回复于2018-09-16

这个现在可以用么?我试了一下好像用不了。是哪里不对么

0
#4bhmoon007回复于2018-09-11

火钳刘明

1
#3吃遍美食一条街回复于2018-09-11

第二个

0
#2碳酸氢钠x回复于2018-09-11

第一个!!!!

0
TOP
切换版块