人工智能导论——人工智能的发展历史、现状及发展趋势
初学者学习人工智能有时候需要了解一些背景知识,我从网上简单搜集总结了下分享给大家。
一、人工智能的发展历史
人工智能的发展并非一帆风顺,总体呈“三起两落”趋势,如今算是迈进人工智能发展的新时代。
(1)梦的开始(1900--1956)。1900年,希尔伯特在数学家大会上庄严的向全世界数学家宣布了23个未解的难题。这23道难题中的第二个问题和第十个问题则和人工智能密切相关,并最终促进了计算机的发明。图灵根据第十个问题构想出了图灵机,它是计算机的理论模型,圆满的刻画了机械化运算过程的含义,并最终为计算机的发明铺平了道路。1954年,冯诺依曼完成了早期的计算机EDVAC的设计,并提出了“冯诺依曼体系结构”。总的来说,图灵、哥德尔、冯诺依曼、维纳、克劳德香农等伟大的先驱者奠定了人工智能和计算机技术的基础。
(2)黄金时代(1956--1974)。1965年,麦卡锡、明斯基等科学家举办的“达茅斯会议”,首次提出了“人工智能(ArtificialIntelligence,简称AI)”这一概念,标志着人工智能学科的诞生。其后,人工智能研究进入了20年的黄金时代,相继取得了一批令人瞩目的研究成果,如机器定理证明、跳棋程序等,掀起人工智能发展的第一个高潮。在这个黄金时代里,约翰麦卡锡开发了LISP语音,成为以后几十年来人工智能领域最主要的编程语言;马文闵斯基对神经网络有了更深入的研究,也发现了简单神经网络的不足;多层神经网络、反向传播算法开始出现;专家系统也开始起步。
(3)第一次AI寒冬——反思发展(1974--1980)。人工智能发展初期的突破性进展大大提升了人们对人工智能的期望,过度高估了科学技术的发展速度。然而,接二连三的失败和预期目标的落空,使人工智能的发展走入低谷。1973年,莱特希尔关于人工智能的报告,拉开了人工智能寒冬序幕。此后,科学界对人工智能进行了一轮深入的拷问,使AI的遭受到严厉的批评和对其实际价值的质疑。随后,各国政府和机构也停止或减少了资金投入,人工智能在70年代陷入了第一次寒冬。计算能力有限、缺乏大量常识数据使发展陷入瓶颈,特别是过分依赖于计算力和经验数据量神经网络技术,长时期没有取得实质性的进展,特别是《感知器》一书发表过后,对神经网络技术产生了毁灭性的打击,后续十年内几乎没人投入更进一步的研究。专家系统在这个时代的末尾出现,并开启了下一个时代。
(4)应用发展(1980--1987)。专家系统模拟人类专家的知识和经验解决特定领域的问题,实现了人工智能从理论研究走向实际应用、从一般推理策略探讨转向运用专门知识的重大突破。专家系统在医疗、化学、地质等领域取得成功,推动人工智能走入应用发展的新高潮。1980年卡耐基梅隆大学(CMU)研发的XCON正式投入使用,这成为一个新时期的里程碑,专家系统开始在特定领域发挥威力,也带动整个人工智能技术进入了一个繁荣阶段。沉寂10年之后,神经网络又有了新的研究进展,具有学习能力的神经网络算法的发现,这使得神经网络一路发展,在后面的90年代开始商业化,被用于文字图像识别和语音识别。
(5)第二次AI寒冬——低迷发展(1987--1993)。随着人工智能的应用规模不断扩大,专家系统存在的应用领域狭窄、缺乏常识性知识、知识获取困难、推理方法单一、缺乏分布式功能、难以与现有数据库兼容等问题逐渐暴露出来。人工智能领域当时主要使用约翰麦卡锡的LISP编程语言,逐步发展的LISP机器被蓬勃发展的个人电脑击败,专用LISP机器硬件销售市场严重崩溃,人工智能领域再一次进入寒冬。硬件市场的溃败和理论研究的迷茫,加上各国政府和机构纷纷停止向人工智能研究领域投入资金,导致了数年的低谷,但另一方面也取得了一些重要成就。1988年,美国科学家朱迪亚·皮尔将概率统计方法引入人工智能的推理过程中这对后来人工智能的发展起到了重大影响。IBM的沃森研究中心把概率统计方法引入到人工智能的语言处理中;1992年,李开复使用统计学的方法,设计开发了世界上第一个扬声无关的连续语音识别程序;1989年,AT&T贝尔实验室的雅恩·乐昆和团队使用卷积神经网络技术,实现了人工智能识别手写的邮政编码数字图像。
(6)稳健发展(1993--2011)。由于网络技术特别是互联网技术的发展,加速了人工智能的创新研究,促使人工智能技术进一步走向实用化。1995年,理查德华莱士开发了新的聊天机器人程序Alice,它能够利用互联网不断增加自身的数据集,优化内容。1997年,IMB的计算机深蓝Deepblue战胜了人类世界象棋冠军卡斯帕罗夫。1997年,德国科学霍克赖特和施米德赫伯提出了长期短期记忆(LSTM)这是一种今天仍用于手写识别和语音识别的递归神经网络,对后来人工智能的研究有着深远影响。2004年,美国神经科学家杰夫·霍金斯出版的《人工智能的未来》一书中提出了全新的大脑记忆预测理论,指出了依照此理论如何去建造真正的智能机器,这本书对后来神经科学的深入研究产生了深刻的影响。2006年,杰弗里辛顿出版了《LearningMultipleLayersofRepresentation》奠定了后来神经网络的全新的架构,至今仍然是人工智能深度学习的核心技术。
(7)新时代(2012--至今)。随着移动互联网技术、云计算技术的爆发,积累了历史上超乎想象的数据量,这为人工智能的后续发展提供了足够的素材和动力,以深度神经网络为代表的人工智能技术飞速发展,大幅跨越了科学与应用之间的“技术鸿沟”,迎来爆发式增长的新高潮。。人工智能,大数据,云计算,物联网技术,共同构成了21世纪第二个十年的技术主旋律。2012年,由多伦多大学在ImageNet举办的视觉识别挑战赛上设计的深度卷积神经网络算法,被业内认为是深度学习革命的开始。2014年,伊恩·古德费罗提出GANs生成对抗网络算法,这是一种用于无监督学习的人工智能算法,这种算法由生成网络和评估网络构成,这种方法很快被人工智能很多技术领域采用。2016年和2017年,谷歌发起了两场轰动世界的围棋人机之战,其人工智能程序AlphaGo连续战胜曾经的围棋世界冠军韩国李世石,以及现任的围棋世界冠军中国的柯洁,引起巨大轰动。语音识别、图像识别、无人驾驶等技术不断深入。
二、人工智能的发展现状 主要表现在以下几个方面:(1)专用人工智能取得重要突破。从可应用性看,人工智能大体可分为专用人工智能和通用人工智能。人工智能的近期进展主要集中在专用智能领域。例如,阿尔法狗在围棋比赛中战胜人类冠军,人工智能程序在大规模图像识别和人脸识别中达到了超越人类的水平等。面向特定任务(比如下围棋)的专用人工智能系统由于任务单一、需求明确、应用边界清晰、领域知识丰富、建模相对简单,在局部智能水平的单项测试中可以超越人类智能,形成了人工智能领域的单点突破。(2)通用人工智能尚处于起步阶段。目前,虽然专用人工智能领域已取得突破性进展,人工智能系统在信息感知、机器学习等“浅层智能”方面进步显著,但是在概念抽象和推理决策等“深层智能”方面的能力还很薄弱。通用人工智能领域的研究与应用仍然任重而道远,人工智能总体发展水平仍处于起步阶段。总体上看,目前的人工智能系统可谓有智能没智慧、有智商没情商、会计算不会“算计”、有专才而无通才。因此,人工智能依旧存在明显的局限性,与人类智慧还相差甚远。(3)人工智能创新创业如火如荼。全球产业界充分认识到人工智能技术引领新一轮产业变革的重大意义,纷纷调整发展战略。各国及大型互联网公司在人工智能领域的投资日益攀升,全球和中国人工智能行业投融资规模都呈上涨趋势。比如,谷歌在其2017年年度开发者大会上明确提出发展战略从“移动优先”转向“人工智能优先”,微软2017财年年报首次将人工智能作为公司发展愿景。2018年,中国人工智能领域融资额高达1311亿元。人工智能领域处于创新创业的前沿。(4)创新生态布局成为人工智能产业发展的战略高地。信息技术和产业的发展史,就是新老信息产业巨头抢滩布局信息产业创新生态的更替史。人工智能创新生态包括纵向的数据平台、开源算法、计算芯片、基础软件、图形处理器等技术生态系统和横向的智能制造、智能医疗、智能安防、智能零售、智能家居等商业和应用生态系统。目前智能科技时代的信息产业格局还没有形成垄断,因此全球科技产业巨头都在积极推动人工智能技术生态的研发布局,全力抢占人工智能相关产业的制高点。(5)人工智能的社会影响日益凸显。一方面,人工智能作为新一轮科技革命和产业变革的核心力量,正在推动传统产业升级换代,驱动“无人经济”快速发展,在智能交通、智能家居、智能医疗等民生领域产生积极正面影响。另一方面,个人信息和隐私保护、人工智能创作内容的知识产权、人工智能系统可能存在的歧视和偏见、无人驾驶系统的交通法规、脑机接口和人机共生的科技伦理等问题已经显现出来,需要抓紧提供解决方案。三、人工智能的发展趋势:(1)从专用智能向通用智能发展。如何实现从专用人工智能向通用人工智能的跨越式发展,既是下一代人工智能发展的必然趋势,也是研究与应用领域的重大挑战。(2)从人工智能向人机混合智能发展。借鉴脑科学和认知科学的研究成果是人工智能的一个重要研究方向。人机混合智能旨在将人的作用或认知模型引入到人工智能系统中,提升人工智能系统的性能,使人工智能成为人类智能的自然延伸和拓展,通过人机协同更加高效地解决复杂问题。在我国新一代人工智能规划和美国脑计划中,人机混合智能都是重要的研发方向。(3)从“人工+智能”向自主智能系统发展。当前人工智能领域的大量研究集中在深度学习,但是深度学习的局限是需要大量人工干预,比如人工设计深度神经网络模型、人工设定应用场景、人工采集和标注大量训练数据、用户需要人工适配智能系统等,非常费时费力。因此,科研人员开始关注减少人工干预的自主智能方法,提高机器智能对环境的自主学习能力。(4)人工智能将加速与其他学科领域交叉渗透。人工智能本身是一门综合性的前沿学科和高度交叉的复合型学科,研究范畴广泛而又异常复杂,其发展需要与计算机科学、数学、认知科学、神经科学和社会科学等学科深度融合。随着超分辨率光学成像、光遗传学调控、透明脑、体细胞克隆等技术的突破,脑与认知科学的发展开启了新时代,能够大规模、更精细解析智力的神经环路基础和机制,人工智能将进入生物启发的智能阶段,依赖于生物学、脑科学、生命科学和心理学等学科的发现,将机理变为可计算的模型,同时人工智能也会促进脑科学、认知科学、生命科学甚至化学、物理、天文学等传统科学的发展。(5)人工智能将推动人类进入普惠型智能社会。“人工智能+X”的创新模式将随着技术和产业的发展日趋成熟,对生产力和产业结构产生革命性影响,并推动人类进入普惠型智能社会。2017年国际数据公司IDC在《信息流引领人工智能新时代》白皮书中指出,未来5年人工智能将提升各行业运转效率。我国经济社会转型升级对人工智能有重大需求,在消费场景和行业应用的需求牵引下,需要打破人工智能的感知瓶颈、交互瓶颈和决策瓶颈,促进人工智能技术与社会各行各业的融合提升,建设若干标杆性的应用场景创新,实现低成本、高效益、广范围的普惠型智能社会。(6)人工智能产业将蓬勃发展,人工智能领域的国际竞争将日益激烈。当前,人工智能领域的国际竞赛已经拉开帷幕,并且将日趋白热化。美国、中国、印度以及西欧等国纷纷布局人工智能产业。中国在论文总量和高被引论文数量上都排在世界第一,中科院系统AI论文产出全球第一,中国在人才拥有量全球第二,但杰出人才占比偏低。随着人工智能技术的进一步成熟以及政府和产业界投入的日益增长,人工智能应用的云端化将不断加速,全球人工智能产业规模在未来10年将进入高速增长期。(7)人工智能的社会学将提上议程。为了确保人工智能的健康可持续发展,使其发展成果造福于民,需要从社会学的角度系统全面地研究人工智能对人类社会的影响,制定完善人工智能法律法规,规避可能的风险。 以上内容主要来自《人工智能的历史、现状和未来》 谭铁牛《求是》2019/04
人工智能技术导论——几种结构化知识表示及推理过程
一、框架1、框架的概念顾名思义,框架就是一种结构,一种模式,其一般形式是:
||…|即一个框架一般有若干个槽,一个槽有一个槽值或者有若干个侧面,而一个侧面又有若干个侧面值。其中槽值和侧面值可以是数值、字符串、布尔值,也可以是一个动作或过程,甚至还可以是另一个框架的名字。
例7.1下面是一个描述“教师”的框架:
框架名:类属:工作:范围:(教学,科研)缺省:教学性别:(男,女)学历:(中师,高师)类型:(,,)可以看出,这个框架的名字为“教师”,它含有5个槽,槽名分别是“类属”、“工作”、“性别”、“学历”和“类型”。这些槽名的右面就是其值,如“”、“男”、“女”、“高师”、“中师”等等。其中“”又是一个框架名,“范围”、“缺省”就是侧面名,其后是侧面值,如:“教学”、“科研”等。另外,用括的槽值也是框架名。
例7.2 下面是一个描述“大学教师”的框架:
框架名:类属:学历:(学士,硕士,博士)专业:职称:(助教,讲师,副教授,教授)外语:语种:范围:(英,法,日,俄,德,…)缺省:英水平:(优,良,中,差)缺省:良上面给出的仅是一种框架的基本结构和一个比较简单的例子。一般来说,单个框架只能用来表示那些比较简单的知识。当知识的结构比较复杂时,往往需要用多个相互联系的框架来表示。例如分类问题,若采用多层框架结构表示,既可以使知识结构清晰,又可以减少冗余。
例7.3下面是描述一个具体教师的框架:
框架名:类属:姓名:李明性别:男年龄:25职业:教师职称:助教专业:计算机应用部门:计算机系软件教研室工作:参加工作时间:1995年8月工龄:当前年份-参加工作年份工资:比较例7.2和例7.3中的框架,可以看出,前者描述的是一个概念,后者描述的则是一个具体的事物。二者的关系是,后者是前者的一个实例。因此,后者一般称为前者的实例框架。这就是说,这两个框架之间存在一种层次关系。一般称前者为上位框架(或父框架),后者为下位框架(或子框架)。当然,上位和下位是相对而言的。例如“大学教师”虽然是“教师-1”的上位框架,但它却是“教师”框架的下位框架,而“教师”又是“知识分子”的下位框架。
2、框架的表达能力由框架的形式可以看出,框架适合表达结构性的知识。所以,概念、对象等知识最适于用框架表示。其实,框架的槽就是对象的属性或状态,槽值就是属性值或状态值。不仅如此,框架还可以表示行为(动作),所以,有些过程性事件或情节也可用框架网络来表示。
例7.4下面是关于房间的框架:
框架名:墙数x1:缺省:x1=4条件:x1>0窗数x2:缺省:x2=2条件:x2≥0门数x3:缺省:x3=1条件:x3>0前墙:(墙框架(w1,d1))后墙:(墙框架(w2,d2))左墙:(墙框架(w3,d3))右墙:(墙框架(w4,d4))天花板:地板:门:窗:条件:w1+w2+w3+w4=x2d1+d2+d3+d4=x3类型:(,,,,,,…)
例7.5机器人纠纷问题的框架描述如图7-1所示。
还需指出的是,产生式规则也可用框架表示。
例如,产生式
如果头痛且发烧,则患感冒。用框架表示可为:
框架名:前提:条件1:头痛条件2:发烧结论:患感3、基于框架的推理基于框架的推理方法是继承。所谓继承,就是子框架可以拥有其父框架的槽及其槽值。实现继承的操作有匹配、搜索和填槽。
匹配就是问题框架同知识库中的框架的模式匹配。所谓问题框架,就是要求解某个问题时,先把问题用一个框架表示出来,然后与知识库中的已有框架进行匹配。如果匹配成功,就可获得有关信息。搜索就是沿着框架间的纵向和横向联系,在框架网络中进行查找。搜索的目的是为了获得有关信息。
框架名:〈教师-1〉姓名:李明性别:男年龄:25职称:助教专业:计算机应用部门:计算机系软件教研室外语水平:显然,原框架“教师-1”中无“外语水平”槽,但它的父框架是“大学教师”,该框架内有“外语水平”槽,并且侧面“语种”(“范围”)缺省值是“英”, 侧面“水平”的缺省值是“良”。于是通过继承,便知道了“教师-1”懂英语,且水平还良好。那么,这两个值也就可以填到“教师-1”的槽中。
4、框架的程序语言实现有一种名为FRL(FrameRepresentationLanguage)的程序设计语言,就是专门基于框架的程序设计语言。用它就可以方便地实现框架知识表示。不过,用PROLOG也可方便地实现框架表示。用PROLOG实现框架表示,一般采用含结构或表的谓词来实现。因为框架实际上就是树,而PROLOG的结构也是树,表又是特殊的结构,它的元素个数和层数都不限定,可动态变化,因此,更适于表示一般的框架。
例如,前面的“教师”框架用PROLOG可表示如下:
frame(name("教师"),kind_of(""),work(scope("教学","科研"),default("教学")),sex("男","女"),reco_of_f_s("中师","高师"),type("","","")).
如果要给出框架的一个通用表示形式,则下面的表示方式可供参考。
frame(name("教师"),body([st("类属",[st("",[])]),st("工作",[st("范围",[st("教学",[]),=st("科研",[])]),st("缺省",[st("教学",[])])]),st("性别",[st("男",[]),st("女",[])]),st("学历",[st("中师",[]),st("高师",[])]),st("类型",[st("",[]),st("",[]),=st(""[])])]))这是一个PROLOG的“事实”,其谓词及领域说明如下:
domainsname=name(string)body=body(subtreelist)subtreelist=subtree*subtree=st(string,subtreelist)databaseframe(name,body)其中的subtreelist是递归定义的。按此定义所有框架都取统一的表示形式。
二、语义网络1、语义网络的概念语义网络是由节点和边(也称有向弧)组成的一种有向图。其中节点表示事物、对象、概念、行为、性质、状态等;有向边表示节点之间的某种联系或关系。例如图7―2就是一个语义网络。其中,边上的标记就是边的语义。
还需指出的是,上述关于框架的推理方法,实际仅适于装载着概念和实体对象的框架,而对于装载着规则的框架,其推理就要用基于规则的演绎推理方法。
语义网络的概念最先是由Quillian提出来的,他于1968年在他的博士论文中,把语义网络作为人类联想记忆的一个显式心理模型。所以,语义网络也称联想网络。
现在,语义网络的理论已经有了长足的发展。有人把它划分为五个级别:执行级、逻辑级、认识论级、概念级和语言学级。并分为七种类型:
(1)命题语义网(包括分块联想网络);
(2)数据语义网:以数据为中心的语义网络;
(3)语言语义网:用于自然语言的分析和理解;
(4)结构语义网:描述客观事物的结构,常见于模式识别和机器学习等领域;
(5)分类语义网:描述抽象概念及其层次;
(6)推理语义网:是一种命题网,但它已在某种程度上规范化,更适于推理;
(7)框架语义网:与框架相结合的语义网。
2、语义网络的表达能力由语义网络的结构特点可以看出,语义网络不仅可以表示事物的属性、状态、行为等,而且更适合于表示事物之间的关系和联系。而表示一个事物的层次、状态、行为的语义网络,也可以看作是该事物与其属性、状态或行为的一种关系。如图7―3所示的语义网络,就表示了专家系统这个事物(的内涵),同时也可以看作是表示了专家系统与“智能系统”、“专家知识”、“专家思维”及“困难问题”这几个事物之间的关系或联系。所以,抽象地说,语义网络可表示事物之间的关系。因此,关系(或联系)型的知识和能化为关系型的知识都可以用语义网络来表示。下面我们就给出常见的几种。
1.实例关系实例关系表示类与其实例(个体)之间的关系。这是最常见的一种语义关系。例如,“小华是一个大学生”就可表示为图7―4。其中,关系“是一个”一般标识为“is-a”,或ISA。
2.分类(或从属、泛化)关系分类关系是指事物间的类属关系,图7―5就是一个描述分类关系的语义网络。在图7―5中,下层概念节点除了可继承、细化、补充上层概念节点的属性外,还出现了变异的情况:鸟是鸵鸟的上层概念节点,其属性是“有羽毛”、“会飞”,但鸵鸟的属性只是继承了“有羽毛”这一属性,而把鸟的“会飞”变异为“不会飞”。其中,关系“是一种”一般标识为“akindof”或AKO。
3.组装关系如果下层概念是上层概念的一个方面或者一部分,则称它们的关系是组装关系。例如图7―6所示的语义网络就是一种聚集关系。其中,关系“一部分”一般标识为“a-part-of”。
4.属性关系属性关系表示对象的属性及其属性值。例如,图7―7表示simon是一个人,男性,40岁,职业是教师。
5.集合与成员关系意思是“是……的成员”,它表示成员(或元素)与集合之间的关系。例如,“张三是计算机学会会员”可表示为图7―8。其中,关系“是成员”一般标识为“a-member-of”。
6.逻辑关系如果一个概念可由另一个概念推出,两个概念间存在因果关系,则称它们之间是逻辑关系。图7―9所示的语义网络就是一个逻辑关系。
7.方位关系在描述一个事物时,经常需要指出它发生的时间、位置,或者指出它的组成、形状等等,此时可用相应的方位关系语义网络表示。例如事实:
张宏是石油学院的一名助教;石油学院位于西安市电子二路;张宏今年25岁。可用图7―10所示的语义网络表示。
8.所属关系
所属关系表示“具有”的意思。例如“狗有尾巴”可表示为图7―11。
语义网络中的语义关系是多种多样的,一般根据实际关系定义。如常见的还有before、after、at等表示时间次序关系和located-on、located-under等表示位置关系。进一步,还可对带有全称量词和存在量词的谓词公式的语义加以表示。
由上所述可以看出,语义网络实际上是一种复合的二元关系图。网络中的一条边就是一个二元关系,而整个网络可以看作是由这些二元关系拼接而成。
时间关系指不同事件在其发生时间方面的先后次序关系。
常用的时间关系有:
Before:含义为“在前”,表示一个事件在另一个事件之前发生After:含义为“在后”,表示一个事件在另一个事件之后发生例如:“北京奥运会在悉尼奥运会之后”
位置关系指不同事物在位置方面的关系。常用的位置关系有:
Located-on:含义为“在上”,表示某一物体在另一物体之上Located-at:含义为“在”,表示某一物体所在的位置Located-under:含义为“在下”,表示某一物体在另一物体之下Located-inside:含义为“在内”,表示某一物体在另一物体之内;Located-outside:含义为“在外”,表示某一物体在另一物体之外。例如,“书在桌子上”
相近关系指不同事物在形状、内容等方面相似或接近。常用的相近关系有:
Similar-to:含义为“相似”,表示某一事物与另一事物相似Near-to:含义为“接近”,表示某一事物与另一事物接近例如,“猫似虎”
一元关系指可以用一元谓词P(x)表示的关系。谓词P说明实体的性质、属性等。
描述的是一些最简单、最直观的事物或概念,
常用:“是”、“有”、“会”、“能”等语义关系来说明。如,“雪是白的”。
一元关系的描述应该说,语义网络表示的是二元关系。如何用它来描述一元关系?
结点1表示实体,结点2表示实体的性质或属性等,弧表示语义关系。
例如,“李刚是一个人”为一元关系,其语义网络如前所示。
例 用语义网络表示“动物能运动、会吃”。
二元关系可用二元谓词P(x,y)表示的关系。其中,x,y为实体,P为实体之间的关系。
单个二元关系可直接用一个基本网元来表示,如前介绍的一些常用的二元关系及其表示。
对复杂关系,可通过一些相对独立的二元或一元关系的组合来实现。
例 用语义网络表示:
动物能运动、会吃。鸟是一种动物,鸟有翅膀、会飞。鱼是一种动物,鱼生活在水中、会游泳。对于这个问题,各种动物的属性按属性关系描述,动物之间的分类关系用类属关系描述。
例 用语义网络表示:
王强是理想公司的经理;理想公司在中关村;王强28岁。例:
李新的汽车的款式是“捷达”、银灰色。王红的汽车的款式是“凯越”、红色。李新和王红的汽车均属于具体概念,可增加“汽车”这个抽象概念。
上面我们是从关系角度考察语义网的表达力的。下面我们从语句角度来考察语义网。
例如,对于如下的语句(或事件):
小王送给小李一本书。用语义网络可表示为图7―12,其中S代表整个语句。这种表示被称为是自然语言语句的深层结构表示。
观察后发现,其实就是将整个句子按照成分划分主谓宾、定状补结构。
语义网络也能表示用谓词公式表示的形式语言语句。例如:
即“某个学生读过《三国演义》”,其语义网络表示为图7―13。
又如:
即“每个学生读过《三国演义》”,其语义网络表示为图7-14。
3、基于语义网络的推理基于语义网络的推理也是继承。继承也是通过匹配、搜索实现的。问题求解时,首先根据待求问题的要求构造一个网络片断,然后在知识库中查找可与之匹配的语义网络,当网络片断中的询问部分与知识库中的某网络结构匹配时,则与询问处匹配的事实,就是问题的解。例如,我们要通过图7-1所示的语义网络(假设它已存入知识库),查询富士苹果有什么特点。那么,我们可先构造如图7-15所示的一个网络片段。然后,使其与知识库中的语义网络进行匹配。匹配后X的值应为“脆甜”。当然,这是一个简单问题。如果问题复杂,也可能不能通过直接匹配得到结果,那么还需要沿着有关边进行搜索,通过继承来获得结果。例如要问:吃富士苹果对人的健康有何意义?那么,通过上述网络片断不能直接获得答案,这时,就需沿着边“AKO”一直搜索到节点“水果”,由水果的“富营养”性,通过特性继承便得到富士苹果也富营养。
需指出的是,与框架的情形一样,对于表示逻辑蕴含关系的语义网络,也可以进行演绎推理。
4、语义网络的程序语言实现由于语义网络是一个二元关系图,所以用PROLOG可方便地实现语义网络知识表示。例如,图7―1所示的语义网络用PROLOG可表示如下:
a--kind--of("苹果","水果").taste("苹果","甜").a--kind--of("富士","苹果").intro--from("富士","日本").is--a("日本","亚洲国家").a--kind--of("秦冠","苹果").produ--in("秦冠","陕西").is--located--at("陕西","中国西部").a--part--of("中国西部","中国").………也可以表示为
arc(a--kind--of,"苹果","水果").arc(taste,"苹果","甜").arc(a--kind--of,"富士","苹果").arc(intro--from,"富士","日本").arc(is--a,"日本","亚洲国家").arc(a--kind--of,"秦冠","苹果").arc(produ--in,"秦冠","陕西").arc(is--located--at,"陕西","中国西部").arc(a--part--of,"中国西部","中国").………当然,我们也可以将一个网络或网络片段组织在一个事实中。例如:
net1(a--kind--of(“苹果”,“水果”),taste(“苹果”,“甜”),a--kind--of(“秦冠”,“苹果”),produ--in("秦冠","陕西")).三、面向对象知识表示近年来,面向对象技术蓬勃兴起。在知识表示领域则出现了面向对象的知识表示方法。
面向对象技术中的核心概念是对象和类。对象可以泛指一切事物,类则是一类对象的抽象模型。反之,一个对象是其所属类的实例。通常,在面向对象的程序设计语言中,只给出类的定义,其对象由类生成。
类的定义中就说明了所辖对象的共同特征(属性、状态等)和行为。特征用变量表示,行为则是作用于这些特征和作用于对象的一组操作,如函数、过程等。这些操作一般称为方法。这样,一个类将其对象所具有的共同特征和操作组织在一起,统一进行定义,以供全体对象共享。即当给类中的特征变量赋予一组值时,则这组值连同类中的方法,就构成了一个具体的对象。
例7.6下面是面向对象程序设计语言C++中一个雇员类和经理类的定义。
classEmployee{privite:char*Name;intAge;intSalary;public:Employee(char*name,intage,intsalary);~Employee();};Employee∷Employee(char*name,intage,intsalary){Name=newchar[strlen(name)];strcpy(Name,name);Age=age;Salary=salary;}Employee∷~Employee(){DeleteName;}VoidEmployee∷Change(intage,intsalary){Age=age;Salary=salary;}VoidEmployee∷Retire(){if(Age>60)Deletethis;}以上是雇员类的定义,用此定义就可生成一个雇员类的实例,即雇员对象。例如下面的语句
Employeee1("李明",30);就生成一个名为李明,年龄为30岁的雇员。
下面是经理类的定义。
ClassManager:publicEmployee{private:IntLevel;public:Manager(char*name,intage,intsalary,intlevel);~Manager();VoidChangeLevel(intn);};由于经理类是雇员类的一个子类,所以,经理类就继承了雇员类的全部属性和行为。这两个类之间也就构成了一种层次关系。
一般认为,面向对象知识表示是最结构化的知识表示方法。面向对象知识表示很类似于框架,知识可以使用类按一定层次形式来组织。由于面向对象知识表示还具有封装特性,从而使知识更加模块化。所以,用面向对象方法表示的知识相当结构化和模块化,而且容易理解和管理。因此,这种方法特别适合于大型知识库的开发和维护。
四、语义网络例题(1)树和草都是植物
(2)树和草都有叶和根
(3)胡途是思源公司的经理,他35岁,住在飞天胡同68号
(4)篮球比赛,北京大学主场迎战清华大学,最后以89:102的比分结束
(5)画出下列知识的语义网络:“籍贯为湖南的张山在信息学院读书,该学校位于健翔桥附近,该校由计算机系、信息系和通信系组成。”
(6):海浪把军舰轻轻地摇
(7):李老师从第一周到第十周给计算机1班上人工智能课。
作者:王陸