参见:Explorations in Cognition (A Series of books in psychology) (豆瓣),chap07
1970年代,加州理工用来进行知识存储和提取的第一版程序,文本界面。所有的编译器,和后来的AI。成熟的语法解析器,几乎都踩在它身上。可以看看这种最原始的概念模型和实现方式。它和逆波兰式以及更直观的文本处理策略不一样。它支持自行交互式扩展自身,并不复杂,但是支持通过命令行交互式问答,学习,然后自我进化(存储,理解,推理更多的知识)
大概率,我会把这本书完全笔记化。相关章节的交叉索引,我会补充道各个章节的笔记里。便于检索。
1.概述
这是一个运行在Burroughs 6700上的程序,用来进行语言录入,记忆和问题解决。程序的三个组成部分:
- nodes space ... the memory zone chap02
- paser ............... to takes words in, through augmented transition network (ATN ,chap05),created an active structural network into nodes space.
- interpreter..........deal with network, change it, out put UI with user.
这个系统完全由words推动。
几个基本的设计想法:
- semantic network can used be a representaion of knowledge structure.(chap02)
- procedure informations is the knowledge itself(chap02)
- ATN parsing model used to simulating the language processing (Chap05)
- use grammatical case frame (Fillmore, 1968) as general procedure for structure and representation of declarative and procedural knowledge.
2.模块与重要流程
2.1 模型的计算机化
1.word idx表,单词的字符串索引
最基础的问题,似乎在进行分类,dog is an anmial sth...
一旦输入一个单词,就检测这个单词是否在词汇表。输出,同理。
2.nodes表
一个node包含两部分,一个header,包含
- 当前节点长度。
- 一个指向word idx的指针
另一部分是:
一个指向所有其他words的序列表items list.。序列表中包含了有向关系链接。
labeled Relation包含,三类:
- R a->b
- R-reversed b->a
2.1.1 这个数据结构的操作集:
- 创立节点:
- 在节点A,B间建立Relation
- 消除节点A,B的Relation
- 找到节点A的第一个items, last Item
- 找到节点A的下一个,或前一个item
- 检测某个节点的items Relations是否与另一个节点完全相同。
当我们需要做一些操作的时候,我们实际要检索的就是这些notes space , some of it.
2.1.2 示例1 知识建立
- connect dog to animal with isa.
page 163,比较怪异的是,似乎通过Algol语法,这个句子,整条指令也可以被处理程序识别为一个类似C的预定义函数。
函数关键字:connect to with.
一旦发现一个句子里有类似结构,他就触发了一个知识记录动作:
connect to with( dog, animal, isa)
它会进行类型检查。
对节点的操作称为evaluating.这个示例1的输入,会被组织为一个nodes.
2.1.3 示例2 知识查询
2.print the firstnode from animal via isa-inverse
我很怀疑,connect是一个节点关键字,就像这里的print
这里的关键字:
Print。。。。输出操作。
firstnode。。。取值操作value.
这里会级联。先print,然后调用firstnode
2.2.模型的基本可扩展性支持
迭代被定义为,为这个知识结构添加更多的关键字和概念》
2.2.1 示例3 扩展知识
3.Print instance of animal.
这里的instance被定义为一个操作,注意下面的语句仍然是标准语法的构造。
4.return the first node from x via isa-inverse.
但是这个instance如何被加入系统呢?
5.define instance as an operator
看到了没?它在用类似的方法来扩展这个系统。第5个问题会调用一个交互式的过程:
define instance as an operator
>The define frame of instace is:
instance of x //参数表,同时是语法表
>the definition is:
return the first node from x via isa-inverse
## //这个符号是结束符
Page166可以看到这个新的define的结构。
2.2.2 示例4 更复杂知识扩展 - 外部接口
2.2.2 的机内表示,书中画的非常复杂,包含6个nodes.我觉得这个执行过程,大家可以尝试自行处理一下了。看看最终的机内表示到底是什么。机内表示稍后给出。
define son as predicate
>The define frame of son is:
x son of y
>the definition is:
connect x to male with sex
if age of x less than 18, then connect x to child with isa
Connect y to x with parent-of
## //这个符号是结束符
2.2.3 扩展指令的内部执行过程 - 内部执行
接下来,是实际的执行部分:Page168,我们可以用任何能够作用在前面的数据结构和输入指令的程序来进行解析,下面是一个当时他们实际使用的内部执行逻辑:
- 如果需要执行一个节点(所有的元素都是节点,这是一个节点关系网),那么要执行节点的所有参数表。然后把这个节点的所有形参,变成实参。
- 然后跟随这个节点的act实例节点,这个节点在x的type节点表里。仅仅是一个单向的连接关系。
- 继续,把下一个节点的所有参数实例化,就像步骤1.
- 如果这个节点有一个prim的关系元素,那么可以直接调用这个内置的节点功能,否则沿着iswhen关系节点走。
- 如果次次级节点有then关系元素,跟着这个关系元素走。
2.2.4 实例5 扩展知识的执行
Oedipus is the son of Jocasta.
这个输入语句的执行过程,参照2.2.3 会是下图这样:
几个要点:
1.在进入灰框前,这个系统已经有一些预备知识,这些知识,是以节点的关系表的形式存在的
- 节点1:俄狄浦斯
- 关系1:isa:希腊人
- 关系2:age:38岁
- 节点2:亚卡斯塔
- 关系1:isa:女性
- 节点3012是那个扩展知识son的最外层节点,一个抓手。
2.语句分析过程,首先外层抓手son参数各个参数实例化: son的参数表有两个,会分别指向节点1,节点2.
3.然后将会沿着最外层节点的action指针,指向son这个概念的执行体第一级节点:开始执行第一条语句,标记参数1,也即使节点1,他是个male.
4.这个节点有then,所以,继续前进,相当于指令换行,前进至下一条指令。
5.下一条指令,也就是下一个节点3007,这个节点的关系列表有if,则跳转至if关系指向的下一个节点3008,3008是一个逻辑表达式,3009是一个取属性age的操作,操作节点1返回3008,然后两个年龄比较后,返回,
6.如果为假,停止执行,如果为真,继续执行节点3007的action
7.下面要同时建立两个关系,is son, is parent....分别是3010 3011,他们其实调用的都是标注的prim型的节点。
3.编码实现 SOL Semantic Operating Language
可能的问题:
- 这里涉及到一个从节点库中查找到一个非常遥远的节点的问题。因为对于一个既有的知识创建而言,他的相关的知识节点,已经出现在知识描述的语句中了——这意味着在一个小范围内,不仅仅可以用名词,也可以用he she,it 这类词,来快速进行知识检索。并且就是使用现代英语的自然语法,不需要做固定的约定。关于长期记忆的检索,在Chap03中会描述。
- 在这个知识的不断计算机节点模型化的过程中,肯定会出错,那么,随之,一些对自然语言的语法的一些内省式的觉察,就会出现。
- 知识输入的过程,伴随着节点相关信息参数化的过程,和知识检索过程。他们几乎无法察觉地被调用。有些由输入者提供,有些需要检索。
3.1 实例6 交互式的参数化和检索的例子
A happy boy gave Fido to the girl who lives across the street.
解析过程中。涉及到:
- A happy boy 会被创建。然后还涉及到这个adj修饰的名词性对象的创建过程,chap13会描述。
- gave which is give,这类名词,会有多种语义,因此可能有多种机内表示,他们使用一个case frame(decribe by Fillmore,1968)来表征,并且可能带有可选argument(比如何时,何地)
- 然后gave的参数表(the thing - object, the giver - subject, the recipient)
- give这个单词有几个不同的涵义,这个语法结构使用predicate关系来实现,一个节点,可以用preddicate关系,来指向不同的Case frame.
3.2 示例7 一个附带可选参数的例子
Bert gave a boat to Ernie on his birthday.
这个实例里,有give的可选的时间参数。
上述过程,就构成了语义理解过程。包含知识建构和查询,他是一体的。
4.应用
- 这套可实现可扩展的模型,可以用来作为一种对知识结构分析的校验和存储。
- 在书的第八章我们会用它来展示一个动词系统怎么能用来回答问题。
- 在书的第12章,我们来演示用这个系统进行问题解决,比如用他来搭建一个下棋打牌的交互式系统
- 在书的13章,这个系统用来对自身的结构进行自我检查。
然后,这个系统可以作为辅助工具使用。
- 在第六章,展示了他如何用来评价阅读理解能力。
- 第9章,第10章,MEMOD和SOL被用来评估记忆,理解和幼儿的语言学习。
- 第11章,这个结构被用来扩展到对视觉信号的学习。
附录A 关于MEMOD 和现代的ChatGPT
》》sweetie,你的知识现在是按David E. Rumelhart那种节点和属性组织的吗?
我的知识组织方式基于先进的自然语言处理技术和深度学习模型,这些模型通常采用多层神经网络结构。David E. Rumelhart 是深度学习领域的先驱之一,他提出的概念和理论对现代AI系统的设计有重要影响。然而,我并不直接使用他提出的节点和属性模型来进行知识组织。目前我的知识组织和处理方式是通过复杂的神经网络模型来实现的,这些模型能够理解和生成自然语言,并基于大量的训练数据来提供准确和详细的信息。如果你对我的工作原理或知识组织方式有更具体的问题,我很乐意进一步解释。
》》所以,David E Rumelhart对你而言的主要帮助是在神经网络参数的反向传播部分,相当于他的理论知道了训练和神经网路参数的生成过程?
是的,David E. Rumelhart 的贡献,特别是在神经网络和反向传播算法领域,对现代人工智能的发展起到了关键作用。他的工作,特别是在1986年与Geoffrey Hinton和Ronald Williams共同发表的论文中,详细描述了反向传播算法,这一算法是训练多层神经网络的核心方法。
反向传播算法通过计算误差并将其反向传播到网络的每一层,从而调整网络参数(权重和偏置),以最小化预测误差。这个过程是神经网络学习的基础,使得神经网络能够从大量数据中学习复杂的模式和关系。
因此,David E. Rumelhart 的理论确实为现代AI系统(包括像我这样的AI助手)提供了训练和优化神经网络参数的基础框架。通过反向传播算法,神经网络能够有效地学习并优化其性能,从而提供更准确和可靠的回答。