[关闭]
@sambodhi 2018-06-01T17:17:45.000000Z 字数 4130 阅读 1668

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

作者|Sambodhi
编辑|Vincent

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

逻辑法能让聊天机器人变得聪明吗?在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 Proverhttps://arxiv.org/abs/1611.05990),提出了一种处理定理机器证明的方法。现在说它完全解决了这个问题还为时尚早,但从迄今为止的结果来看,还是很有希望的。

逻辑法和聊天机器人

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

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

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

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

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

未来掌握在我们手中

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

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

参考文章If chatbots are to succeed, they need this
https://www.kdnuggets.com/2018/05/chatbots-succeed-need-logic.html

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注