추 론
전문가 시스템 원리와 개발 : 이재규, 최형림, 김현수, 서민수, 주석진, 지원철 공저, 법영사, 1996, Page 62~80
|
3.1 역방향 추론 (Backward Chaining) |
추론이란 이미 알고 있는 사실과 지식으로부터 새로운 사실을 유추하여 내는 것을 말한다. 지식베이스 시스템이 다른 시스템과 다른 점 중의 하나가 바로 이러한 추론을 할 수 있는 능력이 있다는 것이다. 추론의 한 예를 들어보자. 바둑이는 늘 자기 집에 있거나, 그렇지 않으면 뒷마당에 있다고 하는 지식이 있다. 그리고 바둑이가 지금 자기 집에 없다는 사실을 알았다. 이러한 지식과 사실을 토대로 바둑이는 뒷마당에 있음을 추론해 낼 수 있다(이것은 나중에 설명할 명제논리에서의 추론 규칙에 바탕을 두고 있다). 일반적으로 추론이라 하면 위의 예처럼 논리적 바탕위에 유추해 내는 것을 먼저 생각할 수 있으나, 해답을 도출하기 위한 모든 작업으로 볼 수 있다. 심지어 지식 표현이 테이블이건 그래프나 프레임이건, 그 안에서 우리가 원하는 새로운 사실이나 결론등을 도출해 내는 모든 과정을 바로 추론이라 볼 수 있다. 따라서 추론을 어떤 특정한 형식에 국한하지 않고 때로는 탐색의 형태로 때로는 계산의 형태로 나타나게 할 수도 있다. 추론은 지식의 표현과 밀접한 관련이 있다. 지식 표현의 방식이 추론방식을 결정하기 때문이다. 본 장에서는 여러 가지 형태의 지식 표현과 연결하여 그에 따른 추론 방법을 고찰해 보기로 한다.
일반적으로 논리를 이용한 지식 표현에서 많이 사용되는 것이 명제논리이다. 명제논리는 진위를 판단할 수 있는 명제들로 구성된다. 지식 표현으로 많이 사용되는 규칙도 그 의미가 논리적 암시 (Logical Implication) 라면 명제계산에 바탕으 두고 있다. 본 절에서는 이러한 규칙형태의 지식 표현에 대한 기본 추론방식들을 소개한다.
Modus Ponens는 라틴어가 어원인데 "way" 란 뜻인 modus와 "assert"란 뜻의 ponere가 합성된 말이다. modus ponens 는 규칙형 지식베이스에서의 가장 기본적인 추론방식인데 "A→B"와 같은 규칙이 있고, 또 그 전제가 되는 A가 사실일 때 결론 B를 내리는 것을 말한다.
다음과 같은 진술식이 있다고 하자.
"어떤 동물이 새이다 → 그 동물은 알을 낳는다."
이때 어떤 동물이 새라면 우리는 그 동물은 알을 낳음을 알 수 있다. 이를 명제논리에서의 항진문 (Tautology) -그 구성 명제의 진위에 관계없이 항상 참이되는 논리적 결합문-형태로 쓰면,
((A → B) AND A) → B
이고 이것은 항상 참이 된다.
이의 증명을 진리표형태로 나타내면 <표 3-1>과 같다.
|
A |
B |
A→B |
(A → B) AND A |
((A → B) AND A) → B |
|
T T F F |
T F T F |
T F T T |
T F F F |
T T T T |
<표 3-1> Modus ponens의 진리표
위의 표에서 A와 B가 참이든 거짓이든 ((A → B) ∧ A) → B은 항상 참임을 알 수 있다. 또한 보다 더 축약된 방법으로 modus ponens의 진리표를 작성하면 <표 3-2>와 같다.
|
A |
B |
전 제 |
결론 B |
|
|
A → B |
A |
|||
|
T T F F |
T F T F |
T F T T |
T T F F |
T F T F |
<표 3-2>축약된 A → B, A, B에 관한 진리표
여기서 A → B와 A가 참이면 B도 참임을 알 수 있고, A가 참이나 규칙 A → B가 거짓이면 결론 B도 거짓임을 알 수 있다. 예를 들어 다음과 같은 잘못된 규칙이 있다고 하자.
"어떤 동물이 새이다 → 그 동물은 새끼를 낳는다"
이때 어떤 동물이 새이면 이 규칙이 거짓이므로 그 동물은 새끼를 낳지 않음을 알 수 있다. 또한 A → B가 참일 때 조건문이 거짓이면 결론에 대한 진위는 불명확함을 알 수 있다. 즉 다음과 같은 참인 규칙이 있을 때,
"어떤 동물이 새이다.→ 그 동물은 알을 낳는다."
어떤 동물이 새가 아니면 그 동물이 알을 낳는지 알을 안 낳는지는 불명확하다. 즉, 알을 낳는다라는 명제가 참일 수도 거짓일 수도 있다. 즉, 뱀은 새는 아니지만 알을 낳고, 사자는 새도 아니고 또한 알도 낳지 않는 것이다.
명제논리에서는 그 진술들이 항상 참이나 거짓 중 하나의 값을 가지고 있어야 한다. 그러나 실제로 해당 조건이 참인지 거짓인지 모르는 상태, 즉 미확인 또는 未知 (Unknown) 상태인 경우가 많다. 이때는 그 결론 또한 미확인의 상태가 된다. 이러한 경우 추론은 더 이상 진행될 수가 없다. 즉, 결론에 대한 참인지 거짓인지에 대한 아무런 확답을 할 수 없기 때문이다. 또한 이미 진행된 추론 과정에서 앞서 추론에 사용되었던 사실이나 조건이 더 이상 참이 아님을 알았을 때, 예를 들어 어떤 동물이 처음엔 새로 알았으나 자세히 살펴보니 새가 아님이 밝혀지면, 앞에서 소개된 진위표에 따라 해당 규칙에 의해 modus ponens에 의해 추론된 결과의 진위값도 달라져야 한다.
Modus Tollens(대우)의 Tolens는 "deny" 란 듯의 라틴어 tollere에서 온 것이며, modus tollens 는 규칙의 결론이 거짓일 때 그 조건 또한 거짓이라고 추론하는 것이다. 이는 다음과 같이 나타낼 수 있다.
A → B
NOT B
결론 : NOT A
다음의 예를 보자.
대출 신청자의 자격요건이 맞다 → 대출을 승인받는다.
NOT (대출을 승인받는다).
결론 : NOT (대출 신청자의 자격요건이 맞다).
즉, 대출신청자의 자격요건이 맞으면 대출을 승인받을 때, 만약 대출을 승인받지 못했다면 그 신청자는 자격요건이 맞지 않는다라고 결론내리는 것이다. modus tollens에 관한 진리표는 다음과 같다.
|
A |
B |
전 제 |
결론 NOT A |
|
|
A → B |
NOT B |
|||
|
T T F F |
T F T F |
T F T T |
F T F T |
F F T T |
<표 3-3> 축약된 A → B, NOT A, NOT B에 관한 진리표
위의 표에서 A → B와 NOT B가 참이면 NOT A임을 알 수 있다. 그러나 A → B가 맞으나 NOT B가 거짓이면 NOT A는 참이 될 수도 있고, 거짓일 수도 있음을 알 수 있다.
삼단논법은 연쇄규칙 (Chain Rule) 이라고도 하며 결론부분과 조건부분이 서로 같은 두 개의 규칙을 연쇄시켜 새로운 규칙을 도출해 낸다. 즉, A → B와 B→ C가 있으면 A → C라는 규칙을 만들 수 있다. 이는 다음과 같이 나타낼 수 있다.
A → B
B → C
결론 : A → C
다음의 예를 보자.
깃털이 있다 → 새이다
새이다 → 알을 낳는다
이러한 진술식으로부터 "깃털이 있다 → 알을 낳는다"라는 규칙을 도출해 낼 수 있다.
또 다른 예를 보자.
그는 소크라테스이다 → 그는 사람이다
그는 사람이다 → 그는 죽는다
이 두가지 진술식으로부터 "그는 소크라테스이다 → 그는 죽는다" 라는 것을 도출해 낼 수 있다. 그리고 여기서 그는 소크라테스이다라는 진술이 참이면 modus ponens에 의해 그는 죽는다라는 결론을 얻을 수 있다.
이는 다음과 같은 벤 다이어그램 (Venn Diagram) 으로 나타낼 수 있다.
<그림 3-1> 소크라테스에 대한 삼단논법의 벤 다이어그램
소크라테스는 사람에 포함되며 또한 사람은 죽을 수밖에 없는 생물에 속한다. 따라서 소크라테스는 죽는 것이다. 삼단논법은 보통 대전제, 소전제, 그리고 결론으로 나타낸다. 위의 소크라테스에 관한 삼단논법을 다시 표기하면 다음과 같다.
대전제: 모든 사람은 죽는다
소전제: 소크라테스는 사람이다
결 론: 소크라테스는 죽는다
이와 같은 표현은 명제논리로써 나타낼 수는 없다. 왜냐하면 명제계산에는 문장의 내부구조가 없어서 정량자나 독립변수 (Argument) 를 사용할 수 없기 때문이다. 따라서 이를 술어계산의 형태로 표현하면 다음과 같다. 여기서 ∀는 "All"이란 뜻의 전체정량자이다.
(∀x)(사람이다(x) → 죽는다(x))
사람이다(소크라테스)
위의 두 개의 전제로부터 첫 번째 판명문의 x대신에 소크라테스를 대입하면 "사람이다(소크라테스) → 죽는다(소크라테스)"와 같은 진술문이 도출되고 여기서 modus ponens에 의해 "사람이다(소크라테스)" 라는 사실로부터 "죽는다(소크라테스)" 라는 결론을 얻을 수 있다. 이외에도 다음과 같은 명제논리형태에서의 추론 규칙이 있다.
① 
이것은 modus tollens를 규칙형태로 표현한 것이다.
② A OR B
NOT A
결론 : B
예) 바둑이는 집에 있거나 뒷마당에 있다
바둑이는 집에 없다
결론 : 바둑이는 뒷마당에 있다
③ 
부정의 부정은 긍정이다.
④ 
⑤ 
명제논리나 규칙에서 주로 사용되는 이상의 추론 규칙은 패턴 매칭에 기반을 두고 있다. 예를 들어, modus ponens에서 A는 A → B에서의 A와 구문적으로 완전히 일치가 되어야 한다. A가 여러 단어로 구성된 문장일 수도 있지만 이것이 분해될 수는 없다. 예를 들어, '피보험자의 두 눈의 시력을 완전, 영구히 잃어 버렸다'와 '피보험자는 장님이 되었다'를 같은 명제로서 인식하지 못한다. 따라서,
피보험자는 두 눈의 시력을 완전, 영구히 잃어 버렸다 →
피보험자는 제1급 장해 상태이다.
라는 규칙이 있을 때 "피보험자는 장님이 되었다"라는 문장이 주어졌다고 결론인 "피보험자는 제 1급 장해상태이다"를 추론하지 못한다. 왜냐하면 위의 규칙의조건이 "피보험자는 장님이 되었다"라는 사실과 패턴 매칭이 되지 않기 때문이다. 이러한 사실을 규칙형태의 지식 표현에서 반드시 주의해야 할 점이다.
앞서 소개한 동물원 예제를 가지고 규칙표현 지식베이스에서의 추론의 예를 살펴보도록 하자.
다음과 같은 규칙이 있다고 하자.
ⓐ IF 포유류이다
AND 맹수이다
AND 황갈색이다
AND 검은 반점이 있다
THEN 그 동물은 치타이다
ⓑ IF 포유류이다
AND 맹수이다
AND 황갈색이다
AND 줄무늬가 있다
THEN 그 동물은 호랑이다
ⓒ IF 고기를 먹는다
THEN 맹수이다
ⓓ IF 털이 있다
THEN 포유류이다
그리고 어떤 동물이 다음과 같은 사실을 가지고 있음을 알고 있다.
ⓔ 고기를 먹는다
ⓕ 털이 있다
ⓖ 검은 반점이 있다
ⓗ 황갈색이다
사실 ⓔ 와 ⓒ 번 규칙의 조건을 내치시키면 다음의 결론이 도출된다.
ⓘ맹수이다
사실 ⓕ 와ⓓ 번 규칙의 조건을 매치시키면 다음의 결론이 도출된다.
ⓙ 포유류이다
도출된 사실 ⓘ,ⓙ 와 나머지 주어진 사실 ⓖ ,ⓗ그리고 규칙 ⓐ으로부터 그 동물은 치타이다라는 결론을 얻을 수 있다. 그런데 이렇게 추론하는 과정에서 규칙의 수가 많을 경우, 제시된 사실과 매치되는 조건문을 가진 규칙을 찾는 과정이 오래 걸릴 수 있다. 이러한 과정은 일종의 탐색과정으로 인식할 수 있다. 따라서 규칙들이 아무런 순서없이 나열된 상태에서 드러난 사실과 조건문이 매치되는 규칙을 전체탐색법으로 찾으면 매우 비능률일 수 있으므로 트리 또는 그래프 형태로 규칙들을 구조화한 후 여기서 깊이우선탐색이나 너비우선탐색 등의 방법을 사용하는 것이 좋다. 이러한 방법에 대해서는 다음의 역방향 추론과 정방향 추론에서 설명하겠다.
서너 개의 규칙과 사실로부터의 추론은 매우 간단하지만, 실제로 수많은 규칙과 사실로부터 추론을 한다는 것은 해당 사실에 매치되는 규칙과 그 규칙의 결론부를 조건문으로 갖는 규칙을 찾는 것으로 상당한 시간이 걸리는 일이 된다. 따라서 규칙형태의 지식베이스를 그저 규칙의 집합으로 볼 것이 아니라 조건부와 결론부가 서로 매치되는 연쇄구조와 조건부의 AND와 OR의 논리적 결합을 고려하여 전체 규칙베이스를 구조화하여 상황에 따른 추론의 경로를 미리 설정해 놓아 추론의 효율성을 높이고자 하는 것이 AND/OR 그래프이다. 이러한 AND/OR그래프에서도 그 추론 방법은 기본적으로 명제논리에 근거를 두고 있지만, 특별히 역방향 추론과 정방향 추론 방법이 있다.
연쇄 (Chain) 란 각각의 문제와 그것의 해답을 연결하는 모든 추론 과정들의 집합을 말한다. 그리고 어떤 가설에서 추론을 시작하여 이 가설을 지지하는 사실을 역으로 추적해 가는 추론을 역방향 추론이라 한다. 이 추론의 시작점을 목표 (Goal) 라고 하며, 추론의 방향은 이 목표를 지지하는 하위목표 또는 사실들이 참인지를 알아보는 방향으로 진행된다. 예를 들어, 앞의 동물원 예제에서 어떤 동물이 치타인지를 알고 싶다고 하면 질문 또는 추론의 목표는 치타이고 이것은 지식에서 "THEN 치타이다" 라는 결론이 참인지 아닌지를 밝히고자 하는 것이다. 따라서 추론의 시작은 "THEN 치타이다" 를 결론으로 하는 규칙의 THEN부분부터 시작하여 거꾸로(역방향) 추론이 진행되어 그 규칙의 조건부분이 참인지를 알아보게 된다.
예를 들어 다음과 같은 규칙이 있다고 하자.
ⓐ A → C
ⓑ D → E
ⓒ B AND C → F
ⓓ E OR F → G
<그림 3-2>는 이러한 규칙을 AND/OR 그래프로 표현한 것이다.
<그림 3-2> 역방향 추론의 예시를 위한 AND/OR 그래프
목표는 G가 참인지를 알아보는 것이라 하자. 역방향 추론에서는 G를 결론부로 삼는 규칙이 있는지를 살펴본다. ⓓ번 규칙이 그것이므로 다시 ⓓ번 규칙의 조건부를 본다. G가 참이 되기 위해서는 ⓓ번 규칙의 조건부인 E 나 F 가 참이 되어야 한다. 이때 E 와 F 중 어느 쪽을 먼저 다음의 목표로 삼는가를 결정해야 하는데 보통은 깊이우선탐색방법에 따라 진행되게 된다. 그러므로 E가 다음의 목표가 된다. 추론기관은 다시 E가 결론부인 규칙이 있나를 살펴본다. ⓑ번 규칙이 그것이므로 이제 현재의 목표는 ⓑ번 규칙의 조건부인 D가 된다. 추론기관은 다시 D를 결론부로하는 규칙이 있나를 살펴본다. 그러한 규칙이 없으므로 사용자에게 D가 참인지를 질문한다. 만약 사용자가 D가 참이라고 대답하였다면 규칙 ⓑ에 의해 E도 참이라고 결론짓고 계속하여 ⓓ번 규칙에 의하여 G는 참이라고 결론짓는다.
그러나 만약 사용자가 D를 거짓이라고 한다면 E는 참이라고도 거짓이라고도 할 수 없게 된다(앞절의 Modus ponens 단원을 참조). 더 이상 E를 통해서는 결론에 도달할 수 없으므로 추론기관은 F로 되돌림 추적 (Backtracking) 하여 F를 다시 목표로 삼는다. F는 ⓒ번 규칙의 결론이고 B와 C가 AND로 연결되어 있어 둘다 필요하므로 이들 둘이 현재의 목표가 된다. B는 더 이상 자신을 결론부로 갖는 규칙이 없으므로 추론기관은 사용자에게 B의 진위를 물어본다. 만약 사용자가 거짓이라고 대답하면 C의 진위에 상관없이 ⓒ번 규칙의 조건은 거짓이 되고 이러한 경우 추론기관은 G가 참이라고 결론짓는데 실패하게 된다.
그러나 B를 참이라고 사용자가 대답한다면, 이제는 C가 참인지를 살피게 된다. C는 ⓐ번 규칙의 결론부이므로 추론기관은 A를 새로운 목표로 삼는다. 더 이상 A를 결론부로 하는 규칙이 없으므로 A의 진위여부를 사용자에게 물어보게 된다. 사용자가 A를 참이라고 대답한다면 ⓐ번 규칙에 의해 C가 참이되고, 다시 ⓒ번에 의해 F가 참, 그리고 ⓓ번 규칙에 의해 G가 참이 된다.
앞 절에서 사용된 동물원 예제 둥의 일부를 AND/OR그래프로 표현하면 다음과 같다.
<그림 3-3> 역방향 추론 예시를 위한 동물원 예제중의 AND/OR 그래프
여기서 사용자가 어떤 동물이 치타인지 호랑이인지를 알고 싶을 때 역방향 추론에서는 먼저 해당 동물이 치타라고 가설을 세우고 치타와 관련된 증거를 찾게 된다. 위의 AND/OR 그래프상에서는 "그 동물은 치타이다" 라는 노드가 먼저 목표가 되는 것이다. 이 목표 노드와 연결된 자식 (Children) 노드들으 모두 AND로 연결되어 있는데 이들 노드의 내용에 따라 해당 동물에 반점이 있는지, 황갈색인지, 맹수인지, 포유류인지를 살펴보게 된다. 이 중 하나라도 참이 아니면 해당 동물이 치타라는 결론은 내릴 수 없게 된다. "반점이 있다" 와 "황갈색이다" 라는 데 사용자가 참이라고 대답하였다면 "맹수이다"를 다시 목표로 삼아 참인지를 살펴보게 되는데 이를 알기 위해 다시 하위노드인 "고기를 먹는다" 에 관해 참인지를 사용자에게 질문하게 된다. 사용자가 참이라고 대답하면 "맹수이다" 라는 것이 참이 되고 다시 포유류인지를 살펴보게 된다. 그리고 포유류인지를 알기 위해 다시 "털이 있다" 가 참인지를 질문하게 된다. 여기서도 참이라고 대답하면 "포유류이다"가 참이 되고 그 동물은 "치타이다" 라는 결론에 도달하게 된다. 이렇게 역방향 추론은 목표를 선정한 후 추론의 순서를 결정하므로 이를 목표지향적 (Goal Driven) 추론방식이라고도 한다.
정방향 추론에서는 사용자가 추론하고자 하는 문제와 관련하여 알고 있는 모든 사실들을 먼저 제공하여야 한다. 그러면 추론기관은 각각의 사실과 지식베이스에 있는 규칙들의 조건부분과 매치하여 일치하는 규칙을 찾아 해당 규칙을 수행하고 그 규칙의 결론부분을 참으로 밝혀진 새로운 사실로서 추가한다. 이러한 과정은 추론기관이 더 이상 지식베이스에 있는 규칙들의 조건부분과 사실들과의 매치로서 새로운 결론을 내릴 것이 없을 때가지 진행된다. 앞에서 언급한 <그림 3-2>의 AND/OR 그래프를 보자. 만약 A 와 B가 참이라는 사실로 주어진다면 추론기관은 A를 이용하여 ⓐ번 규칙으로부터 C를 참이라 하고, B와 C를 이용하여 ⓒ번 규칙으로부터 F를 참이라 하고 계속 G를 참이라 한다. 이와 같은 과정이 <그림 3-4> 에 나타나 있다.
<그림 3-4> 정방향 추론의 진행의 예시
정방향 추론은 사실이 주어짐에 따라 추론이 형성되므로 데이터 구종적 (Data Driven) 이라 한다.
혼합형 추론 방법은 정방향 추론과 역방향 추론을 혼합하여 사용하는 것이다. 이를 양방향 추론이라 부르기도 한다. 실제로 이들 두 가지 추론 방법을 같이 사용해야 되는 경우가 많다. 예를 들어, 철호라는 사람이 차를 몰다가 경찰차가 사이렌소리를 내며 뒤쫒아 오는 것을 알았다고 하자. 철호는 이 사실로부터 경찰차는 자기차나 또는 다른 차를 세우러 온다는 것을 정방향 추론에 의해 추리할 것이다. 즉, 경찰차에 대한 최초의 사실이 두 가지 가능한 결론을 도출해 낸 것이다. 만약 경찰차가 철호의 차 옆으로 다가와서 서라는 신호를 보내면 다른 차가 아닌 자신의 차를 세우려 한다는 것으로 결론지을 것이다. 그런 다음 자신의 차를 경찰이 세우려 한다는 결론을 두고 왜 경찰이 자신의 차를 세우는지에 대한 이유를 역방향 추론으로 추론을 할 것이다. 즉, 경찰이 자신의 차를 세우는 데 대해 이유가 될 하위가설들을 설정할 것이다. 예를 들어 과속, 신호위반, 도난차량, 깜박이고장 등의 하위가설을 두고 이들 중 어느 것이 맞는지를 알기 위해 각각의 가설에 대해 이를 지지할 증거를 찾을 것이다. 또 다른 예를 들어 보자. 의료진단을 위한 지식이 있을 때, 증상을 알고 있고 이로부터 병명을 알고 싶을 때는 정방향 추론을 사용하고, 병명은 알고 있으나 이로부터 생기는 증상을 알고 싶으면 역방향 추론이 사용될 수 있다.
이 절에서는 앞 절에서 설명한 추론방식 외에 다른 여러 가지 추론방식들에 대해 언급하겠다.
이미 제 2장에서 언급했듯이 메타 지식은 지식에 관한 지식으로, 추론을 할 때 어느 규칙을 먼저 추론할 것인지 탐색의 순서를 결정하는데 사용될 수 있다. 그리고 메타지식은 상황에 따라 지식베이스의 특정한 부분을 추론의 대상에서 제외할 수도 있다. 또한 어떠한 추론 방법을 택할 것인지도 결정할 수 있다. 그리고 메타 지식은 지식끼리 상충되어 서로 다른 결론을 내려야 할 경우 그것을 어떻게 조정할지를 결정하는데 사용될 수 있다.
법관이 지난 사건에 대한 판례를 통해 당면한 사건에 대해 판단을 내리듯이, 인간은 과거의 사례나 경험에 비추어 현재의 문제를 인식하고 유형화하여 해결책을 내놓을 수 있다. 이를 위해서는 현재의 당면문제가 과거에 나타났던 사례나 경험과 일치하는지 여부를 살피고 일치하면 과거의 해결책에 비추어 답을 낸다. 만약 정확히 일치하지 않더라도 과거의 사례나 경험은 현재의 문제에 부분적인 해결책을 제시할 수 있다. 사례기반 추론은 이러한 인간의 지적 활동을 모델화한 것으로, 과거문제로부터 얻은 상황 경험이나 지식을 사례 데이터베이스로 구축하여 어떠한 상황이나 문제가 발생하면 기존의 사례 데이터베이스에서 가장 똑같거나 또는 가장 유사한 사례를 선택하여 그 사례가 제시하는 해결책으로 현 문제에 대한 답을 제시한다.
이는 규칙베이스 전문가시스템에서의 정방향 추론과 같이, 주어진 지식베이스 공간에서 추론하는 것과는 다르다. 규칙베이스 전문가시스템의 추론방식은 사용자로부터 문제에 대한 세부사항이나 혹은 질문과 대답을 통해 입력을 받아 이를 토대로 규칙베이스에서의 관련된 규칙간의 연쇄 (Chaining) 를 통해 해답에 도달한다 (그림 1 참조).
![]()
그림 1 규칙베이스 전문가시스템에서의 규칙의 연쇄에 의한 문제풀이
이러한 추론의 문제점은 만약 똑같은 문제가 다시 주어져도 규칙베이스 전문가시스템은 똑같은 양의 작업 (추론) 을 하여 같은 결론에 도달할 것이다. 즉, 한번 제시된 해답을 도출한 연쇄를 저장하여 재활용하지는 않는 것이다. 그리고 규칙베이스에서 제공하는 지식의 적용 영역을 벗어나는 문제에 대해서는 전혀 도움을 줄 수가 없다. 이러한 문제에 대해서는 다시 지식을 보충하여야만 해결 가능하게 된다. 마지막으로, 규칙베이스의 문제점은 규칙베이스 시스템에서는 그 지식을 마련하고 또 유지하는 데 많은 시간과 노력이 든다는 것이다. 이는 전문가로부터 지식을 추출하는 작업은 매우 노동집약적인 일이며, 규칙과 규칙은 서로 긴밀히 연결되어 있어서 새로운 규칙을 입력한다는 것은 매우 힘든 디버깅 작업과 같기 때문이다.
사례기반 추론은 이와는 다른 접근법을 가진다. 과거의 사례를 바탕으로 문제를 해결하기 때문에 비록 문제가 복잡하더라도 이미 해결된 사례를 통해 해를 빨리 도출할 수 있다. 그러므로 지식이 잘 파악되지 않은 대상영역에 있어서도 사례로서 추론을 가능하게 한다. 그리고 정확히 일치되는 사례를 발견할 수 없다면 가장 유사한 사례를 변형하여 새로운 문제를 해결하도록 할 수 있으며 이렇게 해결된 사례는 다시 새로운 사례로서 저장되게 된다. 사례기반 추론에서의 추론과정은 다음과 같이 표현될 수 있다.

그림 2 사례기반 추론 과정
사례기반 추론에 있어 고려되어야 할 사항은 다음과 같다.
(1) 사례의 표현
사례를 어떻게 표현할 것인지를 결정하는 것이 중요하다. 사례는 간단히 표현하면 특정 결과 (Outcome) 에 해당하는 특성 (Feature) 들의 리스트가 될 수 있다. 예를 들어, 어떤 환자에 대한 진단과 그 환자의 과거 병상기록 등과 같은 것이다. 복잡한 사례표현의 경우로 내연기관의 설계 사례와 같은 것을 들 수 있다.
(2) 사례의 인덱싱 (Indexing)
가장 유사한 사례를 신속히 도출하는 것이 사례기반 추론 시스템의 주요 성능지표가 된다. 이러한 사례의 유사성을 결정하는 가장 간단한 방법으로는 먼저 각 특성간의 비교를 통해 가장 일치되는 특성이 많은 사례를 고르는 것이다. 예를 들어, 현재의 상황 특성 중 여섯 개가 일치되는 사례가 네 개 일치되는 사례보다 선호되는 것이다. 그러나 상황에 따라 어떤 특성의 비중이 다른 여러 특성보다 오히려 커지는 경우 단순히 일치되는 개수만으로는 판단하기 어렵게 된다.
다른 인덱싱 방법으로 ID3 (자동학습에서 설명됨) 와 같은 귀납적 (Inductive) 알고리즘을 이용하여 사례를 트리형태로 분류할 수도 있다. 각 사례의 결과를 가장 잘 변별할 수 있는 특성을 기준으로 계층적으로 사례를 분류해 놓으면 사례의 탐색속도가 우수하고 자동적이며 객관적으로 사례의 인덱싱이 가능하다. 그러나 이러한 방법을 사용하기 위해서는 충분한 양의 사례가 확보되어야만 정확하게 변별력있는 특성을 찾아낼 수 있다.
또한 사례를 인덱싱하는 또하나의 방법은 지식을 이용하는 것인데 이러한 지식에 의해 어떠한 특성이 가장 유사한 사례를 도출하는데 중요한지를 결정하는 것이다. 만약 왜 이 사례가 유사하다고 도출되었는지에 대해 설명할 수 있는 지식이 존재하고 표현될 수 있다면 이는 매우 유용한 방법이 될 수 있다.
(3) 사례의 변형 (Adaptation)
만약 주어진 문제에 대한 적절한 사례가 없다면 사례를 변형하여 주어진 문제상황의 요구에 일치되게 하여야 한다. 이러한 변형의 방법은 모든 문제마다 달라질 수 있으므로 일률적인 틀을 적용할 수는 없다. 보통 변형을 위한 모델이나 지식형태로써 사례의 변형방향을 결정하고 있다. 이러한 변형모델 또는 규칙 (지식) 을 이용해 도출된 사례를 현재 주어진 문제의 조건들을 충족시키는 사례로 변형하게 된다. 사례의 자동변형은 사례기반 추론의 핵심연구주제로서 부각되고 있다.
(4) 학습과 일반화
사례가 축적되면서 사례의 일반적 요소를 추출해 대상문제의 중요특성을 포함하는 전형적인 사례로 지정함으로써 사례기반 추론 시스템이 해결할 수 있는 문제의 대상영역을 보다 넓힐 수 있다.
일반적으로 논리에서 사실이 주어지면 그에 따라 새로운 정리가 도출되고 또 이 도출된 정리로 인해 또 다른 정리 또는 사실이 나타난다. modus ponens 나 삼단논법 등은 계속적으로 사실이나 공리를 증가시킨다. 따라서 이렇게 진위가 밝혀진 사실이나 새로운 정리의 수가 계속적으로 늘어나는 연역추론 과정을 단조 (Monotonic) 하다라고 한다. 반면에 한번 밝혀진 사실이 취소된다든지 또는 다른 사실과 상충되어 어느 하나가 거짓으로 판명된다든지 또는 시간이 지남에 따라 어떤 사실이 더 이상 효력이 없다든지 하여 판명된 공리의 수가 항상 늘어나지만은 않고 오히려 줄어들 수도 있는데, 이러한 연역추론시스템을 비단조 (Nonmonotonic) 하다라고 하고 이러한 추론을 비단조추론 이라 한다.
예를 들어 항공기 식별시스템에 나타난 여러 가지 증거로 봐서 현재 우리 나라 상공으로 다가오는 항공기는 보통 민간여객기로 판명되었으나 그 후 여러 가지 추가적인 증거들로 인해 그것은 민간여객기가 아니라 적의 전폭기로 판명되는 경우 단조추론만 가능한 경우에는 이를 다룰 수 없으나 비단조추론의 경우에는 이와 같이 이미 추론된 사실을 다시 번복하는 것을 가능케 한다. 이것은 한번 결론난 것을 부정해 본다거나 "What If" 분석을 통해 특정 사실이 참이 아니라면 어떠한 결론을 다시 내릴 수 있는가 등을 알아볼 때 유용하다.
그러나 이러한 비단조성 (Nonmonotonicity) 을 부여하기 위해선 추론된 결론이나 규칙마다 그것을 정당화하는 근거가 됐던 다른 사실이나 규칙과의 의존관계를 파악하고 있어야 한다. 따라서 어떠한 사실이 무위로 되었을 때 그것으로 인해 정당화되었던 관련사실들이 함께 무위로 되어야 한다. 이렇게 사실과 사실들을 정당화하는 근거를 토대로 사실들의 진위를 관리하는 것을 진위유지 (Truth Maintenance) 라고 한다. 또한 어떤 사실에 대한 정당성이 확실히 밝혀진 것에 근거를 둔 것이 아니라 어떤 가정 (Assumption) 에 근거해 이루어질 수도 있다. 이런 경우 해당 가정이 더 이상 신빙성이 없는 것으로 밝혀지면 그것에 기초를 두고 추론되었던 결론들도 함께 수정되어야 한다.
또한 이러한 비단조 추론은 어떤 사실에 대해 확실한 근거가 아직 없는 경우 달리 대안이 없으면 특정 사실을 임시적으로 인정하는 경우에도 필요하다. 이러한 것을 특별히 기본값추론 (Default Reasoning) 이라 한다.
예를 들어, Tweety 라는 새가 있을 때 달리 Tweety 에 대한 정보가 없으면 이 새는 날 수 있다고 보는 것이다. 그러나 나중에 알고 보니 Tweety 가 펭귄으로 밝혀졌다면 Tweety 는 날 수 있다는 것은 틀린 사실이 되는 것이다. 이렇게 뚜렷이 반박할 다른 증거가 없는 경우 임시로 어떤 결론을 내리는 것이다. 이는 지식이 모든 상황에 다 정확한 해답을 줄 수 없는 경우가 있기 때문이다. 이는 정보의 부재 등으로 일어난다. 이러한 경우 인간이 상식에 의해 추론하듯 기본값추론을 적용할 수 있다.
IF X 가 새 THEN X 는 날 수 있다.
라는 기본적 지식으로서 기본값추론을 할 수 있다.
또 다른 예를 보자. 어떤 집에 화재경보가 울렸다. 이러한 경우 그 집에 불이 났기 때문이라고도 할 수 있지만 지진이 일어나서일 수도 있고 아이들이 장난을 친 것일 수도 있는 것이다. 그러나 달리 특별한 증거나 정보가 없는 한 "IF 화재경보가 울리면 THEN 화재가 났다" 라는 규칙을 작동하여 임시적으로 그 집에 화재가 난 것으로 결론 지을 수 있다.
그러나 이러한 기본값추론은 나중에 보다 정확한 증거가 수집되는 대로 부정될 여지가 얼마든지 있는 것이다. 이렇게 기본값추론도 한번 추론된 결과가 나중에 번복될 수 있다는 점에서 비단조추론에 포함된다.