如果聊天机器人想要成功,还需要这个……

2018 年 7 月 1 日 AI前线
作者 | Sambodhi
编辑 | Vincent
AI 前线导读:聊天机器人曾经很风光,在 1964 年就有了 ELIZA,至今已有 54 年了。但是,这些聊天机器人都是“老式的人工智能”,尽管在很多方面都很出色,但它们也有缺陷。要让聊天机器人取得真正的成功,还需要什么呢?聊天机器人还有前途吗?

更多干货内容请关注微信公众号“AI 前线”,(ID:ai-front)

逻辑法能让聊天机器人变得聪明吗?在 20 世纪 60 年代,人们认为这一观点是理所当然的。但现在我们几乎已经忘记了逻辑法。是时候复兴了吗?

聊天机器人技术正处于一个拐点。有关这项技术潜力的承诺尚未实现。据 Grand View Research 报道,预计到 2025 年,聊天机器人的市值将达到 12.5 亿美元,年增长率高达 25%。然而,目前构建聊天机器人经历了各种失败,这些失败都被收录到 https://chatbot.fail/ 网站中了。

这种明显的矛盾将如何解决,目前尚不清楚。聊天机器人技术会不会发展到很容易让聊天机器人变得智能的地步呢?或者,人们对聊天机器人的最初体验留下如此槽糕的印象,会不会让它们永远流行不起来呢?

我相信,目前聊天机器人的实现中缺少一个组件,而没有这个组件的话,聊天机器人将永远无法发挥它们的全部潜力。我说的这一组件,这就是逻辑的应用。

逻辑编程

逻辑编程(Logic programming)的全盛时期是上世纪七八十年代。逻辑编程是一种编程典范,它设置答案须匹配的规则来解决问题,而非设置步骤来解决问题。过程是:事实 + 规则 = 结果。逻辑编程的要点是将正规的逻辑风格带入计算机程序设计之中。数学家和哲学家发现逻辑是有效的理论分析工具。很多问题可以自然地表示成一个理论。说需要解答一个问题,通常与解答一个新的假设是否跟现在的理论无冲突等价。逻辑提供了一个证明问题是真还是假的方法。创建证明的方法是人所皆知的,故逻辑是解答问题的可靠方法。逻辑编程系统则自动化了这个程序。人工智能在逻辑编程的发展中发挥了重要的影响。

像 Prolog 这样的语言将通过简化逻辑变成来改变人工智能。像 C、Python 这样的编程语言允许程序员设定计算机应该去做什么。这就是所谓的“过程式编程”(procedural programming)。过程式编程是一种编程典范,有时会被视为是指令式编程的同义语。派生自结构化编程(Structured programming),主要采取程序调用(procedure call)或函数调用(function call)的方式来进行流程控制。流程则由包涵一系列运算步骤的程序(Procedures),例程(routines),子程序(subroutines), 方法(methods),或函数(functions)来控制。在程序运行的任何一个时间点,都可以调用某个特定的程序。任何一个特定的程序,也能被任意一个程序或是它自己本身调用。

逻辑编程的最初想法是,你应该告诉计算机什么是正确的。给定这个真实的事实和规则数据库,逻辑推理可以用来回答用户的查询。这种编程风格被称为“声明式编程”(declarative programming)。它描述目标的性质,让计算机明白目标,而非流程。声明式编程不用告诉计算机问题领域,从而避免随之而来的副作用。声明式编程通常被看做是形式逻辑的理论,把计算看做推导。声明式编程因大幅简化了并行计算的编写难度,自 2009 起备受关注。

声明式语言包括数据库查询语言(SQL,XQuery)、正则表达式、逻辑编程、函数式编程和组态管理系统。

Prolog(Programming in Logic)是一种逻辑编程语言。它创建在逻辑学的理论基础之上, 最初被运用于自然语言等研究领域。现在它已广泛的应用在人工智能的研究中,它可以用来建造专家系统、自然语言理解、智能知识库等。Prolog 的操作类似于 SQL,但数据库中可能包含逻辑语句,如“If A then B”。逻辑推理将用于回答用户的查询,不幸的是,它就从来没有真正成功过,因为它试图将程序和声明式编程设计结合起来。声明式语言要转换为过程式编程。为了有效地使用 Prolog,你需要知道解释器如何进行这个转换。在多数情况下,它确实让编程变得更加困难,Daoud Clarke 在大学教授 Prolog 的时候,就发现了这一点。

专家系统和人工智能低谷

专家系统(Expert systems)是早期人工智能的一个重要分支,它可以看作是一类具有专门知识和经验的计算机智能程序系统,一般采用人工智能中的知识表示和知识推理技术来模拟通常由领域专家才能解决的复杂问题。在 20 世纪 80 年代,人们对专家系统抱有很大的热情,一度相信它们会为工业带来革命性的变化。

但是这种炒作从来没有成为现实。而且专家系统和其他人工智能技术遭到了人们的失望和批评,以及研究资金断绝,同时,资本及学术界对人工智能研究兴趣也大幅减少了,这就是所谓的人工智能低谷。

从那时起,Prolog 和其他逻辑编程都失宠了。

从 Prolog 到 Datalog

从二十世纪 80 年代起,其他的逻辑编程框架都试图改进 Prolog。Datalog 是一种基于逻辑的数据查询语言,是 Prolog 语言的数据库版本。它起源于逻辑程序设计,1978 年成为一个独立的领域,80 年代第一次提出 Datalog 这个概念。Datalog 实际上是一阶谓词逻辑中子句逻辑的子集——Horn 子句逻辑的一种受限形式。在人工智能和知识工程领域得到了适度的普及。

Datalog 的语法是 Prolog 的子集;但是 Datalog 的语义与 Prolog 不同。Datalog 相对容易计算。但这也意味着它的可表达性是有限的。特别是,它不是一种图灵完整的语言。这种缺乏可表达性意味着 Datalog 从未成为主流语言,尽管它对某些应用程序仍然有用。

智能规划

在人工智能研究中最近获得成功的另一个领域是智能规划(automated planning)。智能规划是一种重要的问题求解技术。与一般问题求解相比,智能规划更注重于问题的求解过程,而不是求解结果。此外,规划要解决的问题,如机器人世界问题,往往是真实世界问题,而不是比较抽象的数学模型问题。与一些求解技术相比,智能规划系统与专家系统均属高级求解系统与技术。简而言之,智能规划的主要思想是:对周围环境进行认识与分析,根据预定实现的目标,对若干可供选择的动作及所提供的资源限制施行推理,综合制定出实现目标的动作序列——规划。

程序员使用一种像规划领域定义语言(Planning Domain Definition Language,PDDL)这样的语言来描述这个世界。PDDL 是用做智能规划问题描述与设计的标准定义语言,是一种声明性语言,就像 Datalog,允许你使用逻辑指定世界上真实的东西。但是,与标准逻辑编程不同的是,你还可以指定采取操作的后果。智能规划系统负责选择最佳的操作序列,以求最大化预期的回报,这也是由程序员指定的。

美国国家航空航天局 (NASA) 在无人航天器、自主漫游车、地面通讯站和空中交通工具上成功地使用了智能规划,该系统名为 ASPEN(Autmated Scheduling and Planning Environment)。

从围棋到定理证明

定理机器证明(Automated theorem proving,ATP)是人工智能领域的另一个领域,近年来的研究一直与此相关。定理机器证明目前是自动推理(Automated reasoning,简称 AR)体系中发展最好的部分,它的目的是为使用电子计算机程序来进行数学定理的证明。对于不同的数学逻辑,它能够推论出一个定理是正确的,还是不可证明的,或者错误的。

近年来,研究人员运用这项技术,使计算机在电脑游戏中击败了人类玩家,这一发展令人兴奋。

人工智能在最近几年广为人知的是,2016 年 3 月 8 日到 3 月 15 日在韩国首尔举行的五局三胜制围棋比赛,采中国围棋规则:黑方给白方的贴目为七目半,思考时间每方两小时,用完后各有三次一分钟读秒。结果,AlphaGo 以四胜一败击败了韩国职业九段棋士李世乭。围棋的对弈状态空间超级巨大,约为 2x10170 种变化。而我们的太阳大约含有的原子数是 1057 个,我们可观测的宇宙中的恒星数约为 1023 个,所有的恒星加起来的原子数约为 1080 个,由此可见围棋的变化量之大。面对这样的海量变化,真正的求解运算量计算机根本无法承担,至少是现阶段无法实现。 Alphago 另辟蹊径,采用了深度学习和蒙特卡洛搜索树的办法。

现在,有研究人员发表了论文 Monte Carlo Connection Prover(https://arxiv.org/abs/1611.05990),提出了一种处理定理机器证明的方法。现在说它完全解决了这个问题还为时尚早,但从迄今为止的结果来看,还是很有希望的。

逻辑法和聊天机器人

当前聊天机器人的实现有什么问题?如何使用逻辑法让聊天机器人变得更好?

有很多次,聊天机器人的创作者犯了明显的错误,这些都可以用现有工具来修复。例如,chatbot.fail 网站中提到的已解决的大多数问题都可以通过仔细的设计来解决。

目前,聊天机器人要作为用户界面,通常还有很长的路要走。但是,如果聊天机器人要实现它们的目标,就需要提供非凡的体验,而不是一个差强人意的体验。对我来说,这意味着智能化的显现。

一种看上去很聪明的方式,就是谨慎而明智地运用逻辑法。这方式来自于 20 世纪 60 年代的 SHRDLU 和“积木世界”。从那时起,这种做法就失宠了。尽管取得了早期的成功,但是后来,将这种方法推广到约束较少的环境的尝试却从来没有结出硕果。

试图增加这些工具的范围还会导致快速增长无法用现有工具解决的复杂性。

未来掌握在我们手中

时代在变,我们的方法和工具也得到了改进。我们是否应该重新审视逻辑方法?逻辑编程能让聊天机器人获得成功么?

我们需要找出答案。但如果我们没有找到能够让聊天机器人更智能的东西,那么,它们似乎不太可能达到我们期望的目标。

参考文章:

https://www.kdnuggets.com/2018/05/chatbots-succeed-need-logic.html

AI前线
紧跟前沿的AI技术社群

如果你喜欢这篇文章,或希望看到更多类似优质报道,记得给我留言和点赞哦!

登录查看更多
7

相关内容

Chatbot,聊天机器人。 chatbot是场交互革命,也是一个多技术融合的平台。上图给出了构建一个chatbot需要具备的组件,简单地说chatbot = NLU(Natural Language Understanding) + NLG(Natural Language Generation)。

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
专知会员服务
99+阅读 · 2020年3月19日
麻省理工学院MIT-ICLR2020《神经网络能推断出什么?》
专知会员服务
50+阅读 · 2020年2月19日
模型压缩究竟在做什么?我们真的需要模型压缩么?
专知会员服务
27+阅读 · 2020年1月16日
我是怎么走上推荐系统这条(不归)路的……
全球人工智能
11+阅读 · 2019年4月9日
从零开始用Python写一个聊天机器人(使用NLTK)
AI研习社
10+阅读 · 2018年12月27日
历经一个炒作周期,聊天机器人为什么还没成功?
网易智能菌
5+阅读 · 2018年6月13日
手把手教你用Python创建微信聊天机器人
新智元
4+阅读 · 2018年3月14日
为什么聊天机器人表现不尽如人意
AI前线
5+阅读 · 2018年1月28日
如何做个小冰那样成功的聊天机器人
七月在线实验室
5+阅读 · 2017年12月4日
想让机器人替你聊天?1小时手把手训练一个克隆版的你
Arxiv
3+阅读 · 2018年12月18日
Music Transformer
Arxiv
5+阅读 · 2018年12月12日
Arxiv
7+阅读 · 2018年5月23日
Arxiv
5+阅读 · 2018年4月22日
Arxiv
3+阅读 · 2018年4月18日
VIP会员
相关资讯
我是怎么走上推荐系统这条(不归)路的……
全球人工智能
11+阅读 · 2019年4月9日
从零开始用Python写一个聊天机器人(使用NLTK)
AI研习社
10+阅读 · 2018年12月27日
历经一个炒作周期,聊天机器人为什么还没成功?
网易智能菌
5+阅读 · 2018年6月13日
手把手教你用Python创建微信聊天机器人
新智元
4+阅读 · 2018年3月14日
为什么聊天机器人表现不尽如人意
AI前线
5+阅读 · 2018年1月28日
如何做个小冰那样成功的聊天机器人
七月在线实验室
5+阅读 · 2017年12月4日
想让机器人替你聊天?1小时手把手训练一个克隆版的你
相关论文
Arxiv
3+阅读 · 2018年12月18日
Music Transformer
Arxiv
5+阅读 · 2018年12月12日
Arxiv
7+阅读 · 2018年5月23日
Arxiv
5+阅读 · 2018年4月22日
Arxiv
3+阅读 · 2018年4月18日
Top
微信扫码咨询专知VIP会员