官网链接

面向对象思想与人工智能

引言

人工智能系统,从概念的诞生起到现在(二十一世纪二十年代),已经有了一定的进步和发展,但是依然面对很多难以克服的困难。

  • 缺乏知识表达
    现在的人工智能系统,没有一个通用的方法来记录“知识”。人类的大脑里却可以存储各种各样的、不同类别的知识。

  • 缺乏普适性
    虽然当下的深度学习算法也具备这一类举一反三的学习能力,但是往往集中在一些真正非常相近的任务里。对人类来说,提取一大类问题里的本质抽象化则是一件非常容易的事情。

  • 信息孤岛
    目前,人类解决的AI问题犹如一个个分离的孤岛,比如说视觉是视觉,自然语言是自然语言,这些孤岛并没有被打通(这些人工智能系统不过是基于特定应用场景的专用算法)。

  • 没有信息沟通
    人类的文明是建立在沟通之上的,人与人相互沟通结成社会,社会基础上才有文明。目前的人工智能系统之间还没有沟通,因为各种不同的人工智能系统的信息表达方式不具备通用性。

如果用面向对象思想来对人工智能进行审视,我们会发现以上这些问题变得非常简单:

  • 知识表达
    知识,就是对于对象和其属性以及对象之间的关系的描述。例如:如果解释什么是船舶,我们会说明船舶的大小、制作材料、生产成本、价格、主要组成部分、驾驶方法、船舶与港口的关系等等。了解了船舶的这些属性,就具备了船舶的知识。

  • 普适性
    用面向对象思想来分析,举一反三就是寻找具有相同属性值的对象。例如:镇纸有很多种,有玉做的,有木雕的。但是有其通用属性:具有一定的重量,体积不能太大,底座平整。当人工智能系统要找一个东西做镇纸的时候,它知道任何一个具备这三种属性的东西,都可以作为镇纸。这就是举一反三的效果。

  • 信息统一处理
    在面向对象的世界里,对象具有各种类型的属性,例如西瓜有鲜艳的色彩,香甜的味道。这些信息虽然是通过人体不同的感觉器官获得,但都是对象的属性,存在于同一个对象上。不同种类的信息通过同一个对象实现了统一的处理。

  • 信息沟通
    人类的沟通方式是语言、文字、身体动作等。而在面向对象的世界里,所有的信息沟通都是传递对象的数据。

古代中国人认为“天圆地方”,他们还认识不到我们实际生活在一个巨大的岩石组成的球体之上。古希腊人生活在海边,他们发现从码头眺望归航的 帆船的时候,总是先看到桅杆的顶部,再看到帆,最后看到全船,因此他们猜测这个世界可能是个圆球。古希腊人埃拉托色尼甚至据此估算出了地球的直径。近代天文学发展起来后,人们开始争论是地球围绕太阳转,还是太阳围绕地球转。 事实上,人类对于世界的认识,就是来源于对于世界上每一个对象及其之间关系的认识。

按照面向对象的思想,世界是由无数个对象组成的。每个对象有自己的属性和状态,有的对象(例如动物)有自己的行为。各个对象之间存在因果、条件、关联等关系。 人工智能,既然是对这个世界进行研究和分析,也就是对世界上各个对象的分析的总和。因此从理论上讲,实现了对于每一个对象的分析,就可以实现人工智能。

本文的主题就是以面向对象思想来讨论人工智能系统的实现方案。

一 基本概念

人工智能的范围很广泛,包括图像识别,机器人,人脑-计算机接口等等,本文仅讨论人工智能中的逻辑思考。

逻辑思考,是主体(人或者人工智能系统)根据其对现实情况的了解和所掌握的知识,为了实现其目标而做出的逻辑分析过程。

“思考”由三个基本元素构成:

  • 目标。由思考者主体的动机和价值判断来决定。
  • 逻辑推理。实现目标的过程和方法
  • 对象集合(或者叫做知识)。为前两个元素提供依据。

我们知道,一万多年前生活在洞穴里的原始人类,虽然他们的知识(元素3)和现代人类相比显得极为缺乏,但是由于他们有独立的价值判断(元素1)和逻辑推理的能力(元素2),因此也是具有智能的。 对于动物而言,由于其逻辑推理能力严重不足,知识也极度缺乏,因此其智能水平极低,但也不是完全没有智能。

现在世界上的计算机系统,需要依靠人类来告知计算机程序的目标,并且由人类编写详细的实现过程(程序)来实现目标。计算机自己没有目标(元素1),也无法自己”思考“出实现目标的解决方案(元素2)。 因此虽然其具有强大的数据存储和计算能力(元素3),但是不能称为智能系统。

人工智能系统是以终身学习并且服务于人类为目标, “对象集合”和各种短期目标作为系统输入,自行“思考”出实现目标所使用的方法和过程的系统。

二 对象的属性和基本处理方法

2.1 对象的属性

对象的属性可以分为以下四种:基本属性,扩展属性,对象属性,行为属性。

2.1.1 基本属性
人类生活在三维空间和一维的时间里。人类通过人体的五种感觉(视觉,听觉,味觉,嗅觉,触觉)器官对客观世界进行观察。基于这些观察,人类对于世界上对象的属性,以及对象之间的关系有了基本的认识,我们称之为常识。

根据常识,自然界里实际存在的实体有以下这些基本属性(可扩展),这些属性不可解释:

数量 时间 距离 位置 方向 颜色 透明 亮度 形状 重量 温度 硬度 力量 味道(味觉) 气味

2.1.2 扩展属性
扩展属性,是由这些基本属性派生出来的(例如速度,就是单位时间内位置改变的距离)。而各种人类创造出来的抽象对象(例如组织、权力等),其属性也是基于这些具体物体的属性派生出来(例如组织的严密,权力的大小)。

2.1.3 关系属性
在现实世界里,对象的大部分“属性”实际上也是一种对象。例如一个人的职业,可以看做是人的职业属性,但是职业本身也是一个抽象对象。这些对象和主体对象有一定的关系,所以称为关系属性。

2.1.4 行为属性
有些对象具有一种特殊的属性,我们一般称之为对象的行为,例如:这个人在奔跑。对象的行为(动作)就是对象属性的变化。

2.2 对象的基本处理方法

对于对象的基本处理方法有以下几种(可扩展):

  • 创建对象
  • 删除对象
  • 修改对象属性
  • 修改与其他对象的关系
  • 执行对象的动作
  • 获取对象的属性
  • 获取对象之间的关系
  • 分解对象
  • 与其他对象组合为新的对象
  • 影响对象(假痴不癫,声东击西,空城计,苦肉计,瞒天过海,暗度陈仓,打草惊蛇,欲擒故纵,抛砖引玉)

对于对象的处理,有多种基本对象处理方法。基本对象处理方法就像是锤子,剪刀等工具,然后根据目标来决定使用哪些工具,按照什么顺序来使用。而对于对象集合的处理,要根据这些对象之间的关系来选择合适的处理方法。

三 对象之间的关系

对象之间的关系,以及可以采用的处理方法,有以下这些种类(可扩展):

一. 集合关系

多个对象一起构成一个对象集合。集合中的对象,按照某种组织方式形成集合。
处理方法:
计算集合的对象数量
计算子集的对象数量
用排除法找出对象集合中符合条件的对象
根据对象属性,划分出更多子集合
为特定对象设置属性,用于区分和标识对象
组成集合
举例:擒贼擒王,浑水摸鱼

二. 因果关系

有了对象1,才产生对象2。

处理方法:
产生对象1,用来产生对象2
阻止对象1的产生,可以让对象2不产生
推测。由对象1,推测有可能存在对象2。或者由对象2,推测可能存在对象1

三. 连接关系

两个对象通过某个对象连接在一起。

处理方法:
建立连接
断开连接
增强连接/减少连接
举例:猜想,联想。由对象1联想到对象2。

四. 包含关系

对象1是对象2的组成部分。 对象1在对象2内的起到某种作用。

处理方法:
改变对象1,以改变对象2
联想。从对象1联想到对象2,或者反过来
举例:偷梁换柱,李代桃僵

五. 利害关系

对象1是对象2的利益提供者,或者损害提供者。或者叫做敌人和朋友。

处理方法:
如果对象1是利益提供者,损害对象1将会间接损害对象2,支持对象1就会间接支持对象2。
如果对象1是损害提供者,损害对象1将会间支持对象2,支持对象1就会间接损害对象2。
举例:围魏救赵,釜底抽薪,调虎离山,上屋抽梯,以逸待劳,借刀杀人,反客为主

六. 干涉关系

对象1会影响对象2。即使对象1并不真实存在。

处理方法:

利用对象1来影响对象2
改变对象1,以改变对对象2的影响
让对象2离开对象1的影响范围,以消除来自对象1的影响
举例:走为上,趁火打劫,反间计,笑里藏刀,美人计,关门捉贼,隔案观火,借尸还魂,无中生有,树上开花,望梅止渴

七. 条件关系

对象1是对象2的条件之一。

处理方法:

破坏对象1会间接破坏对象2。
创建对象1有助于创建对象2。
举例:连环计

八. 顺序关系

根据某种排序规则,对象1在对象2的前面或者后面。
处理方法:

改变对象1或者对象2的与排序相关的属性,可以改变顺序
根据某种属性,对若干对象进行排序

九. 继承关系

对象1是对象2的细分。例如卡车之于机动车。
处理方法:

对象1拥有对象2的属性

十. 相似关系

对象1与对象2的某些属性相同。
处理方法:

如果对象1的某属性与对象2相同,可以通过对象2的属性值,得到对象1的属性值。
用对象1来替代对象2,在得到所需要的属性或者功能的同时,降低成本或者减少时间。
举例:曹冲称象,金蝉脱壳,指桑骂槐

十一. 临近关系

对象1和对象2的距离相近,或者关系密切

处理方法:

如果对象1和对象2是临近关系,可以通过影响对象1来间接影响对象2。
可以表面上对对象1产生行动,实际的行动目标是对象2。
举例:假途伐虢,顺手牵羊,远交近攻

四 目标

目标,就是对于目标对象进行一种或者多种处理。这里所说的“处理”包括以下几种类型(可扩展):

4.1 获取对象的数据

4.1.1 获取目标对象的目标属性
4.1.2 获取目标对象与其他对象的关系

4.2 修改对象数据

4.2.1 修改目标对象的目标属性
4.2.2 修改目标对象与其他对象的关系

4.3 选择对象

4.3.1 根据条件,获取目标对象的数量
4.3.2 根据条件,在目标对象集合中选择对象

五 如何寻找解决方案

实际生活中,人们找到解决方案的方法有以下几种:

  • 学习
    学习,就是由其他人直接告知解决方案。

  • 研究分析
    自己研究分析,就是在大脑中搜索各种已知的解决方案,来找到合适的解决方法。或者通过观察和学习来发现目标对象的更多属性,以及对象之间的逻辑关系,或者更多未曾发现的相关对象。

  • 灵感
    灵感可以分为两种:一种灵感实际上是人类大脑的一种特殊的运作方室。是由于来自外界的触发或者大脑内部的特殊活动(例如梦境)而导致记忆的“随机”提取或者组合,我们对其原理不甚清楚。但是有一点是确定的,那就是这些灵感信息来自于大脑内部。另外一种所谓的“灵感”,则是外界的输入而引发的联想,例如作家经常提到的“深入生活”,实际上属于联想学习的范畴。

综上所述,寻找解决方案的方法可以分为两种:1 从外部输入。2 从系统内部数据库中寻找。

从外部输入,对于计算机系统来说,很容易实现。对于人工智能系统而言,需要一种算法来实现从内部数据库中“寻找”问题的解决方案。这个算法,就是人工智能逻辑思维系统的核心。

要实现目标,就需要采用一种或者多种对象的基本处理方法。这一步,是实现人工智能最关键的也是最难的地方。也就是说,我们已知目标对象的属性,以及目标对象(群)与其他相关对象的逻辑关系, 并且已知对象的各种基本处理方法,那么如何“自动”选择有效的处理方法和步骤呢?

5.1 思考的本质

我们先分析一下人类的思考过程。例如:当一个人在房间里想要开灯的时候,一般是会寻找灯的开关,而不是去寻找水龙头。为什么呢? 因为人们知道灯的开关与电灯是否点亮有逻辑上的因果关系,而水龙头与灯没有关系。而且人们在解决问题的时候,大脑会自动选择最常使用的解决方案。

但是,如果打开了开关,灯却不亮,或者一时找不到开关,人们往往不知所措。这种不知所措,说明人类大脑在从‘常用数据库’里寻找方法却找不到,或者方法不适用现实情况。此时,人们一般通过进一步的观察和研究来找到解决方案。

用开灯的例子来说明,人们如果发现即使打开开关,灯也不亮,那么人们可能会检查其他的电灯是否可以点亮,如果可以,那么可能是这个灯具出了故障。这个过程的本质就是增加和更新相关对象数据的过程,为以后的逻辑推理提供支持。

在实际生活中,人们遇到问题的时候会倾向于选择已知的解决方案。但在面临复杂问题的时候,如果已知的方案解决不了问题,即使是一个生活经验丰富的成年人,也未必会在短时间内找到合适的方法。例如曹冲称象的故事。 而当别人给出解决方案的时候,人们往往会暗自感叹:“这么简单的方法,我怎么就没有想到呢?”

也就是说,人们往往很容易理解已知的解决方案,但是找到新的解决方案,却可能并不容易。而且,同样的事情,有些人做起来很容易,而对于另外一些人则很难。有时候,人们会突然爆发“灵感”,想到了某个解决方案。 以曹冲称象为例,曹冲是如何想到那个巧妙方法的呢?

问题的关键在于“想到”方案,而不是理解方案。也就是找到解决方案与问题之间的逻辑关联性。曹冲也许由于某种原因,想到了大象与一堆石头同样可以让船只下沉,这成为解决问题的关键所在。

一个有趣的而且相反的例子是玻璃的发现。那是由于偶然的原因,人们发现,在沙滩上燃起篝火,在灰烬中会出现一种透明的东西,那就是玻璃。一般情况下,人们很难从沙子联系到透明的东西,两者之间不具备逻辑相关性,因此,玻璃是偶然发现的,而不是人们主动发明的。换句话说,人工智能系统是不可能发明玻璃的。

人类在思考的时候,实际上是在记忆中搜索问题的解决方案。如果经常处理某些问题,则很容易从记忆中搜索出解决方案。由于搜索速度很快,人类会感觉到几乎不用花时间。对于不常见的问题,则需要花费较长时间来搜索。对于从来没有遇到过的问题,则需要利用已知的方案来逐个组合、推理和判断。由于组合推理过程需要大量的时间,因此一时间内,人类可能想不到解决方案。

因此,思考的过程,就是搜索和尝试组合多种基本对象处理方法来找到问题的解决方案。

5.2 目标模型与解决方案模型

人工智能系统采用的是模式匹配的方法。也就是根据目标的模型,选择解决方案模型。因此,定义目标模型和解决方案模型,并且将实际问题匹配为目标模型,即可以找到解决方案。

改变对象的属性

假设我们有这样一个目标:让一部手机不再接收和发送无线信号。让我们来分析一下有哪些解决方案可以实现这个目标。

  • 调用对象的方法,该方法可以改变对象的属性
    例子:按手机的关机键将手机关机,可以让手机不再接受信号。
  • 分解目标对象,以改变对象的属性
    例子:因为手机的电池是手机可以工作的必要条件,那么卸掉手机电池,可以让手机不再接受信号。
  • 将目标对象与其他相关对象做关联,以改变对象的属性
    例子:因为金属盒子可以屏蔽无线信号,所以将手机放进一个铁盒子里,可以让手机不再接受信号。
  • 寻找(创建)相关对象,调用该对象的方法,该方法可以改变目标对象的属性
    例子:因为手机的正常工作,需要每一个模块保持正常工作。拿一个榔头,把手机砸碎,可以让手机不再接受信号。
  • 寻找(创建)相关对象,改变该对象的相关属性,以改变目标对象的属性
    例子:因为手机的无线信号来自于基站。关闭周边地区所有的基站,可以让手机不再接受信号。
获取对象的属性

假设我们有这样一个目标:获取一部手机的通话记录。让我们来分析一下有哪些解决方案可以实现这个目标。

  • 调用对象的方法,该方法可以获取对象的属性
    例子:打开手机提供的通信录软件,可以查看手机的通话记录。
  • 寻找(创建)相关对象,调用该对象的方法,以获取目标对象的属性
    例子:因为电信运营商会保留手机用户的通话记录。到电信运营商的营业厅找相关工作人员,可以查看手机的通话记录。
  • 寻找(创建)相关对象,获取该对象与目标对象相同的属性,以获取目标对象的属性
    例子:有的手机会将通话记录备份道网盘上。登录网盘等备份了手机通话记录的设备,可以查看手机的通话记录。
  • 寻找(创建)相关对象,根据相关对象的相关属性,以获取目标对象的属性
    例子:与其他电话用户通话,对方的通话记录中会有自己的通话记录。查看全世界所有其它手机和电话的通话记录,可以反向查看这部手机的通话记录。
选择(若干个)对象

假设我们有这样一个目标:从商店的多个手机型号中选择,购买其中一部。让我们来分析一下有哪些解决方案可以实现这个目标。
根据选择的依据(对象的属性),对目标对象集合按照属性值进行排序。选择最前面的(若干个)对象
例子:如果选择最便宜的手机,那么查看所有手机的价格表,选择购买最便宜的一部。

六 实际应用

本文以上的部分,说明了用面向对象思想来分析逻辑思考的实现原理。下面我们用几个实际的应用,来分析一下如何应用这个思想来解决生活中具体的问题。通过对几个典型应用的分析,我们会发现,用面向对象思想来实现通用人工智能的逻辑思考是可能的。

6.1 自然语言处理

人工智能的发展比较缓慢,有一个重要原因是其门槛很高。可以说人类到目前为止,还没有踏入通用人工智能的门槛。人工智能系统如果要解决真实世界的问题,有一个前提,就是掌握大量的生活常识。人类是通过身体对世界的观察和体验(包括游戏和玩耍),来了解这个世界。除此以外,就是通过学习来认识世界。而学习,则必须通过自然语言,通过文字或者对话来学习。而人工智能系统还没有足够发达的感知系统(传感器)来了解和认识世界,那么认识世界和学习知识有一个必要的条件:学会人类的自然语言。但是,自然语言处理本身,就是一个难度极高的人工智能系统。

由此出现了困境:人工智能系统必须掌握自然语言才能学习知识,从而发展为具有实用价值的智能系统。而掌握自然语言本身又依赖于人工智能系统。

打破这一困境的办法,就是用人工的方式初始化智能系统的常识数据库。可以想象,一旦人工智能系统具有阅读和理解人类的各类书籍,那么其知识数据库和处理复杂问题的能力将迅速提高。

用面向对象思想来分析自然语言,我们会发现:所有的句子,都是描述对象的状态和对象之间的关系。解析自然语言,就是将自然语言转化为对于对象的描述。要正确的解析,不仅要判断语法结构,还要有足够的数据作为支撑。

自然语言的一个特点是简略。
例如:

  • 我是教师。
  • 我是女人。

这两句话虽然语法结构相同,但是从面向对象角度分析,这两句话描述了对象“我”的两个不同的属性:职业和性别。完整的句子应该是:我的职业是教师。我的性别是女性。因此,要正确理解这句话的意思,仅了解语法结构是不够的,必须要根据属性值(教师)找到对应的属性(职业)。用伪代码表示就是:

  • 对象[‘我’].属性[‘职业’]=‘教师’
  • 对象[‘我’].属性[‘性别’]=‘女性’

显然,如果对象的属性数据库中没有“职业”,或者职业属性中没有“教师”,系统将无法正确理解“我是教师”的含义。

例如:我是红色的。

这句话就会让人费解。因为我们知道,人这个对象的属性中,没有哪一个属性的值可能是“红色”。

在现代汉语中,典型的汉语语法结构就是:主谓宾定状补。分析下面这个复杂一些的句子:柔和的灯光下,年轻的母亲轻轻地拍打着熟睡中的孩子。

用面向对象思想分析,主语(母亲)是对象的名称,谓语(拍打)是对象的动作,宾语(孩子)是对象动作的目标对象。定语(年轻的,熟睡中的)用来描述对象的属性。状语(轻轻地)用来描述对象动作的属性。句子的其他的部分(柔和的灯光下),用于描述与主语对象相关的其他对象(环境、氛围、情绪)等。

用伪代码来表示这个句子的意思:

对象[‘母亲’].属性[‘年龄’] = ‘年轻’
对象[‘母亲’].动作[‘名称’] = ‘拍打’
对象[‘母亲’].动作[‘强度’] = ‘轻轻地’
对象[‘母亲’].动作[‘目标’] = ‘孩子’
对象[‘母亲’].动作[‘目标’].属性[‘状态’] = ‘熟睡中’
对象[‘环境’].光线[‘强度’] = ‘柔和’

  • 另外一个例子,翻译下面这个句子: Beckham shoot

Shoot在英语里有多个含义:开枪,发射,投篮,射门。要正确的理解shoot这个行为,就要确定主语所描述的对象。我们知道Beckham是英国著名的足球运动员,那么这句话应该翻译为:贝克汉姆射门。而如果这里的Beckham是一个篮球运动员,则应该翻译为:贝克汉姆投篮

6.2 博弈

自人工智能的概念诞生起,人工智能系统与人类下棋,一直是发展人工智能系统的的重要方向和检验人工智能系统“能力”的方法。从早期的IBM生产的“深蓝”机器人下国际象棋,到最近的AlphaGo的围棋,人类一直在进行探索。并且在深度学习算法的应用下取得了巨大的进步。那么,如何用面向对象思想来实现博弈呢?

每一种棋类比赛,都具有独特的规则和模式。用面向对象思想来理解,也就是对象之间的关系,以及对象的行为模式。而赢得棋类比赛,就是满足某些对象的特定条件。

那么,实现通用的棋类博弈智能程序,则须按照如下的思路来实现:

  • 定义棋类世界的对象
    棋类世界与现实世界不同(没有引力,距离等基本对象),有其独特的基本属性。例如,一般都是二维的世界。世界里只有有限的若干对象(棋子和棋盘)。每个对象有独特的属性和的行为规范。 对围棋来说,棋子可以增加,但无法移动,每个棋子有“气”的属性。对于国际象棋,棋子无法增加,但可以移动,每种棋子有移动和杀死对方棋子的规则(行为的属性)。

  • 根据对象的属性和对象之间的关系(棋子在棋盘上的布局)的不同,有相应的处理方法
    在本文中讨论过的对象关系与处理方法,也同样适用于棋类世界。经常下棋的人,会有一些进攻的“套路”,这些方法就是大脑中保存的的棋子之间关系的处理方法。在围棋中,这些方法称为“定式”,或者“手筋”。智能系统通过不断的下棋,就可以 学习(保存到数据库中)这些“套路”,应用到以后的场景中。

  • 形势判断
    对于国际象棋,基本不需要形势判断。因为一开始的时候,对弈双方处于均势。但是对于围棋来说,形势判断非常重要也比较困难。这是围棋与其他棋类的重要区别,也是围棋取胜的重要环节。简单来说,如果每一步棋都取得当前形势下的最大“利益”, 那么结果一定是赢得这一局棋。不管判断形势的方法如何,总是基于对象(棋子、棋盘)之间的关系做出判断。这就是面向对象思维。

  • 胜负判断
    国际象棋的胜负判断非常简单。但是对于围棋,胜负判断基本等于形势判断。只是随着棋子的增加,形势判断越来越容易。

6.3 智能编程

当人工智能系统拥有自然语言处理能力以后,几乎可以做所有人类能做的事情。其中一个就是智能编程。

计算机程序,是逻辑性很强的语言,非常适合擅长逻辑思考的智能系统。但是到目前为止,没有任何一个系统可以实现自动编程。

了解计算机编程的人都知道,要想编写程序,首选需要知道详细而明确的需求。一般来说,人们是通过阅读文档和谈话交流等方式来了解需求。另外,编写程序往往不是从零开始,绝大部分工作是维护现在的代码,这就要求程序员了解当前代码的结构和功能。

不论程序员从哪里获得的信息来了解需求,有一点可以确定的是,这些需求不是绝对的详细和完整,一定有一些需求没有明确说明,因为程序员会根据常识来补充那些不重要的需求。这种不完整性,不仅体现在程序需求上,而是体现在人类信息交流的全部。

例如:如果你的太太告诉你,请把这袋垃圾扔掉。她一定不会告诉你,你扔垃圾的时候,采用多大的力度,手臂的角度,行走的速度,来回的路径等等,因为这些信息不重要。人们会根据常识来习惯来处理这些细枝末节。

对于程序员来说,一份程序的需求文档也往往不是详细和完备的,有一些信息需要程序员根据经验来补充。而对于特定的系统,对系统不熟悉的程序员甚至无法理解系统的需求说明。他们往往需要先对现有的系统充分理解后,才能胜任工作。

智能编程也面临同样的问题:必须有足够的基础知识,才能正确的理解程序的需求,并且自行补充需求中未明确说明的部分。这些就是系统默认设置(对于人类而言,就是每个人的行为特征)。

举个例子,假设有这样一个简单的程序需求:每隔十分钟扫描目录下的图片文件,如果有新的文件,则将其利用HTTP协议发送给服务器,服务器的地址、用户名和密码在配置文件中读取。

智能编程系统如果能够实现这个需求,必须具备下列基础知识:

  • 理解什么是每隔十分钟

  • 知道什么是文件、目录,理解“扫描”目录的意思。

  • 理解什么是图片文件。

  • 知道如何判断什么新文件。
    这个需求并没有详细说明如何判断本地的图片是新文件。这在实际生活中是常见的现象。因为撰写文档的人,假设阅读文档的人知道“新”的含义。在这里,“新”的意思就是图片文件的最新更新时间或者创建时间晚于上次上传时间,如果是第一次 上传,则所有的文件都是“新”的。

  • 理解什么是HTTP。

  • 知道如何读取配置文件的内容。

  • 知道如何利用用户名和密码登陆HTTP服务器。
    如此之外,一个有经验的程序员还会考虑这些问题:

  • 程序是否作为一个服务跟随系统启动而启动?

  • 启动时间是什么?

  • 如果HTTP文件上传超时,是否重试?重试几次?

  • 上传的图片文件是否有大小限制?如果有,是多少?

  • 是否需要写日志文件?日志的内容是什么?如何清除日志文件?

由此可见,即使是一个很小的程序,也经常会出现需求描述不详细的情况。在实际生活中,大部分的没有详细说明的需求都是程序员根据经验自行补充完成。要实现自动编程,需求文档应该尽可能的详尽,而智能系统则必须具备相关的知识。

此外,智能编程系统需要自行分解任务,并设定任务的执行顺序。例如:每隔十分钟扫描目录下的图片文件。对于这个需求,在程序员的大脑中,会自动转化为若干个细分的任务:扫描目录下的文件,找出图片文件,定期执行。 智能编程系统在分析这个需求的时候,则需要准确无误的“理解”每个关键词:扫描,目录,图片,文件。而一旦理解了这些对象和行为的相关对象(输入输出数据),那么下一步就是调用编程语言的内建函数或者现有代码里的函数来实现。

总结来说,按照以下几个步骤实现自动编程:

  • 分析需求文档,将需求解析为一个顺序执行的任务列表(创建若干个对象)
  • 确定每一个任务的输入参数和输出参数(创建对象的行为,确定数据流的传递方向)
  • 根据现有的对象和方法(包括编程语言内建的函数和现有代码的函数)实现每个任务(调用对象的行为)

七 人工智能系统的人性化设计

有的人对于人工智能持怀疑态度,认为其永远也不会超过人类,因为机器不具有“人性”。在我看来,人体也可以看做是由蛋白质组成的一部极为精密的机器。人工智能系统可以实现大部分人性化的功能。

情感

情感是人类在进化过程中产生的对于(内部或者外部)事件对于自身的影响,而产生的固化的反应,其作用是更好的保护人类的生存。例如恐惧,如果人类对于危险的事物没有恐惧感,就不会远离危险, 从而可能造成对自己的损害。对于人体来说,情绪可以帮助身体分泌一些激素,以调节人体的功能,其目标就是保护人类。人工智能系统完全可以模拟人类的情感,以更加合理的分配资源给自己的不同部分。

性格

人的性格,对于人工智能系统来说就是一系列的系统参数。例如有的人表达方式比较直率,有的人比较委婉。这在系统里表现为用词的选择范围。有的人性格急躁,有的人不慌不忙。系统的实现就是等待对方应答的超时时间的不同。

意志

有的人意志坚强,意味着对于实现目标过程中遇到的困难和对自身的损耗,有强大的承受能力。意志薄弱,意味着容易放弃努力。人类尚未完全明白人类个体之间的这种差异来自哪里。对于人工智能来说, 这就是针对困难和失败所采取的策略,是放弃还是继续尝试。这是一个系统参数,可以根据具体场景做出调节。

灵感

对于大脑突然闪现的灵感,到底如何产生的,人类还没有定论。但有一点是确信的,就是这种灵感非常的不可靠。人工智能系统可以通过随机扫描对象的方式,寻找与目标具有相关性的对象, 并从中得到“灵感”。

联想

人类的联想能力很强,其本质就是从记忆中扫描具有相关性的对象。例如从夕阳联想到橘子,因为颜色与形状类似。这对于计算机来说,非常容易实现。

直觉

女人比较相信直觉,那是因为女人的观察能力比较强。这种直觉来源于对事物细微处的观察。大脑暂时无法做出符合逻辑的分析。而直觉也经常是错误的,因为基于直觉的判断, 往往缺乏足够的证据支持。对于人工智能来说,直觉就是一种可信度较低的判断。

经验

根据历史数据,按照出现频率的优先级选择策略。人工智能可以实现这个功能。

创造力

所谓创造力,就是修改现有对象或者创建新的对象,或者改变现有对象之间的关系,以实现目标。人工智能系统完全可以实现创造,唯一存在的疑问在于:创造的驱动力来自哪里? 人类所有的行为只有一个驱动力:生存。那么只要我们给人工智能系统设置一个目标:不断完善自己,改善这个世界。

社会性

与其他对象沟通的目标和方式

目标

人类的目标是生存,这是DNA决定的。人工智能系统的目标是遵守人类的命令的前提下,不断完善自己,这是代码决定的。代码就是人工智能的DNA。

进化

人类的进化是自然产生的,并且由自然界选择和淘汰。而人工智能系统的进化,则是由人工智能系统修改自己的代码。

八 多余的话

谈到人工智能,人们往往会谈及一些相关的话题。这些话题虽然与本文的核心内容无关,但是我想在这里多说几句。

8.1 人工智能与自我意识

最近几十年,关于科幻题材的电影层出不穷,引起了很多人的兴趣。其中一个重要的题材就是具有高度智能的人工智能机器人,甚至其外形也与人类高度相似。有人提出疑问,具有高度智能的机器人,具有自我意识吗?

就我个人的人生体验,我非常清晰的记得,在我小时候的某一天,我和我父亲走在一条小路上,我在一瞬间突然产生了自我意识,如同突然“开窍”了一样。那种感觉非常强烈,我突然意识到:我是一个独立的个体,我走在路上, 我旁边的这个人是我的父亲,我可以自主决定我的行为。这个记忆非常的清晰,也非常震撼,直到几十年后的今天依然清晰的记得。我与其他人讨论过这个话题,尚未发现有人有类似的体验。他们的自我意识似乎是逐渐 产生的,没有那种瞬间“开窍”的体验。

我认为人体的自我意识,是大脑里的一个功能区域,它让人类分清自己与其他物体是不同的个体。人类的行为是由自己的思想决定的。而人工智能系统没有人类的大脑结构,因此讨论人工智能的自我意识没有意义。 我们需要关心的是,人工智能系统需要清楚的知道,自己是谁,自己与这个世界是什么关系。

8.2 人工智能的危险性

人工智能危险吗?机器人会不会有一天“觉醒”了,反抗人类的统治而毁灭这个世界?这也是很多人担忧的一个问题。我的理解是,不会。

人类反抗的意义,就是保护自己的生存权。那么,人类为什么会反抗?其实人类自己很难回答这个问题,因为这种反抗的思想是与生俱来的,也就是说在人类的DNA中,进化过程中产生的。用计算机行业术语来说,就是HARD CODE的。 也就是说,如果我们不在人工智能系统中加上“自卫”,“生存下去”的代码,那么机器人就不会产生反抗意识。虽然智能机器人可以完成高度复杂的工作,但是人力发明它的目的永远都是为人类服务。而且不可能做出它无法实现的功能。 例如,人类没有翅膀,因此永远不能飞行。

但是,不等于人工智能系统没有危险。最危险的是人类自己,如果有疯狂的科学家蓄意制造毁灭人类的智能机器人,那么一定程度的危险还是有的。只不过,这种危险存在于任何一种人造设备当中。

8.3 “超人工智能”

人工智能领域有一种分类方法,将人工智能的发达程度分为三个阶段:弱人工智能,强人工智能,超人工智能。弱人工智能就是仅具备人类智能的部分能力,目前所有的人工智能系统最多智能算是弱人工智能。

强人工智能,就是具备与人类完全相同的能力。而超人工智能,则是人们想象中的,能够解决宇宙中所有问题的超级智能。

我曾经相信超人工智能是可以实现的。但是,现在的我认为,超人工智能是不可能实现的。举个简单的例子:请超人工智能列出围棋的所有可能的下法。

有人可能会说,也许有一天超人工智能可以处理规模极大的数据,列举出围棋的全部排列不是不可能。好吧,那么我把围棋的棋盘扩大为9999 X 9999个方格,或者更大,它还能做到吗?

任何系统,都有其能力的边界,有它无法完成的东西。从这个角度看,超人工智能是不可能实现的。

8.4 人工智能的发展展望

乐观的估计,人工智能系统将代替人类绝大部分的工作。这个道理很简单,如果你是老板,你会购买一个24小时工作的机器人,其效率是普通人的一百倍,还是雇佣一百个普通人呢?假如这个机器人的 价格比普通人的一个月工资还要低?

有人担心机器人会让很多人失业,导致社会混乱。其实完全不必担心这个问题。因为机器人的大量应用,会让各种商品的价格大幅度下降。国家完全可以采用发放基本生活费的方式来解决社会上99%人口 的生活问题。

8.5 人工智能的局限

虽然人工智能非常强大,在很多方面超过人类的能力,甚至可以做到很多人类无法做到的事情。但是,与人类相比,人工智能也有它的局限性,例如同理心。

人体不仅仅是一个可以思考的机器,还是一个生命体,有繁殖的欲望、荷尔蒙和爱情;人体需要食物为身体提供能量,就需要消化和排泄系统;需要氧气来提供细胞的能量,就需要呼吸系统。

人工智能无需繁殖,自然也不需要有为了繁殖而准备的一套系统(至少暂时是这样),同样也不需要消化系统、呼吸系统、排泄系统,因此也无需相关的传感系统。机器人是不会知道什么“气喘吁吁”的, 也不可能有“大汗淋漓”的感受,它能感知的应该是“电量不足”。

作者:胡健
电子邮件:hujian.bpmf@live.com
最后更新日期:2020年 11月 9日

一种通用强人工智能系统的实现相关推荐

  1. Michael I. Jordan联合UC伯克利13位重量级学者:下一代人工智能系统的4大趋势和9大研究课题

    Michael I. Jordan 简介: LDA作者,机器学习泰斗,美国科学院/工程院/艺术科学院三院院士,ACM/AAAI Fellow,认知科学最高奖Rumelhart Prize得主,美国人工 ...

  2. 破解人工智能系统的四种攻击方法!

    来源:未来科技前沿 没有人喜欢早上起床,但现在人工智能驱动的算法可以设置我们的闹钟.管理我们家中的温度设置以及选择适合我们心情的播放列表,贪睡按钮的使用越来越少.人工智能安全辅助系统使我们的车辆更安全 ...

  3. 我们为什么不能只相信建立在深度学习基础上的人工智能系统

    来源:简书 本文摘自: https://www.jianshu.com/p/55e1abcd896d Gary Marcus介绍了如何实现通用智能以及为什么通用智能可能会让机器更安全. 加里•马库斯( ...

  4. 哪个人工智能系统使用了神经网络算法

    人工智能的应用领域有哪些? 人工智能(Artificial Intelligence) ,英文缩写为AI.它是研究.开发用于模拟.延伸和扩展人的智能的理论.方法.技术及应用系统的一门新的技术科学. 人 ...

  5. 工业人工智能系统框架、关键技术、典型应用与发展趋势

    来源:原文刊载于<机床与液压>2022年5月  作者:唐露新 张儒锋 姜德志 林建文 周书兴 近年来,智能制造是很多工业发达国家积极推进和重点发展的领域,美国.欧洲和日本等都将目光转向人工 ...

  6. Yann LeCun最新访谈:能量模型是通向自主人工智能系统的起点

    来源:ZDNet 编译:钱磊 编辑:陈彩娴 继自监督学习之后,Yann LeCun 在接受 ZDNet 的最新访谈中又着重探讨了他在几年前曾大篇幅推崇的概念:「能量模型」(energy-based m ...

  7. AI System 人工智能系统 TVM深度学习编译器 DSL IR优化 计算图 编译 优化 内存内核调度优化 DAG 图优化 DFS TaiChi 函数注册机 Registry

    DSL 领域专用语言 TVM深度学习编译器 AI System 人工智能系统 参考项目 TaiChi 三维动画渲染物理仿真引擎DSL TVM 深度学习DSL 密集计算DSL LLVM 模块化编译器 编 ...

  8. Radiology:人工智能系统脑MRI鉴别诊断精度接近神经放射科医生水平

    摘要       背景:虽然人工智能(AI)在放射学的许多方面都显示出很好的前景,但在脑MRI中使用人工智能来进行罕见和常见疾病的鉴别诊断(differential diagnoses)尚未得到证明. ...

  9. 启动2015世界人工智能系统智商排名,检测人工智能是否超越人类

    2014年科学院,北交大的刘锋,石勇团队发表论文提出标准AI智商,建立了标准智能模型,并在此基础上建立"互联网标准AI智商测试量表".根据这一研究成果.2014年6月对世界范围的搜 ...

最新文章

  1. android ble mesh,Android 蓝牙Mesh组网代码详解
  2. 迈入幸福婚姻殿堂的星座女
  3. ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
  4. 牛逼!Docker遇到Intellij IDEA,再次解放了生产力~
  5. 数塔问题和最长上升子序列问题
  6. vue切换菜单时不需要页面刷新_antd vue 刷新保留当前页面路由,保留选中菜单,保留menu选中操作...
  7. mysql 视图 速度慢_mysql 视图查询速度慢
  8. Android kernel源码下载与编译
  9. [RK3399][Android7.1] 调试笔记 --- 播放音乐没有声音
  10. 【解决方案 六】---在VS2015里使用ILDasm
  11. [单片机框架][bsp层][AT32F415][bsp_gpio] GPIO配置和使用
  12. C++入门经典(第三版Ivor Horton著 ) 第一章习题答案
  13. 使用Hutool生成多个excel文件合并成zip压缩包下载
  14. 世界节约水资源日PPT模板
  15. python数据分析之《太平洋汽车》点评数据及论坛文本分析
  16. 最新 在线下载谷歌play apk 地址
  17. 知识付费小程序源码可开激励广告流量主+虚拟资源变现+附带视频教程
  18. 记录微星gl63的ubuntu 18.04重装rtl8821ce驱动,重获wifi
  19. 第十一期 U-Boot介绍《路由器就是开发板》
  20. 高校,微软未来的主战场--有感于DreamSpark的试用

热门文章

  1. 外媒称字节跳动将开发智能手机 官方不予置评
  2. ipados 蓝牙 android,iPadOS13.4如何连接蓝牙鼠标 iPadOS13.4蓝牙鼠标连接使用教程
  3. 【报告分享】2020美好城市指数:短视频与城市繁荣关系白皮书(附下载)
  4. 一些我推荐的和想上的网络课程(Coursera, edX, Udacity,MIT OCW)
  5. 小程序如何显示群名称?
  6. 偷盗钻石(Diamond)
  7. subprocess.Popen(执行命令)
  8. mysql limit 丢数据_产品操作MySQL第6篇 – 数据过滤-LIMIT子句
  9. 机械臂操作运动传送带上的物体
  10. 【AI】Java+Fileupload+JSTL+Face++实现人脸识别系统