지식표현

 

전문가 시스템 원리와 개발 : 이재규, 최형림, 김현수, 서민수, 주석진, 지원철 공저, 법영사, 1996, Page 28~58

 

지식의 형태와 구조

  1. 지식이란?

  2. 지식의 표현수준과 형태

기본적인 지식 표현

  1. 규칙을 이용한 지식 표현

  2. 의미망을 이용한 지식 표현

  3. 프레임을 이용한 지식 표현

고급 지식 표현

  1. 논리를 이용한 지식 표현

  2. 그래프를 이용한 지식 표현

복합적 지식 표현

  1. 프레임과 규칙의 혼합

  2. 객체지향기법과 규칙의 혼합

맺음말

 

전문가시스템에서의 지식베이스는 가장 중요한 요소 중의 하나이다. 따라서 이러한 지식을 어떻게 저장하고 표현하는가 하는 것은 가장 기본적인 과제라고 할 수 있다. 본 장에서는 우선 지식의 정의에 대해 살펴보고, 지식의 형태와 의미상의 분류, 그리고 지식 표현을 위한 제반기법에 대해 살펴보기로 한다.

지식의 형태와 구조

1. 지식이란?

지식과 추론기능이 합쳐져서 전문가시스템이 만들어진다고 할 만큼 지식이란 전문가시스템의 가장 중요한 요소이며, 획득된 지식을 어떻게 효율적이면서 효과적으로 표현ㆍ저장하는가 하는 것은 바로 전문가시스템의 성능과 직결되는 문제이다. 따라서 이러한 지식이 과연 무엇인지를 우선적으로 규명할 필요가 있다. 그러나 지식이란 마치 사랑이 무엇인가라고 물을 때 여러 가지 차원과 수준에서 답할 수 있듯이 지식도 여러 가지 차원과 수준에서 정의내릴 수 있다. 일반적으로 지식이란 데이터 (Data), 정보 (Information), 사실 (Facts) 들과 같은 의미로 사용되기도 하지만 지식이란 "정보를 보다 체계화하고 개념화한 것" 으로 볼 수 있다. 여기서 개념화란, 정보를 구조화함으로써 사람으로 하여금 보다 쉽게 이용할 수 있게 하고 이해 가능하도록 하는 것을 말한다. 또다른 측면에서 지식을 정의하면, "컴퓨터가 지능적으로 작동하는 데 필요한 정보로서 사실, 믿음, 문제를 해결하는 방법, 절차, 개념의 정의 등을 포함하며 또한 이것들간의 관계" (Relationships) 를 말한다. 전문가시스템에서의 지식은 그저 저장되어 있는 것이 아닌 해결하고자 하는 목적을 이루도록 사용될 수 있어야 한다. 따라서 지식을 이용하여 원하는 바 목적을 이루기 위한 성과를 올릴 수 있어야 한다.
지식 표현이란 이러한 지식을 컴퓨터와 사람이 동시에 이해할 수 있는 형태로 나타내는 것을 말하며 합목적적, 즉 목적달성에 부합되는 구조를 가져야할 뿐만 아니라 추론의 효율성, 지식 획득의 용이성, 저장의 간결성 및 표현의 정확성, 다양성 등을 갖추어야 한다.

 

2. 지식의 표현수준과 형태

지식 표현방법은 인간의 일상언어와 컴퓨터언어와의 표현구조 사이의 어느 중간에서 타협점을 결정하게 된다. 만약 인간의 언어, 즉 자연언어로만 표현한다면 아직 컴퓨터에 의한 자연어의 처리가 완벽하지 못하므로 구현 불가능하고, 반면 컴퓨터의 입장에서 지식을 컴퓨터언어의 알고리즘과 자료구조로만 표현하면 그 또한 인간이 이해하기가 어렵기 때문이다. 이러한 중간 절충안이 규칙이나 프레임, 의미망, 그래프, 전치논리 형태 등이다. 이러한 표현을 위한 전문적인 컴퓨터 언어, 예를 들면 LISP, PROLOG 등이 개발되어 있다. 즉, 지식을 책을 집필하듯 서술적으로 나타내기 보다는 구조화와 체계화를 이루어야 컴퓨터에 의해 쉽게 구현될 수 있고, 추론 및 검색이 용이해진다.
이러한 각 방법을 논하기 앞서 먼저 인간의 관점에서 지식 표현에서의 여러 가지 문제점을 논의하도록 하자.

 

(1) 지식의 표현수준

먼저 지식에는 표현력의 명확성 및 추상성에 따라 여러 가지 수준 (Level) 이 있을 수 있는데, 예를 들어 추상성이 높은 표현의 경우를 보도록 하자.

날씨가 추우므로 우리가 이 추위를 견디기 위해서는 실내를 따뜻하게 해야 할 것이다. 만약 이러한 지식이 없다면, 추워도 어찌할 줄 모르고 떨고 있을 수밖에 없을 것이다. 그러나 이 지식으로는 어느 정도가 추운 것인지, 어떻게 하면 실내가 따뜻해지는지를 알 수가 없다. 다음의 예를 보도록 하자.

여기서 춥다라는 것의 구체적인 척도로서 영하의 온도로 표현하였고, 실내를 따뜻하게 하기 위한 방법으로 난방기구를 가동시켜라라고 되어 있다. 이는 보다 구체적이며 실제 조작할 수 있는 수준인 데 비해 앞의 지식은 포괄적인 성격이 강하다. 물론 이보다 더 구체적인 지식은 "전기난로의 스위치를 켜라" 또는 "보일러 스위치를 켜라" 와 같이 구체적인 난방기구의 명칭과 함께 구비되어 있는 상황에 따라 작동법을 명시하는 것일 것이다. 또 다른 예를 보자.

철수는 영화를 좋아한다는 개략적인 표현에서 보다 구체적으로 그 횟수나 정도를 나타낼 수 있다.

이처럼 같은 의미를 지닌 지식이라도 표현의 구체성의 수준에 따라 그 내용이 달리 표현될 수 있다.

 

(2) 표면지식과 심층지식

지식이 단순히 조작적인 최종 결과만으로 표현되는 경우가 있는데 이를 표면지식 (Surface Knowledge) 또는 피상적 지식 (Shallow Knowledge) 이라 한다. 표면지식은 특정 영역의 문제를 해결하는 데 사용되는, 경험에 의해 생성된 탐색적 (Heuristic) 지식으로 해당 영역에 관한 구체적 사실이나 이론을 포함하기도 한다. 다음과 같은 예를 보자.

위의 예는 왜 지진이 발생하면 대나무 숲으로 들어가는지에 대한 이유는 알 수 없다. 그러나 대나무 숲으로 들어가는 것이 지진으로부터 생명을 보호하는 아주 좋은 방법이라는 것은 틀림없다. 또 다음 예를 보자.

왜 여름이면 태풍이 부는지에 대해서는 나타나 있지 않아도 여름이면 꼭 태풍이 부는 것임에는 틀림없다. 이와 같이 표면지식은 그 배경 속의 깊은 의미나 이유는 없이 구체적인 문제를 해결하는 최종적 방법이나 사실, 이론을 나타낸다. 전문가시스템을 개발할 경우 이러한 표면적 지식을 이용하면 구축하기 쉽다는 장점이 있다. 그러나 왜 그렇게 해야만 하는지, 또는 왜 그렇게 되는지에 대한 원인, 이유에 대해서 설명을 하기 위해서는 심층지식 (Deep Knowledge) 이 필요하다. 심층지식은 표면지식에 대한 상대적인 개념으로 사용되며 기본적인 이론, 원리, 공리, 사실 등을 포함한다. 위의 첫 번째 지식에 대한 심층지식은 다음과 같다. 지진은 진동을 일으키며, 그 진동으로 인해 땅이 갈라지거나 가옥, 구조물의 붕괴를 일으킨다. 그러나 대나무는 뿌리가 매우 질기고 많이 뻗어 있기 때문에 진동에 쉽게 넘어지지 않고 또한 땅이 갈라지는 것을 막아주기 때문이다. 이와 같은 심층지식에 의해 표면지식의 타당성에 관한 내부적 원인 및 이유를 설명할 수 있다.

(3) 지식의 내용에 의한 해석적 분류

지식은 그 수행하는 바 의미, 내용의 해석에 따라 다음과 같은 여러 가지 형태로 분류될 수 있다.

(4) 지식에 관한 지식

메타 지식 (Meta Knowledge) 은 일반적인 지식의 범주에 속하지는 않지만 지식에 관한 지식 (Knowledge about Knowledge) 으로서 지식베이스가 커지고 복잡해질 때 지식의 추론이나 관리를 효율적으로 수행하기 위해 사용되는 지식이다. 예를 들어, 은행의 대출여부를 자문해 주는 전문가시스템이 있을 경우, 경기상황이 극도로 악화되어 지식베이스의 일부를 운영되지 못하게 해야 할 필요가 있는데 이러한 관리를 메타 지식이 수행할 수 있다. 또한 두 개의 상충된 지식이 동시에 수행되는 상황이 발생될 때 그 중 어느 것을 선택할지를 이러한 메타 지식을 이용하여 결정할 수 있다.

 

기본적인 지식 표현

본 절에서는 현재 많이 사용되고 있는 지식 표현 방법인 규칙, 의미망, 프레임에 대해 살펴본다. 그러나 이 세 가지 지식 표현 방법을 채택하여야만 전문가시스템이라고 불리는 것은 절대 아니다. 지식 표현 방법은 전문가시스템이 해결하고자 하는 목적에 부합되며 지식 획득, 추론, 문제해결에 효율적 형태라면 그것이 어떤 형태이든 상관이 없다. 보다 다양한 형태의 지식 표현은 고급 지식 표현과 복합적 지식 표현에서 다루겠다.

 

1. 규칙을 이용한 지식 표현

규칙은 가장 널리 알려진 지식 표현 방법 중의 하나이다. 이는 IF 문장과 THEN 문장으로 연결된 형태를 취하며 IF 구문의 조건이 만족되거나 발생한 상태이면 THEN 구문이 수행되거나 논리적으로 참이 되는 형태이다. 이를 생성 규칙 (Production Rule) 이라고도 한다. 그러나 형태는 다같이 규칙의 모양을 취하고 있으나 실제 지식의 해석적 분류는 다음과 같이 다를 수 있다.

(1) 규칙의 형태와 규칙의 해석적 분류

다음은 규칙으로 표현된 지식들의 예를 보여 준다.

규칙형태의 지식에서의 추론은 어느 규칙의 IF 문장이 만족되면 THEN 문이 사실로서 나타나고 다시 이 THEN 문의 내용을 IF 문으로 하는 다른 규칙을 또 트리거 (Trigger) 함으로써 이루어진다. 그러나 규칙에 의한 표현은 대표적인 지식 표현 방법이지만 컴퓨터의 입장에서는 if 문장이 만족되는지의 여부를 판단하기 위해서 단순히 패턴 매칭을 이용하게 된다. 즉, 앞의 ④ 의 예에 나타난 if 문을 "밤을 세워 일하면"을 "밤에 안자고 일하면" 으로 바꾼다면 같은 의미의 지식이라도, 의미론적으로는 식별능력이 없고 문자적 비교 능력만 갖춘 수준의 컴퓨터 입장에서는 전혀 다른 규칙으로 인식하는 것이다. 이 경우 글자 한 자 안 틀리고 서로 일치되어야만 동일한 IF 문 또는 THEN 문으로 간주되는 것이다. 현재 대부분의 전문가시스템은 이 수준으로 작동되고 있으나 대부분의 현존하는 지식들이 상황 (또는 조건) 과 이에 따른 행동 (또는 결론) 의 형태를 띠고 있기 때문에 규칙형태가 적합한 지식 표현 수단으로 널리 사용되고 있다.
규칙의 표현은 IF-THEN 대신에 다음과 같이 "→" 기호를 이용하여 표현되기도 한다.

이를 더욱 축약하여 "송곳니가 있는 포유류이다" 를 A 로, "그것은 육식동물이다" 를 B 로 보아 위의 규칙을 A → B 라는 기호 형태로 나타낼 수 있다. 그리고 AND 나 OR 또는 NOT 등을 이용하여 문장을 보다 명확히 할 수 있다. 예를 들어, 위의 IF 문장 "송곳니가 있는 포유류이다" 라는 사실은 두 가지 증거, 즉 "송곳니가 있다" 와 "포유류이다" 로써 구성되어 있다. 따라서 다음과 같이 표현하는 것이 개별적인 증거를 더욱 부각시키는 표현이 될 것이다.

또 다른 예는,

위의 표현은 "동물이 깃털이 있거나 날면서 알을 낳으면" 이라는 하나의 통합된 문장으로 표현하여 그 만족여부를 판단하는 것보다는 더 구조적이다. 따라서 전체 문장의 만족여부를 판단하는데 있어서 오류를 줄일 수 있다. 즉, 어떤 사실을 확인하기 위해 복합적 내용을 하나의 질문으로 표현하기보다는 그 내용을 각각 분리하여 하나하나씩 질문하는 것이 보다 정확한 대답을 유도할 수 있을 것이다.
NOT 이 조건문에 붙을 수도 있다. 그러나 이와 같은 방법은 잘 사용되지 않는다. 왜냐하면 보통 같은 의미라면 되도록 NOT을 사용하지 않는 것이 그 문장의 만족여부를 판단하기가 용이하기 때문이다. 다음의 예를 보자.

위의 규칙과 "여자이다 → 아기를 낳는다" 를 비교하여 어느 것이 더 이해하기 쉬운 규칙인지를 보라.
결론에 NOT 이 있는 경우는 IF 문장에서와 같이 반대말로 직접 표현하는 것이 바람직하다. 다음의 규칙을 보자.

이 규칙은 다음과 같이 표현하는 것이 더 명확할 것이다.

그렇다고 NOT 이 전혀 필요없다는 것은 아니다. 만약 NOT 이 없다면 어떤 사실이 부정에 해당하는 사실을 다시 만들어야 하는 경우가 생길 수 있기 때문이다. 예를 들어 다음과 같은 규칙이 있다고 하자.

이 두 가지 규칙을 사용하고 있는 전문가시스템이 있다고 하자. 첫 번째 규칙에 의해 사용자에게 해당 동물이 털이 있는지 질문을 한다고 했을 때, 사용자가 털이 있다는 것에 "No" 라고 대답하였다고 하자. 그런데 두 번째 규칙으로 가면 이제는 털이 없다는 것의 진위에 대해 질문을 하게 될 것이다. 이러한 중복적인 질문은 털이 있다의 부정이 털이 없다라는 사실을 전문가시스템이 모르기 때문에 발생하는 현상이다. 이 경우 만약 NOT 을 써서 두 번째 규칙을 다음과 같이 표현한다면 중복적인 질문을 피하게 될 것이다.

이미 앞에서 "털이 있다" 는 부정되었기 때문에 "NOT (털이 있다)" 가 참이 되어 치타가 아니다라는 결론이 자동으로 도출되게 되는 것이다.
THEN 문장에도 AND 나 OR 나 NOT 을 사용할 수 있다.

즉, 하나의 조건에 의해 여러 결과가 함께 또는 동시에 일어날 때 결론에 AND 를 쓸 수 있다. 그런데 OR 는 규칙의 신뢰성을 떨어뜨리는 느낌을 주기 쉽기 때문에 가급적 사용하지 않는 것이 바람직하다.

이렇게 결론에 OR 가 있으면 이것도 되고 저것도 된다는 식이므로 차라리 보다 정확한 규칙으로 대체하는 것이 더 바람직하다. 그러나 다음과 같이 여러 가지 대체안 중 하나를 선택해도 되는 경우에는 OR 표현이 적절할 수도 있다.

결국 NOT 이나 OR 든 그것을 사용함으로써 지식 표현을 보다 정확하고 간결하게 할 수만 있다면 적절하게 사용하는 것이 바람직하다.

 

(2) 규칙의 문장에서 대상과 술어의 분리

규칙의 사용에 있어서 IF 문이나 THEN 문에서 지시하는 대상에 대한 언급과 대상의 조건, 상태를 나타내는 표현이 서로 중첩 또는 생략되어 있는 경우가 있다. 예를 들어 다음과 같은 규칙을 보자.

위의 규칙은 약간 오해의 소지를 일으킬 수 있다. 다시 말하면 줄무늬가 있는 새인지, 벽지인지, 옷인지 등의 대상에 대한 지적이 없는 것이다. THEN 문을 보아서 그것이 동물 또는 더 정확히 초식동물을 대상으로 지정한 것이라고 미루어 짐작할 수 있을 뿐이다. 이 규칙을 보다 정확히 표현하면 다음과 같이 쓸 수 있다.

이 규칙에서 가리키는 대상은 초식동물이며 그 초식동물이 줄무늬를 갖는 특징이 있을 경우에는 그 초식동물은 얼룩말이라는 것이다. 여기서 IF 문에서 가리키는 초식동물과 THEN 문에서 가리키는 초식동물은 같은 대상을 일컬음은 말할 것도 없다. 따라서 이를 기호적으로 표현하면,

라고 할 수 있다. 여기서 × 라는 변수를 사용하였는데 이는 구체적인 하나의 대상을 대신하는 것이다. 그런데 그 대상이 하나의 초식동물에 대해서 성립되는 것이 아니라 모든 초식동물에 다 적용될 수 있는 것이므로 앞에다 "All" 이란 뜻의 전체정량자 ∀ 를 붙여,

으로 표현할 수 있다. 다시 말하면 어떤 대상 × 가 초식동물이면 그런 대상 모두는 얼룩말이다라는 의미이다. 규칙에서 나타나는 문장을 이렇게 보다 정교히 표현하면 논리에서 설명될 술어계산 (Predicate Calculus) 가 된다. 따라서 술어계산에서는 규칙을 구성하는 문장의 표현에 대상을 지칭하는 변수 사용을 허용함으로써 보다 의미를 명확히 하고자 한다. 그러나 이러한 술어계산은 그 사용범위가 진위를 구분할 수 있는 명제에 국한된다. 즉, 규칙의 내용이 논리적 암시일 경우에만 술어계산적 표현을 사용할 수 있다. 그러나 술어계산적 표현은 단순 규칙표현에 비해 그 의미를 보다 논리적으로 명확히 표현할 수 있고 술어계산의 구조를 이용하여 독특한 추론방법을 사용할 수 있다.

 

(3) 규칙의 AND/OR 그래프 표현

AND/OR 그래프란 규칙의 조건 및 결론관계와 AND/OR 관계를 그래프 형태로 나타내는 것이다. 만약 여러 규칙이 있는데 이들이 모두 같은 THEN 문을 갖는다고 하자. 예를 들어 다음과 같은 규칙을 보자.

이를 앞에서 언급한 논리적 연결사인 OR 를 이용하여 다음과 같이 하나의 규칙 형태로 표현할 수 있다.

또 다른 방법은 시각적인 효과를 더해주는 그래프형태로 표현하는 방법이다. 즉, 노드로써 각 문장을 나타내고 호로서 IF 와 THEN 관계를 표현하는 것이다. 위의 예는 다음 그림 1 과 같이 나타낼 수 있다.

그림 1  AND/OR 그래프에서의 OR 표현

또한 IF 문에 AND 가 있는 다음과 같은 규칙이 있다고 하자.

이는 다음 그림 2 와 같은 형태의 그래프로 표현될 수 있다

그림 2  AND/OR 그래프에서의 AND 표현

이와 같이 AND 와 OR 의 연결사를 이용하는 규칙형태를 표현한 그래프를 AND/OR 그래프라고 한다. AND/OR 그래프를 이용하면 서로 산재해 있는 규칙들의 집합을 하나의 구조로 조감할 수 있으며 각 문장간의 논리적인 관계를 쉽게 파악할 수 있다. 다음은 동물원 예제 규칙들로서 일곱 가지의 동물들을 구분하는 예제지식이다. 이 예제지식은 앞으로 본서에서 자주 인용될 예제지식이 될 것이다. 이를 AND/OR 그래프형태로 표현해 보면 다음 그림 4 와 같다.

규칙 1

IF

THEN

동물이 털이 있다

포유류이다

규칙 2

IF

THEN

동물이 젖이 있다

포유류이다

규칙 3

IF

THEN

동물이 깃털이 있다

새이다

규칙 4

IF

THEN

동물이 난다 AND 동물이 알을 낳는다

새이다

규칙 5

IF

THEN

동물이 포유류이다 AND 고기를 먹는다

육식동물이다

규칙 6

IF

THEN

동물이 표유류이다 AND 송곳니가 있다 AND 날카로운 발톱이 있다 AND 눈이 전방을 향해 있다

육식동물이다

규칙 7

IF

THEN

동물이 표유류이다 AND 발굽이 있다 AND 되새김질을 한다

초식동물이다

규칙 8

IF

THEN

육식동물이다 AND 황갈색이다 AND 검은 점이 있다

치타이다

규칙 9

IF

THEN

육식동물이다 AND 황갈색이다 AND 검은 줄무늬가 있다

호랑이이다

규칙 10

IF

THEN

초식동물이다 AND 긴 다리와 긴 목을 가지고 있다 AND 황갈색이다. AND 검은 점이 있다

기린이다

규칙 11

IF

THEN

초식동물이다 AND 흰색이다 AND 검은 줄무늬가 있다

얼룩말이다

규칙 12

IF

THEN

새이다 AND 날지 못한다 AND 긴 다리와 긴 목을 가지고 있다 AND 검은 색과 흰색으로 구성돼 있다

타조이다

규칙 13

IF

THEN

새이다 AND 날지 못한다 AND 헤엄을 친다 AND 검은 색과 흰색으로 구성되어 있다

펭귄이다

규칙 14

IF

THEN

새이다 AND 잘 난다

갈매기이다

그림 3  동물원 예제 규칙

 

규칙만을 나열한 경우보다 지식 전체의 논리적 구조를 조망하기가 훨씬 쉽다. 이 동물원 예제의 AND/OR 그래프도 본서에서 자주 인용될 것이다.

그림 4  동물원 예제의 AND/OR 그래프

 

2. 의미망을 이용한 지식 표현

의미망 (Semantic Net) 은 인간의 연관 기억의 심리학적 모형을 근거로 하고 있다. 의미망은 특정 객체나 개념을 표현하기 위한 노드 (Node) 와 노드간의 관계를 표현하기 위한 호 (Arc) 로 구성되는 네트워크 구조로서, 1960년대 주로 자연어처리의 모형화에 응용되어 왔다. 노드는 객체 (Object), 개념 (Concept), 사건 등을 표현하고 호는 노드간의 관계를 나타낸다. 방향을 나타내는 화살표가 있는데, 추상적으로 낮은 개념에서 상위의 개념으로 향한다. 호에는 호가 연결하는 두 개 노드 사이의 관계의 성질을 표현하는 관한 라벨 (Label) 이 붙는다. 의미망을 이용하면 개념의 정의나 개념간의 관계 등을 표현하기가 좋다. 많이 사용되는 호의 종류에는 is-a 호와 has-part 호가 있다. is-a 호는 하나의 개념이 다른 개념의 부분집합 (Subset), 하위유형 (Subtype) 또는 특수화 (Specialization) 된 것일 때 사용되는데, 다음 그림 5 는 이러한 is-a 호로 표현된 의미망의 예를 보여 준다.

그림 5  is-a 호를 이용한 의미망

전폭기는 비행기이며, F16 은 전폭기 중의 하나이다. is_a 관계는 이행성 (Transitivity) 이 있으므로 위에서 명시적으로 나나타 있지 않더라도 F16 은 비행기이다라는 뜻을 유추할 수 있다. has-part 는 하나의 개념이 다른 개념의 일부를 구성하는 구성물일 경우 사용될 수 있다. 다음 그림 6 은 이러한 has-part 의 사용예를 보여 주고 있다.

그림 6  has-part 호를 이용한 의미망

의미망에서는 이행성으로 인해 똑같은 노드를 중복적으로 나타내지 않아도 표현되기 때문에 표현의 중복을 피할 수 있어 궁극적으로 지식의 양을 줄일 수 있다. 예로써 그림 7 의 의미망에서 비행기의 하위 개념들-전폭기, 여객기 등-에 대해서 중복적으로 엔진이라는 노드를 나타내지 않더라도 엔진을 한 부분으로 갖게 됨을 알 수 있다. 마찬가지로 F16 과 F18 또한 전폭기이므로 엔진을 가지고 있음을 알 수 있다. 또한 더 나아가 공기흡입구도 가지고 있음을 알 수 있다.

그림 7  의미망의 예

 

그 외에도 여러 가지 형태의 의미망을 구축할 수 있다. 아래의 예는 "창수라는 소년이 진돗개인 흰색의 바둑이에 5월 5일 먹이를 주었다" 는 내용을 의미망으로 구축해 본 것이다. 아래의 예에서 볼 수 있듯이 의미망은 자연어를 표현하는 데 매우 유용 하다는 것을 알 수 있다.

그림 8  자연어를 표현한 의미망

이렇듯 의미망은 이해하기 쉽고 표현이 유연하다는 장점이 있으나 노드의 구조가 단순함으로 말미암아 어느 객체에 딸린 속성 (Property) 들도 여느 객체와 같이 독립된 노드들로써 표현되어야 한다. 따라서 각 노드가 담고 있는 정보의 양이 적기 때문에 조금만 문제가 복잡해져도 의미망을 검색하는 데 시간이 너무 오래 걸리게 되는 단점이 있다. 현재 이러한 의미망을 표현하기 위해 사용되는 언어로는 PROLOG 가 있는데 이러한 PROLOG 에 대해서는 인공지능의 언어에서 자세히 설명될 것이다. 이러한 언어를 쓰게 되면 개별적으로 지식입력을 하더라도 전체적인 연결 구조를 유지하게 해 준다.

3. 프레임을 이용한 지식 표현

(1) 프레임 (Frame)

의미망은 노드의구조가 너무 간단하여 복잡한 표현의 경우 의미망의 노드수가 늘어나 검색시간이 길어진다는 단점이 있다. 이에 비해 프레임은 노드의 구조를 보다 체계화한 것으로 볼 수 있다. 영화의 한 장면을 기억할 때, 우리는 정보들을 보다 구조화하여 하나의 틀을 만들어 기억하게 된다. 예를 들어 영화의 어떤 장면 중 주인공이 어느 집 앞에 있는 장면이 있다고 하자. 이때 집의 크기, 창문의 위치, 배경하늘, 정원의 형태, 배경음악 등을 하나의 틀로서 기억한다. 그리고 집안으로 들어가는 장면에서 현관의 크기, 초인종의 소리 등이 떠오르고 다시 주인공이 안으로 들어갔을 때 거실의 탁자, 벽걸이 장식, 마루 등의 모습이 한 화면으로 연상된다. 이렇듯 영화의 한 장면처럼 프레임이란 "어떤 대상, 객체에 대한 여러 개의 상황정보들을 하나의 구조화된 틀로서 표현할 수 있는 자료구조" 이다. 프레임에는 대상의 특성에 대한 기술적인 정보뿐만 아니라 프레임에서의 정보 추출 방식까지도 규정되어 있다.
구체적으로 보면 프레임을 이용한 표현도 궁극적으로 의미망과 흡사한 구조를 가지고 있음을 알 수 있다. 의미망은 노드와 호로서 표현되는 데 비해, 단지 여기서는 노드 대신에 프레임을 사용한다는 것이 다른 점이다. 하나의 프레임의 구조는 여러 개의 슬롯 (Slot) 으로서 구성된다. 슬롯은 프레임이 나타내고자 하는 대상의 하나하나의 특성들을 나타낸다. 각 슬롯은 이러한 특성들의 값을 저장한다. 예를 들어 나의 퍼스널컴퓨터란 프레임에는 모델명, CPU, 캐시메모리, 하드디스크 콘트롤러 타입 등의 속성이 있을 수 있고, 이를 위해 각각의 슬롯이 생성되어 각 특성들의 값인 GK51P-6100, 펜티엄 60, 256KB, IDE, PCI, 컴택 등이 슬롯에 들어 가게 된다.
프레임의 구조는 마치 파스칼과 같은 프로그램 언어의 레코드 구조나 LISP 에서 설명될 프라퍼티 리스트 (Property List) 를 갖는 LISP 의 아톰 (Atom) 과 유사하다.

모델명

GK51P-6100

CPU

펜티엄 60

캐시메모리

256KB

하드디스크
콘트롤러 타입

IDE

버스

PCI

제조업체

컴택

슬롯

그림 9  나의 퍼스널컴퓨터 프레임

퍼스널컴퓨터

용도

개인용

운영체제

(DOS, WINDOW)

중앙처리장치방식

마이크로프로세서

is-a

 

           

is-a

PC 486

 

PC 펜티엄

용도

개인용

 

용도

개인용

운영체제

(DOS, WINDOW)

 

운영체제

(DOS, WINDOW)

중앙처리장치방식

마이크로프로세서

 

중앙처리장치방식

마이크로프로세서

CPU

80486

 

CPU

펜티엄

          instance-of

           

                     

          instance-of

    KPC-5650

     

    TKX-P570H

    용도

    개인용

     

    용도

    개인용

    운영체제

    (DOS, WINDOW)

     

    운영체제

    (DOS, WINDOW)

    중앙처리장치방식

    마이크로프로세서

     

    중앙처리장치방식

    마이크로프로세서

    CPU

    인텔 펜티엄 75

     

    CPU

    인텔 펜티엄 90

    제조업체

    은성

     

    제조업체

    삼오

    콘트롤러타입

    IDE

     

    콘트롤러타입

    E-IDE

    비디오카드

    SVGA

     

    비디오카드

    SVGA

    버스

    PCI

     

    버스

    PCI

그림 10  퍼스널컴퓨터에 관한 프레임

 

위와 같은 단일 프레임들이 모여 프레임간의 계층적 구조 또는 관계를 표현할 수 있다. 다음 그림 10 의 예를 보자.
여기서 is-a 는 의미망에서의 is-a 와 같은 관계이름이고 instance-of 는 특정 프레임의 구체적인 인스턴스 (Instance) 가리킨다. 다시 말하면 instance-of 는 추상적인 의미의 개념을 하나의 구체적으로 존재하는 객체로서의 예를 말한다. 이러한 is-a 나 instance-of 란 호를 사용하여 프레임간의 관계를 나타낸다.

프레임을 이용한 지식 표현에서 매우 중요한 특징은 is-a 를 비롯한 관계들은 프레임간의 개념상속 (Inheritance) 의 특징을 갖는다는 것이다. 개념상속이란 "하위 프레임은 상위 프레임의 슬롯값을 상속받는다" 는 것을 말한다. 그림 10 의 예에서 PC 펜티엄은 퍼스널컴퓨터와 is-a 관계이므로 PC 펜티엄에 용도라는 슬롯이 없더라도 "용도는 개인용" 이라는 정보를 퍼스널컴퓨터 프레임으로부터 상속받는다. 이때 상위 프레임으로부터 슬롯을 상속받을 때, 그 값까지도 함께 상속받는데 이것은 하위 프레임의 입장에서 보면 해당 슬롯의 기본 값 또는 결장값 (Default Value) 이 된다. 그림 10 에서 역상으로 표현된 슬롯과 값들은 상속받은 것임을 가리킨다. 하위 프레임에서 다른 대체값이 없으면 이것을 자신의 슬롯값으로 받아들이나, 만약 하위 프레임 고유의 값이나 예외적인 값이 있다면 이것은 상속되는 값에 우선하게 된다. 위의 그림에서 TKX-P570H 프레임이 CPU 라는 슬롯을 상속받았으나 그 값은 보다 구체적인 값으로 대체될 수 있다.

is-a 나 instance-of 외에도 필요한 관계를 임의로 설정할 수 있다. 그러나 모든 관계에 상속이 적용되는 것은 아니다. is-a 나 instance-of 와 같이 명확히 프레임간의 상하관계를 규정하는 관계에만 상속특성이 부여된다.
또 다른 예를 보자 그림 11 과 같이 담보대출이란 프레임이 있을 경우, 보다 구체적인 담보대출건에 관한 것은 위의 담보대출을 상위 프레임으로 하는 is-a 나 instance-of 의 관계를 설정하여 새로운 프레임을 형성하면 위의 담보대출에 관한 다섯 가지 슬롯을 공통적으로 상속받을 수 있다. 갑-담보대출은 대출자 갑에 대한 대출기록으로 담보대출의 하나의 인스턴스이다. 담보대출 프레임의 이자율 연 20% 와 대출기간 1년, 담보의 종류에서 부동산은 모든 담보대출 인스턴스를 위한 기본값으로 사용될 수 있다.

담보대출

대출액

 

이자율

연 20% (기본값)

대출기간

1년      (기본값)

담보의 종류

부동산 (기본값)

월 상환액

 

          instance-of

 

  

갑-담보대출

대출일

95. 12. 12

담당대출직원

김갑술

대출액

10,000,000

이자율

연 20%

대출기간

1년

담보의 종류

부동산

월 상환액

916,660

대출자

 

주민등록번호

590304-1056431

주소

서울 종로

소유 부동산

건물

직업

유통업자

재산

4억 3천

그림 11  담보대출에 관한 프레임 (역상으로 표현된 슬롯은 상속받은 슬롯을 나타냄)

 

이상에서 예로 든 프레임을 살펴보면, 어떤 대상이나 객체에 관한 정적 또는 선언적 표현만을 다룰 수 있는 것처럼 보이나 프레임은 절차적 정보도 함께 표현할 수 있다. 이는 하나의 프레임에 하나 이상의 절차 (Procedure) 가 붙을 수 있기 때문이다. 이 절차는 각 슬롯의 값이 추가 (If-added) 또는 삭제 (If-removed) 되었을 때나 슬롯의 내용이 요구 (If-needed) 되었을 때 자동적으로 수행되게 된다. 이러한 절차에는 다음과 같은 종류가 있다.

우리는 이러한 절차를 디몬 (Demon) 이라 부르기도 한다. 즉, 디몬은 특정값 또는 데이터의 변경, 첨가 등의 변동사항이 생겼을 때 그와 연계되어 자동적으로 수행되는 절차 (Procedure)를 말한다. 디몬은 특정 값에 붙어 있는 탐지기 또는 센서처럼 작동된다. 만약 이 탐지기가 해당 값의 변화를 탐지하였다면 즉각 추가적인 계산이나 행동을 불러일으키는 것이다. 위의 예에서는, 월상환액 계산은 구체적인 값을 입력하는 것이 아니라 대출액과 대출기간, 이자율값을 이용한 계산공식인 디몬을 수행케 하여 월 상환액의 값을 결정하게 한다. 따라서 이 디몬이 수행되는 시점은 대출액이나 이자율, 대출기간의 값 어느 하나라도 변동이 생겼을 때이다. 따라서 대출액, 이자율, 대출기간 이 세 개의 슬롯에 월 상환액을 계산하여 그 값을 월 상환액 슬롯을 저장시키는 디몬이 붙어야 한다. 디몬이 사용되는 예는 이외에도 다음과 같은 경우가 있을 수 있다.

이상에서 기술한 프레임기반 지식 표현에 대한 특성을 정리하여 보면 다음과 같다.

(2) 프레임과 스키마

일반적으로 frame이란 이름 대신 스키마 (Schema) 라고 부르기도 하여 보통 스키마를 frame과 비슷한 개념으로 사용하고 있다. 그러나 여기서는 스키마를 frame보다 더 넓은 개념으로 보고자 한다. 스키마는 원래 심리학에서 나온 용어인데 과거의 반응이나 경험에 의해 생성된 생물체의 지식 또는 반응체계로서 환경에 대해 적응하고 대처하도록 하는 역할을 담당한다. 이러한 스키마를 가지고 있기에 주위환경에 대해 체계적인 대응을 할 수 있다. 만약 이러한 스키마가 없다면 생물체는 외부에서 자신에게 주어지는 자극이 무작위와 우연, 또는 아무런 이유없이 자신에게 닥쳐오는 사건들처럼 보이게 될 것이다. 음식을 대했을 때 음식의 맛, 배부름 등의 과거 지식과 반응에 대한 결과를 알기에 인간은 거의 무의식적으로 이에 대처할 수 있다. 또한 어떤 특정 인물, 물건 등에 대해서도 그에 알맞는 반응을 보일 수 있다. 스키마는 어떤 대상에 대한 유형화된 체계와 과거 행동 또는 반응에 대한 결과들로서 적극적으로 자극에 대해 반응할 수 있도록 지원해 준다. 이러한 스키마를 지식 표현의 한 양식으로 구현한 것을 frame으로 볼 수 있다. 참고로 데이터베이스 분야에서도 릴레이션 (Relation) 또는 데이터베이스의 구조정의를 스키마라고 부르고 있다.

(3) 프레임과 객체지향

객체지향표현과 프레임표현방법간의 관계에 대해 설명하면, 프레임표현은 객체지향표현의 선구자적인 위치에 있다고 할 수 있다. 즉 속성으로 사물의 여러 특성을 표현할 수 있다든지, 상속기능과 절차 첨부기능은 모두 오늘날 객체지향표현 기능의 일부이다. 객체지향기법은 다음과 같은 여러 분야에서 나름대로의 필요성 때문에 부각되어 왔다.

이외에도 시스템 시뮬레이션 모델링기법과 컴퓨터 그래픽스분야에서도 객체지향기법을 도입하고 있다.
이제 객체지향표현기법의 개략적인 조망을 먼저 해보고 프레임과 객체지향기법간의 관계를 논의하겠다.

그림 13  객체지향 프로그래밍에서의 클래스 계층

이상에서 살펴본 객체지향기법의 특성에는 프레임에서 나타나고 있는 기능, 예를 들어 상속, 계층화, 행위자 등 공통된 점이 많이 나타나고 있다. 상속ㆍ계층화는 양자간 같은 개념으로 사용되고 있으며, 행위자는 프레임의 절차에 대응된다 할 수 있다. 그러나 객체지향기법은 프레임과는 달리 클래스와 인스탄스개념을 두어 프레임의 분류를 보다 세분화하였다. 그 외 모듈화와 캡슐화는 메시지 전달에 의한 객체간의 정보전달을 강조하는 객체지향 쪽에서 강조되고 있다. 이러한 사실들로 미루어 볼 때 프레임도 객체지향기법의 하나라고 볼 수 있다. 그러나 프레임은 인공지능에서 지식 표현의 한 방법으로 나타나 객체지향기법에 영향을 미쳤고, 객체지향기법은 소프트웨어 공학분야 등에서 프로그래밍 방법론 관점에서 발전된 것이 여러 분야, 예를 들어 인공지능, 데이터베이스, 시스템 분석 등에 영향을 미쳤다고 볼 수 있다. 그런데 프레임과 객체는 그 뿌리는 달라도 서로 같은 개념을 표현하고 있다고 볼 수 있으며, 오늘날 객체 (Object) 라는 표현이 보편화됨에 따라 프레임도 객체라고 부를 수 있다. 또한 객체지향 데이터베이스에서는 데이터의 저장구조로 관계형 데이터베이스에서의 릴레이션 (Relation) 이 아닌 객체를 사용하는데 이때 이 객체지향 데이터베이스의 객체와 지식 표현에서의 프레임은 상호 제한적 호환구조로서 상호변환과정을 거쳐 자료를 교환할 수 있겠다.

 

고급 지식 표현

지금가지 살펴본 기본적 지식 표현은 많은 전문가시스템에서 사용되는 표현방법이다. 그러나 경우에 따라서는 이들 세 가지 표현방법만으로는 전문가시스템에 필요한 지식으로 구축하기에 어려운 문제나 영역이 있을 수 있다. 이 절에서는 규칙, 의미망, 프레임 외에 자주 사용되는 지식 표현기법을 소개한다.

 

1. 논리를 이용한 지식 표현

논리에서 언급될 명제계산과 술어계산 등은 바로 지식 표현의 한 방법으로 사용될 수 있고, 전절에서 소개한 규칙형태도 외견상 명제논리의 한 표현방식으로 생각할 수 있다. 자세한 것은 논리를 참고하기 바란다.

 

2. 그래프를 이용한 지식 표현

앞에서 규칙표현을 도형적으로 묘사한 것을 AND/OR 그래프라 한 바 있다. 그래프는 기본적으로 노드 (Node) 와 호 (Arc) 로서 구성되며 그 모양에 따라 방향그래프, 트리, 네트워크 등으로 분류된다. 그래프로 지식을 표현하면 다른 형태보다 전체적인 지식의 모습을 조망하기가 쉽다. 그래서 최종적으로 구현될 지식의 형태는 규칙 혹은 프레임이라 해도 이를 사용자 또는 지식입력자의 편의성을 고려하여 그래프형태로 표현하기도 한다. 그래프의 구체적 정의는 탐색에서 다루기로 한다.

 

복합적 지식 표현

1. 프레임과 규칙의 혼합

규칙기반 지식베이스는 규칙의 수가 많아지면 지식을 분류, 검색하기가 어렵게 된다. 따라서 규칙들을 그것의 내용이나 다른 기준에 의해 정리해 두는 것이 필요하다. 이를 위해서 프레임을 이용하여 규칙들을 분류해 둘 수가 있다. 규칙의 프레임 내에서의 표현은 IF 슬롯과 THEN 슬롯을 이용할 수 있다. 다음은 주식투자를 위한 기업의 가치분석을 위한 평가지식을 프레임과 규칙의 혼합형태로 나타낸 것이다. 기업가치분석에는 성장잠재력분석과 자산가치분석 그리고 배당투자유망이라는 세 가지 하위분석단계가 있고 이를 각각 프레임으로 만들어 구체화라는 관계로 엮었다. 여기서 다시 성장잠재력분석의 보다 구체적인 분석단위로 첨단기술개발이 활발한지 또는 연구개발투자가 활발한지를 알아볼 수 있는데, 이들을 구체화란 관계로 성장잠재력분석 프레임에 관련시켰다. 여기서 성장잠재력분석이라는 프레임은 다른 슬롯은 가지고 있지 않고 다만 지식을 내용적으로 분류하는 기준으로 사용되고 있다. 첨단기술개발 프레임에는 구체적으로 특정 기업을 조건으로 하여 이의 평가등급을 규칙형태로 제시하고 있다. 이에 대한 이유 등은 별도의 슬롯을 만들어 저장할 수 있다. 규칙베이스를 그 내용적 분류정보와 이들 분류의 계층적 상하관계를 프레임 구조를 통해 구현하므로 지식베이스의 검색과 수정 및 미비된 지식의 발견이 보다 용이해진다. 이와 같은 혼합형 표현은 UNIK-FRAME 등 프레임 구축용 도구를 사용하면 가능하다. 또한 프레임형태를 잘 이용하면 제약, 최적화모형 등도 프레임형태로 표현 가능하기 때문에 규칙 외에도 다양한 형태의 지식과 프레임과의 혼합표현이 가능하다.

그림 18  프레임과 규칙의 혼합 표현의 예

 

2. 객체지향기법과 규칙의 혼합

객체지향기법은 객체의 행위자 (Method) 를 사용하여 메시지전달을 하는데, 이러한 행위자의 형태를 규칙으로 설정하되 규칙의 조건부분에 메시지전달에 필요한 인수 (Parameter) 를 두어 조건에 따라 특정 객체를 규칙으로 부를 수 있도록 할 수 있다.

 

맺음말

본 장에서는 전문가시스템의 기본이 되는 지식 표현을 위한 기법을 소개하였다. 기본적 지식 표현으로 규칙과 의미망 그리고 프레임에 대해 소개하였고, 그 외에 이들 지식 표현을 복합적으로 결합할 수도 있으며, 그래프 또는 논리 등을 사용하여 표현할 수도 있다. 지식 표현은 대상문제에 따라 가장 적합한 표현을 사용해야 할 것이며, 반드시 특정 표현방식을 써야만 전문가시스템이라고 불리워지는 것은 아니다. 이제 이러한 지식을 바탕으로 어떻게 추론하는지에 대한 내용을 추론에서 다루기로 한다. 프레임 형태의 지식 표현의 실습은 객체지향 프로그래밍 도구에서 다루게 될 것이다. 그리고 규칙형태의 지식 표현과 이에 대한 추론은 역방향 추론용 전문가시스템 구축도구와 정방향 추론용 전문가시스템 구축도구에서 각각 다루게 된다.