这些规则会存在电脑里,当输入患者症状时,电脑就一条条匹配规则,最后给出结论。
实际用处:除了医疗诊断,还有智能客服的自动回复。比如你问“快递没收到怎么办”,电脑会匹配规则“如果用户问快递未收到→回复‘请提供订单号,帮你查询物流’”。
优点:简单易懂,符合人类思维;缺点:规则太多时会“乱套”。比如同时满足感冒和肺炎的部分症状,电脑可能不知道优先匹配哪条规则。
3. 语义网络表示法:用“节点+线”画知识图,像大脑的联想网络
这种方法是用“节点”代表概念(比如“鸟”“飞机”),用“带标签的线”代表关系(比如“会飞”“有羽毛”),画出来像一张蜘蛛网,特别适合表示“概念之间的联系”。
举个例子:用语义网络表示“鸟”的知识。
- 画一个节点写“鸟”;
- 用线连一个节点“有羽毛”,线上标“属性”;
- 再用线连一个节点“会飞”,线上标“能力”;
- 再用线连一个节点“麻雀”,线上标“属于”(麻雀属于鸟);
- 还能连一个节点“飞机”,线上标“相似点”(都能飞)。
画出来就是一张“鸟的知识网络图”,电脑能顺着线找到各个概念的关系。
实际用处:比如百度、谷歌的“知识图谱”就是用这种方法。你搜“李白”,页面右侧会出现“朝代:唐朝”“作品:《静夜思》”“好友:杜甫”,这些就是语义网络里的节点和关系,电脑顺着网络把相关知识都调出来。
优点:直观,能体现知识的关联性;缺点:关系太复杂时,网络会变得混乱,电脑找起来变慢。
4. 框架表示法:给知识建“模板”,像填简历表
这种方法是给一类事物建一个“框架模板”,就像简历里的“基本信息、教育经历、工作经历”模板,然后把具体事物的信息填进去。适合表示“有固定结构的知识”,比如人物、物品、事件。
举个例子:给“电影”建一个框架模板,再填《流浪地球2》的信息。
plaintext
框架名:电影
槽名1:名称 → 槽值:《流浪地球2》
槽名2:类型 → 槽值:科幻片
槽名3:导演 → 槽值:郭帆
槽名4:核心剧情 → 槽值:人类建行星发动机逃离太阳系
槽名5:上映时间 → 槽值:2023年1月22日
槽名6:评分 → 槽值:9.0(豆瓣)
“框架名”是大类,“槽名”是这类事物的共同属性,“槽值”是具体事物的信息。如果再填《满江红》的信息,就用同一个框架,只改槽值就行。
实际用处:比如视频网站的电影分类系统,用框架表示法存储每部电影的信息,用户搜“2023年上映的科幻片”,电脑就去匹配“类型=科幻片”“上映时间=2023年”的框架,把符合条件的电影列出来。
优点:结构清晰,方便批量处理同类知识;缺点:模板固定,没法表示不符合模板的“特殊知识”。比如遇到一部“既是科幻又是喜剧,还没有导演署名”的电影,框架里没有对应的槽名,就没法填。
5. 面向对象表示法:给知识“打包成对象”,像给物品装礼盒
这种方法是把知识“封装”成“对象”,就像把一个苹果的“颜色、味道、能不能吃”这些信息都装进一个礼盒里,礼盒上还写着“能做什么”(比如“可以削皮吃”“可以做沙拉”)。它把“属性”(是什么)和“方法”(能做什么)打包在一起,是现在编程里最常用的方法之一。
举个例子:用面向对象表示法表示“手机”。
- 对象名:手机
- 属性(是什么):品牌=华为、颜色=黑色、屏幕尺寸=6.7英寸、电量=100%
- 方法(能做什么):打电话(输入号码→拨出)、拍照(点击快门→保存照片)、上网(连接WiFi→打开浏览器)
本小章还未完,请点击下一页继续阅读后面精彩内容!
电脑里的“手机对象”不仅有属性信息,还知道能执行哪些操作。如果要让手机“拍照”,直接调用“拍照方法”就行。
实际用处:比如手机APP的开发,每个功能模块都是一个“对象”。比如微信里的“聊天窗口”对象,属性是“聊天对象、聊天记录”,方法是“发送消息、接收消息、撤回消息”,这样开发起来条理特别清晰。
优点:模块化强,能重复使用;缺点:设计“对象”需要花很多心思,要是属性或方法漏了,后续改起来很麻烦。
6. 神经网络表示法:把知识“变成数字向量”,像给知识“编密码”
这种方法是现在最火的,尤其在深度学习里。它把每个概念(比如“猫”“狗”)变成一串数字(比如“猫=[0.2, 0.5, -0.3]”“狗=[0.1, 0.4, -0.2]”),这些数字叫“向量”。数字越像,说明概念越接近——比如“猫”和“狗”的向量很像,因为都是动物;“猫”和“桌子”的向量差别很大。
举个例子:用神经网络表示法处理“词语”。
电脑会把“苹果”变成一个向量,比如“[0.3, 0.6, -0.1, 0.4]”。这个向量不是乱编的,是电脑通过分析几百万条文本,发现“苹果”常和“水果”“吃”“甜”一起出现,所以向量里的数字会和“水果”的向量很接近。
当你问“苹果和香蕉有什么共同点”,电脑会对比两者的向量,发现它们的数字很像,再结合其他知识,得出“都是水果,都能吃”的结论。
实际用处:比如ChatGPT这类大模型,就是用这种方法表示知识。它能理解“国王”和“女王”的关系,就像“男人”和“女人”的关系,因为它们的向量差值很相似。还有语音识别,电脑把“你好”的声音变成向量,和存储的“你好”向量对比,就能识别出你说的话。
优点:能处理复杂的模糊知识,比如“开心”和“高兴”的细微差别;缺点:数字向量太抽象,人类看不懂,没法解释“电脑为啥这么想”——比如电脑说“苹果和香蕉很像”,你问“为啥”,它说不出理由,只能说“向量很像”。
四、追历史:知识表示是怎么从“简单符号”进化到“智能向量”的?
知识表示不是一开始就这么高级的,它跟着AI的发展走了快100年,就像从“手写书信”进化到“微信聊天”,一步步变得更高效、更智能。咱们按时间线梳理,看看它的进化脉络。
1. 萌芽期(1940s-1960s):用“规则”表示知识,像写说明书
这个阶段的AI刚起步,科学家们觉得“知识就是规则”,所以知识表示也围绕“规则”展开。
1943年,逻辑学家波斯特第一次提出“产生式规则”,就是“如果A就B”的形式,这是最早的知识表示方法之一。当时的电脑很落后,只能处理简单的规则,比如“如果输入1+1,就输出2”。
到了1950年代,图灵提出“图灵测试”,大家开始想让电脑“像人一样思考”,但那时候的知识表示太简单,比如用逻辑符号表示“苏格拉底是人,人都会死,所以苏格拉底会死”,虽然精确,但只能处理这种简单推理,没法应对复杂知识。
2. 发展期(1970s-1980s):给知识“加结构”,像建房子
这个阶段的科学家发现,光有规则不够,知识得有“结构”,就像房子要有梁有柱。于是出现了“框架表示法”“语义网络表示法”这些带结构的方法。
1972年,纽厄尔和西蒙改进了“产生式规则”,让它能处理“不确定的知识”,比如“如果发烧,有80%的可能是感冒”,这比之前的“非黑即白”规则灵活多了。
1975年,明斯基提出“框架表示法”,把知识分成“框架-槽-侧面”的结构,就像给知识建了标准化的“房子”,比如“动物框架”里有“食性”“栖息地”这些“房间(槽)”,每个房间里还有“细节(侧面)”,比如“食性”里有“食肉”“食草”。
同一时期,夏克从框架发展出“脚本表示法”,专门表示“事件的顺序”,比如“去餐厅吃饭”的脚本:进门→找座位→点餐→吃饭→付钱→离开。电脑用这个脚本,就能理解“小明在餐厅点了汉堡”之后,接下来会做“吃饭”。
这个阶段的AI能做简单的“专家系统”,比如医疗诊断系统、下棋程序,但还是局限在“固定领域”,换个领域就得重新写规则。
3. 成熟期(1990s-2010s):用“网络”连知识,像织渔网
这个阶段的互联网兴起,数据变多了,科学家们发现知识不是孤立的,得“连起来”才有用,于是“语义网”“知识图谱”成了热点。
1998年,“语义网”概念被提出,核心是“让电脑能看懂网页上的知识”。比如网页上写“李白是诗人”,以前电脑只知道是文字,语义网会给它加标签“<人物>李白</人物>,<身份>诗人</身份>”,这样电脑就能“读”懂网页知识。
小主,
2012年,谷歌提出“知识图谱”,用语义网络的方法把海量知识连起来,形成一张巨大的“知识网”。比如你搜“北京”,知识图谱里不仅有“北京是中国首都”,还有“北京的人口”“北京的景点”“北京的历史”,甚至能关联到“北京冬奥会”“北京烤鸭”,电脑顺着这张网能给你推荐一堆相关知识。