에이전트 (소프트웨어)
에이전트(agent)는 사용자의 개입 없이 주기적으로 정보를 모으거나 또는 일부 다른 서비스를 수행하는 프로그램이다. 인공지능에서는 지능형 에이전트라고 부른다.
개요
에이전트는 환경, 사용자 입력 및 경험에 따라 의사 결정을 하거나 서비스를 수행할 수 있는 프로그램이다. 이러한 프로그램은 사용자가 실시간으로 지시할 때 프로그램된 정규 일정의 정보를 자율적으로 수집하는 데 사용할 수 있다. 에이전트는 로봇의 줄임말인 봇이라고도 할 수 있다. 일반적으로 에이전트 프로그램은 사용자가 제공한 매개 변수를 사용하여 인터넷의 전체 또는 일부를 검색하고 사용자가 관심 있는 정보를 수집하여 주기적 또는 요청된 기준으로 사용자에게 제공한다. 데이터 인텔리전트 에이전트는 포함된 키워드나 게시 날짜와 같이 특정 가능한 정보를 추출할 수 있다. 인공지능(AI)을 채용한 에이전트에서는 마이크나 카메라 등 센서를 이용해 사용자 입력을 수집하고, 스피커나 화면 등 액츄에이터를 통해 에이전트 출력을 전달한다. 에이전트가 사용자에게 정보를 가져오는 관행을 푸시 기술이라고 한다. 에이전트의 공통적인 특징은 경험에 기초한 적응, 실시간 문제 해결, 오류나 성공률 분석, 메모리 기반 저장 및 검색의 이용이다. 기업의 경우 에이전트를 데이터 마이닝, 데이터 분석, 고객 서비스 및 지원(CSS) 분야의 애플리케이션에 사용할 수 있다. 소비자들은 또한 지능적인 에이전트를 사용하여 유사한 제품의 가격을 비교하고 웹사이트 업데이트가 발생했을 때 사용자에게 알릴 수 있다.[1] 인터넷 서핑, 온라인 쇼핑, 의학 진단, 어떤 물품의 수송을 주선하거나, 소행성대를 탐사하기 위한 우주 임무를 계획하든, 에이전트는 그 과정에서 핵심적인 역할을 한다. 또한 오늘날 분산 프로젝트 관리, 전자 상거래, 정보 검색, 의료 분야, 군사, 제조, 네트워킹, 계획 및 스케줄링, 나사(NASA) 미션 등 다양한 분야에 적용되고 있다.[2] 인텔리전트 에이전트는 자율 컴퓨터 프로그램인 소프트웨어 에이전트와도 비슷하다.
특징
성질
- 자율성(autonomy): 에이전트는 사람이나 다른 사물의 직접적인 간섭 없이 스스로 판단하여 동작하고, 그들의 행동이나 내부 상태에 대한 어떤 종류의 제어를 갖는다.
- 사회성(social ability): 에이전트는 에이전트 통신 언어를 사용하여 사람과 다른 에이전트들과 상호작용 할 수 있다.
반응성(reactivity) 에이전트는 실세계, 그래픽사용자 인터페이스를 경유한 사용자, 다른 에이전트들의 집합, 인터넷 같은 환경을 인지하고 그 안에서 일어나는 변화에 시간상 적절히 반응한다.
- 능동성(proactivity): 에이전트는 단순히 환경에 반응하여 행동하는 것이 아니라 주도권을 가지고 목표 지향적으로 행동한다.
- 시간 연속성(temporal continuity): 에이전트는 단순히 한번 주어진 입력을 처리하여 결과를 보여주고 종료하는 것이 아니라, 전면에서 실행하고 이면에서 잠시 휴식하는 연속적으로 수행하는 데몬(demon)같은 프로세스이다.
- 목표지향성(goal-orientedness): 에이전트는 복잡한 고수준 작업들을 수행한다. 작업이 더 작은 세부 작업으로 나뉘고 처리순서가 결정되어 처리되는 등의 책임을 에이전트가 진다.
- 이동성(mobility): 사용자가 요구한 작업을 현재의 컴퓨터에서 처리하지 않고 그 작업을 처리할 수 있는 다른 컴퓨터로 이동시켜 수행함으로써 효율을 높이고 네트워크 부하를 감소시킨다.
- 합리성(rationality): 에이전트가 목표를 달성하기 위해 행동하지 목표 달성을 방해하는 방향으로는 행동하지 않는다.
- 적응성(adaptability): 에이전트는 사용자의 습관과 작업 방식 그리고 취향에 따라 스스로를 적응시킬 수 있다.
- 협동성(collaboration): 에이전트는 다른 에이전트, 자원, 사람과도 복잡한 작업을 수행하기 위해 협력할 수 있다.[3]
유형
지능적 에이전트의 유형은 능력 범위와 지능 정도에 의해 정의된다.
- 단순 반사 에이전트: 단순 반사 에이전트는 나머지 지각 이력을 무시하고 현재의 지각에 근거하여만 행동한다. 지각 이력은 에이전트가 지금까지 인식한 모든 것의 역사이다. 에이전트 함수는 상태 동작 규칙에 기반한다. 조건-행동 규칙은 상태, 즉 조건을 행동에 매핑하는 규칙이다. 조건이 참이면 조치를 취하고 그렇지 않으면 조치를 취하지 않는다. 이 에이전트 기능은 환경을 완전히 관찰할 수 있을 때만 성공한다. 부분적으로 관측 가능한 환경에서 작동하는 단순한 반사 에이전트의 경우 무한 루프(infinite loop)는 피할 수 없는 경우가 많다. 에이전트가 자신의 행동을 임의로 할 수 있다면 무한 루프에서 탈출할 수 있을 것이다. 단순 반사 에이전트는 매우 한정된 지능과 국가의 비지각적인 부분에 대한 지식은 없다는 점, 환경에 변화가 생기면 규칙 모음을 업데이트한다는 단점이 있다.[4]
- 모델 기반 에이전트: 모델 기반 에이전트는 현재 상황과 조건이 일치하는 규칙을 찾아 작동한다. 또한 세계에 대한 모델을 사용하여 부분적으로 관측 가능한 환경을 처리할 수 있다. 에이전트는 각 지각에 의해 조정되고 지각 이력에 따라 달라지는 내부 상태를 추적해야 한다. 현재 상태는 볼 수 없는 세계의 부분을 설명하는 구조를 유지하는 에이전트 내부에 저장된다. 상태를 업데이트하려면 어떻게 세상이 에이전트로부터 종속적으로 진화하는지, 에이전트의 행동이 세상에 어떤 영향을 미치는지에 대한 정보가 필요하다.[4]
- 목표 기반 에이전트: 이러한 종류의 에이전트는 현재 목표로부터 얼마나 떨어져 있는가에 따라 결정을 내린다. 그들의 모든 행동은 목표와의 거리를 줄이기 위한 것이다. 이를 통해 에이전트는 목표 상태에 도달하는 것을 선택하여 여러 가지 가능성 중에서 선택할 수 있다. 그 결정을 뒷받침하는 지식은 명시적으로 표현되고 수정될 수 있으므로 이러한 에이전트는 더욱 유연해진다. 그들은 보통 검색과 계획을 요구한다. 목표 기반 에이전트의 행동은 쉽게 바뀔 수 있다.[4]
- 유틸리티 기반 에이전트: 이 에이전트는 목표 기반 에이전트와 유사하지만 각각의 가능한 시나리오에 원하는 결과를 평가하고 결과를 최대화하는 조치를 선택하는 추가적인 효용 측정을 제공한다. 빌딩 블록으로 최종 용도를 가지고 개발된 에이전트를 유틸리티 기반 에이전트라고 한다. 가능한 대안이 여러 개 있을 때, 어떤 대안이 최선인지 결정하기 위해 유틸리티 기반 에이전트가 사용된다. 그들은 각 주에 대한 선호도(유틸리티)에 근거한 행동을 선택한다. 때때로 원하는 목표를 달성하는 것만으로는 충분하지 않다. 대리인의 행복이 고려되어야 한다. 유틸리티는 에이전트가 얼마나 행복한지 설명한다. 세상의 불확실성 때문에 유틸리티 에이전트는 기대 효용을 극대화하는 행동을 선택한다. 효용 함수는 한 상태를 관련된 행복의 정도를 설명하는 실제 숫자에 매핑한다.[4] 평가 기준의 예는 성공 확률 또는 필요한 자원이 될 수 있다.
- 학습 에이전트: 이 에이전트는 추가 학습 요소를 통해 시간이 지남에 따라 환경을 점진적으로 개선하고 더 많은 지식을 습득할 수 있는 능력을 가지고 있다. 학습 요소는 피드백을 사용하여 성능 요소가 점진적으로 개선되도록 어떻게 변경되어야 하는지를 결정할 것이다.[1] 학습 에이전트는 주로 다음 네 가지 개념적 요소를 가진다.
- 학습요소: 환경으로부터 학습하여 개선을 도모하는 역할을 한다.
- 비평가: 학습 요소는 고정된 수행 표준에 대해 에이전트가 얼마나 잘 하고 있는지를 설명하는 비평가로부터 피드백을 받는다.
- 성능 요소: 외부 조치 선택 시 대응된다.
- 문제 발생기: 이 구성요소는 새롭고 유익한 경험을 이끌어 낼 수 있는 조치를 제안하는 책임을 진다.[4]
- 인터페이스 에이전트: 현존하는 많은 컴퓨터 프로그램과 인터페이스는 명백하게 인간의 재능과 흥미를 표현하지만 인간과 컴퓨터 사이에는 아직도 대화능력이 부족하다. 사용자 인터페이스 에이전트(user interface agent)는 사용자의 원하는 작업을 찾아내서 이들을 네트워크나 응용 프로그램안 어디에서든지 실행할 수 있도록 이동시켜 준다. 사용자 인터페이스는 응용 프로그램의 성공에 있어 매우 중요하다. 이것은 사용자 요구의 자연적 모호성을 명확하게 해석하여 모호하지 않은 문장을 즉시 프로세스로 보낼 수 있어야 한다. 인터페이스는 또한 결과를 사용자에 의해 요구되고 이해되는 형태로 변환할 수 있어야 한다.
- 데스크톱 에이전트: 데스크톱 에이전트(desktop agent)는 PC나 워크스테이션의 운영 체제에 상주하면서 국부적으로 실행되는 소프트웨어 에이전트이다. 데스크톱 에이전트는 운영 체제 에이전트, 응용 프로그램 에이전트, 응용 프로그램 환경 에이전트로 분류된다.
- 인터넷 에이전트: 인터넷 에이전트(internet agent)는 서버에 상주하면서 사용자와 직접적인 상호 작용없이 사용자를 대신해서 작업을 수행하도록 인터넷상에서 분산된 온라인 정보를 접근하는 컴퓨터 프로그램이다. 인터넷 에이전트는 정보제공자와 정보소비자 사이의 정보중개인으로 동작한다. 그런 정보 매개체로서 인터넷 에이전트는 사용자들의 정보 요구를 정보 공급자, 정보 형태, 정보 내용에 따라 중재해 준다.
- 전자상거래 에이전트: 현재의 상거래는 사람이 물건을 사고 파는 업무를 수행하는 거의 전적으로 사람에 의해 이루어지고 있다. 그러나 일부 상거래 과정을 살펴보면 상거래의 일부가 자동화되지 않을 이유가 없다. 상거래 과정의 일부는 에이전트가 대신하는 전자상거래 에이전트(electronic commerce agent)가 출현하고 있다.[3]
환경
에이전트는 환경에 의해 작동되므로 에이전트와 환경과의 관계를 알아야 한다. 다음은 5가지 서로 다른 환경의 특성을 간단히 설명한 것이다.
- 접근 가능과 접근 불가능한 환경: 만약 에이전트의 감각 기관에서 복잡하고 다양한 여러 환경 상태에 접근 가능하다면 이때의 환경을 에이전트에 대해 접근 가능(accessible)하다고 하고, 반대인 경우는 접근 불가능 (inaccessible)하다고 한다. 접근 가능한 환경은 에이전트의 감각 기관이 그의 행동 선택과 관련된 모든 측면을 감지할 수 있으므로 효과적이다. 또한 접근 가능한 환경은 에이전트가 외부 세계의 정보를 내부 상태로 유지할 필요가 없기 때문에 편리한 장점이 있다.
- 결정적과 비결정적 환경: 만약 다음 단계의 환경 상태가 현재 상태와 에이전트에 의해 선택된 행동에 의해 완전히 결정될 수 있다면 이때의 환경을 결정적(deterministic)이라고 하고 반대인 경우는 비결정적(nondeterministic)이라고 한다. 일반적으로 에이전트는 접근 가능과 결정적 환경에서는 불확실성(uncertainty)에 대해 걱정할 필요가 없다. 만약 환경에 접근 불가능하면 비결정적인 것처럼 보일 것이다. 특히, 환경이 복잡하고 접근 불가능한 모든 측면을 유지하기 어렵다면 더욱 그럴 것이다. 따라서 환경을 에이전트 관점에서 결정적이거나 비결정적으로 보는 것이 더욱 타당하리라 본다.
- 에피소드적과 비에피소드적 환경: 에피소드적(episodoc)환경에서는 에이전트의 경험은 에피소드(episode)로 나뉘어진다. 각 에피소드는 에이전트가 인지한 것과 그때의 행동으로 구성되어 있다. 각 행동의 질은 에이전트 자체의 에피소드에 전적으로 의존한다. 계속되는 서브 에피소드는 앞의 에피소드에서 일어났던 행동에 의존하지 않기 때문이다. 에피소드적 환경에서는 에이전트가 미리 생각하여 결정할 필요가 없기 때문에 매우 단순한 구조를 갖는다.
- 정적과 동적 환경: 에이전트가 수행되는 동안 환경이 변화할 수 있다면 이때의 환경을 동적(dynamic)이라 하고 반대인 경우는 정적(static)이라 한다. 정적 환경은 동적환경에 비해 훨씬 다루기가 쉬운데, 이유는 에이전트가 그의 행동을 결정하는 동안 외부 세계의 정보를 계속 조사 및 유지하지 않아도 될 뿐 아니라 시간의 경과에 대해서도 걱정하지 않아도 되기 때문이다. 만약 환경이 시간경과에 대해 에이전트의 성능 척도화 외에는 변화하지 않는다면 이때의 환경을 준동적(semidynamic)이라고 한다.
- 이산적과 연속적 환경: 명백히 정의된 인지와 행동들이 한정된 수만큼 있으면 이때의 환경을 이산적(descrete)이라 하고 반대인 경우는 연속적(continuous)이라고 한다. 체스 문제는 이산적인 경우의 한 예이다. 한 번에 이동할 수 있는 수가 제한되어 있기 때문이다. 택시 운전자 문제는 연속적인 경우의 예이다. 왜냐하면 택시와 다른 차들의 속도와 위치가 연속적인 값 범위 내에서 변화하기 때문이다.
지금까지 에이전트에 영향을 미치는 여러 환경들의 특성을 분류해 보았다. 이들 중 에이전트가 가장 다루기 힘든 환경은 접근 불가능하며 비에피소드적, 동적, 연속적 환경인 경우이라고 한다. 대부분의 실제 상태는 비록 동적인 환경으로 설정한다 해도 너무 복잡한 것이 사실이기 때문에 문제가 된다. 그러므로 실제로 구현시 비결정적으로 간주하기도 한다. 다음 표는 우리에게 친숙한 여러 다양한 환경에 관한 성질을 지금까지 분류한 특성에 따라 정리한 것이다. 이 그림에서 주의할 점은 동일한 환경이라도 어떻게 개념을 정의하느냐에 따라 달라진다는 점이다. 예를 들면, 포커 문제인 경우 에이전트가 카드 순서를 유지할 수 있으면 결정적이고 그럴 수 없으면 비결정적이다. 또한 많은 환경들이 에이전트 각 행동보다 좀더 높은 수준에서는 에피소드적이다. 예를 들면, 체스는 게임 서열로 구성되었는데 각 게임은 하나의 에피소드를 구성한다. 왜냐하면, 에이전트 전체 성능에 있어서 한 게임에서 이동하는 정도가 다음 게임에서 이동할 때에는 별로 영향을 미치지 않기 때문이다. 즉, 한 게임에서의 이동은 확실히 상호 관련이 있기 때문에 에이전트는 미리 몇 번의 움직임을 예측해야 한다는 것이다.
환경 종류 접근가능 결정적 에피소드적 정적 이산적 Chess with a clock yes yes no semi yes Chess without a clock yes yes no yes yes Poker no no no yes yes Backgammon yes no no yes yes Taxi driving no no no no no Medical diagnosis system no no no no no Image-analysis system yes yes yes semi no Part-picking robot no no yes no no Refinery controller no no no no no Interactive Engilish tutor no no no no yes
일반적으로 에이전트 프로그램은 에이전트와 환경과의 기본 관계를 나타낸다. 시뮬레이터는 입력으로서 하나 이상의 에이전트를 받아들여서 반복적으로 각 에이전트에 올바른 인지를 주어 올바른 행동을 나타낼 수 있도록 에이전트를 재배열하는 역할을 한다. 그리고 나서 시뮬레이터는 이 행동에 근거하여 환경을 수정한다. 그리고 나서 시뮬레이터는 이 행동에 근거하여 환경을 수정한다. 그러므로 환경은 내부 상태와 갱신 함수에 의해 정의된다고 볼 수 있다. 물론 한 시뮬레이터에서 작용하는 에이전트 가 같은 인지와 동작을 제공하는 실제 환경에서도 작용해야 함을 기본 전제로 한다. 다음은 기본적인 환경 시뮬레이터 프로그램과 환경 평가 함수를 나타낸 것이다.
procrdure RUN-ENVIRONMENT (state, UPDATE-FN, agent s, termination) inputs: state, the initial state of the environment UPDATE-FN, function to modify the emvironment agent s, a set of agent s temination, a predicate to test when we are done repeat for each agent in agent s do PERCEPT[agent ] ← GET-PERCEPT (agent , state) end for each agent in agent s do ACTION[agent ] ← PROGRAM[agent ] (PERCEPT[agent ]) end state ← UPDATE-FN (actions, agent s, state) until termination (state) function RUN-EVAL-ENVIRONMENT (state, UPDATE-FN, agent s, termination, PERFORMANCE-FN) returns scores local variable: scores, a vector the same size as agent s, all 0 repeat for each agent in agent s do PERCEPT[agent ] ← GET-PERCEPT (agent , state) end for each agent in agent s do ACTION[agent ] ← PROGRAM[agent ] (PERCEPT[agent ]) end state ← UPDATE-FN (actions, agent s, state) scores ← PERFORMANCE-FN (action, agent s, state) until termination (state) return scores
RUN-ENVIRONMENT 프로시저는 정확하게 한 환경 내에서 에이전트를 훈련시킨다. 자연어 처리와 같은 종류의 에이전트들에 대해 이들 행동은 관찰하기가 쉽다. 에이전트 성능에 관한 좀더 많은 언어 처리 정보를 얻기 위해 성능 평가 코드를 삽입했는데, 이것이 RUN-EVAL-ENVIRONMENT 함수이다. 이 함수는 각 에이전트에 성능 평가를 하여 해당 점수를 리턴하는 함수이다. 이때의 점수 변수(score)는 각 에이전트의 점수를 유지하는 변수이다. 일반적으로 성능 평가는 프로그램 동작 도중 생성된 환경 상태의 전체서열에 의존할 수 있다. 보통 성능 평가는 합, 평균, 혹은 최대값 구하기 등의 함수를 이용하여 간단히 측정할 수 있다. 예를 들면, 진공청소 에이전트의 경우 한 번에 청소한 먼지의 양을 측정하여 점수 변수에 지급까지 청소한 총 먼지량을 유지하도록 할 수 있다. RUN-EVAL-ENVIRONMENT 는 단일 내부 상태와 특정 갱신 함수로 정의된 단일 환경에 대해 성능 평가를 하여 리턴하는 함수이다. 보통 에이전트는 환경 클래스, 즉 서로 다른 환경 집합에서 동작하도록 설계한다. 예를 들면, 체스 프로그램은 서로 다른 사람들과 기계들에 대해 작동하도록 설계할 수 있다. 만약 단일 적수 프로그램으로 설계한다면 이 상대편 적수의 특별한 약점을 이용하여 이길 수도 있을 것이나 이것은 좋은 프로그램이라 볼 수 없다. 엄밀히 말하면 한 에이전트의 성능 평가를 위해서는 에이전트를 수행시킬 특정 환경을 선택하는 환경 생성기(environment generator)가 필요하다. 여기서는 환경 클래스 내에서 에이전트의 평균 성능에 주목해야 한다.
각주
- ↑ 1.0 1.1 Margaret Rouse, 〈intelligent agent)〉, 《TechTarget》
- ↑ Frederick Mills, Robert Stufflebeam, 〈Introduction to Intelligent Agents〉, 《CCSI》
- ↑ 3.0 3.1 지능형 에이전트 위키백과 - https://ko.wikipedia.org/wiki/%EC%A7%80%EB%8A%A5%ED%98%95_%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8
- ↑ 4.0 4.1 4.2 4.3 4.4 Sahil_Bansall, 〈Agents in Artificial Intelligence〉, 《geeksforgeeks》, 2019-06-08
참고자료
- Margaret Rouse, 〈intelligent agent)〉, 《TechTarget》
- Frederick Mills, Robert Stufflebeam, 〈Introduction to Intelligent Agents〉, 《CCSI》
- 지능형 에이전트 위키백과 - https://ko.wikipedia.org/wiki/%EC%A7%80%EB%8A%A5%ED%98%95_%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8
같이 보기
이 에이전트 (소프트웨어) 문서는 인공지능 기술에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.