小团队怎么跟百人研发团队PK智能交互?这份秘籍可以告诉你

2017-09-18

      支撑人工智能时代发展的一个最重要因素,在于每一个智能设备是否拥有语音交互能力。所谓语音交互,一方面是要让计算机能够听懂我们在说什么,另外就是更进一步让计算机理解这背后的含义,这也正是UNIT重要之所在。百度UNIT,即理解与交互技术,是建立在百度多年积累的自然语言处理与对话技术以及大数据基础上的、一个面向第三方开发者提供开放能力的对话系统开发平台。


      在最近由百度开发者中心主办、极客邦科技承办的74期百度技术沙龙上,百度理解与交互技术UNIT技术负责人孙珂分享了有关《UNIT:语言理解与交互技术》的演讲。除他之外,百度AI技术生态部高级运营顾问张扬、百度语音技术部架构师李超、百度AI技术生态部高级产品经理吴延宇,也分别从语音和语义理解应用实践、远场语音识别方案、百度开放平台使用指南这几个维度,对百度智能交互技术进行全方位解读。



UNIT是什么?能给开发者带来什么?

      在演讲中孙珂首先整体回顾了AI是什么。AI的根本,是希望让机器拥有人的能力。首先,机器能听懂我们在说什么,也能说出我们的话,这就是语音能力;其次,人接受信息时,70%以上的信息通道都来自于视觉,我们也希望机器同样如此,这就是图像能力;第三层我们不光让机器听懂我们在说什么,还要知道这背后的含义,这就是语言能力;最后一层,我们希望机器听懂我们的指令后,还能够规划自己的行为:比如自动驾驶中,机器除了能够看到所有路况以外,还能够操作汽车去规避所有路障,这就是行动能力。在这些表层能力之外,内层能力还要包括思考能力、知识能力、学习能力。这是人工智能时代我们希望机器拥有的能力。


      既然语言对于人工智能来说这么重要,我们就期望让语言技术为人工智能服务,这也是对话即平台概念的核心——我们可以通过自然流畅的语言形式去控制智能设备,来表达我们的需求。


      对话系统的组成首先就是语音,ASR要做语音识别,从语音识别到文字,这是百度在语音层面做的事情。接着进入NLP,首先要把文字进行语言理解(即NLU),把一段文字里面的意图具像化出来,之后把这一段文字里边最关键的信息点提炼出来,通常情况下我们做到这一步的时候很多应用可以满足了。


      但是我们人类的语言交流并不是每一句话都会把前面的信息带上,所以需要机器能够把之前的关键信息记录下来,下一次再说就不需要不停重复,这就是对话状态管理;之后,如果想让机器根据对话过程中所收集到的关键信息来决定下一步应该执行什么动作,就需要动作侯选排序模块来处理并选择了;接下要通过语言生成的模块,利用刚才解析出来的关键信息到数据库里面找到最终信息内容,去执行出最终对用户的反馈。当然,我们现在说的话是文字,我们要有TTS语音合成能力,这样才能进行语音的展示。


      在这样一个业内最常见的对话系统组成架构中,其中的每一个部分都需要相当规模的团队来进行深入的技术研发与积累才能达到可用状态。百度把这些拥有深厚技术底蕴的能力开放出来,其目的就是为了让一个两三个人的创业团队也能够开发出颠覆某个行业的产品。为什么叫UNIT?因为百度希望让UNIT成为每个产品里面的组件,希望大家直接用这个组件来搭建自己需要的任意智能产品。


      在UNIT中,百度拥有技术优势、强大的定制化能力以及海量真实的大数据,对于百度而言,其价值在于最后把技术开放出来与大家分享、让开发者把最好的技术嵌入到自己的产品中,由此带来生态的共建。UNIT的核心技术,主要包括语言理解、多轮交互和NLP基础分析技术等方面。


      在语言理解方面,如果对于“今晚六点帮我在全聚德预约一个包间,十个人”这样一句话,如果我们要想理解它,其关键是需要理解它背后的意思。我们的理解模型可以分析出来它的意图是要预定餐馆。除此之外,它里面有关键信息,比如餐厅是“全聚德”,时间是“6点”,人数是“10人”等等,这些信息都是需求理解所需要完成的工作。但理解并不是对话系统的全部,与之配合的交互也非常重要。例如,信息的记忆与使用是一种交互,要把对话中的关键信息记住并适时地应用于对话过程中;除此之外,也许用户一开始并没有告诉系统所有的关键信息,这时候需要对话系统能够主动询问出来;另外系统帮用户做完一件事情之后,可能还会按照关联场景推荐其他的关联需求。这些整体组成了面向意图和词槽的理解与交互所能提供的能力。


      这只是对外提供接口时候的一个全貌,背后UNIT提供了更多的定制化能力,分别是领域知识的定制化、交互逻辑的定制化、模型训练的定制化。


      进一步的,对于开发者而言,更关心的可能是UNIT的整体框架。UNIT在学习模块部分提供了众多定制与学习能力,包括快速生效、持续优化、预置能力、对话逻辑四大部分。通过学习模块,开发者可以自行定义地图、场景、词槽,并提供一定量训练样本,并最终通过这个模块学习出自己的对话模型。接下来UNIT会把模型推送到在线服务模块中。在这里,在线服务模块会整体理解用户的当前需求与历史状态,完成意图和词槽的解析工作。之后,解析结果会被传入到对话管理部分去进行对话状态更新和执行动作决策,并最终生产出对用户的回应。


      目前UNIT提供的系统词槽识别能力有20多种,与之搭配的是词槽灵活的组装能力。除此之外还有十几个预置的对话场景,比如天气、商超、地图、外卖等,百度很快会把这些场景开放给第三方使用。除此之外还有一些基于海量用户数据的训练数据扩展能力,并在其中整合了主动学习能力。


      基于一个传统的双向GRNN和CRF的意图识别网络,UNIT进一步增强了对知识的整合能力。融合了知识的理解模型可以帮助开发者用更少的语料得到更好的理解模型,减轻开发者的数据标注成本。


      刚才大家可能在视频里边也看到了零门槛的训练师模式——开发者定制一个任务机器人,用来与用户进行交流。但是UNIT在这其中增加了响应用户反馈的逻辑,努力让对话变得更顺畅,让用户更轻松地纠正任务机器人的错误。同时也让机器完成了对错误的学习,随时随地去消灭一些错误,一次错误就会被记住并被纠正。


      除此之外,我们还需要根据自己的业务流程来管理对话单元之间的跳转逻辑,以便让用户能够通过对话系统更流畅更场景化地达成自己的任务。例如,对话单元与对话单元之间,对话单元与问答单元之间,都可以通过定制规则进行串联与引导。同时,UNIT的对话管理也可以很轻松的完成意图切换、意图澄清、词槽切换、词槽澄清等对话功能。所有的对话流程管理,都被梳理为衔接规则,开发者可以自行通过多种规则与手段完成对话逻辑的定制。