Knowledge Engineer
지식을 모아서 전문가시스템 (Expert System) 과 자연어 처리 (Natural Language Processing) 같은 컴퓨터 프로그램에 결합시키는 일을하는 사람이다. 그 개념은 1980 연대초에 전문가시스템이 유행하면서 등장하였다. 전문가시스템은 좁은 대상 분야에서 의사 결정을 내리는 컴퓨터 프로그램이다. 그러한 결정은 해당 분야의 전문가 (domain expert) 로부터 얻어진 많은 양의 지식 데이터베이스와 rule 에 기초하여 내려진다. 이때 이러한 데이터를 집대성하여 (codify) 그 프로그램에서 이용할 수 있도록 하는 것이 지식 공학자 (knowledge engineer) 의 일이다. 지식공학자에게 필요로 하는 자질은 다음과 같은 것이 있다.
1. 뛰어난 communication 기술 : 지식의 추출을 위해서는 오랜기간의 토론이 필요하다. 결과를 기록해야하고 결론이나 모델은 동의를 얻어야 한다.이를 위해 대화언어, 필기언어, 도표 등의 효과적인 사용, 상대의 몸짓, 손짓을 읽어내는 능력이 필요하다. 이를 통해 domain expert, user 와 바람직한 인간관계가 형성된다. |
2. 지성 : 컴퓨터의 H/W, S/W 뿐만 아니라 형식 논리학이나 확률이론, 심리학 같은 분야에도 상당한 지식을 가지고 각 분야의 진보에도 민감해야 한다. 새로운 project를 시작할 때는 그분야의 지식을 배우고, 그분야의 전문가와 밀도있는 논의를 하기에 충분한 용어와 원리를 이해할수 있어야 한다. |
3. 탁월한 외교수완 : project의 성공여부는 전문가와의 협력여부에 달려있다. 소외당한 전문가는 project에 흥미를 잃어 버릴 수 있다. 프로그램이 전문가를 대체하게 된다든가, 전문가를 능가하게 된다는 의견을 말하는 것은 치명적이다. 또한 전문가를 곤혹스럽게하는 암시 같은 것도 금물이다. |
4. 감정이입과 인내력 : domain expert 와의 협조를 위해 서로를 존중하지 않으면 안된다. knowledge engineer 는 전문가가 직면하고 있는 문제를 정당하게 평가해야 한다는 것이다. 잘난체하는 인상을 주지 않도록 주의하면서 전문가를 격려하고 자신의 의견에 고집을 부리지 않고, 비판이 아니라 사물을 분명하게 하기위해 질문을 해야 한다. 전문가가 주저하거나 분명한 모순에 빠져있는 경우라면 충분한 인내력을 발휘할 기회라고 생각해야 한다.user 와의 대화시에도 이러한 자세가 필요한데, 전문가와는 다른 사고방식과 흥미를 가지고 있을 것이기 때문이다. |
5. 끈기 : 성과가 오르지 않을지도 모른다. 전문가시스템내의 빈틈이나 모순을 최소화해야 하지만 개발도중에는 이러한 경우가 수없이 존재할수 있다. 이런 문제의 해결을 위해서는 끈기가 있어야 하며 열의를 지속적으로 유지해야 한다. 때로는 후퇴해야할 경우도 있겠지만 끝내는 성공한다는 신념을 가져야 한다. |
6. 논리성 : inference engine 은 처음부터 끝까지 논리적이어야 한다. 지식을 추출하는 동안 특히 초기단계에서는 전문가의 설명은 질서가 없는 것처럼 보일수 있고, 단편적으로 보일수도 있다. 지식추출시 올바른 진술에는 순순히 그대로 인식하고 잘못된 것같다고 생각될 때에는 의미있는 반례를 제시해야 한다.또한 논의중에 모델의 완전성이나 일관성 같은 것들의 평가도 할 수 있어야 한다. 이상의 것을 위하여 어느 수준이사의 명석한 사고와 논리성이 요구된다. |
7. 유연성과 발명의 재능 : 뛰어난 방법론이나 유연한 구조를 가진 tool을 사용할 경우에도 knowledge engineer 의 분석력은 필요하다. 자신의 판단력으로 다양한 방법론중에서 가장 효율적이라고 생각되는 것을 취사선택해야 한다.또한 사전에 얻어진 결과나 모델을 포기하기도 하고 필요하면 해당 전문지식이나 적합한 표현방법을 스스로 궁리해야 한다. 이러한 것을 위해서는 새로운 idea를 시도해 본다는 진취적인 기질과 project에 대한 주의 깊은 유연한 approach의 선택이 요구된다. |
8. 자신감 : 내성적인 기질을 가진 사람이나 인격적으로 미숙한 사람은 아무리 기술적으로 우수하다고 해도 project를 능숙하게 관리할수는 없다. 전무가시스템 개발은 자기자신에 대한 도전이기 때문에 project를 계속 열의로서 지속할 만한 충분한 자신감을 가져야 한다. |
9. 대상영역의 지식 : 해당 영역의 전문가와 대화를 나누어야 하므로 해당 영역의 기초적인 지식을 가져야 한다.예로 직면하고 있는 문제의종류나 사용되고 있는 전문용어, 일반적으로 받아들여지고 있는 방법이나 tool의 종류는 알고 있어야 한다. 그러나 지나치게 많은 지식을 알고 있을 경우에느 knowledge engineer가 전문가가 직면하고 있는 것과 같은 문제들을 짊어지게 될수도 있어 오히려 문제가 될수도 있다. |
10. 프로그래밍 지식 : knowledge base, inference engine 은 전문가시스템에서는 프로그램의 형식으로 표현된다. 따라서 프로그래밍이나 지식표현의 다양한 형태, 즉 semantic network, frame 같은 것에 대해 최소한의 지식은 갖추어야한다. 단지 지식을 추출하는 시점에서는 지적이고 유연한 approach가 가장 중요하며 computer science에 관한 경험부족은 어느정도 허용될수 있다. |
위의 능력을 모두 갖춘 knowledge engineer 은 사실상 어려우며 하나의 project 측면에서는 위의 조건을 모두 갖추고 있어야 한다. 즉 팀원의 자질을 잘 조화시키는 것이 중요하다.
term :
전문가시스템 (Expert System) 지식 (Knowledge) 지식베이스 (Knowledge Base) 지식공학 (Knowledge Engineering) 지식공학자 (Knowledge Engineer) 지식획득 (Knowledge Acquisition) 지식 표현 (Knowledge Representation) 인공지능 (Artificial Intelligence)
paper :
활동하는 지식공학자 : Edward Feigenbaum, Pamela McCorduck