保存成功
订阅成功
保存失败,请重试
提交成功

用 TensorFlow 实现智能机器人的原理及如何实现一个对话机器人

糖果,《TensorFlow技术解析与实战》作者,InfoQ、51CTO、Oreilly Strata等大会讲师,知乎编程问题回答者。擅长研究深度学习框架的架构、源码分析及在不同领域的应用。有处理图像、社交文本数据情感分析、数据挖掘等深度学习实战经验,参与过基于深度学习的自动驾驶二维感知系统Hackathon竞赛, 曾任职百度研发工程师。现在研究NLP、ChatBot,以及TensorFlow的性能优化及FPGA编译。微信:ljxtensorflow。
查看本场Chat

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

一、自然语言处理的原理

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

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

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

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

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

狭义的层面是我们工程师研究的主要方向。

也就是将自然语言理解看成是用计算机来处理和分析自然语言,它涉及到语言学(词、词性、语法)和计算机学科(模型/算法)的范畴。

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

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

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

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

我们从聊天机器人的分类和实现原理分别说起。

互动评论
评论
Mingo2 年前
跪问大佬,为何我的基于seq2seq的对话机器人,它总是重复一句话(准确讲就两个字),无论我问什么都是这两个字的回答,模型训练超过了5W步了,全局困惑度值也在1点多,郁闷啊。我换了好几个语料(语料质量不差啊),貌似只会回答一个词组,这个词组还是语料里的高频词组,不知道问题出在哪啊,求解答。 我的机器人只会说一个词,我的词表大小也没问题,训练步数也不少,也换了好几个语料,不是回答效果不好,无论提问什么都只说一句话,或者就是UNK,词表我设了40000,不小了呀,谢谢啦。
评论
波叽波叽啵😮一口盐汽水喷死你4 年前
Demo地址呢?
评论
ponlee4 年前
请问demo地址在哪?
评论
joseph.herder💭4 年前
不懂技术,好奇机器人能理解自然语言可以到多少百分比?有没有可能实现一个说温州方言的人和普通话的人直接对话?
评论
陈树4 年前
不知道为什么,没有收到入群邀请,和小助手反映问题也没有回复,非常不开心,希望主办方给一个解释和处理!
评论
学远4 年前
请问 此类机器人除了省人工和引流 有没有一些标准的对会话进行分析的工具?这样可以很好地利用会话数据 就好比web服务器日志一般
评论
dc4 年前
比如说扫描一个SOA平台日志,了解多少万数据大概在上面跑,系统是否无报错稳定运行,简单报告这两个
评论
dc4 年前
如何简单快速实现
评论
dc4 年前
当然有人问soa现在怎么样的时候,自动回答
评论
leenid4 年前
文中提到可以用GANSeq来创建模型,但没有深入,可否简单介绍下
评论
陆恒通4 年前
老师,您好,我是刚入门深度学习的学生,想咨询一下用Tensorflow去实现深度学习时,建模与调参哪个相对重要一些?老师有什么深度学习方面的书或视频推荐吗?谢谢老师
评论
dc4 年前
有没有简单的方式搭建机器人,自动分析运维日志进行汇报啊
评论
lobby4 年前
1.请问智能问答上下文对话管理怎么做。 2.请问问句相似度怎么做的。
评论
于航4 年前
李老师您好,我最近在研究TF在AOT方面的事情,如果想把基于TF的训练模型拿到移动平台或者Web上来使用,由于现有的训练模型体积较大,需要怎样进行降维?不知道您有了解过这方面的技术嘛?还有一个疑问就是TF中自带的很多函数貌似和numpy等库提供的方法大同小异,我应该怎样选择使用?谢谢🙏
评论
Peter Liu4 年前
目前市场上大部分关于ai的介绍都是对已有模型的demo,这在实际应用场景中是非常受限的,请问目前国内真正根据需求建模使用ai的情况普遍吗?
评论
张磊4 年前
能不能提供tf入门书单
评论
Yang4 年前
同一个源序列分别正向和反向的输入模型,为什么会提高重要关键词的权重呢?总感觉这样会“消除“或“降低“权重。
评论
sherlock4 年前
想请问下,1 目前工业界chatbot,整体来上说,检索式和生成式哪个模型用得多?以及为什么?2 做多轮对话的话,有什么好的思路和资料吗。
评论
崔峥4 年前
李老师,麻烦看一下读者圈我发的问题,没办法转帖过来,有点点超出字数了。
评论
Peter Liu4 年前
能讲一下训练数据集具体是怎么使用的吗
评论
dongxin4 年前
在NLP领域有技术突破吗,如何在里面加入NLP模块
评论
陈飞4 年前
在看老师您写的文章的时候,心中有些疑问,需要老师您有时间解答一下:1.encoder的过程有损失函数吗?encoder 的参数是怎样训练的。 2.也就是如何在对话里如何引入个性化(personality)信息这是怎样实现的?需要详细了解。
评论
4 年前
请问运行在什么数据集上? dataset的下载地址?谢谢。
评论
Eric Fastolfe4 年前
期待到时的交流~
评论
杜军4 年前
期待源码 demo,
评论
查看更多