전문가 시스템
IT 위키
더 많은 작업
- Expert System
전문가가 가지고 있는 지식을 인위적으로 컴퓨터에게 부여하여 비전문가도 전문가의 지식을 이용하여 결과를 도출해낼 수 있도록 지원하는 자문형 정보시스템
- 1970~1980년대 인공지능의 한 분야로 연구·개발
- 지식을 "IF 조건 THEN 결론" 형태의 규칙(production rule)으로 표현하고, 추론 엔진이 규칙을 연결해 결론을 낸다.
| 구성 요소 | 역할 |
|---|---|
| 지식 베이스(knowledge base) | 전문가 지식을 규칙·프레임 등으로 표현해 저장. "IF 열이 38도 이상 AND 기침 THEN 호흡기 감염 의심" 같은 규칙의 집합 |
| 작업 메모리(working memory) | 현재 문제에 대한 사실(입력 데이터)과 추론 중에 새로 얻은 사실을 저장 |
| 추론 엔진(inference engine) | 지식 베이스의 규칙과 작업 메모리의 사실을 맞춰 보고 적용할 규칙을 골라 실행해 새 사실을 도출 |
| 설명 기능(explanation facility) | "왜 그 질문을 하는가", "어떻게 그 결론에 이르렀는가"를 사용자에게 설명 |
| 지식 획득 기능(knowledge acquisition) | 지식 공학자가 전문가에게서 얻은 지식을 지식 베이스에 넣고 고치는 도구 |
| 사용자 인터페이스 | 질의 응답, 결과 제시 |
지식과 추론 절차를 분리한 것이 핵심이다. 같은 추론 엔진에 지식 베이스만 바꿔 끼우면 다른 분야의 전문가 시스템이 된다. 추론 엔진과 도구만 묶은 것을 전문가 시스템 셸(shell)이라 한다(CLIPS 등).
규칙 기반 전문가 시스템을 프로덕션 시스템이라고도 한다. 규칙(프로덕션), 작업 메모리, 추론 엔진(규칙 해석기)으로 이뤄지며, 추론 엔진은 다음 인식-행동 주기(recognize-act cycle)를 반복한다.
- 매칭 : 작업 메모리의 사실과 조건부가 맞는 규칙을 모두 찾는다(이 규칙들의 집합을 충돌 집합이라 한다).
- 충돌 해결 : 그 가운데 실행할 규칙 하나를 고른다. 먼저 정의된 규칙, 조건이 더 구체적인 규칙, 가장 최근 사실과 연결된 규칙을 우선하는 등의 전략을 쓰고, 같은 사실로 같은 규칙을 반복 실행하지 않게 한다.
- 실행 : 고른 규칙의 결론부를 실행해 작업 메모리에 사실을 추가·삭제한다.
- 더 이상 적용할 규칙이 없거나 목표를 얻으면 멈춘다.
규칙 "IF A THEN B"를 앞(A, 사실)에서 뒤(B, 결론)로 쓰느냐, 뒤에서 앞으로 쓰느냐에 따라 나뉜다.
예제 규칙:
- R1 : IF 털이 있다 THEN 포유류이다
- R2 : IF 포유류이다 AND 고기를 먹는다 THEN 육식동물이다
- R3 : IF 육식동물이다 AND 황갈색이다 AND 검은 반점이 있다 THEN 치타이다
- Forward Reasoning, Forward Chaining, 전향 추론
- 주어진 사실에서 출발해 조건이 맞는 규칙을 차례로 적용하며 새 사실을 계속 만들어 결론에 이르는 방식. 데이터 구동(data-driven) 추론
사실 {털이 있다, 고기를 먹는다, 황갈색이다, 검은 반점이 있다}가 주어지면
- R1의 조건이 맞으므로 "포유류이다"를 추가한다.
- R2의 조건(포유류, 고기를 먹는다)이 맞으므로 "육식동물이다"를 추가한다.
- R3의 조건이 맞으므로 "치타이다"를 결론으로 얻는다.
- Backward Reasoning, Backward Chaining, 후향 추론
- 증명하려는 목표(가설)에서 출발해, 그 목표를 결론으로 갖는 규칙을 찾고 그 조건부를 새 하위 목표로 삼아 거슬러 올라가며 사실로 확인하는 방식. 목표 구동(goal-driven) 추론
"이 동물은 치타인가?"를 목표로 하면
- 결론이 "치타이다"인 R3을 찾는다. 조건 "육식동물이다", "황갈색이다", "검은 반점이 있다"가 하위 목표가 된다.
- "황갈색", "검은 반점"은 사실로 확인된다. "육식동물이다"는 R2의 결론이므로 "포유류이다", "고기를 먹는다"가 하위 목표가 된다.
- "포유류이다"는 R1의 결론이므로 "털이 있다"를 확인한다. 사실이므로 거슬러 올라가며 모든 하위 목표가 참이 되어 목표 "치타이다"가 증명된다.
| 구분 | 전방향 추론 | 후방향 추론 |
|---|---|---|
| 출발점 | 사실(데이터) | 목표(가설) |
| 진행 방향 | 조건부 → 결론부 | 결론부 → 조건부 |
| 구동 방식 | 데이터 구동(data-driven) | 목표 구동(goal-driven) |
| 적합한 문제 | 입력은 적고 가능한 결론이 많은 문제, 상황을 보고 무엇이 일어날지 예측·계획·감시 | 가능한 결론(가설)이 적고 확인할 사실이 많은 문제, 진단·검증 |
| 효율 | 목표와 무관한 사실까지 도출할 수 있음 | 목표와 관련된 규칙만 탐색해 효율적 |
| 사용자 질의 | 처음에 사실을 다 받아야 함 | 필요한 사실만 그때그때 질문 |
| 설명 | "이 사실로부터 무엇이 나오는가" | "왜 이 질문을 하는가"를 설명하기 쉬움 |
| 예 | XCON(R1, 컴퓨터 구성), OPS5·CLIPS(Rete 알고리즘) | MYCIN(감염 진단), Prolog |
두 방향을 섞은 양방향 추론도 쓴다. 자세한 내용은 전방향 추론 문서를 본다.
추론 방향(어디서 출발하는가)과 별개로, 추론이 어떤 논리를 따르느냐에 따라 연역과 귀납을 나눈다.
| 구분 | 연역법(deduction) | 귀납법(induction) |
|---|---|---|
| 방향 | 일반 원리 → 개별 사례 | 개별 사례 → 일반 원리 |
| 형식 | "A이면 B이다", "A이다" → "B이다"(전건 긍정, modus ponens) | 관찰한 여러 사례의 공통점에서 규칙을 만듦 |
| 결론의 확실성 | 전제가 참이면 결론도 반드시 참(진리 보존) | 개연적. 새 사례로 뒤집힐 수 있음 |
| 새 지식 | 전제에 들어 있던 것을 끌어냄 | 전제에 없던 일반 규칙을 만듦 |
| 예 | "모든 육식동물은 고기를 먹는다", "치타는 육식동물이다" → "치타는 고기를 먹는다" | "관찰한 치타 100마리가 모두 고기를 먹었다" → "치타는 고기를 먹는다" |
| 전문가 시스템에서 | 추론 엔진이 규칙을 적용하는 방식(전방향·후방향 모두 연역) | 사례·데이터에서 규칙을 학습해 지식 베이스를 만드는 지식 획득(결정 트리 학습 등) |
관찰 결과를 가장 잘 설명하는 원인을 추정하는 가추법(abduction)도 있다. "젖은 땅"에서 "비가 왔을 것"을 추정하는 것처럼 진단형 전문가 시스템이 가설을 세울 때 쓴다.
- 파이겐바움(Edward Feigenbaum) 교수 등의 DENDRAL(1965년 착수)
- 화학 분자식과 질량 스펙트럼을 넣으면 가장 그럴듯한 구조식을 추정하여 찾아주는시스템이다.
- 원시적이지만 가장 기본적인 패턴기반 인공지능의 구성을 갖춤
- 입력된 데이터의 패턴화
- 데이터베이스상에서 가장 유사한 패턴 도출
- 도출된 패턴에 대응되는 컴퓨터 행동 실행
- MYCIN(1970년대 스탠퍼드) : 혈액 감염 진단과 항생제 추천. 후방향 추론과 확신도(certainty factor)를 썼다.
- 인공지능의 실현으로 각광 받았으나 복잡한 조건문에 의존한 시스템의 한계에 다다름
- 지식 획득 병목 : 전문가의 암묵적 지식을 규칙으로 옮기기 어렵다.
- 유지보수 : 규칙이 수천 개로 늘면 서로 충돌하고 고치기 어렵다.
- 취약성 : 규칙에 없는 상황에서는 엉뚱한 답을 낸다.
- 1980년대 후반부터 인공지능의 침체기가 왔고, 이후 데이터에서 규칙을 스스로 배우는 기계 학습이 주류가 되었다. 규칙 엔진은 지금도 업무 규칙 관리, 금융 심사, 설정 검증 등에 쓰인다.