레플리
글 수 57

블랙 앤 화이트의 인공지능

조회 수 970 추천 수 0 2016.03.24 03:44:42


 

- Richard Evans(Black&White AI Programmer)
http://www.gameai.com/blackandwhite.html
번역 : 우종하(deepseas_AT_sogang.ac.kr)
2004/04/12

 

 

 

우선 블랙 앤 화이트에서의 크리쳐들(creatures)을 살펴보는 것부터 시작하고, 그 다음 앞으로 몇 년동안 컴퓨터 게임에서 기대할 수 있는 흥미있는 에이전트들에 어떤 것들이 있나 생각해보도록 하겠다.

 

블랙 앤 화이트에서의 크리쳐들은 두 가지 매우 다른 요구사항들을 만족해야만 했다.

  1. 유저가 사람과 상대하고 있다고 느끼도록 한다. 크리쳐들은 그럴 듯하고(plausible), 적응성이 있고(malleable), 사랑스러워야(loveable) 한다.
  2. 크리쳐들은 여러 퀘스트들과 목표에 있어 플레이어에게 도움이 되어야 한다. 블랙 앤 화이트에서의 크리쳐들은 단지 실험을 위한 장난감이 아나라, 캠페인에서 매우 중요한 조력자로 훈련될 수 있어야 한다.

내가 알기론, 위의 두가지 특징들의 조합은 이전에 시도된 적이 없었다. 그럴 듯한 에이전트들과 상대하고 있다고 느낄 수 있는 몇몇 소프트웨어(Creatures, The Sims)가 있고 매우 훌륭한 것이긴 하지만, 게임이라기 보단 모래놀이통(sand-boxes)과 더 비슷하다. 이들 게임들은 목표가 없는 시뮬레이션이며, 퀘스트들을 수행하면서가 아니라 에이전트들을 사용한 실험으로부터 즐거움을 얻는다. 플레이어에게 퀘스트를 수행하는데 도움이 되는 조력자가 주어지는 게임들(Daikatana)도 있지만, 이러한 게임에서의 조력자는 단지 상태 기계(state machine)이며 특정한 작업을 위해 코딩되었을 뿐이다.

 

 

Daikatana

Creatures

Black & White

사람같은 에이전트인가?

아니오

쓸모있고, 도움이 되는 에이전트인가?

아니오

 

언뜻 보아서는, 이들 요구사항 사이에 어떤 종류의 대립되는 점이 있는 것 같이 보인다. 사람같은 에이전트라는 요구는 크리쳐가 자율적이어야 하는 반면에, 쓸모있어야 한다는 요구사항은 너무 많은 자율성을 갖는 것을 방해하는 듯하다. 뒤에 이러한 대립이 어떻게 해결되는지 살펴볼 것이다. 그러나 먼저 사람과 같은 크리쳐를 만드는 첫 번째 요구사항에 대해서 알아보자.

 

 

 

1. 사람과 같이 만듦 : 에이전트의 구조

 

플레이어가 크리쳐를 사람처럼 보기 위해서, 크리쳐는 다음과 같아야 한다.

  • 정신적으로 그럴 듯해야 한다.
  • 적응성이 있어야 한다.
  • 사랑스러워야 한다.

 

1.1 정신적으로 그럴 듯한 에이전트

 

정신적으로 그럴 듯한 에이전트를 만들기 위해서, 우리는 에이전트 프로그래밍 커뮤너티에서 표준이 되어가고 있는 믿음-욕구-의도(Belief-Desire-Intention) 구조를 채택했다. 기본적인 방법은 아키텍쳐에서 사용되는 획일적인 구조를 피하고, 대신 다양한 종류의 표현을 사용하여 각기 다른 작업에 있어 가장 알맞은 표현을 선택할 수 있도록 하는 것이다.

 

그래서 개별적인 사물에 대한 믿음은 속성-값(attribute-value) 쌍의 기호적으로 표현되고, 사물들의 종류에 대한 믿음은 결정 트리(decision-tree)로 표현된다. 그리고 욕구는 퍼셉트론(perceptron)(역주 : 신경망의 한 방법)으로 표현된다. 이러한 표현의 구분은, 믿음은 기호적인 구조인 반면 욕구는 좀 더 퍼지하다는 매력적인 점이 있다.

 

그럴 듯한 에이전트를 만들기 위해서는, 왜 에이전트가 특정한 정신적인 상태에 있는지 이유가 있어야 한다. 만약 에이전트가 어떤 사물에 대한 믿음을 가지고 있다면, 그러한 믿음은 그 사물을 에이전트가 인지함으로써 가질 수 있어야 한다. 블랙 앤 화이트에서의 크리쳐들은 자신의 믿음을 구성하는데 속임수를 쓰지 않는다. 그들의 믿음은 사물들의 인식을 통해 얻어지고, 크리쳐들은 자신의 감각으로 얻지 못한 정보들에 대해 접근할 수가 없다. 이것을 인식의 진실(Epistemic Verisimilitude)라고 부른다.

 

더 나아가, 만약 크리쳐가 어떤 것을 원한다면 왜 그것을 원하는지 이유가 있어야 한다. (예를 들어, 크리쳐가 화가 났다면 플레이어가 파괴적인 것을 보고 그것을 따라해서라던지, 아니면 상처를 입어서라던지 하는 원인이 있어야 한다.) 각각의 욕구는 많은 다른 욕구의 원인들이 있고, 이들이 현재 욕구의 강도에 영향을 준다.

 

 

 

1.2 적응성이 있는 에이전트

 

우리는 크리쳐들이 많은 여러 가지 방법으로 적응적이기를 원했다. 그들은 많은 다른 종류의 것들을 배울 수 있고, 이러한 학습이 가능한 여러 가지 많은 상황이 있기를 바랬다.

 

"학습"은 많은 매우 다른 기술들을 다룬다.

  • 그것을 배운다.(예 : 근처에 음식이 많은 도시가 있다는 것을 배움)
  • 어떻게 하는지를 배운다.(예 : 물건을 던지는 것을 배우며 시간에 따라 기술이 향상됨)
  • 다른 욕구들에 멀마나 민감해야 하는지 배운다.(예 : 배고픔을 느끼기 시작하기 전에 얼마만큼 에너지가 떨어져야 하는지 배움)
  • 어떤 종류의 사물이 좋은지, 어떤 종류의 사물을 먹을 수 있는지 배운다. (예 : 마법을 할 수 있는 큰 크리쳐가 되는 것이 좋다는 것을 배움)
  • 어떤 상황에서 어떤 방법을 적용해야 하는지를 배운다.(예 : 누군가를 공격할 때, 마법을 사용할 지 또는 보다 직접적인 공격을 해야하는지 배움)

이러한 여러가지 다른 종류의 학습이 가능하도록 에이전트의 구조가 디자인되어야 한다.

학습은 많은 서로 다른 방법으로 이루어질 수 있어야 한다.

  • 플레이어의 피드백으로부터. 크리쳐를 쓰다듬거나 때림으로써
  • 명령을 받음으로부터. 크리쳐가 어떤 도시를 공격하라고 명령을 받았다면, 그러한 종류의 도시는 공격해야 한다는 것을 배움
  • 크리쳐의 관찰로부터. 플레이어나 다른 크리쳐, 마을사람을 관찰함으로써 배움
  • 크리쳐의 경험의 결과로부터. 어떤 동기를 만족하기 위해 행동을 수행했을 때, 얼마큼 그 동기가 만족되었는지 보고 그러한 상황에서 그 행동을 취했을 때 얼마나 현명한지에 대한 가중치를 조정

이러한 여러 가지 다른 종류의 방법으로 학습이 이루어지도록 에이전트의 구조가 디자인되어야 한다.

 

위에서 기술한 여러 가지 종류의 학습과 그러한 학습이 수행되는 여러 종류의 상황이 하나로 이루어져야 한다. 여러 종류의 학습중에서 한 가지 경우에 대해서만 자세히 살펴보도록 하겠다. 다양한 각기 다른 욕구들에 있어, 가장 적합한 종류의 사물이 어떤 것인지 학습하는 방법에 대해 알아보자.

 

1.2.1 판단을 학습: 동적으로 결정 트리(Decision-Tree)를 생성

 

크리쳐는 먹기에 좋은 사물이 무엇인지 어떻게 배울 수 있을까? 크리쳐는 여러 가지 종류의 것들을 먹어본 경험으로부터 그것들이 얼마나 맛있는지 피드백을 받은 다음, 결정 트리를 생성함으로써 모든 데이터를 이해하려고 시도한다. 다음과 같은 경험을 했다고 가정해보자.

 

크리쳐가 먹은 것

피드백 "그것이 얼마나 맛있는가?"

A big rock

-1.0

A small rock

-0.5

A small rock

-0.4

A tree

-0.2

A cow

+0.6

 

크리쳐는 위의 데이터를 설명하기 위해 다음과 같은 간단한 트리를 생성할 것이다.(역주 : 아쉽게도 Steven Woodcock이 저자로부터 이 글을 받을 때 그림파일들을 모두 잃어 버렸다고 합니다. ㅡㅡ;)

결정 트리는 각 속성에서 비슷한 피드백 값들이 그룹으로 묶일 수 있도록 가장 잘 나누어지도록 생성된다. 최적의 결정 트리는 피드백들이 얼마나 무질서한지에 대한 척도인 엔트로피(entropy)가 최소화된 것이다.

 

단순한 예를 들어보자. 만약 크리쳐가 적 도시를 공격한 후에 다음과 같은 피드백을 받았다고 한다면,

 

크리쳐가 공격한 것

플레이어로부터의 피드백

Friendly town, weak defence, tribe Celtic

-1.0

Enemy town, weak defence, tribe Celtic

+0.4

Friendly town, strong defence, tribe Norse

-1.0

Enemy town, strong defence, tribe Norse

-0.2

Friendly town, medium defence, tribe Greek

-1.0

Enemy town, medium defence, tribe Greek

+0.2

Enemy town, strong defence, tribe Greek

-0.4

Enemy town, medium defence, tribe Aztec

0.0

Friendly town, weak defence, tribe Aztec

-1.0

 

크리쳐는 분노에 대한 결정 트리를 다음과 같이 생성할 것이다.(역주 : 이 그림 역시 찾을 수 없네요..)

이 알고리즘은 Quinlan의 ID3 시스템을 기반으로 하여 엔트로피를 최소로 하는 결정 트리를 동적으로 생성한다.(역주 : ID3는 Quinlan이라는 사람이 만든 대표적인 결정 트리 학습 방법 중 하나입니다.)

 

(역주 : 결정 트리란 어떤 결정을 내리는데 필요한 규칙을 트리 구조로 표현한 것을 말합니다

 

figure2.jpg

 

위의 결정 트리는 테니스를 칠 것인지 결정을 내리기 위한 규칙을 트리로 표현한 예입니다. Outlook, Humidity, Wind는 속성(attribute)이고 Sunny, Overcast, Rain은 Outlook 속성에 속하는 값(value)입니다. 나머지 속성들과 각각에 속하는 값들이 있고 Yes, No는 테니스를 칠 것인지에 대한 결정을 나타냅니다. 예를 들어, 날씨가 맑고 습도가 보통이면 테니스를 친다는 결정을 내릴 수 있습니다 .

 

결정 트리 학습이란 어떠한 결정에 대한 데이터 집합으로부터 자동으로 결정 트리를 생성하는 학습 방법을 말합니다.

 

figure1.jpg

 

테니스를 치던 경험으로부터 위와 같은 데이터를 얻었다고 하면, 이 데이터 집합을 사용하여 결정 트리 학습을 수행한 후 위의 그림과 같은 결정 트리를 얻을 수 있습니다. 결정 트리를 생성하는 방법은 각 속성마다 엔트로피를 최소로 하는 값을 결정함으로서 반복적으로 트리를 생성하게 됩니다.

 

예를 들어 Outlook이 overcast일 경우에는 모두 Yes이므로 엔트로피가 0입니다. Outlook이 sunny, rain일 때도 엔트로피를 계산하고 전체 Outlook의 엔트로피를 구함니다. 마찬가지 방법으로 다른 속성들의 엔트로피를 구해 가장 엔트로피가 낮은, 다시 말해 가장 잘 Yes, No를 한번에 구분하기 쉬운 속성을 트리의 위쪽에 위치합니다. 이런 방법을 반복적으로 계속하여 적당한 정도까지 트리를 생성합니다. 위의 결정 트리에선 Temp. 속성은 엔트로피가 높기 때문에 결정 트리를 생성하는데 제외되었습니다.

 

블랙 앤 화이트에서는 결정 트리를 생성하기 위한 데이터를 피드백을 받음으로써 계속적으로 축척하고 이를 사용하여 동적으로 결정 트리를 생성한 것 같습니다. 그런데 최종 결정이 수치로 되어있는데 이를 어떤식으로 표현했는지 모르겠네요. 그림이 있었다면 알 수 있었을텐데 정말 아쉽습니다. ㅠ_ㅠ

 

그리고 아마도 각 학습할 수 있는 상황마다 속성과 값들을 정해놓고 각각 다른 결정 트리를 생성하지 않았을까 합니다. 모든 행동을 결정하기 위해 하나의 트리만을 사용한다면, 필요한 속성과 값들이 엄청하게 많아 적절한 트리를 학습하기 불가능할 것 같습니다. 그렇지만 각각의 상황을 어떻게 조합하여 전체 크리쳐의 구조를 이루고 행동을 구현했는지 제 능력으론 감을 잡을 수가 없네요...)

 

 

 

1.3 사랑스러운 에이전트

 

우리는 플레이어가 자신의 크리쳐에게 어떤 종류의 감정적인 애착을 느끼도록 원했다. 그리고 곧 감정적인 애착은 본질적으로 상호적이라는 것을 깨달았다. TV 리모콘에 애착을 느끼지 못하는 이유는 그것이 상호적이지 않기 때문이다. 결론적으로 만약 플레이어가 자신의 크리쳐에 애착을 가지려면, 먼저 크리쳐가 플레이어에게 감정적으로 애착을 가지고 있어야한다.

 

컴퓨터 게임에서의 에이전트는 엄격하게 말하면 자폐적인 사람이다. 세계에 있는 사물의 행동을 인식하고 예측할 수 있는 능력은 있지만, 다른 사람을 사람으로서 볼 수 있는 능력은 없다. 다시말해 다른 에이전트의 정신에 대한 모델을 만들어 그들의 행동을 예측할 수 있는 능력은 볼 수 없었다.

 

블랙 앤 화이트에서는, 크리쳐의 정신은  플레이어의 정신에 대한 단순화된 모델을 포함하고 있다. 크리쳐는 플레이어가 하는 행동을 보고, 플레이어가 이들 행동으로 하려는 목적이 무엇인지 이해하려고 한다. 또한 플레이어에 대한 단순한 성격 모델을 저장해놓고 이를 자신의 결정을 내리는데 사용한다. 플레이어가 좋아하는 것에 대한 모델 뿐만 아니라 자신의 주인에 대해서 직접적으로 관련된 목적들을 가지고 있다. 자신의 주인을 도와주려는 욕구, 함께 놀고 싶은 욕구, 관심을 끌고 싶은 욕구들이 그것이다.

 

만약 에이전트가 다른 사람에대한 정신적인 모델을 생성하고 그것을 잘 사용하기를 원한다면, 제일 먼저 해야될 일은 크리쳐의 정신적인 상태로부터 현재 상태에 대한 설명을 읽어낼 수 있도록 충분히 명확하게 크리쳐의 구조를 만들어야 한다. 만약 구조가 기호적인 자료구조 기반이라면 정신적인 상태에 대한 기술을 읽어내기에 쉽지만, 단지 수치적인 연결을 가지고 있는 네트워크라면 명확한 정신적인 기술을 끌어내는 게 어려울 것이다.

 

그래서 크리쳐가 다른 크리쳐의 정신을 모델링 할 수 있는 능력을 부여하기 위해 기호적인 자료구조 기반으로 아키텍쳐를 디자인 해야만 한다. 그러나 비기호적인 학습을 무시한 것은 아니다. 크리쳐는 욕구 허용범위(tolerance)를 조정하기 위한 임계값(threshold) 함수나 잡음의 양을 측정하기 위한 엔트로피 함수들을 사용한다. 하지만 이러한 소프트 퍼지 함수들은 기호적인 아키텍쳐 내에서 수용된다.

 

 

 

2. 에이전트를 유용하게 만듦

 

블랙 앤 화이트에서의 크리쳐는 사람과 같아야 했지만 또한 쓸모가 있어야 했다. 사람과 같아야 한다는 요구사항은 크리쳐가 자율적이어야 한다는 것을 의미하는 반면에, 도움이 되어야 한다는 요구사항은 너무 많은 자율성을 막는 듯 하다. 어떻게 이러한 요구사항의 대립을 해결할 수 있을까?

 

우리가 도달한 결론은, 크리쳐가 처음에는 완전히 자율적으로 시작을 하지만 시간이 지나면서 학습을 통해 플레이어가 원하는 것만을 하도록 만드는 것이었다. 이것은 플레이어가 자신의 크리쳐를 실제 게임에 도움이 되도록 훈련시키는 엄청난 만족감을 느끼도록 해준다! 이러한 방법의 단점은 크리쳐를 훈련하면 할수록 자신만의 매력을 잃어 버린다는 것이다. 크리쳐는 몇가지 종류의 사물에 대해, 몇가지 상황에서, 몇가지 목적들에만 집중을 하게 될 것이다. 크리쳐가 더 쓸모있어 질수록 더 "로봇처럼' 되어간다.

 

 

 

3. 앞으로의 방향

 

3.1 인간과 같은 에이전트

 

좀 더 실제같은 에이전트를 만들기 위해 무엇을 할 수 있는가?

  • 무한한 개수의 목적들. 블랙 앤 화이트에서의 크리쳐는 유한 개의 목적들을 가지고 있다. 이에 반해 사람은 가질 수 있는 목적의 개수에 한계가 없다. 사람은 소설을 쓸 수도 있고, 탐정소설을 쓸 수도 있고, 여자가 탐정인 탐정소설을 쓸 수도 있고, 탐정이 노인이며 심술궂은 탐정소설을 쓸 수도 있고, 그 종류는 무한하다. 욕구는 인간의 언어처럼 같은 조합적인 구조를 가지고 있고, 명시적으로 저장될 필요가 있다.
     
  • 목적을 만족시키기 위한 무한한 개수의 방법들 : 실시간 계획. 블랙 앤 화이트에서의 크리쳐는 무엇을 할지 결정하기 위한 계획-라이브러리를 사용한다. 크리쳐는 (원한다면 태어날 때부터) 특정한 목적을 만족하기 위해 이미 k개의 방법들이 있다는 것을 알고 있다. 목적을 수행하기 위해서는 단지 k개의 방법들 중에서 현재 상황에 가장 알맞은 것을 선택하면 된다. 이에 반해 사람은 때때로 실시간 계획을 사용하는데, 여러 가지 선택들을 시도하고 이들 행동의 결과를 고려하여 목적을 만족하는 새로운 방법을 만들어 낸다. 이것은 계산시간이 많이 소요되겠지만 에이전트에게 현재는 없는 자유도와 융통성을 부여할 것이다.

 

 

3.2 감정이입적인 에이전트

 

좀 더 그럴 듯한 에이전트를 만들기 위해서는 에이전트의 정신모델을 향상시켜야 한다. 좀 더 감정이입적인 에이전트를 만들기 위해서는 에이전트가 다른 에이전트를 모델링할 수 있는 능력을 향상시켜야 한다. (이들 두가지는 완전히 구분된다. 후자가 전자보다 좀 더 간단할 것이다. 그렇지만 공간적인 효율의 문제에 있어서는, 에이전트가 다른 많은 에이전트들의 모델을 가지고 있어야하기 때문에 이러한 모델은 간단해야 한다.) 블랙 앤 화이트에서의 크리쳐는 다른 에이전트의 정신에 대해 간단한 모델을 가지고 있어, 단순히 에이전트 아키텍쳐의 욕구 부분만을 모델링한다. 여기에 좀 더 다른 것들을 추가하면 좋아질 수 있을까?

 

문제는, 에이전트의 다른 에이전트에 대한 모델을 향상시킬수록 다른 에이전트가 생각하고 있는 것을 파악하기가 힘들다는 것이다. 예를 들어, 다른 에이전트의 욕구뿐만이 아니라 믿음에 대한 정보도 포함된다고 가정해 보자 .그러면 다른 에이전트를 이해하는 작업이 훨씬 힘들어질 것이다. 왜냐하면 그 데이터에 맞는 모델이 더 많이 존재할 것이고 어떤 것이 최선의 것인지 알기 힘들기 때문이다.

 

예를 들어, 에이전트가 사과를 먹는데 실패했다고 가정하자. 이것은 사과를 본 적이 없어서 일 수도 있고(다시 말해 사과에 대한 믿음이 없을때), 사과를 좋아하지 않아서 일 수도 있으며, 배가 고프지 않아서 일 수도 있다. 이들 중 어떤 것이 올바른 설명일까? 많은 예들을 다 고려하기 전까지 구분할 수 없다. (이러한 문제는 다른 에이전트에 대해서 간단한 모델을 가지고 있다면 발생하지 않는다. 만약 욕구에 대한 모델만 가지고 있다면 위의 문제에 있어 유일한 설명은 배가 고프지 않아서일 것이다.)

 

 

 

4 요 약

 

블랙 앤 화이트의 세 가지 특징은 다음과 같다.

  1. 크리쳐의 정신은 기호적인 것과 연결적인 표현이 하나의 통합된 구조로 포함되어 있다.
  2. 크리쳐는 사람과 비슷하며 게임안에서 도움이 된다.
  3. 크리쳐는 감정이입적이다. (이것은 사람과 비슷하다는 특징의 측면도 있지만 독립적으로 구분될 만큼 중요하다.)
List of Articles
제목 글쓴이 날짜 조회 수sort
A* 알고리즘을 사용한 길찾기 file 깊은바다 2016-03-25 14120
유용한 게임 AI 기법 정리 깊은바다 2017-05-04 8406
FSM을 사용한 인공지능 구현 예제 file [1] 깊은바다 2017-04-13 7752
자바스크립트로 만든 장기 인공지능 [4] 깊은바다 2017-03-17 6088
게임트리를 사용한 제로섬 게임의 인공지능 file 깊은바다 2016-03-19 4308
몬테카를로 트리 검색 알고리즘 file 깊은바다 2017-03-27 3810
FSM를 활용한 FPS게임 [2] 사지방컴 2017-10-02 2835
FSM, 몬스터 인공지능의 구현 file 깊은바다 2016-03-19 2684
실용적 예제로 본 게임 인공지능 소스코드 및 PDF 파일 깊은바다 2017-03-31 2293
삼성SDS의 SAIDA팀이 만든 스타크래프트 인공지능 깊은바다 2018-12-07 1996
인공지능 원리로 구현하는 장기 게임 file 깊은바다 2016-03-19 1893
딥러닝으로 게임 콘텐츠 제작하기 file 깊은바다 2017-05-11 1882
A* 알고리즘 데모 file 깊은바다 2018-08-18 1874
FPS 전투가 가능한 인공지능 [5] 사지방컴 2018-05-13 1831
행동트리로 구현하는 인공지능 깊은바다 2017-02-28 1672