✅ 操作成功!

产生式系统

发布时间:2023-06-09 作者:admin 来源:文学

产生式系统

产生式系统

-

2023年2月27日发(作者:我和我的小伙伴)

知识表⽰的⽅法——逻辑表⽰法、产⽣式表⽰法、框架表⽰法、

语义⽹络表⽰法、⾯向对象表⽰

知识表⽰的⽅法

知识表⽰⽅法种类繁多,通常有直接表⽰、逻辑表⽰、产⽣式规则表⽰法、

语义⽹络表⽰法、框架表⽰法、脚本表⽰⽅法、过程表⽰、混合型知识表⽰⽅法、

⾯向对象的表⽰⽅法等。

在本⽂中,着重介绍⽬前使⽤较多的知识表⽰⽅法。⽬前使⽤较多的知识表

⽰⽅法主要有:逻辑表⽰法、产⽣式表⽰法、框架表⽰法、语义⽹络表⽰法、⾯向对象表⽰等等。

2.3.2.1⼀阶谓词逻辑表⽰法[

45]

通过引⼊谓词、函数来对知识加以形式化描述,获得有关的逻辑公式,进⽽

以机器内部代码表⽰的⼀种⽅法。谓词逻辑是⼀种形式语⾔,它与⼈类的⾃然语

⾔⽐较接近,是⽬前能够表达⼈类思维活动的⼀种最精确的语⾔,它具有丰富的

表达能⼒,因⽽可以表⽰⼤量常识知识。它具有简单、⾃然、精确、灵活、容易

实现等特点。

⼀阶谓词的⼀般形式为P(x1,x

2…x

n)。其中,P是谓词,x

1,x

2…x

n

是常量、变

元或函数。谓词逻辑适⽤于表⽰事物的状态、属性、概念等事实性的知识,也可

以⽤来表⽰事物间关系的知识,即规则。

例如:

物体A在物体B的上⾯,可以表⽰为:On(A,B);

物体A是书,可以表⽰为:book(A);

书A在书B上,可以表⽰为:On(book(A),book(B))。

⼀阶谓词逻辑表⽰法的局限性在于它难以表达不确定性知识和启发性知识,

推理⽅法在事实较多时易于出现组合爆炸,且推理过程繁杂、效率低。

2.3.2.2产⽣式表⽰法

多数较为简单的专家系统(ExpertSystem)都是以产⽣式表⽰知识,相应的系

统被称作产⽣式系统。

产⽣式系统,由知识库和推理机组成。其中知识库由事实库和规则库组成。

事实库是已知事实的集合,规则库是产⽣式规则的集合。规则则是产⽣式规则。

规则库蕴涵着将问题从初始状态转换到解状态的那些变换规则,规则库是专家系

统的核⼼部分。规则可以表⽰成与或树的形式,基于事实库中的事实通过与或树

求值的过程就是推理。事实库中存放着初始事实、中间推理结果和最后推理出的

结论。推理机控制协调规则库与数据库的运⾏,包含推理⽅式和控制策略。产⽣

式系统的推理⽅式有正向推理、反向推理和双向推理。

正向推理:从已知事实出发,通过规则库推理得出结论;

反向推理:从⽬标出发,反向使⽤规则,求得已知事实;

双向推理:即⾃顶向下⼜⾃底向上,直⾄达到某⼀个中间环节两个⽅向的结

果相符便成功结束的推理⽅法。这种推理⽅式的推理⽹络较⼩,效率也较⾼。它

也叫做正反向推理。

产⽣式的基本形式为[

44]:if(前提1)&(前提2)&⋯then(结论1)&(结

论2)&⋯。其中,前提亦称前件、条件;结论可以使要执⾏的操作。整个产⽣式的含义是:如果前提被满⾜,则可推出结论或执⾏所规定

的操作。

产⽣式表⽰法的局限在于它不能表达具有结构性的知识;且由于求解过程是

⼀个匹配、冲突消解反复执⾏的过程,⼯作效率不⾼。另外,在求解复杂问题时

容易引起组合爆炸。

2.3..3框架表⽰法

⼀阶谓词逻辑表⽰法和产⽣式表⽰法常⽤于表⽰论域中不同状态间的关系,

如果想⽤来表⽰⼀个事物同其各个组成部分间的关系就不⽅便了。

框架(Frame)理论是在1975年由美国著名⼈⼯智能学者明斯基(Minsky)

⾸先提出,它是描述对象的属性的⼀种知识表⽰⽅法。在框架表⽰法中,“框架”

是知识表⽰的基本单元。不同的框架之间可以通过属性对象间的关系建⽴联系,

从⽽构成⼀个框架⽹络,充分表达相关对象间的各种关系。它的优点是容易表⽰

结构性知识,具有良好的继承性,不仅减少框架⽹络表⽰知识的冗余,⽽且较好

地保证了知识的⼀致性。

框架是由若⼲结点和关系(统称为槽slot)构成的⽹络。是语义⽹络⼀般化形

式化的⼀种结构,同语义⽹络没有本质区别。

框架由框架名和⼀些槽(slot)组成,每个槽有⼀些值,槽值可以是逻辑的、

数字的,也可以是条件、程序、默认值或是⼀个⼦框架。槽值含有如何使⽤框架

信息、下⼀步可能发⽣的信息、预计未实现该如何做的信息等。

框架的⼀般格式:

FRAMEWORK:

:value

:value

:value

:value

2.3..4语义⽹表⽰法

语义⽹络由奎廉(J.R.Quillian)于1986年提出。它是⼀种通过概念及其语

义关系来表⽰知识的⼀种⽹络图。⼀个语义⽹络就是⼀个带有标志的有向图。其

中,节点表⽰各种概念、事物、事件、情况等;有向弧表⽰它所连接的节点间的

某种语义联系,每个节点可以带有若⼲属性。弧是有⽅向有标注的,⽅向体现主

次。弧上的标注表⽰结点1的属性或结点1和结点2之间的关系。结点间的关系

有is-a,a-part-of,is类型等。⼀个最简单的语义⽹络形式是⼀个三元组:(节点1,

2

2弧,节点2)。如图2.5所⽰:

图2.5语义⽹表⽰法⽰例

当我们要做出推理:猫是否是⼀种动物时,我们可以从“猫”节点开始,通

过查找其关系链,找到“Is-a”关系的次节点“动物”,以此证明猫是⼀种动物。

语义⽹络表⽰法的局限性主要表现在它对知识表⽰的⾮严格性,不能保证不

存在⼆义性;以及由于其⾃⾝的灵活性和⾮严格性所带来的知识处理的复杂性。

2.3..5⾯向对象的知识表⽰法

随着⾯向对象技术⽅法的深⼊发展,⾯向对象的知识表⽰⽅法也开始应⽤于

专家系统。⾯向对象⽅法具有封装性、模块性、继承性、易于维护和可扩展性好

等优点。⼴义上,对象可以理解为客观世界的任何事物。这种⽅法可以将知识抽

象为对象的内部⾏为状态和静态特征属性进⾏封装和隐藏,⽽知识的处理⽅法表

⽰为对内部状态和特征属性的操作。这种⽅法既可以实现灵活的推理机制,⼜使

对知识的操作局限于对象的内部,因此容易实现知识库的⼀致性和完备性。

⽬前应⽤较多的⾯向对象的知识表⽰⽅法是与框架表⽰法相结合,基于框架

来构成类,并将规则作为⼀个“槽”嵌⼊到类中。但是由于框架表⽰法不够灵活,

从⽽极⼤地限制了⾯向对象技术的应⽤。

⾯向对象的知识表⽰⽅法能较好地屏蔽底层关系型数据库的⼆维关系结构,

易于表⽰诸如递归嵌套等复杂结构,易于对这类结构进⾏有效的存储、维护和扩

展。因此,在专家系统中使⽤⾯向对象模型则能够⽅便地表达各类复杂结构的知

识。

Drools规则推理机是⼀个产⽣式规则推理系统,其核⼼是⼀个能够处理⼤量

事实和规则的推理引擎。推理引擎将事实与规则进⾏匹配以得出结论。产⽣式规

则是⼀个⽤⼀阶逻辑进⾏知识呈现的⼆元结构:

when

then

如图2.6所⽰为Drools推理机体系架构,规则存放于规则库中,事实存放于

⼯作空间中。事实被插⼊到⼯作空间后,可以被修改或删除。⼀个有⼤量规则和

事实的系统可能有很多规则被满⾜,这些规则被称为具有冲突性。调度器Agenda

通过冲突解决策略管理这些冲突规则的执⾏顺序。

在drools推理机中,推理基于产⽣式规则,知识库由规则库和事实库组成,

通过推理引擎的推理最后得出结论。

在基于产⽣式规则推理过程中通常规则的表⽰⽅法为:事实1+事实2+…+事

实N=>结论。⽽在关联分析中,当探测到可能产⽣攻击⾏为的事件时,是否⼀定

会产⽣真正的攻击,我们需要经过⼀系列的发现才能得出结论,所以每次规则匹

配成功后我们不能说明⼀个攻击场景⼀定发⽣,它只是具有⼀个发⽣攻击的可信

度,这就是不确定性。

另外,在drools中我们要将推理机推理出的中间结论存⼊数据库中,以⽅便

复查结论以及展⽰匹配的过程,所以在drools规则的书写中我们要加⼊“动作”

来完成与数据库的交互。并且我们采⽤基于攻击场景构建的关联分析⽅法,所以

事件在匹配时需要和已有攻击场景相匹配。

产⽣式规则适合于表达具有因果关系的过程性知识,但对具有结构关系的知

识却⽆能为⼒,它不能把具有结构关系的事物之间的结构联系表⽰出来。因此,

我们将采⽤“推理连”来表⽰前后联系紧密的推理过程。

基于以上所述,⽬前的产⽣式规则表⽰法存在的不⾜之处,例如在产⽣式规

则表⽰法中,由于它是建⽴在因果关系的基础上的,它表⽰的知识有⼀定的格式,

且规则之间不能直接调⽤,因此那些具有结构关系或层次关系的知识不易⽤它来

表⽰。

因此,论⽂提出在drools推理机中,采⽤如下⽅法来表⽰规则:

Rule(Scene1andEvent,Scene2andAction)

其中,Rule代表规则,Scene代表⼀个可能发⽣的攻击场景,Event代表在当

前已发⽣的攻击场景下,⼜侦测到的⼀个相关后续攻击事件,Action代表推理结

果后需要做的交互。

在⼀次攻击中,多条规则构成⼀个完整的攻击场景,这多条规则也构成了⼀

个推理连,我们也称之为“规则组”。我们如下表⽰这个攻击场景:

表3.1攻击场景表⽰格式

Directive{

Rule1{

Rule3

Rule4

}

Rule2{

Rule5{

Rule6

}

}

}

⼀个攻击场景(directive)由若⼲条规则组成,这些规则可能是“与”和“或”

的关系。如表3.1所⽰,Rule1和Rule2是或关系Rule3和Rule4是或关系,⽽Rule1

和Rule3是与关系。这样表⽰的好处是,我们很清楚知道,如果⼀个攻击场景发⽣,

那么只需要满⾜哪些规则即可。在表3.1,当Rule1和Rule3被满⾜时,我们认为

攻击场景的过程已经完成,然后通过计算每个Rule⾥的Reliability来确认这个攻

击发⽣的可信度是多少。

通过知识学习器从以往攻击规律中⾃动获取知识。

⽂献[

50]

X⽤LAMBDA语⾔对每⼀个攻击进⾏详细描述,然后通过分析每个攻击

的前提集和结果集,⾃动⽣成关联规则。这种⽅法提⾼了关联规则的增加效率,

但规则⽣成之前需对每⼀个攻击进⾏LAMBDA语⾔描述,设置攻击的前提集和结

果集,⼗分繁琐且⼜要依赖于专家知识。

⽂献[

51][52]在通信领域应⽤挖掘的⽅法从各种通信设备上报的事件中提取规

则,对于⽹络安全事件关联规则的⾃动提取有⼀定的启⽰作⽤。

有研究也提出了应⽤数据挖掘的⽅法来⽣成⽹络安全事件关联规则,规则的

⽣成⽆需⼿⼯⼲预,但仅限于理论模拟

👁️ 阅读量:0