지능적 에이전트

 

최신 인공지능 : 조영임, 학문사, 1999, Page 293~323

1. 기본 개념

2. 작동 원리

3. 구조 및 기능

4. 형태 분류

     (1) 단순 반사형 agent
          (simple reflex agent s)

     (2) 외부지식 기억형 agent     
          (agent that keep track of the world)

     (3) 목표 기반 agent  (goal-based agent)

     (4) 함수기반 agent  (utility-based agent)

 

5. 환  경

     (1) 접근 가능과 접근 불가능한 환경

     (2) 결정적과 비결정적 환경

     (3) 에피소드적과 비에피소드적 환경

     (4) 정적과 동적 환경

     (5) 이산적과 연속적 환경

6. 사례 연구

     (1) 시스템의 개요

     (2) agent 설계 알고리듬

     (3) IKMAS 의 응용

7. 지능적인 agent  와 관련된 웹 사이트들

1. 기본 개념

이 장에서는 최근 인공지능 분야에서 가장 각광받고 있는 지능적 agent (intelligent agent s) 에 관해 기본 개념, 작동 원리, 구조 및 기능, 형태 분류, 응용 분야 등을 중심으로 설명하고자 한다.

agent 는 인공지능 분야에서 오래 전부터 연구되어 온 분야로서 1990년대 초부터 독립된 분야로 인식되기 시작한 분야이다. agent 는 최근 통신 및 컴퓨터의 보급이 증대됨에 따라 개인 비서 역할을 하기 위해 등장한 개념으로, 특히 분산 환경에 적당하다. agent 에 관해서는 현재 AT&T, 애플, 휴렛 패커드, IBM, 마이크로소프트 등에서 제품 개발에 박차를 가하고 있다.

agent 는 여러 학자들에 의해 개념이 정립되었는데 대표적으로 Russell 과 Norvig 의 정의에 의하면 그림 1 에서와 같이 agent 의 개략적인 상호작용을 나타내고 있다. 즉, agent  는 자신의 감각기관 (sensor) 을 통해 환경 (environments) 을 인지 (percept) 하여 작용기 (effectors) 를 통해 그 환경에 대해 반응 (action) 하는 시스템을 말한다.

 

그림 1. agent 시스템

이 그림에서 "?" 부분은 가장 합리적인 agent  를 의미하는 것으로 이부분의 설계가 효과적인 agent 시스템을 구축하는 주요 요소가 된다.

또한 Wooldridge 와 Jennings 는 agent 가 자동성이나 다른 agent 간 통신 능력, 시간에 따른 환경 변화에 대응하고 목표 지향적인 특성을 갖는 하드웨어 또는 소프트웨어 기반 컴퓨터 시스템이라고 정의하였다. Takeda 는 agent 를 소프트웨어 agent 와 하드웨어 agent 로 나누고, 소프트웨어 agent 를 자동적으로 인간과 통신하여 작동하는 목표 지향적 시스템, 이에 학습 기능이 첨가되면 하드웨어 agent 로 분류하였다.

이외에도 여러 학자들에 의해 정의된 agent 의 공통적인 특징을 요약하면 다음과 같다.

현재 대다수의 agent 는 사용자와 시스템이 자원들과 통신하며 반자동화된 방법으로 작동하기 때문에 이때의 agent 를 지능적 agent 라고도 한다. 참고로 이 책에서 설명하는 agent 는 지능적 agent 이며 지능적 agent 시스템과도 동일한 의미로 사용하겠다.

agent 는 그림 1 과 같이 인지, 반응, 목표, 환경이 중요한 요소가 되므로 이들을 묶는 시스템 구성이 중요하다. 따라서 그림 2 처럼 내부에 자신만의 지식 베이스와 추론 능력을 가지고 사용자, 시스템 자원, 다른 agent 와 통신하는 능력이 agent 의 기본 개념이다.

그림 2. 지능적 agent 의 기본 개념

지능적 agent 에는 분산 인공지능, PDA (personal digital assistants) , 사용자 인터페이스, 전자우편, 그룹웨어, CSCW (computer support for co-operative work) , 작업 관리 시스템 등의 기술이 영향을 미치고 있다. 즉, 이들의 개발로 지능적 agent 의 성능이 점점 향상되고 있다.

2. 작동 원리

합리적인 agent 는 올바르고 정확한 일 즉, agent 로 하여금 가장 성공적인 일을 하도록 하는 어떤 일을 수행한다. 그러므로 agent 의 성공 여부를 평가하려면 "how"와 "when"을 결정해야 한다.

agent 가 얼마나 성공적인가를 결정하는 기준인 "how"를 측정하기 위해 성능 평가 척도 (performance measure) 를 사용한다. 그러나 모든 agent 들에 적당한 고정된 평가 척도가 없기 때문에 agent 자체의 만족 여부로 성능 평가를 할 수밖에 없을 것이다. 이것 또한 주관적일 뿐 아니라 가능하지 않을 수도 있다. 그러므로 누가 봐도 알 수 있는 객관적이면서 표준이 되는 성능 평가 척도가 필요하다. 예를 들면, 진공 청소기 역할을 하는 agent 가 있다고 하자. 이 경우 성능 평가 척도는 단위 시간당 청소한 먼지의 양, 전기 소비량 및 소음 정도 등이 될 것이다.

agent 의 성능을 평가하는 시간인 "when" 또한 중요하다. 이를 위해 비교적 시간 간격을 두고 agent 의 성능을 평가하는 것도 좋은 방법이 된다. 예를 들면, agent 에 따라 하루에 2번 내지 3번 정도 평가 시간을 정해 놓는 것도 좋은 방법이다.

또한 실제의 출력값을 알고 그대로 행동하는 agent 도 있겠으나 이론적으로는 가능하지만 실제로는 불가능하다.

일반적으로 agent 는 다음 4가지 정보에 따라 작동한다.

요약하면, 가장 이상적인 agent 는 각 인지 서열에 의해 제공된 사실들과 agent 가 가진 지식들을 총동원하여 자신의 성능 평가 척도를 최대화 시킬 수 있도록 바람직한 행동을 하는 agent 이다.

그러나 이때 agent 가 행동을 하기 위해 유용한 정보를 얻지 못하면 즉, 인지 서열이 적당하지 못하면 잘못된 결과를 초래할 수도 있다. 그러므로 agent 의 행동 결정에는 내부 처리 과정 못지 않게 정보를 얻는 과정 또한 매우 중요하다. agent 는 외부 환경에서 정보를 얻어 내부에서 처리하는 과정이 행동 결정을 하기 때문이다. 그러나 모든 인지 서열을 전부 인지할 수 있는 경우는 매우 드물기 때문에 앞으로는 적은 정보로도 바람직한 행동 결정을 할 수 있는 보다 지능화된 agent 가 필요할 것이며 그러한 추세로 agent 시스템이 개발될 것이다.

agent 는 실세계를 agent 와 비agent 로 구분하는 어떤 절대적 특성이 있는 것이 아니라 시스템을 분석하는 도구일 뿐이다. 예를 들어, "시계"라는 agent 를 생각해 보자. 시계는 인지 서열도 없고 외부 환경과도 무관한 낮은 수준의 agent 지만 크고 작은 두 개의 바늘이 움직임으로써 시계 agent 고유의 올바른 일을 수행하고 있는 것이다.

agent 의 행동은 지금까지 인식한 인지 서열에 의해서만 좌우되기 때문에 각 인지 서열에 반응하는 행동 양식을 테이블 형식으로 만들어 특정 agent 를 설명할 수 있다. 이러한 인지 (percept) 와 행동 (action) 의 연결 관계를 사상 (mapping) 이라고 하는데, 사상 관계를 정확히 기술하는 것이 중요하다. 임의의 주어진 인지 서열에 반응하여 수행하는 agent 의 행동을 기술하는 것이 합리적인 agent 설계의 핵심 사항이 되기 때문이다. 그렇다고 해서 가능한 모든 인지 서열과 행동의 관계를 모두 테이블로 작성해야 한다는 것은 아니다. 일일이 나열하지 않아도 사상 관계를 잘 나타낼 수 있다는 것은 아니다. 일일이 나열하지 않아도 사상 관계를 잘 나타낼 수 있다. 예를 들어, 제곱근 함수 (mean square function) 를 계산하는 단순한 agent 를 생각해 보자. 여기서 만약 인지된 입력값이 양수 이면, agent 는 행동으로 값을 산출한다. 이때 시스템 설계자는 인지와 행동간의 관계를 사상시킬 필요가 없게 된다. 그림 1은 제곱근 함수문제를 인지와 행동과의 관계로써 이용하여 사상시킨 프로그램의 일부로서 행동은 소수점 이하 15자리까지 정확하게 나타낸 그림이다.

뉴턴 방법 (Newton's method) 을 함수로 나타내면 다음과 같다.

 

percept x

Action z

function SQRT (x)
          초기값
*/
      repeat until
        
      end
      retum

1.0
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
:
:

1.000000000000000
1.048808848170152
1.095445115010332
1.140175425099138
1.183215956619923
1.224744871391589
1.264911064067352
1.303840481040530
1.341640786499874
1.378404875209022
:
:

그림 1 . 제곱근 함수 문제

이 제곱근 함수 문제는 사상과 agent 설계와의 관계를 보여 주는 좋은 예이다. 위의 사상 테이블은 매우 크지만 이를 의미하는 agent 는 간결하게 함축된 프로그램이다. 요약하면, 가장 좋은 agent 는 무한 환경에서 무한 행동을 할 수 있도록 간결하고 함축적으로 작성된 프로그램이라고 정의할 수 있다.

agent 의 행동 결정에서는 내장된 지식이 또한 매우 중요하다. 그러나 agent 의 행동이 인지된 값에만 전적으로 의존한다면 agent 는 자동성이 없는 시스템이 될 것이다. agent 의 행동은 agent 자신의 경험과, agent 가 동작하는 특정 환경에 대한 agent 구축시 사용된 내장된 지식에 의해 결정된다. 한 시스템이 어느 정도 자동성이 있다는 것은 시스템의 행동이 자신의 경험에 의해 결정된다는 것을 의미한다. 한 agent 가 자신의 내장된 지식과 일치하는 인지값에 대해서는 성공적으로 행동할 것이나 융통성이 부족하게 되므로 자동성이 없는 시스템이 될 것이다. 진정으로 자동적이며 지능적인 agent 가 되려면 조정할 충분한 시간이 주어졌을 때 다양한 환경에서 성공적으로 동작해야 한다.

3. 구조 및 기능

지금까지는 agent 의 기본 개념과 동작 원리에 대해 설명했는데, 이 절에서는 agent 의 내부 구조와 기능에 대해 설명하고자 한다.

최근 인공지능 분야에서는 agent 프로그램 (agent program) 즉, 인지와 행동간의 사상 관계를 구현한 함수의 설계에 관심을 집중하고 있다. 이 agent 프로그램은 특정 컴퓨터 장치나 아키텍처상에서 수행된다. 예를 들면, 일반 컴퓨터 또는 카메라 이미지, 오디오 입력 등 특수 목적 하드웨어를 가진 컴퓨터가 될 수 있다. 일반적으로 아키텍처는 그 프로그램에서 사용 가능한 감각 기관을 이용하여 정보를 인지하게 해주며 프로그램을 실행시키므로 agent 와 프로그램과 아키텍처는 다음과 같은 관계를 갖는다.

agent = 아키텍처 + 프로그램

그림 1은 몇 개의 agent 형태와 해당 인지, 행동, 목표, 환경 등과의 관계를 보여 주는 그림이다.

이 그림에서 실제 환경과 인공 환경간에는 분명 차이가 있을 것이다. 그러나 문제는 이들의 차이가 아니라 agent 행동과 환경에 의해 생성된 인지 서열, agent 가 수행해야 할 목표 등과의 복잡성이다. 몇몇 실제 환경은 아주 단순한 것들도 있기 때문이다. 예를 들면, 제품 검색용 로봇인 경우 제품을 받아들이든지 반품하든지 둘 중의 하나만 행동으로 나타내면 된다. 그러나 시뮬레이터 같은 소프트웨어 agent 인 경우는 환경이 매우 복잡하고 다양하다.

agent 형태

인        지

행       동

목       표

환       경

의학 진단 시스템

증상, 환자의 대답, 흔적

질문, 테스트,
처방

환자의 건강,
비용최소화

환자, 병원

인공위성
이미지분석 시스템

여러색깔, 강도 등을 나타낸 픽셀

사진 출력

정확한 분류

인공위성으로부터 전송된 사진

단순작업용 로봇

여러강도의 픽셀

일부분을 선택해
적당한 장소에
분류

정확한 장소에 분류

부분을 가진
컨베이어 벨트

제련소 조절기

온도, 압력

밸브의 개폐동작,
온도조절

순도, 생산량,
안전도의 최대화

제련소

대화형 영어 튜터기

입력된 단어

연습문제 조언,
정답의 출력

학생의 시험성적
향상

학생집단

그림 1. agent 형태별 비교

지능적 agent 는 대개 구조적 형태가 유사한데, 앞서 설명했듯이 환경에서 인지하여 행동하는 시스템을 말한다. 초기의 agent 프로그램은 매우 단순하게 설계되었는데, 입력되는 새로운 인지 사실에 따라 갱신되는 내부 데이터를 갖는다. 이들 데이터 구조는 agent 가 행동을 선택하기 위한 의사 결정 과정시 작동하며 아키텍처에 전달된다. 여기에는 두 가지 특징이 있는데 첫째, agent 의 입력값으로 인지 서열이 아닌 단일 인지값만을 받아들였다는 점이다. 물론 메모리에 인지 서열을 만드는 것은 전적으로 agent 에 달려 있다. 그러나 인지 서열의 저장 없이도 성공적으로 동작하기도 하고 완전한 서열의 저장이 불가능한 경우도 종종 존재한다. 둘째, 성능 평가 척도 또는 목표가 초기 agent 프로그램의 한 부분이 아니라는 점이다. 성능 평가 척도는 외적으로 agent 행동을 평가하기 위한 것이기 때문에 제곱근 문제처럼 성능 평가 척도에 대한 기준이 없어도 매우 좋은 성능을 보이기도 한다.

일반적으로 환경에 대한 제한을 많이 둘수록 agent 프로그램의 설계는 쉬워진다.

4. 형태 분류

이번 절에서는 실제로 agent 프로그램의 설계 방법에 따른 4가지 형태의 agent 에 관해 살펴보고자 한다.

(1) 단순 반사형 agent  (simple reflex agent s)

단순한 반사형 agent 는 그림 1과 같이 자신의 지식 베이스에서 인지된 상태와 정확히 일치하는 반응만을 수행한다. 즉, '조건부-결론부 관계 규칙'의 관계가 명확해야 한다는 것이다. 그러나 일반적으로 인지할 수 있는 환경은 비결정적이고 동적이기 때문에 항상 이 관계가 성립된다고 볼 수 없으므로 응용 범위가 매우 좁다는 단점을 갖는다.

그림 1. 단순 반사형 agent

function  SIMPLE-REFLEX-agent  (percept) returns action
          static : rules, a set of condition-action rules
          state ← INTERPRET-INPUT (percept)
          rule ← RULE-MATCH (state, rules)
          action ← RULE-ACTION[rule]
return action

(2) 외부지식 기억형 agent   (agent that keep track of the world)

외부 지식 기억형 agent 는 인지된 상태의 범위에 관한 내부 지식을 계속적으로 기억하고 있는 agent 를 말한다. 즉, 인지된 상태가 지식 베이스와 조건부와 정확히 일치하는 것이 없더라도 인지된 상태의 범위로부터 유사한 결론부를 찾아낼 수 있게 된다. 따라서 거대한 지식 베이스를 필요로 한다. 예를 들면, 자동차의 뒷 범퍼 모양이 자동차마다 다양하므로 인지된 것에서 조금씩 변형된 모양을 찾아내어 반응하게 된다. 그러나 내부 지식에 대한 유지 또한 메모리나 크기면에서 많은 오버헤드를 필요로 한다.

function REFLEX-agent -WITH-STATE (percept) returns action
          static : state, s description of the current world state
                     rules, a set of condition-action rules
          state ← UPDATE-STATE (state, percept)
          rule ← RULE-MATCH (state, rules)
          action ← RULE-ACTION[rule]
          state ← UPDATE-STATE (state, action)
return action

그림 2. 제곱근 함수 문제

(3) 목표 기반 agent  (goal-based agent)

목표 기반 agent 는 인지에 대한 반응이 목표가 주어졌을 경우보다 정확히 수행된다는 것을 기본 전제로 하는 agent 로서, 탐색 (search) 문제나 계획 (planning) 문제 등에 적용되는 agent 를 말한다. 예를 들면, 비가 오는 경우 자동차의 브레이크는 보통 때와는 다른 정도로 밟아야 안전한 운행이 될 수 있을 것이다. 이러한 것을 조절할 수 있는 agent 가 목표 기반 agent 이다. 그러나 모든 인지 가능한 환경 자체가 비결정적?동적 특성 외에는 접근하기 쉽지 않다는 특성을 갖고 있으므로 항상 목표를 기반으로 수행되지는 않는다는 점에서 어려운 문제점을 갖는다.

그림 3. 목표기반 agent

(4) 함수기반 agent  (utility-based agent)

목표 기반 agent 가 수행할 목표들을 선택할 때 문제가 발생하기 때문에 이를 해결하기 위해 제안된 agent 로서, agent 가 인지한 반응을 목표에 대해 얼마만큼 만족하는지 사용자 중심으로 그 목표에 대한 만족도를 수치화하는 agent 를 말한다. 여기서 "utility"란 어떤 상태의 만족도를 하나의 수치로 나타내는 사상 함수를 말한다. 그러나 수치화 척도 중에 대한 객관성 등이 해결해야 할 과제이다.

그림 4. 함수기반 agent

동적인 환경에서부터 인지하여 내부 추론을 통해 사용자의 목표 또한 최대한으로 만족시킬 수 있으며, 외부 환경에 대해서도 융통성있게 반응할 수 있는 지능형 agent 가 바람직한 시스템이다.

5. 환  경 

이 절에서는 agent 가 환경에 의해 작동되기 때문에 agent 와 환경과의 관계를 설명하고자 한다. 우선, 여러 가지 다른 환경에 대해 설명하고 agent 설계에 어떻게 영향을 미치는지에 관해서도 설명하도록 하겠다.

다음은 5가지 서로 다른 환경의 특성을 간단히 설명한 것이다.

(1) 접근 가능과 접근 불가능한 환경

만약 agent 의 감각 기관에서 복잡하고 다양한 여러 환경 상태에 접근 가능하다면 이때의 환경을 agent 에 대해 접근 가능 (accessible) 하다고 하고, 반대인 경우는 접근 불가능 (inaccessible) 하다고 한다. 접근 가능한 환경은 agent 의 감각 기관이 그의 행동 선택과 관련된 모든 측면을 감지할 수 있으므로 효과적이다. 또한 접근 가능한 환경은 agent 가 외부 세계의 정보를 내부 상태로 유지할 필요가 없기 때문에 편리한 장점이 있다.

(2) 결정적과 비결정적 환경

만약 다음 단계의 환경 상태가 현재 상태와 agent 에 의해 선택된 행동에 의해 완전히 결정될 수 있다면 이때의 환경을 결정적 (deterministic) 이라고 하고 반대인 경우는 비결정적 (nondeterministic) 이라고 한다. 일반적으로 agent 는 접근 가능과 결정적 환경에서는 불확실성 (uncertainty) 에 대해 걱정할 필요가 없다. 만약 환경에 접근 불가능하면 비결정적인 것처럼 보일 것이다. 특히, 환경이 복잡하고 접근 불가능한 모든 측면을 유지하기 어렵다면 더욱 그럴 것이다. 따라서 환경을 agent 관점에서 결정적이거나 비결정적으로 보는 것이 더욱 타당하리라 본다.

(3) 에피소드적과 비에피소드적 환경

에피소드적 (episodoc) 환경에서는 agent 의 경험은 에피소드 (episode) 로 나뉘어진다. 각 에피소드는 agent 가 인지한 것과 그때의 행동으로 구성되어 있다. 각 행동의 질은 agent 자체의 에피소드에 전적으로 의존한다. 계속되는 서브 에피소드는 앞의 에피소드에서 일어났던 행동에 의존하지 않기 때문이다. 에피소드적 환경에서는 agent 가 미리 생각하여 결정할 필요가 없기 때문에 매우 단순한 구조를 갖는다.

(4) 정적과 동적 환경

agent 가 수행되는 동안 환경이 변화할 수 있다면 이때의 환경을 동적 (dynamic) 이라 하고 반대인 경우는 정적 (static) 이라 한다. 정적 환경은 동적환경에 비해 훨씬 다루기가 쉬운데, 이유는 agent 가 그의 행동을 결정하는 동안 외부 세계의 정보를 계속 조사 및 유지하지 않아도 될 뿐 아니라 시간의 경과에 대해서도 걱정하지 않아도 되기 때문이다. 만약 환경이 시간경과에 대해 agent 의 성능 척도화 외에는 변화하지 않는다면 이때의 환경을 준동적 (semidynamic) 이라고 한다.

(5) 이산적과 연속적 환경

명백히 정의된 인지와 행동들이 한정된 수만큼 있으면 이때의 환경을 이산적 (descrete) 이라 하고 반대인 경우는 연속적 (continuous) 이라고 한다. 체스문제는 이산적인 경우의 한 예이다. 한 번에 이동할 수 있는 수가 제한되어 있기 때문이다. 택시 운전자 문제는 연속적인 경우의 예이다. 왜냐하면 택시와 다른 차들의 속도와 위치가 연속적인 값 범위 내에서 변화하기 때문이다.

지금까지 agent 에 영향을 미치는 여러 환경들의 특성을 분류해 보았다. 이들 중 agent 가 가장 다루기 힘든 환경은 접근 불가능하며 비에피소드적, 동적, 연속적 환경인 경우이라고 한다. 대부분의 실제 상태는 비록 동적인 환경으로 설정한다 해도 너무 복잡한 것이 사실이기 때문에 문제가 된다. 그러므로 실제로 구현시 비결정적으로 간주하기도 한다.

표 1 은 우리에게 친숙한 여러 다양한 환경에 관한 성질을 지금까지 분류한 특성에 따라 정리한 것이다. 이 그림에서 주의할 점은 동일한 환경이라도 어떻게 개념을 정의하느냐에 따라 달라진다는 점이다. 예를 들면, 포커문제인 경우 agent 가 카드 순서를 유지할 수 있으면 결정적이고 그럴 수 없으면 비결정적이다. 또한 많은 환경들이 agent 각 행동보다 좀더 높은 수준에서는 에피소드적이다. 예를 들면, 체스는 게임 서열로 구성되었는데 각 게임은 하나의 에피소드를 구성한다. 왜냐하면, agent 전체 성능에 있어서 한 게임에서 이동하는 정도가 다음 게임에서 이동할 때에는 별로 영향을 미치지 않기 때문이다. 즉, 한 게임에서의 이동은 확실히 상호 관련이 있기 때문에 agent 는 미리 몇 번의 움직임을 예측해야 한다는 것이다. 

환경종류

접근가능

결정적

에피소드적

정    적

이산적

Chess with a clock
Chess without a clock
Poker
Backgammon
Taxi driving
Medical diagnosis system
Image-analysis system
Part-picking robot
Refinery controller
Interactive Engilish tutor

yes
yes
no
yes
no
no
yes
no
no
 no

yes
yes
no
no
no
no
yes 
no
no
 no

no
no
no
no
no
no
 yes
yes
no
 no

semi
yes
yes
yes
no
no
semi
no
no
no

yes
yes
yes
yes
no
no
no
no
no
 yes

표 1. agent 환경에 따른 예

일반적으로 agent 프로그램은 agent 와 환경과의 기본 관계를 나타낸다. 시뮬레이터는 입력으로서 하나 이상의 agent 를 받아들여서 반복적으로 각 agent 에 올바른 인지를 주어 올바른 행동을 나타낼 수 있도록 agent 를 재배열하는 역할을 한다. 그리고 나서 시뮬레이터는 이 행동에 근거하여 환경을 수정한다. 그리고 나서 시뮬레이터는 이 행동에 근거하여 환경을 수정한다. 그러므로 환경은 내부 상태와 갱신 함수에 의해 정의된다고 볼 수 있다. 물론 한 시뮬레이터에서 작용하는 agent 가 같은 인지와 동작을 제공하는 실제 환경에서도 작용해야 함을 기본 전제로 한다.

그림 1은 기본적인 환경 시뮬레이터 프로그램과 환경 평가 함수를 나타낸 그림이다.

그림 1. 기본적인 환경 시뮬레이터 프로그램과 평가 함수

RUN-ENVIRONMENT 프로시저는 정확하게 한 환경 내에서 agent 를 훈련시킨다. 자연어 처리와 같은 종류의 agent 들에 대해 이들 행동은 관찰하기가 쉽다. agent 성능에 관한 좀더 많은 언어 처리 정보를 얻기 위해 성능 평가 코드를 삽입했는데, 이것이 RUN-EVAL-ENVIRONMENT 함수이다. 이 함수는 각 agent 에 성능 평가를 하여 해당 점수를 리턴하는 함수이다. 이때의 점수 변수 (score) 는 각 agent 의 점수를 유지하는 변수이다.

일반적으로 성능 평가는 프로그램 동작 도중 생성된 환경 상태의 전체서열에 의존할 수 있다. 보통 성능 평가는 합, 평균, 혹은  최대값 구하기 등의 함수를 이용하여 간단히 측정할 수 있다. 예를 들면, 진공청소 agent 의 경우 한 번에 청소한 먼지의 양을 측정하여 score 변수에 지급까지 청소한 총 먼지량을 유지하도록 할 수 있다.

RUN-EVAL-ENVIRONMENT 는 단일 내부 상태와 특정 갱신 함수로 정의된 단일 환경에 대해 성능 평가를 하여 리턴하는 함수이다. 보통 agent 는 환경 클래스, 즉 서로 다른 환경 집합에서 동작하도록 설계한다. 예를 들면, 체스 프로그램은 서로 다른 사람들과 기계들에 대해 작동하도록 설계할 수 있다. 만약 단일 적수 프로그램으로 설계한다면 이 상대편 적수의 특별한 약점을 이용하여 이길 수도 있을 것이나 이것은 좋은 프로그램이라 볼 수 없다. 엄밀히 말하면 한 agent 의 성능 평가를 위해서는 agent 를 수행시킬 특정 환경을 선택하는 환경 생성기 (environment generator) 가 필요하다. 여기서는 환경 클래스 내에서 agent 의 평균 성능에 주목해야 한다.

6. 사례 연구

agent 시스템의 한 예로, 지능적인 지식 기반 다중 agent 시스템에 관해 설명하고자 한다.

(1) 시스템의 개요

이번 절에서 설명하려는 시스템은 지식 기반 시스템과 agent 이론에 지능적인 추론 방법과 agent 간 통신 방법을 융합한 지능적인 지식 기반 다중 agent 시스템 (intelligent knowledge-based multi agent system : IKMAS) 이다. 여기서 IKMAS는 기존의 지식 기반 시스템에 지능적 추론 기능과 다중 agent 시스템이 상호 협력하여 동작함으로써 보다 목적 지향적인 지능형 시스템을 말한다.

IKMAS의 개요는 그림 1과 같다.

그림 1. IKMAS의 개요

그림 1의 IKMAS의 agent 내 각 모듈 기능은 다음과 같다.

→ 제어기와 관리기: agent 에 도달된 정보를 수집 분석하여 추론할 수 있도록 추론 모듈을 호출하는 부분으로 지식 기반 시스템 (knowledge- based system ; KBS) 과 상호 작용한다.

→ 추론: 제어기와 관리기로부터 보내 온 정보와 외부 환경에서 학습한 내용을 바탕으로 KBS를 통해 주어진 사실에 대해 결론을 도출할 수 있도록 하는 모듈이다.

→ KBS : "IF A THEN B" 형태의 규칙들로 이루어져 있으며 외부에서 학습한 내용이 저장되는 지식 기반 시스템이다. 이때 A와 B는 퍼지 또는 비퍼지 데이터들로 구성되어 있다.

→ agent 간 통신 시뮬레이터: agent 들이 상호 데이터를 송수신할 수 있도록 해주는 모듈로서 agent 가 agent 를 호출했을 때 agent 가 준비될 수 있도록 하는 뮤 형태로 구성되어 있다.

→ 자원 분배기: agent 간 통신 시뮬레이터에 따라 각 agent 가 활성화될 수 있도록 분배하는 역할을 담당하는 모듈이다.

→ 사용자 인터페이스: 사용자 인터페이스로서 사용자의 질의에 따라 응답을 보여 주는 부분이다. 이때의 인터페이스는 agent 에 의한 질의 응답 관계이므로 지능형 사용자 인터페이스라고 한다.

여기서 중요한 것은 각 agent 구축 방법과 agent 간의 통신 방법이다. 다른 다중 agent 에서는 agent 를 개 둠으로써 메모리와 데이터를 유지하는데 많은 오버헤드가 발생한다는 점이다. 따라서 이 책에서 소개하는  IKMAS는 기존의 다중 agent 에서 보다 훨씬 적은 메모리와 데이터로도 의사 결정이 가능한 지능형 시스템이라는 점이 특징이다. 이것은 추론시 학습 기법을 통해 추론을 하는 개선된 Max-Min CRI 방법을 이용하기 때문이다. IKMAS의 또 하나의 특징은 agent 들이 메인 agent 와 서브agent 들로 기능 및 역할이 세분화되어 있어 상호 협력함으로써 보다 목적 지향적이 된다는 점이다.

(2) agent 설계 알고리듬

① 지식기반 시스템의 설계

IKMAS의 지식 기반 시스템은 주어진 도메인에 대해 다음 두 단계에 따라 구축된다.

단계 1 지식 표현 단계

agent 가 현재 알고 있는 것이 무엇인지를 서술하는 단계로 링크 형태로 표현한다. 예를 들면, node X 와 node Y 가 연결되어 있음을 의미 표현 방법 (semantic representation) 에 의해 나타내면 그림 6.11 과 같다. 이 그림은 "node X 와 node Y 가 연결되어 있으며 링크에는 network component가 있다" 는 것을 의미한다.

그림 11. 의미 표현 방법

단계 2 논리적 표현 단계

지식을 하나의 문장으로 코드화하여 지식 기반 시스템에 저장하는 단계로 저장된 지식에 해당된다. 그림 6.11 의 표현을 하나의 문장으로 코드화하여 논리적 표현으로 규칙화하여 나타내면 다음과 같다.
             if network component ="what" then switch="how"
즉, network component 가 "what" 일 때 switch 는 "how" 하라는 규칙으로 작성할 수 있으며 이러한 형태를 저장된 지식으로서 저장할 수 있게 되는 것이다.

위의 두 단계에 따라 지식 기반 시스템에 도메인 지식이 저장된다. 이것을 함수 형태로 정의하면 다음과 같다. 이 형태에서  는 외부 환경에서 인지한 입력 사실이고 action 은 그에 따른 추론 결과를 의미한다.

function: IKMA () returns an
    static: KBS, a knowledge based system
                , a counter, initially 0, indicating time
    TELL (
KBS, Make-Percept-Sentence () )
    if each action in KBS then
        for each in the list of possible action do
        if ASK (
KBS, Make-Action-Query () ) then
            TELL (
KBS, Make-Action-Sentence () )
             ← +1
            return
        else ASK (KBS, INFERENCE () )
        return
        end

IKMAS 는 다른 agent 와 마찬가지로 를 입력으로 받고 을 반환한다. KBS 는 초기에 저장된 지식 (built-in knowledge) 를 담고 있으며 호출될 때마다 IKMAS 시스템은 다음 두 가지 일을 한다.

각 에 대해 IKMAS 는 최대 성능을 낼 수 있는 을 하도록 구성한다.

② 추론 방법

IKMAS 는 지식 기반 시스템의 저장된 지식에서 에 대해 을 수행할 때, 와 일치하는 저장된 지식이 없을 경우 개선된 Max-Min CRI 방법 (New Max-Min CRI: NCRI) 을 이용한다.

NCRI 방법을 간단히 설명하면 "IF A THEN B"와 같은 형태의 규칙에 대해 (이때 A, B 는 퍼지 또는 비퍼지 임) A' 와 A 의 유사도 (similarity measure) 를 측정하여 에 따라 B' 를 추론해 내는 방법이다. 이때 유사도 은 Takefuji 나 Turkson 의 방법보다 성능이 우수하다.

Turkson 의 유사도 SM 은 다음 식과 같다.

Takefuji의 유사도 는 다음 식과 같다.

A:규칙의 조건부, A': 입력사실

NCRI 방법에서의 유사도 는 [0, 1] 사이의 값을 가지며, 1에 가까울수록 유사성이 높고 0에 가까울수록 유사성이 없다는 특성을 갖는다. 번째 유사도 의 계산 방법은 다음 식과 같다. 이때 A, A' 는 각각 번째 규칙의 조건부와 입력 사실을 의미하는 퍼지 또는 비퍼지 이어야 한다.

은 규칙의 수)

위의 식에 의해 계산된 에 따라 KBS 에서 추론하기 위해 우선 번째 규칙의 인 는 다음 식으로 구할 수 있다.

이로부터 개의 규칙에 대해 모두 적용했을 경우 주어진 에 대한 최종 은 다음 식에 의해 산출된다.

에 대한 최종

은 규칙의 수)

여기서 와 은 퍼지 논리의 계산 원리에 따른다.

이로부터 IKMAS 시스템은 개의 저장된 지식 규칙에 대해 정확히 일치하는 규칙이 없더라도 퍼지 추론 방법에 의해 을 생성해 낼 수 있다.

유사도의 성능 분석을 위해 Takefuj, Turksen, NCRI 방법을 직류 계열 모터에 동일 문제 영역과 입력 사실에 대해 적용하면,그림 12 와 같은 결과를 얻을 수 있다.

 

그림 12. 추론 결과 비교

이 그림에서 Max-Min CRI 방법은 기존의 퍼지 추론 방법이며 Turksen, Takefuji 는 Max-Min CRI 방법에 각각 제안된 유사도를 적용한 추론 방법이다. NCRI 는 에 의한 퍼지 추론 방법을 나타낸다. 축의 오류영역 (error region (%) ) 은 입력 사실과 규칙의 조건부와의 관계에 따라 결론부가 생성되었을 때 나타날 수 있는 규칙의 결론부와의 오류 정도를 의미한다. 시뮬레이션 결과 NCRI 방법은 Max-Min CRI 방법보다 오류 영역을 약 94%, Turksen, Takefuji 방법보다는 각각 91%, 75% 감소한 결과를 보여 주어 매우 우수한 성능을 나타내고 있음을 알 수 있다.

(3) IKMAS의 응용

① 작업 관리 시스템

이 책에서 설명한 IKMAS 는 사용자의 질의에 대해 agent 가 스스로 찾아내어 응답할 수 있는 지능적인 시스템이기 때문에 주로 속도와 정확성이 요구되는 기업 내 여러 부서 시스템에 적용할 수 있다.

그림 13 은 이와 같은 작업 관리 시스템의 한 예이다.

그림 13. 작업 관리 시스템

이 시스템의 특징은 첫째, 지능형 추론 방법 (NCRI) 을 사용하고 있다는 것과 둘째, 각 agent 가 서로 기능이 분화되어 있으며 다중 통신이 가능하다는 것이다.

이 시스템의 수행 과정은 다음 순서에 따른다.

a. 사용자는 수행 과정은 다음 순서에 따른다.
b. 이때 메인 agent 인 결정 agent  (decision agent) 는 서브 agent 인 시스템 agent  (system agent) 와 DB agent (DB agent) , 여행 agent  (travel agent) 를 통해 사용자의 질의를 처리한 후 결과를 결정 agent 에게 반환한다.
c. 결정 agent 는 사용자 인터페이스를 통해 수행 결과를 디스플레이 함으로써 사용자의 질의에 응답한다.
d. 만약 이때의 응답이 사용자의 요구를 만족시키지 못할 경우 사용자는 다시 질의를 할 수 있다.

② IKMAS의 수행 알고리듬

IKMAS의 수행 과정을 agent 별로 설명하면 다음 함수 형태로 나타낼 수 있다.

→ 사용자
    function: user () returns and
    static: , a counter, initially 0, indicating time
     ← ASK (IKMAS, MAKE_ACTION_SENTENCE (, ) )
    return
→ Decision agent  (main agent)
    function: Decision-agent  () returns an
    static: , a counter, initially 0, indicating time
    DA, Decision agent ,
    T
i, Travel agent
    S
i, System agent
    act ← ASK (T
i, MAKE_ACTION_SENTENCE (, ) )
    act ← ASK (S
i, MAKE_ACTION_SENTENCE (, ) )
    act ← ASK (DA, CHOOSE_BEST_ACTION (act , act ) )
     ← UPDATE_ACTION (, act ) )
    TELL (DA, USER_INTERFACE () )
    return
→ Travel agent  (sub agent)
    function: Travel-agent  () returns an
    static: , a counter, initially 0, indicating time
    D
i, DB agent
    act ← ASK (D
i, MAKE_ACTION_SENTENCE (, ) )
    act ← ASK (S
i, MAKE_ACTION_SENTENCE (, ) )
    act ← ASK (DA, CHOOSE_BEST_ACTION (act , act ) )
     ← UPDATE_ACTION (, act ) )    
    TELL (DA, )
    return
→ DB agent  (sub agent)
    function: DB-agent  () returns an
    static: , a counter, initially 0, indicating time
    IA, Inference agent
     ← ASK (IA, MAKE_ACTION_SENTENCE (, ) )
    TELL (D
i, ACTION)
    return
→ System agent  (sub agent)
    function: System-agent  () returns an
    static: , a counter, initially 0, indicating time 
    ASK (resource-allocate, CALL_DB_agent  (, ) )
    act ← ASK (D
i, MAKE_ACTION_SENTENCE (, ) )
     ← UPDATE_ACTION (, act ) )
    TELL (DA, )
    return

이상의 알고리듬 수행 단계에 따른 실행 결과를 보면 표 2 와 같다.

① 사용자는 이 IKMA 시스템에 부서 내 출장 결재 정보를 요구한다.
② 결정 agent DA 는 여행 agent T
i 에게 요구 사항을 요구한다.
     (ask-one   : Sender DA : Receiver T
i
                    : content (ApprovalSchedule (123 official-trip 990304) ? Schedule)
                    : reply-with Schedule)
③ T
i 는 DB agent Di 에게 ID 123 에 해당하는 사람들을 찾아달라고 요구한다.
     (ask-one   : Sender T
i : Receiver Ti
                    : content (NameBuId 123 ? name)
                    : reply-with namebyid)

④ Di 는 Ti 에게 요청한 사람 이름을 전달한다. 이때 추론 과정을 거치는데, 추론 중 다른 agent 가 가진 정보나 지식이 필요하면 통신을 통해 다른 agent 로부터 구한다.
     (ask-one   : Sender D
i : Receiver Ti
                    : content (NameBuId 123 박진수)
                    : reply-to namebyid)  
⑤ T
i 는 DA 에게 최종 출장 결재 정보를 전달한다.
     (ask-one   : Sender T
i : Receiver DA
                    : content (ApprovalSchedule (123 official-trip 990301)
                       ( (실장 박종백 990301)  (부장 안종석 990301)
                        과장 심재승 990302)  (대리 최희경 990303) )
                    : in-reply-to Schedule)

표 1. IKMAS 시스템의 수행 결과

IKMAS를 작업 관리 시스템에 적용하면 사용자로부터 인지된 percept에 대해 명확한 action을 수행하는 것을 볼 수 있다.

추론 결과인 "ID 가 123인 연구원이 요청한 결재의 결재선은 실장 박종백, 부장 안종석, 과장 심재승, 대리 최희경이며 각각 3월 1일, 1일, 2일, 3일에 결재가 가능하다"라는 내용이 사용자에게 사용자 인터페이스를 통해 전달된다. 이 결과에 만족하지 못한 사용자는 또 다른 질의를 계속할 수 있다.

만약 표 1의 ④ 단계에서

     (ask-one   : Sender Di : Receiver Ti

                    : content (NameById 123 박진?)

                    : in-reply-to namebyid)

와 같이 질문하면 박진숙, 박진명 ... 등 "박진?" 이름을 가진 정보를 보여준다. 따라서 IKMAS 는 주어진 지식 기반 시스템에 일치하는 규칙의 존재여부에 상관없이 관련된 정보를 추론해 낼 수 있다.

7. 지능적인 agent 와 관련된 웹 사이트들

    ▶ 대학교
     (1) Software agent
         (
http://www.cs.umbc.edu/agent s/)
     (2) Intelligent software agent
         (
http://www.sics.se/isl/abc/survey.html)


    ▶ 정보 검색 agent
     (1) MetaCrawler  (
http://www.metacrawler.com)
     (2) Shopbot  (
http://www.cs.washingto.edu/research/shopbot/)
     (3) SAIRE  (
http://saire.ivv.nasa.gov)
     (4) Harvest  (
http://mordor.transarc.com)
     (5) WebAnts  (
http://polarbear.eng.lycos.com/webants)
     (6) WAIBA  (
http://www.osf.org/www/waiba)
     (7) IWAH  (
http://rbse.jsc.nasa.gov/agent s)
     (8) CIIR  (
http://ciir.cs.umass.edu/info/ciir.html)
     (9) Retsina  (
http://www.sics.se/isl/abc/survey.html)
     (10) DISA  (
http://www.tisl.ukans.edu/sgauch/agent s.html)


    ▶ 웹 문서 여과 agent
     (1) Webfilter  (
http://ils.unc.edu/webfilter)
     (2) Webcatcher  (
http://plum.tuc.noao.edu/webcatcher/webcatcher.html)
     (3) Point Subscription  (
http://www.pointcom.com)
     (4) Smart Marks  (
http://www.netscape.com/comprod/smartmarks.html)


    ▶ 상용뉴스 여과 검색 agent
     (1) Newshound  (
http://www.sjmercury.com/hound.html)
     (2) PointCast Network


    ▶ Usenet 여과 agent
     (1) NewsClip  (
http://www.clarinet.com/newsclip.html)
     (2) SIFT  (
http://sift.stanford.edu/)


    ▶ 온라인 전자 상거래 agent
     (1) BargainFinder  (
http://bf.cstar.ac.com/bf/)
     (2) Netbot Jango  (
http://www.jango.com)
     (3) Internet Shopping Netwopk  (
http://www.internet.net)
     (4) Market Plaza Shopping  (
http://bank.marketplaza.com)
     (5) 사이버 스토어  (
http://korea.directory.co.kr/shopping/cyber.html)
     (6) 가상서점  (
http://www.bookshop.co.kr)
     (7) 롯데쇼핑  (
http://internet.shopping.co.kr)  


    ▶ agent 패키지
    University of stanford에서 개발한 Java 기반의 패키지
    : JATLite  (
http://java.stanford.edu)