Blog

Blog

규칙기반 전문가 시스템 (Rule-based expert system)

컴퓨터로 어떤 일을 시킬 때 보통은 명확한 규칙에 따라서 처리하게 된다. 그 이유는 아직 컴퓨터는 인공지능을 갖지 못하였다. 인간처럼 여러 가지 지식과 현상을 조합해 사고하지 못한다는 말이다. 그 때문에 사람이 컴퓨터의 능력을 이용해 어떤 일을 처리할 때는 일련의 규칙이 필요했다. 예를 들면 IF … Then … Else로 표현되는 규칙을 적용하는 것이다.

하지만, 실생활의 문제들은 이것들도 표현할 수 없는 것들이 너무 많다. 인간이 생각하는 거의 모든 것들이 이런 모호함의 집합이다. “오늘 날씨 너무 덥다. 시원하게 에러컨좀 틀어!”라고 했을 때 “너무 덥다.”, “시원하게” 등의 말들은 컴퓨터가 처리할 수 없는 것들이다. 몇 도로 온도를 유지했을 때 시원하다고 느끼는지 컴퓨터 자체만으로는 알 수가 없다. 컴퓨터는 정확히 수치화된 데이터만 가지고 처리하는 기계이기 때문이다. 이런 문제들을 처리하는 여러 방법의 하나인 규칙기반 전문가 시스템(Rule-based expert system)에 대해 얘기해 보겠다.

이처럼 컴퓨터가 처리해야 하는 문제들은 어떤 분야의 전문가가 처리하던 것을 컴퓨터가 대신하는데 의미가 있다. 나는 이것을 전문가의 지식을 처리한다고 정리한다. 그리고 전문가라고 불리는 사람들은 어떤 지식에 대해 규칙을 만들 수 있는 사람이고 규칙이란 앞서 얘기했던 대로 IF … Then … Else 형태로 표현할 수 있는 것을 말한다.

규칙기반 전문가 시스템은 관련주제에 지식이 풍부하고 관련 문제를 푸는데 능숙한 주제 전문가(domain expert), 전문가 시스템을 테스트하고 규칙을 추론할 수 있는 지식공학자(knowledge expert), 전문가 시스템의 개발 리더인 프로젝트 관리자(project manager), 프로그래머(programmer) 그리고 최종사용자(end-user)로 구성되어 있다.

또한, 규칙기반 전문가는 기반지식(knowledge base), 데이터베이스(Database), 추론 엔진(Interface engine), 해설설비(explain facilities), 사용자 인터페이스(User interface), 외부 인터페이스(External interface), 개발자 인터페이스(Developer interface), 디버깅 보조도구(Debugging aid)로 구성되어 있다.

규칙기반 전문가 시스템은 특정영역의 문제를 풀기 위한 심벌을 추론할 수 있는 능력을 갖추며 처리 과정과 지식이 분리돼 있다는 특징이 있다. 처리 과정과 지식이 분리되어 있다는 것은 매우 큰 장점이다. 이는 새로운 지식이 추가되었을 때 시스템을 수정하기 쉽게 만든다. 또 규칙기반 전문가 시스템은 해설설비가 있으므로 고전적인 방법과 달리 점화된 규칙을 추적할 수 있으면 이르는 방법을 설명할 수 있다. 간단히 설명해서 어떤 정렬 알고리즘(sort algorithm)은 그것이 어떤 절차를 통해서 정렬되는지 소스코드를 보기 전까지는 알 수 없다. 하지만, 전문가 시스템은 어떻게 결과에 이르렀는지 해설설비를 통해서 가능하다는 얘기이다. 또 불충분하고 완전하지 않은 데이터를 처리할 수 있는 대신 결과에는 항상 실수가 존재할 수 있다.

추론방법의 종류에는 순방향 연결과 역방향 연결이 있다. 순방향 연결을 data driven이라고 하는데 단순히 하나씩 지식을 점화시켜 나감으로써 결과를 찾는 방식이다. 자연스러운 방법이지만 속도가 느린 방법이다. 역방향 연결 방식은 goal driven 방식이라고 불리고 목표를 거꾸로 추론해 나가는 방식이다. 보통은 순방향 연결을 사용하고 그 결과를 검증할 때 역방향 연결을 사용한다.

시스템이 가진 규칙은 보통 겹치지 않게 설정해야 좋지만 불가피하게 상반된 같은 규칙이 공존하는 예도 생길 수 있다. 예를 들면 “더우면 에어컨을 켠다.”라는 규칙과 “더우면 에어컨을 끈다.”라는 규칙이 공존할 수 있다. 상식적으로 두 번째 규칙이 잘못된 것을 직감할 수 있겠지만, 컴퓨터는 이것을 알지 못한다. 이를 해결하기 위해서는 각 규칙에 대해 우선순위(priority)를 정하는 방식이 있다. 전문가가 제안한 규칙은 일반사람이 제안한 규칙보다 우선순위를 높게 측정해 같은 규칙이 충돌되었을 때 먼저 적용하는 식이다. 또 다른 충돌 해결 방법은 최장 일치 전략(longest matching strategy)이라는 방법도 있다. IF … 에 해당하는 규칙 중 더 많은 규칙을 적용하는 쪽을 더 높은 우선순위로 배정하는 방법이다. 결국, 이런 충돌을 잘 해결하기 위해서는 지식에 대한 지식인 메타지식(knowledge about knowledge)이 필요하다.

이처럼 지식기반 시스템은 자연스러운 지식을 표현할 수 있고 통일된 구조를 가지며 지식과 과정이 분리돼 있고 불확실한 지식을 다룰 수 있다는 장점이 있지만, 규칙과의 불분명한 관계를 해석할 수 없고 순방향 연결처럼 비효율적인 탐색전략을 갖는다는 것과 새로운 지식이 추가되었을 때 전문가(사람)의 도움 없이는 스스로 학습할 수 없다는 단점이 있다.

요즘 나는 모호하고 애매한 것을 어떻게 컴퓨터로 풀어나가는지에 대한 내용을 관심 있게 보고 있다. 아직 이것에 대한 지식이 부족해 깊게 얘기할 수는 없지만 결국 인간이 만들어낸 시스템으로 극히 일부 분야에 전문적인 능력을 나타내는 것이 지금 시대가 말하는 인공지능 시스템이라는 것이다. 결국, 터미네이터에서 나오는 skynet이나 인간의 사고를 하는 능력을 갖춘 로봇이 나오기까지는 아직 갈 길이 멀어 보인다. 하지만, 확실한 것은 이것은 하드웨어 분야에서 풀어야 할 숙제가 아니라 결국 소프트웨어 분야에서 풀어야 할 문제라는 것이다. 인간의 두뇌 기억과 사고에 대한 의학적 기술이 발전하고 그것을 소프트웨어로 효과적으로 옮길 수 있는 능력이 발전하는 언젠가 이것은 이루어지리라 생각한다.


References

http://en.wikipedia.org/wiki/Expert_system
http://www.cs.nott.ac.uk/~sxp/ES3/index.htm
http://en.wikipedia.org/wiki/Terminator_3:_Rise_of_the_Machines




Subscribe to: Posts (Atom)