第一个人工智能程序
最早成功的人工智能程序是年由后来的牛津大学编程研究小组主任克里斯托弗·斯特拉奇编写的。斯特拉奇的跳棋(draughts)程序在英国曼彻斯特大学的费兰蒂marki计算机上运行。到年夏天,这个程序可以以合理的速度玩一个完整的跳棋游戏。
关于机器学习最早的成功演示的信息发表在年。剑桥大学的安东尼·奥廷格(AnthonyOettinger)在EDSAC电脑上编写的《购物者》(Shopper)。购物者的模拟世界是一个由八家商店组成的购物中心。当指示购物者购买一件商品时,购物者会搜索它,随机逛商店直到找到该商品。在搜索时,购物者会记住所访问的每个商店中的一些商品(就像人类购物者一样)。下一次购物者被送出同一个项目,或其他一些项目,它已经找到,它会去正确的商店马上。这种简单的学习形式,正如导言部分所指出的,什么是智力?被称为死记硬背。
在美国运行的第一个人工智能程序也是一个跳棋程序,由亚瑟·塞缪尔于年为ibm的原型编写。塞缪尔接手了斯特拉奇跳棋计划的要点,并在数年的时间里大大延长了它。年,他增加了一些功能,使该计划能够从经验中学习。塞缪尔包括了死记硬背和泛化的机制,这些改进最终使他的程序在年赢得了一场对前康涅狄格跳棋冠军的比赛。
进化计算
塞缪尔的跳棋程序也是著名的进化计算的第一个努力之一(他的程序“进化”是将一个修改过的副本与当前最好的程序版本进行比较,胜利者成为新的标准。)进化计算通常涉及使用某种自动方法来生成和评估一个程序的连续“代”,直到进化出一个高度熟练的解决方案。
进化计算的主要支持者johnholland也为ibm计算机的原型编写了测试软件。特别是,他帮助设计了一种神经网络“虚拟”老鼠,可以训练它在迷宫中导航。这项工作使Holland确信了自下而上方法的有效性。在继续为IBM咨询的同时,霍兰德于年来到密歇根大学攻读数学博士学位。然而,他很快就转向了一个新的计算机和信息处理跨学科项目(后来被称为通信科学),该项目由ENIAC及其继任者EDVAC的建设者之一ArthurBurks创建。在年的论文中,霍兰德很可能是世界上第一位计算机科学博士,他提出了一种新型计算机——一种多处理器计算机,它将网络中的每个人工神经元分配给一个单独的处理器(年,丹尼尔·希利斯(danielhillis)解决了工程上的难题,制造了第一台这样的计算机,处理器思维机器公司的超级计算机。)
霍兰德毕业后加入了密歇根大学,在接下来的四十年里,他将大部分研究方向转向了进化计算的自动化方法,这一过程现在被称为遗传算法(geneticalgorithms)。在荷兰实验室实施的系统包括象棋程序、单细胞生物有机体模型和控制模拟天然气管网的分类器系统。然而,遗传算法不再局限于“学术”演示;在一个重要的实际应用中,遗传算法与犯罪证人合作,以生成罪犯的肖像。
逻辑推理与问题解决
逻辑推理能力是智能的一个重要方面,一直是人工智能研究的一个重点。这一领域的一个重要里程碑是-56年由allennewell和J。兰德公司的CliffordShaw和卡内基梅隆大学的HerbertSimon。逻辑理论家,因为这个程序被称为,被设计来证明定理从《数学原理》(-年),由英国哲学家数学家阿尔弗雷德诺斯怀特海和伯特兰罗素三卷的工作。在一个例子中,由程序设计的证明比书中给出的证明更优雅。
Newell、Simon和Shaw接着编写了一个更强大的程序,即通用问题解决程序(GeneralProblemSolver,简称GPS)。全球定位系统的第一个版本运行于年,该项目的工作持续了大约10年。全球定位系统可以用试错法解决各种令人印象深刻的难题。然而,对GPS和缺乏任何学习能力的类似程序的一个批评是,程序的智能完全是二手的,来自于程序员明确包含的任何信息。
英语对话
早期最著名的两个人工智能程序,伊丽莎和帕里,给人一种诡异的智慧对话的假象(两者的细节都在年首次发表。)伊丽莎,由麻省理工学院人工智能实验室的约瑟夫·魏森鲍姆(JosephWeizenbaum)撰写,模拟了一位人类治疗师。斯坦福大学精神病学家肯尼思·科尔比(KennethColby)撰写的《帕里》(Parry)模拟了人类的偏执狂。精神科医生被要求决定他们是在与帕里交流还是在与人类偏执狂交流,但他们往往无法判断。然而,帕里和伊丽莎都不能被合理地描述为聪明。帕里对谈话的贡献是由程序员预先构建的,并存储在计算机内存中。伊莱扎也依靠固定的句子和简单的编程技巧。
人工智能编程语言
在研究逻辑理论家和全球定位系统的过程中,纽厄尔、西蒙和肖开发了他们的信息处理语言(IPL),一种为人工智能编程量身定制的计算机语言。IPL的核心是一个高度灵活的数据结构,他们称之为列表。列表只是数据项的有序序列。列表中的某些或所有项本身可能是列表。这个方案导致了丰富的分支结构。
年,JohnMcCarthy将IPL的元素与lambda演算(一种正式的数学逻辑系统)结合起来,产生了LISP(ListProcessor)编程语言,它仍然是美国人工智能工作的主要语言(lambda演算本身是年普林斯顿逻辑学家AlonzoChurch在研究谓词逻辑的抽象Entscheidungsproblem(或称“决策问题”)时发明的,这与图灵发明通用图灵机时所攻击的问题相同。)
逻辑编程语言PROLOG(programationenLogique)是由法国马赛Aix大学的AlainColmerauer提出的,该语言于年首次在那里实现。PROLOG是由爱丁堡大学人工智能小组成员、逻辑学家robertkowalski进一步发展而来的。这种语言使用了一种强大的定理证明技术,即解析法,年由英国逻辑学家艾伦·罗宾逊在伊利诺伊州的美国原子能委员会阿贡国家实验室发明。PROLOG可以判断一个给定语句是否从逻辑上遵循其他给定语句。例如,给出了“所有逻辑学家都是理性的”和“罗宾逊是逻辑学家”的语句,PROLOG程序对“罗宾逊是理性的?”这个问题的回答是肯定的,PROLOG被广泛用于人工智能工作,尤其是在欧洲和日本。
东京新一代计算机技术研究所的研究人员使用PROLOG作为复杂逻辑编程语言的基础。这些被称为第五代语言的语言正在该研究所开发的非数值并行计算机上使用。
最近的其他工作包括开发用于推理与时间相关的数据的语言,例如“账户是昨天支付的”。这些语言基于时态逻辑,允许语句位于时间流中(时态逻辑是年由新西兰克赖斯特彻奇坎特伯雷大学的哲学家阿瑟·普赖尔发明的。)