知识表示(knowledge representation)
/ NOL-ij rep-ri-zen-TAY-shun /
知识表示,是要解决这样一个问题:把机器关于世界所知道的东西,写成它真能用来推理的形式。一个对你来说显而易见的事实——「鸟通常会飞,但企鹅不会;你姐姐的儿子是你的外甥」——必须先被编码成某种明确、有结构的样子,计算机才能据此得出结论。知识表示研究的,正是哪些「样子」管用:如何把事实、类别、关系、规则与例外捕捉下来,好让机器能把它们串联起来。
形式有很多。逻辑用「凡人皆有一死」这样的陈述,它们可以经由推理相互组合。语义网络与知识图谱把概念铺成一个个节点,再用带标签的连线相连(「巴黎—是首都—→法国」)。框架与本体则把事物归入带有属性和默认值的类别。每一种选择,都是在三者之间的权衡:它的表达力有多强(能说出微妙的事吗?)、用它来推理是否高效、以及它处理知识那些棘手现实——不确定、例外与变化——是否自然。
它作为符号人工智能和专家系统的核心而声名远扬:把人类专长捕捉成被表示的知识,再在其上推理。它用代价换来的教训发人深省。要把日常常识明明白白地表示出来——一个孩子都知道的那一整张未明说的事实之网——结果难得出奇,也从未真正成功过。现代神经系统绕开了手工搭建的表示,转而从数据中学出它自己内部的表示,这固然灵活,却也不透明。不过这个领域并未消失:知识图谱在搜索引擎和助手背后默默运转,而把「学来的知识」与「明确的知识」结合起来,正是一条活跃的前沿。
知识图谱把事实存成相互连接的三元组:(企鹅—是一种—→鸟)、(鸟—能—→飞)、(企鹅—不能—→飞)。第三个三元组里的那个例外,恰恰是让「表示」变难的那类东西:机器必须懂得让具体事实压过一般规则,否则它就会乐呵呵地推出「企鹅会飞」。
把事实存成相互连接的三元组——以及那些让「表示常识」如此之难的例外。
知识表示留下的长久教训是:人类身上揣着多少「显而易见」、却从不明说的常识,多得惊人——而要把它写下来又有多难。神经网络转而学出它自己的表示,赢得了灵活,却丢掉了符号表示原有的可读性。