📜  人工智能在一阶逻辑工程学

📅  最后修改于: 2020-09-23 10:48:57             🧑  作者: Mango

一阶逻辑中的知识工程

什么是知识工程?

用一阶逻辑构造知识库的过程称为知识工程。在知识工程中,研究特定领域,学习该领域的重要概念并生成对象的形式表示的人称为知识工程师。

在本主题中,我们将了解已经熟悉的电子电路领域的知识工程过程。此方法主要适合于创建专用知识库。

知识工程过程:

以下是知识工程过程的一些主要步骤。使用这些步骤,我们将开发一个知识库,使我们能够对数字电路(一位全加法器)进行推理,如下所示

1.确定任务:

该过程的第一步是确定任务,对于数字电路,有各种推理任务。

在第一层或最高层,我们将检查电路的功能:

  • 电路是否正确添加?
  • 如果所有输入均为高电平,则门A2的输出是什么?

在第二级,我们将检查电路结构细节,例如:

  • 哪个门连接到第一个输入端子?
  • 电路是否有反馈回路?

2.汇集相关知识:

在第二步中,我们将汇总数字电路所需的相关知识。因此,对于数字电路,我们具有以下必需的知识:

  • 逻辑电路由导线和门组成。
  • 信号通过导线流到栅极的输入端子,每个栅极产生相应的输出,该输出进一步流动。
  • 在该逻辑电路中,使用了四种类型的门: AND,OR,XOR和NOT
  • 所有这些门都有一个输出端子和两个输入端子(非门除外,它有一个输入端子)。

3.决定词汇:

该过程的下一步是选择函数,谓词和常量以表示电路,端子,信号和门。首先,我们将把大门与其他物体区分开。每个门都表示为一个由常量命名的对象,例如Gate(X1)。每个门的功能取决于其类型,该类型被视为诸如AND,OR,XOR或NOT之类的常量。电路将由谓词标识:电路(C1)。

对于终端,我们将使用谓词:Terminal(x)。

对于门输入,我们将使用函数In(1,X1)表示门的第一个输入端子,对于输出端子,我们将使用Out(1,X1)。

函数Arity(c,i,j)用于表示电路c具有i输入,j输出。

门之间的连通性可以用谓词Connect(Out(1,X1),In(1,X1))表示。

我们使用一元谓词On(t),如果终端上的信号打开,则为true。

4.编码有关该域的常识:

要编码有关逻辑电路的常识,我们需要遵循以下规则:

  • 如果连接了两个端子,则它们具有相同的输入信号,可以表示为:
∀  t1, t2 Terminal (t1) ∧ Terminal (t2) ∧ Connect (t1, t2) → Signal (t1) = Signal (2).   
  • 每个端子上的信号值为0或1,将表示为:
∀  t Terminal (t) →Signal (t) = 1 ∨Signal (t) = 0.  
  • Connect谓词是可交换的:
∀  t1, t2 Connect(t1, t2)  →  Connect (t2, t1).       
  • 闸门类型的表示:
∀  g Gate(g) ∧ r = Type(g) → r = OR ∨r = AND ∨r = XOR ∨r = NOT.   
  • 当且仅当其任何输入为零时,AND门的输出才会为零。
∀  g Gate(g) ∧ Type(g) = AND →Signal (Out(1, g))= 0 ⇔  ∃n Signal (In(n, g))= 0.   
  • 当且仅当其任何输入为1时,或门的输出为1:
∀  g Gate(g) ∧ Type(g) = OR → Signal (Out(1, g))= 1 ⇔  ∃n Signal (In(n, g))= 1   
  • 当且仅当其输入不同时,XOR门的输出才为1:
∀  g Gate(g) ∧ Type(g) = XOR → Signal (Out(1, g)) = 1 ⇔  Signal (In(1, g)) ≠ Signal (In(2, g)).  
  • 非门的输出是其输入的反相:
∀  g Gate(g) ∧ Type(g) = NOT →   Signal (In(1, g)) ≠ Signal (Out(1, g)).  
  • 上述电路中的所有门都有两个输入和一个输出(非门除外)。
∀  g Gate(g) ∧ Type(g) = NOT →   Arity(g, 1, 1)   
∀  g Gate(g) ∧ r =Type(g)  ∧ (r= AND ∨r= OR ∨r= XOR) →  Arity (g, 2, 1).   
  • 所有门都是逻辑电路:
∀  g Gate(g) → Circuit (g).   

5.编码问题实例的描述:

现在我们对电路C1的问题进行编码,首先我们对电路及其门极组件进行分类。如果已经考虑了有关该问题的本体,则此步骤很容易。此步骤涉及编写概念实例的简单原子语句,这称为本体。

对于给定的电路C1,我们可以使用原子语句对问题实例进行编码,如下所示:

由于电路中有两个XOR,两个AND和一个OR门,因此这些门的原子语句为:

For XOR gate: Type(x1)= XOR, Type(X2) = XOR  
For AND gate: Type(A1) = AND, Type(A2)= AND  
For OR gate: Type (O1) = OR.    

然后代表所有门之间的连接。

注意:本体论定义了关于存在本质的特定理论。

6.对推理过程进行查询并获得答案:

在这一步中,我们将找到加法器电路所有端子的所有可能值集。第一个查询将是:

输入将产生电路C1的第一输出为0而第二输出为1的输入的组合是什么?

∃ i1, i2, i3 Signal (In(1, C1))=i1  ∧  Signal (In(2, C1))=i2  ∧ Signal (In(3, C1))= i3  
 ∧ Signal (Out(1, C1)) =0 ∧ Signal (Out(2, C1))=1  

7.调试知识库:

现在我们将调试知识库,这是整个过程的最后一步。在这一步中,我们将尝试调试知识库问题。

在知识库中,我们可能省略了诸如1≠0之类的断言。