수학은 모델의 설정에 가장 효과적인 수단으로 대상을 정확하고 엄밀하게 기술할 도구로서의 "언어"를 필요로 한다.이때 언어의 역할을 담당하는 것을 수리논리 (mathematical logic) 라고 한다. 언어에서 명확하게 정의되는 기호에 의해 논리의 모호성을 없애고 기술의 편의를 위해 기호가 사용된다. 수리논리를 기호논리라고도 한다. computer에서는 수학을 이용해서 여러현상을 모형화하고 분석하므로 논리는 집합과 함께 computer를 연구발전 시키는데 필수적인 수단이다 .... Logic 개요
전문가 시스템의 구축을 위해서 가장 먼저 필요한 것은 전문가의 지식을 어떻게 computer에 저장할 것이며 , 이를 사용자에게 어떻게 효율적으로 전달할수 있을까 하는 것이다. 어떤 지식 혹은 사실을 표현하는 데는 여러 가지 방법이 있다. 그중 사람에게 가장 쉬운 것이 우리가 일상 사용하는 말 (natural language) 이다. 그러나 자연어를 computer에서 수용하기에는 많은 문제점이 있다. 따라서 기호에 의해 사실을 표현하기도 한다.
그러나 명제논리 에 의해 사실을 표현시 모든 사실을 논리식으로 표현하여 기호화 할수 있으나 기호화된 사실들이 서로 독립적이어서 상호 관계를 알수 없고 또 수량화시킬수 없다는 단점이 있다.이러한 단점은 술어논리 에의해 보완될수 있다.
여기서는 술어논리에 의한 사실의 표현에 대해 검토한다. 아래에서 1, 2, 4, 8 은 사실(fact) 이며 3, 5, 6, 7, 9 는 규칙(rule) 이다.
문장 |
술어논리에 의한 표현 |
1. 철수는 남자이다 |
man(철수) |
2. 철수는 대학생이다 |
collegestudent(철수) |
3. 모든 대학생은 학생이다 |
∀x(collegestudent(x)→student(x)) |
4. 혜수는 배우이다 |
actor(혜수) |
5. 모든 학생은 혜수를 좋아하거나 싫어한다. |
∀x(student(x)→like(x, 혜수)∨dislike(x,혜수)) |
6. 모든 사람은 누군가를 좋아한다 |
∀x∃y like(x, y) |
7. 사람들은 그들이 좋아하지 않는 배우는 비난한다 |
∀x∀y(person(x)∧actor(y)∧blame(x, y)→~like(x, y)) |
8. 철수는 혜수를 비난한다 |
blame(철수, 혜수) |
9. 남자는 사람이다 |
∀x(man(x)→person(x)) |
위와같은 지식체계를 이용하여 여러 가지 질문에 답할수 있을 것이다. 예를들면 , "철수는 혜수를 좋아하는가? "라는 질문에 대해 답을 구하는 전문가시스템이라고 하면, 이것은 ~like(철수, 혜수) 에 대한 True or False를 묻고 있다고 할 수 있다. 이것은 추론의 기법상 역방향추론 (Backward Chaining Inference) 에 해당한다. 아래에서 질문대상이 fact 일 경우 확인에 그치고, Rule 일 경우는 조건에 대해서 다시 질문한다
~like(철수, 혜수) : 철수가 혜수를 싫어하는가?를 질문한다
↓ : 7에서 싫어하는 조건을 확인한다 (Rule -> 조건을 다시 질문한다)
person(철수)∧actor(혜수)∧blame(철수, 혜수) : 철수는 혜수를 비난하는가?질문
↓ : 8에서 비난하는 것을 확인 (fact)
person(철수)∧actor(혜수) : 혜수는 배우인가? 질문
↓ : 4에서 혜수는 배우다라는 것 확인 (fact)
person(철수) : 철수는 사람인가? 질문
↓ : 9에서 사람의 조건을 확인(Rule -> 조건을 다시 질문한다)
man(철수) : 철수는 남자인가? 질문
↓ : 1에서 남자인 것 확인 (fact)
NIL : 질문이 True 임이 밝혀졌다. 따라서 철수는 혜수를 좋아하지 않는다.