지식표현
전문가 시스템 원리와 개발 : 이재규, 최형림, 김현수, 서민수, 주석진, 지원철 공저, 법영사, 1996, Page 28~58
전문가시스템에서의 지식베이스는 가장 중요한 요소 중의 하나이다. 따라서 이러한 지식을 어떻게 저장하고 표현하는가 하는 것은 가장 기본적인 과제라고 할 수 있다. 본 장에서는 우선 지식의 정의에 대해 살펴보고, 지식의 형태와 의미상의 분류, 그리고 지식 표현을 위한 제반기법에 대해 살펴보기로 한다.
지식과 추론기능이 합쳐져서 전문가시스템이 만들어진다고
할 만큼 지식이란 전문가시스템의 가장 중요한 요소이며, 획득된 지식을 어떻게 효율적이면서
효과적으로 표현ㆍ저장하는가 하는 것은 바로 전문가시스템의 성능과 직결되는 문제이다.
따라서 이러한 지식이 과연 무엇인지를 우선적으로 규명할 필요가 있다. 그러나 지식이란
마치 사랑이 무엇인가라고 물을 때 여러 가지 차원과 수준에서 답할 수 있듯이 지식도
여러 가지 차원과 수준에서 정의내릴 수 있다. 일반적으로 지식이란 데이터 (Data),
정보 (Information), 사실 (Facts) 들과 같은 의미로 사용되기도 하지만 지식이란
"정보를 보다 체계화하고 개념화한 것" 으로 볼 수 있다. 여기서 개념화란,
정보를 구조화함으로써 사람으로 하여금 보다 쉽게 이용할 수 있게 하고 이해 가능하도록
하는 것을 말한다. 또다른 측면에서 지식을 정의하면, "컴퓨터가 지능적으로
작동하는 데 필요한 정보로서 사실, 믿음, 문제를 해결하는 방법, 절차, 개념의 정의
등을 포함하며 또한 이것들간의 관계" (Relationships) 를 말한다. 전문가시스템에서의
지식은 그저 저장되어 있는 것이 아닌 해결하고자 하는 목적을 이루도록 사용될 수
있어야 한다. 따라서 지식을 이용하여 원하는 바 목적을 이루기 위한 성과를 올릴
수 있어야 한다.
지식 표현이란 이러한 지식을 컴퓨터와 사람이 동시에 이해할
수 있는 형태로 나타내는 것을 말하며 합목적적, 즉 목적달성에 부합되는 구조를
가져야할 뿐만 아니라 추론의 효율성, 지식 획득의 용이성, 저장의 간결성 및 표현의
정확성, 다양성 등을 갖추어야 한다.
지식 표현방법은 인간의 일상언어와 컴퓨터언어와의
표현구조 사이의 어느 중간에서 타협점을 결정하게 된다. 만약 인간의 언어, 즉 자연언어로만
표현한다면 아직 컴퓨터에 의한 자연어의 처리가 완벽하지 못하므로 구현 불가능하고,
반면 컴퓨터의 입장에서 지식을 컴퓨터언어의 알고리즘과 자료구조로만 표현하면
그 또한 인간이 이해하기가 어렵기 때문이다. 이러한 중간 절충안이 규칙이나 프레임,
의미망, 그래프, 전치논리 형태 등이다. 이러한 표현을 위한 전문적인 컴퓨터 언어,
예를 들면 LISP, PROLOG 등이 개발되어 있다. 즉, 지식을 책을 집필하듯 서술적으로
나타내기 보다는 구조화와 체계화를 이루어야 컴퓨터에 의해 쉽게 구현될 수 있고,
추론 및 검색이 용이해진다.
이러한 각 방법을 논하기 앞서 먼저 인간의 관점에서
지식 표현에서의 여러 가지 문제점을 논의하도록 하자.
(1) 지식의 표현수준
먼저 지식에는 표현력의 명확성 및 추상성에 따라 여러 가지 수준 (Level) 이 있을 수 있는데, 예를 들어 추상성이 높은 표현의 경우를 보도록 하자.
"날씨가 추우면 실내를 따뜻하게 하라."
날씨가 추우므로 우리가 이 추위를 견디기 위해서는 실내를 따뜻하게 해야 할 것이다. 만약 이러한 지식이 없다면, 추워도 어찌할 줄 모르고 떨고 있을 수밖에 없을 것이다. 그러나 이 지식으로는 어느 정도가 추운 것인지, 어떻게 하면 실내가 따뜻해지는지를 알 수가 없다. 다음의 예를 보도록 하자.
"날씨가 영하로 떨어지면, 난방기구를 가동시켜라."
여기서 춥다라는 것의 구체적인 척도로서 영하의 온도로 표현하였고, 실내를 따뜻하게 하기 위한 방법으로 난방기구를 가동시켜라라고 되어 있다. 이는 보다 구체적이며 실제 조작할 수 있는 수준인 데 비해 앞의 지식은 포괄적인 성격이 강하다. 물론 이보다 더 구체적인 지식은 "전기난로의 스위치를 켜라" 또는 "보일러 스위치를 켜라" 와 같이 구체적인 난방기구의 명칭과 함께 구비되어 있는 상황에 따라 작동법을 명시하는 것일 것이다. 또 다른 예를 보자.
"철수는 영화를 좋아한다."
철수는 영화를 좋아한다는 개략적인 표현에서 보다 구체적으로 그 횟수나 정도를 나타낼 수 있다.
"철수는 일주일에 2편 이상 볼 정도로 영화를 매우 좋아한다."
이처럼 같은 의미를 지닌 지식이라도 표현의 구체성의 수준에 따라 그 내용이 달리 표현될 수 있다.
(2) 표면지식과 심층지식
지식이 단순히 조작적인 최종 결과만으로 표현되는 경우가 있는데 이를 표면지식 (Surface Knowledge) 또는 피상적 지식 (Shallow Knowledge) 이라 한다. 표면지식은 특정 영역의 문제를 해결하는 데 사용되는, 경험에 의해 생성된 탐색적 (Heuristic) 지식으로 해당 영역에 관한 구체적 사실이나 이론을 포함하기도 한다. 다음과 같은 예를 보자.
"지진이 발생하면 대나무 숲으로 들어가라."
위의 예는 왜 지진이 발생하면 대나무 숲으로 들어가는지에 대한 이유는 알 수 없다. 그러나 대나무 숲으로 들어가는 것이 지진으로부터 생명을 보호하는 아주 좋은 방법이라는 것은 틀림없다. 또 다음 예를 보자.
"여름이 되면 태풍이 분다."
왜 여름이면 태풍이 부는지에 대해서는 나타나 있지 않아도 여름이면 꼭 태풍이 부는 것임에는 틀림없다. 이와 같이 표면지식은 그 배경 속의 깊은 의미나 이유는 없이 구체적인 문제를 해결하는 최종적 방법이나 사실, 이론을 나타낸다. 전문가시스템을 개발할 경우 이러한 표면적 지식을 이용하면 구축하기 쉽다는 장점이 있다. 그러나 왜 그렇게 해야만 하는지, 또는 왜 그렇게 되는지에 대한 원인, 이유에 대해서 설명을 하기 위해서는 심층지식 (Deep Knowledge) 이 필요하다. 심층지식은 표면지식에 대한 상대적인 개념으로 사용되며 기본적인 이론, 원리, 공리, 사실 등을 포함한다. 위의 첫 번째 지식에 대한 심층지식은 다음과 같다. 지진은 진동을 일으키며, 그 진동으로 인해 땅이 갈라지거나 가옥, 구조물의 붕괴를 일으킨다. 그러나 대나무는 뿌리가 매우 질기고 많이 뻗어 있기 때문에 진동에 쉽게 넘어지지 않고 또한 땅이 갈라지는 것을 막아주기 때문이다. 이와 같은 심층지식에 의해 표면지식의 타당성에 관한 내부적 원인 및 이유를 설명할 수 있다.
(3) 지식의 내용에 의한 해석적 분류
지식은 그 수행하는 바 의미, 내용의 해석에 따라 다음과 같은 여러 가지 형태로 분류될 수 있다.
① 문제를 해결하는 절차 (Procedure)
어떤 상황이나 조건에 대해 의도하는 목적을 이루기 위한 명령, 행위, 절차 등을 규정하여 놓은 것을 말한다. 다음의 예를 보자.
"불이 나면 소방서에 신고하라."
이것은 불이 난 상황에 대해 어떤 행동을 하여야 할 것인가에 대한 지식을 나타낸 것이다. 이것은 어떻게 (How) 할 것인가에 대한 것을 말한다. 이것을 프로시저적 (Procedural) 또는 절차적 지식이라고 한다.
② 논리적 암시 (Implication)
이것은 조건에 의해 어떤 결과가 논리적으로 암시됨을 의미한다. 다음의 예를 보자.
"그가 살아 있다면 숨을 쉴 것이다."
논리적 암시는 논리를 이용한 지식 표현의 핵심이 된다.
③ 증거로부터 가설의 설정
이것은 특정 증거로부터 잠정적으로 통용될 수 있는 가설을 제시하는 것으로, 여기서의 가설이란 이론이나 진리가 아니라 경험과 관찰에 의해 설정된 것으로 불확실성을 내포하고 있다. 다음의 예를 보자.
"안경을 낀 학생은 공부를 잘한다."
이 예는 안경을 꼈다는 사실로부터 공부를 잘할 것이다라는 가설을 설정한 것이다.
이상의 세가지 형태의 지식들을 외부적으로 표현할 때에는 모두 다음장에 언급되는 규칙형태인 IF~THEN 으로 나타낼 수 있으나 그 해석적인 측면은 모두 다르다는 것을 보여 준다.
④ 개념의 정의
백과사전식으로 어떤 개념의 정의, 특징을 서술하는 경우이다. 다음의 예들을 보자.
"설치류란 표유류의 한 목 (目)으로 송곳니가 없고 앞니가 발달하여 물건을 잘 썬다. 소형으로 초식성이며, 겁이 많으나 민첩하고, 번식력이 강하다 (토끼, 쥐 따위가 여기에 해당함)."
이러한 지식은 개념간의 대소에 따라 서로간의 포함관계를 계층적 또는 네트워크 형태로 나타낼 수 있고, 특정 개념의 구체적인 예를 포함할 수 있다.
설치류 ⊂ 포유류
설치류의 예 : 토끼,
쥐
이러한 지식은 나중에 언급할 프레임을 이용한 방법으로 표현하기가 용이하다.
⑤ 제약조건
이는 제약식처럼 특정 문제에 대한 해를 구하는 데 있어서 고려해야 할 제약조건을 정의하는 지식이다.
"컴퓨터 구입은 2백만원 이내에서
하라."
"서쪽 사면은 등산로가 없는 절벽이기 때문에 갈 수
없다."
문제해결 (Problem Solving) 을 위한 절차적 지식과 함께 사용될 수 있으며, 탐색 (Search) 형태의 문제기술을 위한 지식 표현에 이용된다.
⑥ 원인-결과
사실과 사실간의 관계를 규정함에 있어 서로의 인과관계를 나타낸다. 다음의 예를 보자.
"쓰레기가 많아지면 병원균이 증가한다."
위의 예는 병원균의 증가가 쓰레기 발생량의 증가로 야기된다는 것을 나타내고 있다. 위의 지식도 논리적 암시와 같이 규칙 형태로 표현될 수 있다. 그러나 근본적으로 다른 점은 ②의 논리적 암시의 경우 대우 (Modus Tollens) 가 성립하지만 이 경우에는 성립되지 않는다는 것이다. 즉, IF A THEN B 이면 IF (NOT B) THEN (NOT A) 가 성립하나 (② 의 예에 의하면, "그가 숨을 쉬지 않으면 그는 살아 있지 않다" 가 성립된다) 원인과 결과에서는 이러한 추론이 성립되지 않는다는 것이다. 즉, "병원균이 증가하지 않으면 쓰레기가 줄어든다" 라고 할 수가 없다. 또한 논리적 암시에서는 A 가 부정이라고 해서 B 도 부정이라고 할 수 없다. 다시 말하면 IF A THEN B 일 때 IF (NOT A) THEN (NOT B) 는 성립하지 않는다. 그러나 원인-결과에서는 A 라는 원인자가 부정되면 그에 따른 결과도 부정된다. 즉, 쓰레기가 줄면 이로 인해 병원균도 감소하게 되는 것이다.
⑦ 선언적 지식
어떤 사실적 명제의 선언형태를 취한다. 다음의 예들을 보자.
"한국의 수도는 서울이다."
"갑돌이는
갑순이를 좋아한다."
"갑순이는 여자이다."
이러한 지식은 나중에 설명할 의미망 (Semantic Net)을 이용하여 표현하기 용이하다.
(4) 지식에 관한 지식
메타 지식 (Meta Knowledge) 은 일반적인 지식의 범주에 속하지는 않지만 지식에 관한 지식 (Knowledge about Knowledge) 으로서 지식베이스가 커지고 복잡해질 때 지식의 추론이나 관리를 효율적으로 수행하기 위해 사용되는 지식이다. 예를 들어, 은행의 대출여부를 자문해 주는 전문가시스템이 있을 경우, 경기상황이 극도로 악화되어 지식베이스의 일부를 운영되지 못하게 해야 할 필요가 있는데 이러한 관리를 메타 지식이 수행할 수 있다. 또한 두 개의 상충된 지식이 동시에 수행되는 상황이 발생될 때 그 중 어느 것을 선택할지를 이러한 메타 지식을 이용하여 결정할 수 있다.
본 절에서는 현재 많이 사용되고 있는 지식 표현 방법인 규칙, 의미망, 프레임에 대해 살펴본다. 그러나 이 세 가지 지식 표현 방법을 채택하여야만 전문가시스템이라고 불리는 것은 절대 아니다. 지식 표현 방법은 전문가시스템이 해결하고자 하는 목적에 부합되며 지식 획득, 추론, 문제해결에 효율적 형태라면 그것이 어떤 형태이든 상관이 없다. 보다 다양한 형태의 지식 표현은 고급 지식 표현과 복합적 지식 표현에서 다루겠다.
규칙은 가장 널리 알려진 지식 표현 방법 중의 하나이다. 이는 IF 문장과 THEN 문장으로 연결된 형태를 취하며 IF 구문의 조건이 만족되거나 발생한 상태이면 THEN 구문이 수행되거나 논리적으로 참이 되는 형태이다. 이를 생성 규칙 (Production Rule) 이라고도 한다. 그러나 형태는 다같이 규칙의 모양을 취하고 있으나 실제 지식의 해석적 분류는 다음과 같이 다를 수 있다.
(1) 규칙의 형태와 규칙의 해석적 분류
다음은 규칙으로 표현된 지식들의 예를 보여 준다.
① IF 불이나면
THEN 소방서에 신고하라.
② IF 권력에 야심이
있는 재력가라면
THEN 정계에 진출할 것이다.
③ IF 송곳니가 있는
포유류이면
THEN 그것은 육식동물이다.
④ IF 밤을 세워
일하면
THEN 다음날 피곤하다.
위의 예에서 모양은 모두 IF-THEN 의 형태를 띠고 있으나 각 규칙은 의미적으로 다음과 같이 해석될 수 있다.
① IF 상황 THEN 행동
② IF 전제 THEN 결론
③ IF 증거 THEN 가설
④ IF 원인 THEN 결과
규칙형태의 지식에서의 추론은 어느 규칙의 IF
문장이 만족되면 THEN 문이 사실로서 나타나고 다시 이 THEN 문의 내용을 IF 문으로
하는 다른 규칙을 또 트리거 (Trigger) 함으로써 이루어진다. 그러나 규칙에 의한
표현은 대표적인 지식 표현 방법이지만 컴퓨터의 입장에서는 if 문장이 만족되는지의
여부를 판단하기 위해서 단순히 패턴 매칭을 이용하게 된다. 즉, 앞의 ④ 의 예에
나타난 if 문을 "밤을 세워 일하면"을 "밤에 안자고 일하면"
으로 바꾼다면 같은 의미의 지식이라도, 의미론적으로는 식별능력이 없고 문자적
비교 능력만 갖춘 수준의 컴퓨터 입장에서는 전혀 다른 규칙으로 인식하는 것이다.
이 경우 글자 한 자 안 틀리고 서로 일치되어야만 동일한 IF 문 또는 THEN 문으로
간주되는 것이다. 현재 대부분의 전문가시스템은 이 수준으로 작동되고 있으나 대부분의
현존하는 지식들이 상황 (또는 조건) 과 이에 따른 행동 (또는 결론) 의 형태를 띠고
있기 때문에 규칙형태가 적합한 지식 표현 수단으로 널리 사용되고 있다.
규칙의
표현은 IF-THEN 대신에 다음과 같이 "→" 기호를 이용하여 표현되기도
한다.
송곳니가 있는 포유류이다 → 그것은 육식동물이다.
이를 더욱 축약하여 "송곳니가 있는 포유류이다" 를 A 로, "그것은 육식동물이다" 를 B 로 보아 위의 규칙을 A → B 라는 기호 형태로 나타낼 수 있다. 그리고 AND 나 OR 또는 NOT 등을 이용하여 문장을 보다 명확히 할 수 있다. 예를 들어, 위의 IF 문장 "송곳니가 있는 포유류이다" 라는 사실은 두 가지 증거, 즉 "송곳니가 있다" 와 "포유류이다" 로써 구성되어 있다. 따라서 다음과 같이 표현하는 것이 개별적인 증거를 더욱 부각시키는 표현이 될 것이다.
송곳니가 있다 AND 포유류이다 → 그것은 육식동물이다
또 다른 예는,
동물이 깃털이 있다 OR (동물이 난다 AND 동물이 알을 낳는다) → 새이다
위의 표현은 "동물이 깃털이 있거나 날면서
알을 낳으면" 이라는 하나의 통합된 문장으로 표현하여 그 만족여부를 판단하는
것보다는 더 구조적이다. 따라서 전체 문장의 만족여부를 판단하는데 있어서 오류를
줄일 수 있다. 즉, 어떤 사실을 확인하기 위해 복합적 내용을 하나의 질문으로 표현하기보다는
그 내용을 각각 분리하여 하나하나씩 질문하는 것이 보다 정확한 대답을 유도할
수 있을 것이다.
NOT 이 조건문에 붙을 수도 있다. 그러나 이와 같은 방법은 잘
사용되지 않는다. 왜냐하면 보통 같은 의미라면 되도록 NOT을 사용하지 않는 것이
그 문장의 만족여부를 판단하기가 용이하기 때문이다. 다음의 예를 보자.
NOT (남자이다) → 아기를 낳는다
위의 규칙과 "여자이다 → 아기를 낳는다"
를 비교하여 어느 것이 더 이해하기 쉬운 규칙인지를 보라.
결론에 NOT 이 있는
경우는 IF 문장에서와 같이 반대말로 직접 표현하는 것이 바람직하다. 다음의 규칙을
보자.
여자이다 → NOT (아기를 못 낳는다)
이 규칙은 다음과 같이 표현하는 것이 더 명확할 것이다.
여자이다 → 아기를 낳는다
그렇다고 NOT 이 전혀 필요없다는 것은 아니다. 만약 NOT 이 없다면 어떤 사실이 부정에 해당하는 사실을 다시 만들어야 하는 경우가 생길 수 있기 때문이다. 예를 들어 다음과 같은 규칙이 있다고 하자.
털이 있다 → 포유류이다
털이 없다 →
치타가 아니다
이 두 가지 규칙을 사용하고 있는 전문가시스템이 있다고 하자. 첫 번째 규칙에 의해 사용자에게 해당 동물이 털이 있는지 질문을 한다고 했을 때, 사용자가 털이 있다는 것에 "No" 라고 대답하였다고 하자. 그런데 두 번째 규칙으로 가면 이제는 털이 없다는 것의 진위에 대해 질문을 하게 될 것이다. 이러한 중복적인 질문은 털이 있다의 부정이 털이 없다라는 사실을 전문가시스템이 모르기 때문에 발생하는 현상이다. 이 경우 만약 NOT 을 써서 두 번째 규칙을 다음과 같이 표현한다면 중복적인 질문을 피하게 될 것이다.
NOT (털이 있다) → 치타가 아니다
이미 앞에서 "털이 있다" 는 부정되었기
때문에 "NOT (털이 있다)" 가 참이 되어 치타가 아니다라는 결론이 자동으로
도출되게 되는 것이다.
THEN 문장에도 AND 나 OR 나 NOT 을 사용할 수 있다.
심한 지진이 나면 → 건물이 무너진다 AND 땅이 갈라진다
즉, 하나의 조건에 의해 여러 결과가 함께 또는 동시에 일어날 때 결론에 AND 를 쓸 수 있다. 그런데 OR 는 규칙의 신뢰성을 떨어뜨리는 느낌을 주기 쉽기 때문에 가급적 사용하지 않는 것이 바람직하다.
줄무늬가 있는 동물이다 → 호랑이이다 OR 얼룩말이다
이렇게 결론에 OR 가 있으면 이것도 되고 저것도 된다는 식이므로 차라리 보다 정확한 규칙으로 대체하는 것이 더 바람직하다. 그러나 다음과 같이 여러 가지 대체안 중 하나를 선택해도 되는 경우에는 OR 표현이 적절할 수도 있다.
여기서 A 지역을 가려면 → B, C, D 지역을
순서대로 경유해서 간다
OR
F, D, B 지역을 순서대로 경유해서 간다
결국 NOT 이나 OR 든 그것을 사용함으로써 지식 표현을 보다 정확하고 간결하게 할 수만 있다면 적절하게 사용하는 것이 바람직하다.
(2) 규칙의 문장에서 대상과 술어의 분리
규칙의 사용에 있어서 IF 문이나 THEN 문에서 지시하는 대상에 대한 언급과 대상의 조건, 상태를 나타내는 표현이 서로 중첩 또는 생략되어 있는 경우가 있다. 예를 들어 다음과 같은 규칙을 보자.
줄무늬가 있다 → 얼룩말이다
위의 규칙은 약간 오해의 소지를 일으킬 수 있다. 다시 말하면 줄무늬가 있는 새인지, 벽지인지, 옷인지 등의 대상에 대한 지적이 없는 것이다. THEN 문을 보아서 그것이 동물 또는 더 정확히 초식동물을 대상으로 지정한 것이라고 미루어 짐작할 수 있을 뿐이다. 이 규칙을 보다 정확히 표현하면 다음과 같이 쓸 수 있다.
어떤 초식동물에 줄무늬가 있다 → 그 초식동물은 얼룩말이다
이 규칙에서 가리키는 대상은 초식동물이며 그 초식동물이 줄무늬를 갖는 특징이 있을 경우에는 그 초식동물은 얼룩말이라는 것이다. 여기서 IF 문에서 가리키는 초식동물과 THEN 문에서 가리키는 초식동물은 같은 대상을 일컬음은 말할 것도 없다. 따라서 이를 기호적으로 표현하면,
초식동물(×) → 얼룩말(×)
라고 할 수 있다. 여기서 × 라는 변수를 사용하였는데 이는 구체적인 하나의 대상을 대신하는 것이다. 그런데 그 대상이 하나의 초식동물에 대해서 성립되는 것이 아니라 모든 초식동물에 다 적용될 수 있는 것이므로 앞에다 "All" 이란 뜻의 전체정량자 ∀ 를 붙여,
∀×(초식동물(×) → 얼룩말(×))
으로 표현할 수 있다. 다시 말하면 어떤 대상 × 가 초식동물이면 그런 대상 모두는 얼룩말이다라는 의미이다. 규칙에서 나타나는 문장을 이렇게 보다 정교히 표현하면 논리에서 설명될 술어계산 (Predicate Calculus) 가 된다. 따라서 술어계산에서는 규칙을 구성하는 문장의 표현에 대상을 지칭하는 변수 사용을 허용함으로써 보다 의미를 명확히 하고자 한다. 그러나 이러한 술어계산은 그 사용범위가 진위를 구분할 수 있는 명제에 국한된다. 즉, 규칙의 내용이 논리적 암시일 경우에만 술어계산적 표현을 사용할 수 있다. 그러나 술어계산적 표현은 단순 규칙표현에 비해 그 의미를 보다 논리적으로 명확히 표현할 수 있고 술어계산의 구조를 이용하여 독특한 추론방법을 사용할 수 있다.
(3) 규칙의 AND/OR 그래프 표현
AND/OR 그래프란 규칙의 조건 및 결론관계와 AND/OR 관계를 그래프 형태로 나타내는 것이다. 만약 여러 규칙이 있는데 이들이 모두 같은 THEN 문을 갖는다고 하자. 예를 들어 다음과 같은 규칙을 보자.
동물이 젖이 있다 → 포유류이다
동물이
털이 있다 → 포유류이다
이를 앞에서 언급한 논리적 연결사인 OR 를 이용하여 다음과 같이 하나의 규칙 형태로 표현할 수 있다.
동물이 젖이 있다 OR 동물이 털이 있다 → 포유류이다
또 다른 방법은 시각적인 효과를 더해주는 그래프형태로 표현하는 방법이다. 즉, 노드로써 각 문장을 나타내고 호로서 IF 와 THEN 관계를 표현하는 것이다. 위의 예는 다음 그림 1 과 같이 나타낼 수 있다.

그림 1 AND/OR 그래프에서의 OR 표현
또한 IF 문에 AND 가 있는 다음과 같은 규칙이 있다고 하자.
포유류이다 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 그래프
의미망 (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 에 대해서는 인공지능의 언어에서 자세히 설명될 것이다. 이러한 언어를 쓰게 되면 개별적으로 지식입력을 하더라도 전체적인 연결 구조를 유지하게 해 준다.
(1) 프레임 (Frame)
의미망은 노드의구조가 너무 간단하여 복잡한 표현의 경우 의미망의 노드수가 늘어나 검색시간이 길어진다는 단점이 있다. 이에 비해 프레임은
노드의 구조를 보다 체계화한 것으로 볼 수 있다. 영화의 한 장면을 기억할 때, 우리는 정보들을 보다 구조화하여 하나의 틀을 만들어 기억하게
된다. 예를 들어 영화의 어떤 장면 중 주인공이 어느 집 앞에 있는 장면이 있다고 하자. 이때 집의 크기, 창문의 위치, 배경하늘, 정원의
형태, 배경음악 등을 하나의 틀로서 기억한다. 그리고 집안으로 들어가는 장면에서 현관의 크기, 초인종의 소리 등이 떠오르고 다시 주인공이 안으로
들어갔을 때 거실의 탁자, 벽걸이 장식, 마루 등의 모습이 한 화면으로 연상된다. 이렇듯 영화의 한 장면처럼 프레임이란 "어떤 대상, 객체에
대한 여러 개의 상황정보들을 하나의 구조화된 틀로서 표현할 수 있는 자료구조" 이다. 프레임에는 대상의 특성에 대한 기술적인 정보뿐만 아니라
프레임에서의 정보 추출 방식까지도 규정되어 있다.
구체적으로 보면 프레임을
이용한 표현도 궁극적으로 의미망과 흡사한 구조를 가지고 있음을 알 수 있다. 의미망은
노드와 호로서 표현되는 데 비해, 단지 여기서는 노드 대신에 프레임을 사용한다는
것이 다른 점이다. 하나의 프레임의 구조는 여러 개의 슬롯 (Slot) 으로서 구성된다.
슬롯은 프레임이 나타내고자 하는 대상의 하나하나의 특성들을 나타낸다. 각 슬롯은
이러한 특성들의 값을 저장한다. 예를 들어 나의 퍼스널컴퓨터란 프레임에는 모델명,
CPU, 캐시메모리, 하드디스크 콘트롤러 타입 등의 속성이 있을 수 있고, 이를 위해
각각의 슬롯이 생성되어 각 특성들의 값인 GK51P-6100, 펜티엄 60, 256KB, IDE, PCI,
컴택 등이 슬롯에 들어 가게 된다.
프레임의 구조는 마치 파스칼과 같은 프로그램
언어의 레코드 구조나 LISP 에서 설명될 프라퍼티 리스트 (Property List) 를 갖는
LISP 의 아톰 (Atom) 과 유사하다.
|
모델명 |
GK51P-6100 |
|
CPU |
펜티엄 60 |
|
캐시메모리 |
256KB |
|
하드디스크 |
IDE |
|
버스 |
PCI |
|
제조업체 |
컴택 |
|
슬롯 |
값 |
그림 9 나의 퍼스널컴퓨터 프레임
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
그림 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년, 담보의 종류에서 부동산은 모든
담보대출 인스턴스를 위한 기본값으로 사용될 수 있다.
|
||||||||||||||||||||||||||||||
|
대출자 |
|
||||||||||||||||||||||||||||
그림 11 담보대출에 관한 프레임 (역상으로 표현된 슬롯은 상속받은 슬롯을 나타냄)
이상에서 예로 든 프레임을 살펴보면, 어떤 대상이나 객체에 관한 정적 또는 선언적 표현만을 다룰 수 있는 것처럼 보이나 프레임은 절차적 정보도 함께 표현할 수 있다. 이는 하나의 프레임에 하나 이상의 절차 (Procedure) 가 붙을 수 있기 때문이다. 이 절차는 각 슬롯의 값이 추가 (If-added) 또는 삭제 (If-removed) 되었을 때나 슬롯의 내용이 요구 (If-needed) 되었을 때 자동적으로 수행되게 된다. 이러한 절차에는 다음과 같은 종류가 있다.
① 첨가시 수행되는 절차 (If-added Procedure)
: 슬롯에 새로운 값이 저장되면 수행된다.
② 삭제시 수행되는 절차 (If-removed
Procedure) : 슬롯의 값이 삭제되면 수행된다.
③ 필요시 수행되는 절차 (If-needed
Procedure) : 슬롯에 값이 요구되었으나 해당 슬롯이 비어 있는 경우 수행된다.
우리는 이러한 절차를 디몬 (Demon) 이라 부르기도 한다. 즉, 디몬은 특정값 또는 데이터의 변경, 첨가 등의 변동사항이 생겼을 때 그와 연계되어 자동적으로 수행되는 절차 (Procedure)를 말한다. 디몬은 특정 값에 붙어 있는 탐지기 또는 센서처럼 작동된다. 만약 이 탐지기가 해당 값의 변화를 탐지하였다면 즉각 추가적인 계산이나 행동을 불러일으키는 것이다. 위의 예에서는, 월상환액 계산은 구체적인 값을 입력하는 것이 아니라 대출액과 대출기간, 이자율값을 이용한 계산공식인 디몬을 수행케 하여 월 상환액의 값을 결정하게 한다. 따라서 이 디몬이 수행되는 시점은 대출액이나 이자율, 대출기간의 값 어느 하나라도 변동이 생겼을 때이다. 따라서 대출액, 이자율, 대출기간 이 세 개의 슬롯에 월 상환액을 계산하여 그 값을 월 상환액 슬롯을 저장시키는 디몬이 붙어야 한다. 디몬이 사용되는 예는 이외에도 다음과 같은 경우가 있을 수 있다.
① 어떤 일이 발생하였을 경우 특정 데이터를
필요로 하는 모의실험의 경우
② 일이 진행되고 있는 동안 자동 메일전송
③
하위 예산사용내역으로부터의 비용의 합산
④ 허락받지 않은 접근이나 수정의
방지
이상에서 기술한 프레임기반 지식 표현에 대한 특성을 정리하여 보면 다음과 같다.
① 노드와 호로서 구성된 네트워크 형태. 노드는
프레임이며 호는 프레임간의 관계를 나타낸다.
② 프레임은 하나의 대상,
객체의 상태나 특성을 기술하기 위해 여러 개의 슬롯을 두며 이 슬롯에 해당
값을 저장한다. 이 슬롯값으로 다른 프레임 이름이 사용될 수도 있다.
③
각 슬롯에는 슬롯값의 추가, 삭제, 변경, 요구 등이 일어날 때 어떠한 행위가
이루어져야 할지를 규정한 절차 (Procedure) 가 붙을 수 있다.
④ 프레임간의
계층적 구조형성과 상속이 이루어질 수 있다.
(2) 프레임과 스키마
일반적으로 frame이란 이름 대신 스키마 (Schema) 라고 부르기도 하여 보통 스키마를 frame과 비슷한 개념으로 사용하고 있다. 그러나 여기서는 스키마를 frame보다 더 넓은 개념으로 보고자 한다. 스키마는 원래 심리학에서 나온 용어인데 과거의 반응이나 경험에 의해 생성된 생물체의 지식 또는 반응체계로서 환경에 대해 적응하고 대처하도록 하는 역할을 담당한다. 이러한 스키마를 가지고 있기에 주위환경에 대해 체계적인 대응을 할 수 있다. 만약 이러한 스키마가 없다면 생물체는 외부에서 자신에게 주어지는 자극이 무작위와 우연, 또는 아무런 이유없이 자신에게 닥쳐오는 사건들처럼 보이게 될 것이다. 음식을 대했을 때 음식의 맛, 배부름 등의 과거 지식과 반응에 대한 결과를 알기에 인간은 거의 무의식적으로 이에 대처할 수 있다. 또한 어떤 특정 인물, 물건 등에 대해서도 그에 알맞는 반응을 보일 수 있다. 스키마는 어떤 대상에 대한 유형화된 체계와 과거 행동 또는 반응에 대한 결과들로서 적극적으로 자극에 대해 반응할 수 있도록 지원해 준다. 이러한 스키마를 지식 표현의 한 양식으로 구현한 것을 frame으로 볼 수 있다. 참고로 데이터베이스 분야에서도 릴레이션 (Relation) 또는 데이터베이스의 구조정의를 스키마라고 부르고 있다.
(3) 프레임과 객체지향
객체지향표현과 프레임표현방법간의 관계에 대해 설명하면, 프레임표현은 객체지향표현의 선구자적인 위치에 있다고 할 수 있다. 즉 속성으로 사물의 여러 특성을 표현할 수 있다든지, 상속기능과 절차 첨부기능은 모두 오늘날 객체지향표현 기능의 일부이다. 객체지향기법은 다음과 같은 여러 분야에서 나름대로의 필요성 때문에 부각되어 왔다.
이외에도 시스템 시뮬레이션 모델링기법과 컴퓨터
그래픽스분야에서도 객체지향기법을 도입하고 있다.
이제 객체지향표현기법의
개략적인 조망을 먼저 해보고 프레임과 객체지향기법간의 관계를 논의하겠다.
① 클래스 추상화
우리가
어떤 시스템을 모형화하여 프로그래밍 작업을 수행하려면, 우선 관련된 객체를
파악하여 대상 문제와 관련된 사항들만을 추출하는 과정-추상화 과정-으로부터
출발하게 된다. 객체지향 프로그래밍에서의 추상화과정은 대상 문제와 관련된
객체를 선택하고, 객체들이 갖는 속성들을 파악하는 것이다. 유사한 속성들을
갖는 객체들은 동일한 클래스 (Class) 로 묶을 수 있다. 예를 들어, 은행에서
대출을 받고자 하는 갑, 을, 병 이라는 세 사람이 있다고 하자. 이들은 각기
다른 사람이지만 은행의 대출업무와 관련한 이해관계가 있다는 공통점이 있다.
이 경우에는 개개의 대출 희망자 객체들을 "개인 응모자" 라는 하나의
클래스로 분류할 수 있다. 이처럼 클래스 추상화과정은 대상 문제와 개발하고자
하는 시스템의 성격에 따라 객체들의 분류가 달라지게 되므로 지식공학 (Knowledge
Engineering) 의 주요 단계가 된다.
② 클래스의 계층적 구조
객체지향
프로그래밍에서의 클래스들은 계층적인 구조를 갖게 된다 (그림 13 참조). 상위계층으로
갈수록 클래스의 의미는 보다 일반적인 내용이 되며, 하위계층으로 갈수록 보다
구체적인 내용을 갖게 된다. 그림 13 에서 개인대출신청자와 법인대출신청자클래스는
가장 하위계층의 클래스로서 대출신청자를 상위 클래스로 갖고 있다. 대출신청자클래스는
다른 신용카드신청자 및 법인카드신청자클래스와 함께 개인고객이라는 클래스의
하위 클래스를 이루게 된다. 일반적으로 한 개의 클래스가 복수의 상위 클래스를
가질 수도 있다. 그림 13 에서 법인카드클래스는 개인고객과 법인고객이라는
두 개의 상위 클래스를 갖고 있음을 알 수 있다. 객체클래스계층의 효과적인
설정을 위해서는 대상 문제를 객체지향적인 분석과 설계관점에서 파악하고 분석해야
한다.
③ 상속
하위계층에 있는
클래스는 상위 클래스로부터 공통적인 속성들을 상속받을 수 있다. 상위 클래스는
공통적인 속성들을 갖게 되고, 하위 클래스는 상위 클래스로부터 상속받은 공통속성
외에도 고유의 속성들을 가질 수 있다. 이는 프레임 지식 표현에서 이용되고
있는 상속 개념과 동일한 것이다. 만일 어떤 클래스가 여러 상위 클래스를 갖고
있다면, 모든 상위 클래스로부터 정보를 상속받을 수 있는데, 이를 복수상속
(Multiple Inheritance) 이라고 한다.

그림 13 객체지향 프로그래밍에서의 클래스 계층
④ 클래스의 인스턴스로서
객체
클래스는 유사한 객체들의 집합적 개념으로서 이용되는 반면, 실제 지식
베이스나 프로그램을 운용할 경우에는 클래스에 속한 개개 객체들간의 상호작용에
의해 결과가 도출된다. 이를 위해 해당 클래스의 인스턴스로 불리우는 클래스에
속한 개개 객체들은 클래스의 고유한 속성은 물론 상속된 속성들을 갖게 된다.
예를 들어, 갑이라는 객체가 그림 13 에서의 개인대출신청자클래스의 인스턴스로서
정의하고자 한다면 다음과 같은 인스턴스 생성문장을 이용해야 한다. 객체지향
프로그래밍언어에 따라 인스턴스 생성양식은 다소 다를 수 있다.
갑 :=(new "개인대출신청자")
⑤ 행위자 (Methods)
클래스는
객체들의 속성뿐만 아니라 이 속성들을 이용하여 특정한 일들을 수행할 수 있는
함수문을 가질 수 있는데, 이 함수문을 행위자라고 한다. 그러므로 어떤 클래스의
인스턴스 객체가 생성되면, 그 객체는 데이터 표현을 위한 속성과 프로시듀어
또는 함수문 정의를 위한 행위자를 모두 갖게 되는 것이다. 예로써 갑이라는
객체가 "개인대출신청자" 클래스의 인스턴스로서 생성되었다면, 그
객체는 개인대출신청자로서의 속성을 모두 갖게 될 뿐만 아니라 대출신청 관련한
일들을 수행할 수 있는 함수문을 갖게 된다. 즉, 값은 대출신청인의 속성을 보일
뿐만 아니라 신청인으로서 행위를 하게 되는 것이다. 그러므로 행위자를 클래스에
첨부함으로써 실제 문제를 보다 더 잘 표현할 수 있게 되는 것이다.
시스템상에서
행위자를 구현하는 방법은 여러 가지가 있을 수 있다. 함수문이나 프로시듀어는
물론 IF-THEN 형태의 규칙을 이용할 수도 있다. 행위자를 이용하여 수리계산이나
입출력 기능, 인스턴스 객체의 생성 및 객체간의 의사소통 기능 등을 수행하게
된다. 객체지향 프로그래밍에서는 클래스간의 의사소통은 행위자를 이용한 인스턴스간의
메시지 전달로서만 가능하다. 클래스의 속성과 마찬가지로 행위자도 상위 클래스로부터
하위 클래스로 상속이 이루어진다.
⑥ 모듈화와 캡슐화
하나의
객체는 데이터와 함수가 하나의 캡슐에 들어 있는 가장 작은 단위의 모듈이라고
볼 수 있다. 개개 객체는 서로 독립되어 있으며, 객체간의 의사소통은 오직 메시지전달에
의해서만 이루어진다. 이러한 과정을 캡슐화 또는 정보은폐 (Information Hiding)
라고 한다. 이러한 모듈화된 캡슐화과정은 대규모의 복잡한 소프트웨어 개발프로젝트에서
시스템 설계 및 개발의 주요 기법으로 응용될 수 있다. 모듈화와 캡슐화는 프레임에서는
다루지 않은 부분으로, 프로그램 언어에서 발전해 온 객체지향기법으로 인해
강조되고 있다.
이상에서 살펴본 객체지향기법의 특성에는 프레임에서 나타나고 있는 기능, 예를 들어 상속, 계층화, 행위자 등 공통된 점이 많이 나타나고 있다. 상속ㆍ계층화는 양자간 같은 개념으로 사용되고 있으며, 행위자는 프레임의 절차에 대응된다 할 수 있다. 그러나 객체지향기법은 프레임과는 달리 클래스와 인스탄스개념을 두어 프레임의 분류를 보다 세분화하였다. 그 외 모듈화와 캡슐화는 메시지 전달에 의한 객체간의 정보전달을 강조하는 객체지향 쪽에서 강조되고 있다. 이러한 사실들로 미루어 볼 때 프레임도 객체지향기법의 하나라고 볼 수 있다. 그러나 프레임은 인공지능에서 지식 표현의 한 방법으로 나타나 객체지향기법에 영향을 미쳤고, 객체지향기법은 소프트웨어 공학분야 등에서 프로그래밍 방법론 관점에서 발전된 것이 여러 분야, 예를 들어 인공지능, 데이터베이스, 시스템 분석 등에 영향을 미쳤다고 볼 수 있다. 그런데 프레임과 객체는 그 뿌리는 달라도 서로 같은 개념을 표현하고 있다고 볼 수 있으며, 오늘날 객체 (Object) 라는 표현이 보편화됨에 따라 프레임도 객체라고 부를 수 있다. 또한 객체지향 데이터베이스에서는 데이터의 저장구조로 관계형 데이터베이스에서의 릴레이션 (Relation) 이 아닌 객체를 사용하는데 이때 이 객체지향 데이터베이스의 객체와 지식 표현에서의 프레임은 상호 제한적 호환구조로서 상호변환과정을 거쳐 자료를 교환할 수 있겠다.
지금가지 살펴본 기본적 지식 표현은 많은 전문가시스템에서 사용되는 표현방법이다. 그러나 경우에 따라서는 이들 세 가지 표현방법만으로는 전문가시스템에 필요한 지식으로 구축하기에 어려운 문제나 영역이 있을 수 있다. 이 절에서는 규칙, 의미망, 프레임 외에 자주 사용되는 지식 표현기법을 소개한다.
논리에서 언급될 명제계산과 술어계산 등은 바로 지식 표현의 한 방법으로 사용될 수 있고, 전절에서 소개한 규칙형태도 외견상 명제논리의 한 표현방식으로 생각할 수 있다. 자세한 것은 논리를 참고하기 바란다.
앞에서 규칙표현을 도형적으로 묘사한 것을 AND/OR 그래프라 한 바 있다. 그래프는 기본적으로 노드 (Node) 와 호 (Arc) 로서 구성되며 그 모양에 따라 방향그래프, 트리, 네트워크 등으로 분류된다. 그래프로 지식을 표현하면 다른 형태보다 전체적인 지식의 모습을 조망하기가 쉽다. 그래서 최종적으로 구현될 지식의 형태는 규칙 혹은 프레임이라 해도 이를 사용자 또는 지식입력자의 편의성을 고려하여 그래프형태로 표현하기도 한다. 그래프의 구체적 정의는 탐색에서 다루기로 한다.
규칙기반 지식베이스는 규칙의 수가 많아지면 지식을 분류, 검색하기가 어렵게 된다. 따라서 규칙들을 그것의 내용이나 다른 기준에 의해 정리해 두는 것이 필요하다. 이를 위해서 프레임을 이용하여 규칙들을 분류해 둘 수가 있다. 규칙의 프레임 내에서의 표현은 IF 슬롯과 THEN 슬롯을 이용할 수 있다. 다음은 주식투자를 위한 기업의 가치분석을 위한 평가지식을 프레임과 규칙의 혼합형태로 나타낸 것이다. 기업가치분석에는 성장잠재력분석과 자산가치분석 그리고 배당투자유망이라는 세 가지 하위분석단계가 있고 이를 각각 프레임으로 만들어 구체화라는 관계로 엮었다. 여기서 다시 성장잠재력분석의 보다 구체적인 분석단위로 첨단기술개발이 활발한지 또는 연구개발투자가 활발한지를 알아볼 수 있는데, 이들을 구체화란 관계로 성장잠재력분석 프레임에 관련시켰다. 여기서 성장잠재력분석이라는 프레임은 다른 슬롯은 가지고 있지 않고 다만 지식을 내용적으로 분류하는 기준으로 사용되고 있다. 첨단기술개발 프레임에는 구체적으로 특정 기업을 조건으로 하여 이의 평가등급을 규칙형태로 제시하고 있다. 이에 대한 이유 등은 별도의 슬롯을 만들어 저장할 수 있다. 규칙베이스를 그 내용적 분류정보와 이들 분류의 계층적 상하관계를 프레임 구조를 통해 구현하므로 지식베이스의 검색과 수정 및 미비된 지식의 발견이 보다 용이해진다. 이와 같은 혼합형 표현은 UNIK-FRAME 등 프레임 구축용 도구를 사용하면 가능하다. 또한 프레임형태를 잘 이용하면 제약, 최적화모형 등도 프레임형태로 표현 가능하기 때문에 규칙 외에도 다양한 형태의 지식과 프레임과의 혼합표현이 가능하다.

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