分享

用 TensorFlow 实现智能机器人

 uczc68 2017-06-15

本文第一部分讲解自然语言处理的原理,第二部分讲解聊天机器人的实现原理,解决方案及挑战,最后以 seq2seq+Attention 机制讲解模型结构。第三部分讲解如何从 0 开始训练一个聊天机器人。

一、自然语言处理的原理

人工智能理解自然语言的原理,要解释清楚,首先需要界定下这个问题的含义,一种是狭义的说如何用计算机来处理和分析自然语言;另一种是则是广义地理解关于“人工智能”、“自然语言”和“理解”的含义。

我们先从广义层面探讨。弄清楚这几个名词。

自然语言:就是人类社会中发明和演变的用于沟通和交流的语言。而人工智能在对事物(不仅仅是自然语言)的理解,往往包含两个层次:一是研究内容;二是方法论。研究内容上主要是现在流行的研究课题,例如知识图谱、CV、语音识别、NLP 等。方法论是指实现人工智能的方法,主要有三种:符号主义、联结主义、行为主义。符号主义是用数理逻辑的推理来模拟人的思维智能,例如专家系统的实现。联结主义对人脑的仿生学研究,最常见的就是神经网络模型。行为主义重点在可预测的人类行为上,认为人类通过与外界环境的交互而得到自适应性,涉及的算法有遗传算法、强化学习等。

现有的NLP主要是以规则和统计相结合来处理的。它的规则一面偏向于符号主义的视角;而统计一面偏向于挖掘一般规律,属于归纳,目前用的方法,比如将自然语言用词向量的方法表征,然后接入神经网络中进行训练,也就是联结主义的思想。

理解:关于机器是否能真正理解语言一直有争论。先抛开这个问题,我们看看人类对语言的理解是怎么样的。实际上,人类对理解这个事情也做的不一定好。比如,南北方对“豆腐脑”的认知是不同的,两人交谈可能就会对同一物体的理解不同。因此,理解是需要由相似的生活经历、共同话题、上下文、会话的环境、双方的知识等很多因素决定的。既然对于人类来说,真正能理解对方,需要这么多的隐性因素,那对于机器来说,我们最好就不要关心机器是否真正能理解问题的含义本身,而是尽可能地让机器关注上述因素,来模拟人的智能。

狭义的层面是我们工程师研究的主要方向。也就是将自然语言理解看成是用计算机来处理和分析自然语言,它涉及到语言学(词、词性、语法)和计算机学科(模型/算法)的范畴。

从语言学上来看,研究的方向包括词干提取、词性还原、分词、词性标注、命名实体识别、词性消歧、句法分析、篇章分析等等。这属于研究的基础范畴,在这些基础的研究内容之上,面向的是具体的文本处理应用,如,机器翻译、文本摘要、情感分类、问答系统、聊天机器人等。

在计算机算法的研究方面,一般是以规则和统计相结合的方法,也就是理性主义和经验主义相结合。自然语言本质上还是符号系统,因此有一定的规则可寻,但是它的复杂性又决定了没有规则可以既不相互冲突又能覆盖所有的语言现象。后来大规模语料库的完善和统计机器学习方法流行起来后,就省去了很多人工编制规则的负担,使模型生成自动生成特征。

所以,我们研究的NLP就是使用数理和机器学习的方法对语言进行建模。可以说,NLP不是达到真正的自然语言理解,而是把语言当成是一种计算任务。

二、聊天机器人的实现原理、解决方案及挑战

我们从聊天机器人的分类和实现原理分别说起。目前聊天机器人根据对话的产生方式,可以分为基于检索的模型(Retrieval-Based Models)和生成式模型(Generative Models)。

基于检索的模型有一个预先定义的回答集,我们需要设计一些启发式规则,这些规则能够根据输入的问句及上下文,挑选出合适的回答。

生成式模型不依赖预先定义的回答集,而是根据输入的问句及上下文,产生一个新的回答。

聊天机器人的这两条技术路线,从长远的角度看目前技术还都还处在山底,两种技术路线的异同和优势如下:

基于检索的模型的优势:

  • 答句可读性好

  • 答句多样性强

  • 出现不相关的答句,容易分析、定位 bug

但是它的劣势在于:需要对候选的结果做排序,进行选择。

基于生成式模型的优势:

  • 端到端的训练,比较容易实现

  • 避免维护一个大的Q-A数据集

  • 不需要对每一个模块额外进行调优,避免了各个模块之间的误差级联效应 

但是它的劣势在于:难以保证生成的结果是可读的,多样的。

因此,上述方法共同面临的挑战有:

  1. 如何利用前几轮对话的信息,应用到当轮对话当中

  2. 合并现有的知识库的内容进来

  3. 能否做到个性化,千人千面。

这有点类似于我们的信息检索系统,既希望在垂直领域做得更好;也希望对不同的人的 query 有不同的排序偏好。

从应用目的的角度区分,可以分为目标驱动(Goal Driven),应用于客服助理等,在封闭话题场景中;无目标驱动(Non-Goal Driven),应用在开放话题的场景下,这是可谈论的主题是不限的,但是需要机器人有一定的基础常识。

尽管目前工业界应用的大多数是基于检索的模型,属于目标驱动的,例如:阿里小蜜,应用的话题领域比较窄,稍微将话题扩大一点,它就会不着边际回复或者文不对题。如下图:

一个开放话题场景下的生成式模型应该是最智能、符合我们预期的聊天机器人。因此总结来看:

智能聊天机器人的目标:

  1. 和人类能够进行持续的沟通

  2. 对不同的提问能够给出合适的回答

  3. 考虑到人类不同个性化的差异性,给出差异性的回答(例如,同一个问题,对男女老少不同群体的回答应该略有差异)

那么对于一个智能机器人来说,它的聊天的功能在其中应该处于什么位置?首先,聊天应该是一个基础模块;其次,聊天应该和完成任务的模块有很好的协作;最后,聊天应该使机器人看上去像您的朋友,而不是您的代理或者助手。

从上述角度来说,现在有一些经常与聊天机器人混淆的概念,也是一些聊天系统的周边产品:

  1. QA 问答系统:是回答事实问题(例如珠峰有多高)以及非事实问题(例如why, how, opinion等观点性问题)的领域机器人。

  2. Dialog system 对话系统:这种大多是目标驱动的,但是近几年都也在慢慢接受聊天机器人功能

  3. Online customer service 在线客服:例如淘宝小蜜,它在多数情况下像一个自动的FAQ。

因此,尽管聊天系统都是针对文本理解的大方向,但目标不同决定了技术路线会有所偏重,但聊天功能是一个基础功能。

智能聊天机器人可以从上面的周边系统研究领域的数据集有所借鉴:

  • 非事实问题的问答

  • 社区型问答系统(例如百度知道等,对问题和答案间有较强的匹配;并且一个问题多个答案时有评分、排序)

  • 从在线系统中挖掘一些好的 QA corpus

那如何来评价一个聊天机器人的好坏?最重要的是问句和答句的相关性,也就是本质是:短文本相关度计算。但要注意:

  1. 相似性和相关性是不同的。用于相似性计算的各种方法并不适用于相关性。我们需要建立一套短文本相关性计算方法。

  2. 相关性计算有一些在早期的聊天机器人的构建中延续下来的方法: 

    • 词语共现的统计

    • 基于机器翻译的相关度计算

    • 主题模型(LDA)的相似度计算

目前在聊天机器人上使用的深度学习方法有如下这些:

  1. Word2vec, Glove

  2. CNN, LSTM, GRU

  3. Seq2Seq

  4. Attention mechanism

  5. Deep Reinforcement Learning

其中,深度强化学习是把“如何得到一个足够让人满意的生成式结果”量化成 Reward。这些因素包括: 

  • 是否容易被回答(一个好的生成式的结果应该是更容易让人接下去的) 

  • 一个好的回复应该让对话前进,避免重复性 

  • 保证语义的连贯性。用生成式的结果反推回 query 的可能性有多大,能保证在语义上是和谐的、连贯的。

那么如何实现在智能聊天机器人的第三个目标,差异化回答呢?也就是如何在对话里如何引入个性化(personality)信息?

首先预训练一个人的向量,让生成的结果贴近人的特点。通过 word embedding 将人的信息作为一个词向量,在输入部分增加一组人的向量;在生成回答的时候,考虑不同的人应该选什么样的词语。

目前,我们要做一个真正智能的自动聊天机器人,仍然面临一些挑战:

  • 缺乏公共的训练数据集,目前使用国外的数据集较多 

    • Ubuntu dialog corpus(subset of Ubuntu Corpus)

    • Reddit dataset(可读性和质量都不错)

    • Corpora from Chinese SNS(微博)

  • 测试集还不统一

  • 评估度量:度量很难设计(目前是从机器翻译和自动摘要的 BLEU、ROUGE 里借鉴的,但面临问题是否能刻画聊天机器人的好坏,并且指导聊天机器人的技术朝着正向的方向发展)

  • 聊天机器人的一般对话和任务导向的对话之间如何能够平滑切换 

    • 这种平滑切换对用户的体验非常重要

    • 切换的技术需要依赖情绪分析及上下文分析

    • 用户不需要给出明确的反馈。例如,我前一句说鹿晗好,后一句说不喜欢韩范,需要聊天机器人能正确识别

  • 仍然存在的问题 

    • 句子级、片段级的语义建模还没有词语的建模(word embedding)那么好

    • 生成式仍然会产生一些安全回答

    • 在知识的表示和引入上还需要努力


(本文余下还有7000字)




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多