Gurugail Agent/Home Page
Agent

Home Page

에이전트(agent)는 인공지능 분야에서 고전적인 연구이며, 인공지능의 또 다른 이름처럼 느껴지기도 한다. 에이전트는 말 그대로 대리인 이며 대리를 하려면 인공지능이 필요한 것이다. 다만 에이전트는 인공지능보다 더 소프트웨어적인 개념으로 좀 더 가깝고 , 기존의 소프트웨어보다는 보다 더 주어진 목적을 자발적으로 수행하기 위한 수준에서 모델링되었다는 데 의미가 있다.

개요

에이전트는 환경에 반응하고 적응하면서 주어진 작업(task)을 자율적으로 수행하는 소프트웨어 프로그램이라고 정의된다. 에이전트를 한 단어로 표현하면 자발적인(autonomous) 이라는 단어가 가장 적합할 것이다. [1] 더 넓게는 사용자를 대신하여 어떤 작업을 대신할 수 있는 모든 대상 사람, 로봇, 프로그램 등을 에이전트라 말하기도 한다. 인공지능 분야에서는 소프트웨어적 프로그램을 주로 대상한다.

그림. 에이전트 개념

필요성

예전에 Personal Platform 이라는 분산 에이전트 관련 프로젝트를 한 바 있다. 모바일에서의 개인화를 위해 서버형 플랫폼을 구축하는 프로젝트이었으며 그 서버형 플랫폼이 멀티 에이전트(multi agent) 형태로 모델링되었다. 그러나 왜 구지 에이전트를 써야 하는가? 기존 소프트웨어 모듈하고의 차이점은 무엇인가에 대하여 항상 논란의 여지가 있었다. 에이전트를 사용하는 이유는 주어진 작업에 대한 처리를 자율적으로 처리함에, 전체 작업에 대한 복잡도를 떨어뜨리기 위함이라고 대답하곤 하였다. 전체 기능을 지능적인 개인화 플랫폼을 구현하는 데 있어, 소프트웨어 모듈로만 처리하면 소프트웨어모듈간 연동이 복잡하게 되어 유지보수 관리가 힘들것이라는 논리를 피곤한 것이다. 복잡한 플랫폼이라면 에이전트기반의 자발적인 소프트웨어 모듈인 에이전트 기반 설계를 고려할 만 하다.

에이전트의 구성 모듈

에이전트를 모델링 할 때, 간단하게는 환경을 인식하는 센서 기능(sensing), 판단하는 기능(deliberating), 그리고 외부 환경에 대한 반응 기능(action)으로 구성된다. 또는 아래와 같이 기억, 동기 구성 등이 더 추가되기도 한다.

  • 센서 (인식기) : 환경이나 다른 에이전트의 정보를 받아들이는 기능
  • 행동 (반응기) : 에이전트가 내, 외부 환경에 반응할 수 있는 행동 구성을 위한 기능. 사람으로 비유하면 걷기, 말하기, 집기, 가기, 보기 등 여러 가지 행동들이 구성될 수 있음.
  • 기억 : 보통 기억은 단기 기억(short term memory)과 장기 기억(long term memory), 절차적 기능(procedural memory) 등으로 구성된다. (단기와 장기 기억에 대한 참고)
  • 동기 (motivation) : 동기는 에이전트가 행동하게 하는 원천 요소로는 크게 센서 반응에 대한 행동과 내부 요인의 동기에 의한 행동으로 구성될 수 있음. 동기 모듈은 에이전트가 학습하고 어떤 목적을 성취하는 핵심적인 역할을 함

에이전트의 특성

  • 자율성 (autonomy) : 기존 소프트웨어와 가장 큰 차이를 가지는 것으로 일련의 작업에 대하여 스스로 환경과 반응하여 처리한다.
  • 학습/추론 (learning/reasoning) : 자율성을 제공하는 원천 능력으로 기본적으로 주어진 환경의 변화를 감지하고 그 정보를 수집하여 목표를 수행하는 데 학습(learning)과 추론(reasoning)을 사용한다. 학습 및 추론 기능을 가진 에이전트를 별도로 지능형 에이전트라고 해서 기존 에이전트와 분리하기도 하다.
  • 반응 (action/behavior) : 주어진 환경에 대하여 반응한다. 소프트웨어와 같이 외부 함수 콜 형태의 움직임이 아닌 스스로의 반응을 한다. 자율성과 유사한 특성이라 할 수 있다.
  • 협업 (cooperation) : 에이전트에서 어쩌면 가장 중요한 기능이기도 한다. 주어진 작업을 수행하기 위해서 혼자만의 능력이 아닌, 외부 에이전트간 통신으로 협업을 진행한다. 이러한 특성을 반영하기 위해 ACL(agent communication language)이라는 에이전트간 통신 언어도 있다.

분류

에이전트는 아래와 같이 몇 가지 분류가 된다.

1. 단순 반응형 (reactivity)

  • condition-action rule을 내부에 가지고 있으며, 환경으로부터 받는 정보로부터 정해진 rule에 따라 반응하는 에이전트이다. 또한 내부 기억이나 상태 정보를 가지고 있지 않으므로, 이전의 perception은 현재 행동에 영향을 미치지 않는다.
  • 예를 들면, 먹을 것이 있으면 단순하게 먹는 사람이다. 배가 고픈지 안 고픈지, 얼마 전에 먹은 것을 기억 못하고 또 먹는 사람, 주변에 이런 사람도 있을 법하다. 그는 바로 단순 반응형이다.(^^;)

2. goal-based 에이전트 (pro-activeness)

  • 단순 반응 외 에이전트 자체적으로 내부 상태를 가지고 있고, 목적(goal)이라는 정보를 가지고 있으며, 그 목적을 이루기 위해 행동의 일렬을 찾고 계획한다. 가령 배고픔이라는 내부 상태를 가지고 있고, 배고픔 상태를 없애기 위한 목적을 가지고 행동하는 에이전트의 유형이다.
  • 컴퓨터 게임 속에 등장하는 몬스터(monster)가 goal-based agents와 비슷한 개념으로 적용될 수 있다. 적을 없애기 위해 ‘적으로 접근하기’, ‘적 공격하기’, ‘무기 찾기’ 등 목적(goal)들을 구성하며, 그러한 목적을 해결하기 위해 여러 가지 행동( ex. move, attack… )의 일렬(action sequence)을 찾고 계획한다. 바로 goal-based agents라 할 수 있다.

3. utility-based agents

  • utility-based agents는 목적(goal)을 해결하는 여러 방법이 있거나, 혹은 여러 목적이 있을 경우, 효율성(performance measure)에 입각하여 행동의 일렬(sequence action)을 구성한다. 같은 목적을 이루기 위해 다른 행동의 과정이 있다면 그것들 간의 상호 유용성(utility)을 비교함으로써 좀 더 효율적으로 목적에 도달할 수 있도록 구성된다.
  • 예를 들면, 적으로 회피를 하는 몬스터가 있다고 하자. 적을 회피하는 방법은 적으로부터 멀어지는 방향으로 뛰어가기, 혹은 다른 동료들한테로 회피하기 등 방법이 있을 수 있는데, utility-based agents는 그 목적을 달성하기 위한 여러 가지 방법의 유용성(utility)을 비교한다.