컴퓨터 속으로 들어간 세계

 

컴퓨터, 장자의 꿈 : John L. Casti 저서, 강태원 옮김, 교우사, 2002 (원서 : Would be Worlds, 1997), Page 207~288

 

루이지애나의 토요일 오후

"앨버커키아"

미세한 세상, 광대한 동작

생명은 어떻게 살아가는 법을 배우는가

인공 신경망

진화를 구성하는 요소

유전자 알고리즘

띠에라

디지털 생명체와 실리콘 환경

진화와 대도시 "E"

실리콘 속 사회

효율적인 시장

심판의 판정

TRANSIMS

띠에라

슈거스케이프

실리콘 세계 만들기

스웜 모의실험 시스템

 

  

루이지애나의 토요일 오후

미국 뉴멕시코, 앨버커키의 루이지애나 거리는 남서부 미국 도시에 위치한 밋밋하고 길게 뻗은 꽤나 평범한 포장도로다. 북쪽에서 남쪽을 가로질러, 도시의 동쪽 경계를 이루는 샌디아 산맥 산기슭의 작은 언덕에 위치한 주거지역에서 끝나는 이 4 차선 도로는 앨버커키 소재의 대표적인 두 상점을 연결한다. 일년 중 대부분의 기간 동안에는 루이지애나 거리와, 앨버커키 도로 교통망을 구성하는 메나월, 와이오밍, 후안 타보, 및 칸델라리아 거리와 같은 주요한 간선도로들 사이에서 별다른 차이를 발견하기는 어렵다. 그러나 추수감사절에서 크리스마스 사이의 토요일 오후, 사람들이 산타클로스가 루돌프를 포함한 순록들과 함께 모습을 드러내기 전에 선물 목록에 있는 물건들을 구입하려는 가망 없는 목적을 가지고 미친 듯이 이 가게에서 저 가게로 몰려들 때, 루이지애나 거리가 두 상점을 연결하는 도로라는 위치상의 특성으로 인하여 거리는 차들로 가득한 주차장이 되어 버리고 만다.

크리스마스 선물을 사려는 인파들에 의하여 생기는 루이지애나 거리의 교통 혼잡은 전 세계 도로 교통망에서 일년 내내 날마다 일어나는 아주 흔한 일이기 때문에 크게 주목할 만한 특별한 예는 아니다. 교통 전문가들은 그러한 혼잡을 감소시켜서 여행객들이 적절한 시간 내에 원하는 곳으로 이동할 수 있도록 하기 위하여, 교통 신호 체계, 일방 통행로, 좌회전 차선, 고속도로 교차로, 교량 진입로 등과 같이 차량의 통행에 영향을 주는 요소들을 절묘하게 조합하기 위하여 무수한 시간과 노력을 소비해왔다. 그러나 어떤 교통 상황이 주어진 경우 그 속에서 혼잡이 발생하지 않도록 도로망을 구성하기 위하여 그러한 다양한 요소들을 어떻게 조합하여야 하는 가에 대한 명료한 이론이 없다는 것이 문제다. 그러한 이론이 존재하지 않는 가장 주된 이유중의 하나는 반복적이며 조절이 가능한 과학적인 방법으로 교통의 흐름에 대한 다양한 가설들을 실험해볼 수 있는 실험들이 없다는 것이다. 로스 알라모스 국립 연구소에 들어가 보자.

10 여년 전, 미국의 환경 보호국 (Environmental Protection Agency) 은 인간의 주거 환경을 구성하는 공기, 흙, 불, 그리고 물을 포함하는 그 무엇에 일어나는 변화에 대한 환경 영향 표준을 규정하는 조례 (1990, 깨끗한 공기를 위한 조례) 를 발표하였다. 당연히 이 조례는 고속철도 건설, 교량의 신축, 및 고속도로 건설과 같은 교통 시스템의 기획에도 적용되는 것이다. 불행하게도, 제안된 교통망에 실제로 만족하는가를 산정할 수 있는 방법이 없다. 1991 년 로스 알라모스 연구소의 크리스 바렛 (Chris Barrett) 은 컴퓨터 기술이 충분히 발달해서 앨버커키와 같은 도시에 대하여, 그 안의 모든 거리들, 주택, 자동차, 및 사람들을 완벽하게 포함하는 전자 도시를 만드는 것이 가능할 것이라는 생각을 하게 되었다. 바렛은 컴퓨터 속으로 들어간 댈 도시를 가지고, 대기 오염 모델과 이러한 실리콘 도시를 결합하여 도로 교통 시스템에 대한 어떤 계획이 환경에 미치는 영향을 실제로 계산하는 직접적인 수단으로 사용할 수 있을 것이라고 생각하였다. 다행스럽게도, 미국 교통부 소속 연방 고속도로 관리국에서 일하는 상상력이 풍부한 관리가 바렛의 생각을 긍정적으로 받아들여, 바렛의 환상적인 세계를 구체화하는데 필요한 경제적인 지원을 제공하였다. 언뜻 생각해보면, 로스 알라모스 같이 당대 최고의 컴퓨터 기술을 가지고 있는 곳에서조차도, 200,000 이상의 주택과 약 30,000 에 이르는 도로를 매일 오고 가는 400,000 명 이상의 통행인을 포함하는 "앨버커키아" (역주 : 저자는 가상의 앨버커키를 유토피아에 비유하여 앨버커키아라고 표현하였다) 를 만드는 것이 불가능해 보인다. 이것은 이렇게 많은 데이터를 처리하는 데이터베이스 관리라는 문제뿐 아니라, 이동 경로들을 설계하는 문제와 수 천명의 통행인들이 매순간 도로를 오고 가는 과정을 하나하나 추적하거나 그들이 도로를 이용하여 이동하는 방식을 설계해야 하는 복잡한 문제이다. 그러나 크리스 바렛은 그러한 사소한 장애물들에 기가 죽는 유형의 사람이 아니었으며, 컴퓨터 속으로 들어간 세상을 창조하려는 시도가 성공하지 못할 것이라고 예상하는 주변의 모든 사람들과 당당하게 맞섰다. 이렇게 만들어진 세상이 TRANSIMS 이다. [그림 1] 은 이 전자 세상의 전체적인 구조를 나타낸다. 이것은 4 개의 기본적인 요소들로 구성되어 있다.

[그림 1]  TRANSIMS 의 구조

이동 요구와 교통 시스템 데이터

이 모듈은 도시의 지리적인 구조를 포함하는 것으로, 교통망을 구성하는 길거리들, 주택들, 다양한 종류의 차량들과 가정, 일터, 상점, 학교, 및 놀이터 등에 있는 사람들의 위치와 그들이 언제 그 위치들로 이동하는가 등을 포함한다. 그밖에, 교통 신호 체계와 일방 통행로의 배치 등과 같은 다른 요인들에 대한 정보를 포함하고 있다.

이동 경로 계획 생성

일단 특정한 여행자의 여행 출발지와 목적지가 주어지면, 이 모듈은 상당히 복잡한 준-최적화 절차를 이용하여 여행자가 자신의 출발지에서 출발하여 목적지에 도달하기까지의 좋은 경로를 계산한다. 이러한 경로 계획에는 더러운 도로로 여행하기를 기피한다거나, 어떤 특별한 포장 대로를 선호한다든가, 여행 시간을 줄이는 것이 주 고려사항이라는 등의 여행자의 다양한 선호도의 균형을 맞추어 주는 것이 포함되어 있다.

교통에 대한 미세 모의실험

여행자들과 그들의 이동 계획이 교통망 속으로 표현되어 들어간 후, 이 모듈은 전형적으로 실제 시간 1 초, 각 여행자의 이동을 관찰하고 예정된 계획에 의하여 다음 위치로 이동시키거나 혹은 여행자에게 허용되는 지역적인 혼잡이나 교통사고 요인과 같은 현재의 정보를 바탕으로 하여 새로운 경제 계획을 수립한다.

환경에 대한 모의실험

TRANSIMS 에서 각각의 자동차들은 엔진의 종류, 배기 시스템, 타이어 압력, 및 속도와 같은 특성들을 포함하여 부호화된다. 자동차가 교통 연결망을 통하여 자기 갈 길로 이동함에 따라, 자동차들은 이산화탄소, 아산화질소 (역주 : 1 산화 2 질소의 속칭), 아황산가스 등과 같은 배기가스를 방출하게 된다. 이러한 가스들은 TRANSIMS 의 구성 요소 중 이 모듈에서 처리되어 도시를 덮고 있는 다양한 가스층 패턴을 생성한다. 결국 시스템의 4 가지 구성요소 중에서 이 모듈이 "제안된 교통시스템의 변화가 어떠한 교통 흐름 패턴을 생성하고, 이러한 패턴들이 환경에 어떻게 영향을 끼치는가?" 라는 환경 보호국의 걱정스러운 질문에 대하여 최종적인 대답을 내놓는 역할을 한다.

[그림 1] 에서 이동 요구 모듈과 환경 모의실험 모듈 사이의 폐쇄 회로를 구성하는 점선으로 된 화살표를 주목하자. 비록 이 연결이 TRANSIMS 모델의 정형적인 구조에 실제로 포함된 것은 아니지만, 이 연결이야말로 물리적인 교통망과 통행자들이 공통적으로 요구하는 전체적으로 안전하고 깨끗한 환경을 가능하게 하는 방법을 전체적으로 안전하고 깨끗한 환경을 가능하게 하는 방법을 나타내는 것이므로, 이것은 틀림없이 시스템에 포함된 실제 부분이다. 이제 TRANSIMS 가 어떻게 동작하는 가에 대하여 알아보자.

"앨버커키아"

앨버커키는 인구가 약 50 만 명 정도인 도시다. 지리학적으로 이 도시는 고지대 사막에 위치한 도시로, 도시 동쪽에 샌디아 산맥이 치솟아 있으며, 리오그란데 강이 도시의 중심부를 가로질러 흐른다. 이 도시의 도로 교통망은 도시의 중심에서 교차하는 25 번 주간 고속도로와 40 번 주간 고속도로로 구분된다. 25 번 도로는 북쪽에서 남쪽으로 이어지는 반면에 40 번 도로는 서쪽에서 동쪽을 가로지르는 도로다. [그림 2] 는 고속도로와 도시를 위에서 내려다 본 지형에 대한 조감도를 나타낸다. 이 그림에서 리오그란데 강은 25 번 도로 왼쪽에서 이 도로와 거의 평행하게 흐르고 있다. [그림 3] 은 이 그림을 확대한 것으로, 앨버커키 도로 교통망에서의 주요 간선도로들의 구조를 잘 보여 준다.

[그림 2]  미국 뉴멕시코 주 앨버커키시의 조감도

[그림 3]  앨버커키의 주요 간선도로

여행자가 교통망을 이용하여 한 장소에서 다른 장소로 이동하기 시작하면, TRANSIMS 는 우리가 마치 신이라도 된 것처럼 원하는 곳은 어디든지 크기를 확대하여 각 지역에서의 교통 흐름을 파악할 수 있도록 해준다. 예를 들어, [그림 4] 는 25 번 도로의 한쪽 방향 차선을 따라 왼쪽에서 오른쪽으로 진행하는 차량흐름을 나타낸다 (그림 제일 아래쪽에 점 같은 것들). (주 : 반대 방향의 차량들이 다른 쪽 방향이 차량 흐름에 아무런 영향을 주지 않기 때문에, 컴퓨터가 불필요한 계산을 위하여 자원을 낭비하고 결과적으로 화면에 결과가 나타나는 시간을 더디게 하는 것을 피하기 위하여 반대쪽 차량의 흐름은 나타나지 않는다.) 또한 TRANSIMS 는 우리가 특정 시점에 시스템을 잠시 정지시키고 특정 차량에 대하여 자세하게 알아볼 수 있도록 하는 기능을 제공한다. [그림 4] 에서 화면 중앙의 창은 번호가 11150 번인 차량의 상세 정보를 나타내는 것으로, 안쪽 차선 왼쪽에서 3 번째 차량을 나타내는 것이다. 개별 차량의 상세 정보를 표시하는 창에는 자동차의 위치, 속력, 가속도, 상태 (이 경우는 이동 중), 및 연료 상태 (대기 오염 모델이 사용하는 정보) 가 표시된다. 현재 11150 차량이 거의 시속 97 마일 (역주 : 약 시속 156 킬로미터) 의 속도로 일정하게 (가속도 없이) 달리고 있다는 점도 매우 흥미로운 것이다. 분명히, 아직은 앨버커키아에 고속도로 순찰대는 없는 것 같다.

[그림 4]  고속도로 교통 흐름

TRANSIMS 가 교통 흐름 패턴을 연구하는데 어떻게 사용되는가를 이해하기 위하여 출근길 러시-아워 시간대의 교통 체증에 대하여 생각해보자. [그림 5] 는 오전 6 시 44 분의 교통량을 나타내는 것이다. 교통량이 가장 적은 부분은 흰색으로 나타내고, 교통량이 중간 정도인 부분은 교통량 정보에 따라서 녹색에서 노란색 범위의 색으로 나타나며, 교통량이 아주 많은 부분은 혼잡한 정도에 따라 적색에서 자주색으로 나타난다. [그림 5] 에 나타난 것처럼, 이른 아침 교통 체증은 25 번 도로 북서쪽, 동쪽방향에 위치한 간선도로들, 그리고 리오그란데 강이 북쪽 끝 교량에서 시작된다. 그리고 대부분의 경우, 교통 흐름이 서쪽, 동쪽, 및 북쪽 교외 주거 지역에서 그림 중앙의 경제 활동이 활발한 중심가로 이동된다는 것을 알 수 있다 (역주 : 미국은 일반적으로 - 땅 덩어리가 넓어서 - 주거 지역과 공장, 회사, 관공서, 상가 등의 경제 및 사회 활동 지역이 잘 분리되어 있다). 이렇게 이른 시간임에도 불구하고, 고속도로와 몇몇 주요 간선도로들은 이미 최악의 교통 체증을 나타내는 노란색과 적색으로 나타난다.

[그림 5]  오전 6 시 44 분의 교통 상황 (컬러 사진 7)

한 시간 후인 오전 7 시 44 분, [그림 6] 은 체증이 한층 가속화되었음을 보여준다. 이제는 25 번 도로 전체가 노란색과 적색이며, 동쪽과 서쪽을 가로지르는 40 번 고속도로와 강의 북쪽 다리도 마찬가지다. 게다가, 많은 동서 간선도로들이 중간 정도의 체증을 나타내는 녹색으로 표시되기 시작하였고, 리오그란데 강의 다른 두 교량도 마찬가지다.

[그림 6]  오전 7 시 44 분의 교통 상황 (컬러 사진 8)

마지막으로, 체증이 절정에 도달한 오전 8 시 44 분, [그림 7] 에 나타난 것과 같이 도시는 완전히 정체상태에 빠졌음을 알 수 있다. 이 시각에는 두 고속도로 전체, 모든 교량들, 그리고 대부분이 주요 간선도로들이 심한 정체를 나타내는 노란색, 적색, 및 자주색으로 표시되었다. 더구나, 상업 중심지를 둘러싸고 있으며 주거 지역에 인접한 대부분의 이면 도로들조차도 중간 정도의 정체를 나타내는 녹색으로 표시되기 시작하였다. 이 시점에 출근길 정체는 완전히 자리를 잡았다 : 운전자들은 손가락을 퉁기고 있으며, 대체적으로, 도로 교통 시스템으로써의 앨버커키 시스템은 사람들을 한 장소에서 다른 장소로 수송한다는 본연의 임무 수행에 실패한 것이다.

[그림 7]  오전 8 시 44 분의 교통 상황 (컬러 사진 9)

이러한 결과는 TRANSIMS 를 가지고 숱하게 많은 가설들을 조사할 수 있다는 것을 암시한다 :

이러한 질문들 외에도 누구라도 끝없이 많은 질문들을 만들 수 있을 것이다. 그렇지만, 전적으로 우리 마음대로 조작할 수 있으며, 아마도 최초로 그것을 가능하게 한, TRANSIMS 같은 실험실을 이용하면, 질문들에 대한 답을 얻기 위해서 엄청난 돈을 들여서 다리들을 지을 필요도 없고 잠재적인 위험성을 내포한 시도를 할 필요도 없다. 앨버커키아를 떠나기 전에 TRANSIMS 에 대한 한 가지 예를 더 알아보자.

우리는 이 주제를 토요일 오후 크리스마스 선물을 사려는 사람들에 의하여 발생하는 루이지애나 거리의 교통 대란이라는 슬픈 이야기를 가지고 시작했다. 이렇듯 우울한 상황에 대하여 우리가 던질 수 있는 질문은 명백하게 다음과 같은 것이다. 거리가 완전한 정체 상태에 도달하기 전에 두 상점을 연결하는 도로에 시간당 몇 대의 차량이 유입되면 될까? TRANSIMS 를 이용하여 도로로 유입되는 차량을 조절하고 결과를 관찰함으로써, 우리는 이 질문에 대한 답을 아주 쉽게 얻을 수 있다. [그림 8] 은 30 분마다 3000 대의 차량이 두 상점을 연결하는 도로에 유입되는 경우에 대한 시공간 흐름도를 나타낸다. 이 그림은 다음과 같이 보아야 한다. 차량은 그림의 왼쪽 위에서부터 유입된다. 시간의 경과는 수직축을 따라서 아래쪽으로 진행되는 반면에 수평축은 왼쪽에서 오른쪽으로 두 상점을 잇는 도로의 위치를 나타낸다. 따라서, 차량이 도로에 진입하고 일정한 속도로 앞으로 이동하는 것에 대한 시공간 궤적은 왼쪽 위에서 오른쪽 아래로 이어지는 대각 선분으로 표시되며, 이 선분에 대한 기울기에 음의 부호를 취하면 차량 속도의 역수가 된다. 한편, 도로에 유입된 차량이 교통 정체에 의하여 멈추어 있는 기간은 자신의 경로에 수직 방향의 선분 조각이 포함되는 것으로 표시된다. 이것은 이러한 차량의 이동에는 시간이 경과되었음에도 차량이 앞으로 진행하지 못한 기간이 있기 때문이다 (역주 : 따라서, 기울기가 완만할수록 그 구간을 빠르게 통과했음을 나타내고, 그러다가 수직으로 선이 내려가면 그 기간동안 정체로 인하여 멈추어 선 것을 나타낸다).

 

[그림 8]  루이지애나 거리의 차량 흐름을 나타내는 시공간 흐름도, 3000 대 / 30 분

이 그림을 통해서 우리는 교통 혼잡이 나타나고 사라지는 것을 생생하게 파악할 수 있다. 그림을 왼쪽에서 오른쪽으로 따라가 보면, 차량들이 몰려드는 혼잡 지역들과 상대적으로 교통량이 적어 차량들이 빠르게 진행할 수 있는 소통이 원활한 지역들이 있다는 것을 알 수 있다. 이러한 혼잡 지역들 중에서 일부는 신호등이 있는 교차로들이다. 그러나 그림에서 오른쪽 아래 가까이에 있는 아주 혼잡한 지역들 같은, 다른 일부는 교차로나 신호등과는 관계가 없으며, 혼잡을 유발하는 어떠한 명백한 원인과도 관련이 없다. 오히려, 그것들은 우리가 이 책의 앞에서 언급했던 소위 창발적인 현상에 해당되는 것이다. 즉, 이것은 길게 뻗은 루이지애나 거리를 달리는 차량들의 상호작용에 의하여 발생된 시스템 적인 성질이다. 이제 인위적으로 만든 교통 체증에 대하여 알아보자. 교통 시스템이 감당할 수 있는 것보다 많은 차량 진입에 직면하도록 하기 위해서, 도로에 더 많은 차량을 유입하고 어떤 일이 일어나는지를 살펴보자. [그림 9] 는 차량 유입을 30 분당 3000 대에서 50 % 늘려서 30 분당 4500 대의 차량이 유입되는 경우에 일어나는 효과를 나타내는 것이다. 이제 상황은 완전히 임계상황에 도달했음을 알 수 있다. 그림에 나타나는 수직 선분들의 패턴을 통하여 명백하게 알 수 있듯이, 차량이 유입되자마자 곧 거의 정지 상태에 빠진다는 것을 알 수 있다. 더군다나, 차량들이 원활하게 진행하는 희미한 영역이 거의 없고, 교통 체증의 특성인 가다-서다가 명확하게 나타난다. 역설적으로, 30 분당 3000 대의 차량이 유입될 때 큰 혼잡을 보이던 오른쪽 영역의 경우, 차량의 유입이 증가된 경우에 오히려 혼잡이 감소된다는 것을 알 수 있다. 이 현상은 체증에 의하여 도로가 제 기능을 발휘하지 못하고, 결과적으로 차량의 이동이 적어서 앞서와 같은 정체를 유발할 만큼의 차량이 그 지역 도로에 유입되지 않았기 때문에 일어난 것이 분명하다.

[그림 9]  루이지애나 거리의 차량 흐름을 나타내는 시공간 흐름도, 4500 대 / 30 분

교통 문제에 TRANSIMS 를 적용할 수 있는 사례는 너무도 많기 때문에 이것을 이용하여 도로 교통망을 연구하는 것이 유용하다는 것을 보여주는 책을 몇 권 정도는 충분히 쓸 수 있는 것이나, 이러한 예들만으로도 이 시스템을 가지고 할 수 있는 일들이 무엇인가에 대한 전체적인 윤곽을 파악했을 것으로 생각된다. 따라서, 이것에 대하여 장황하게 늘어놓는 대신에, 이러한 유형의 인공적인 세상들을 둘러싸고 있는 좀더 일반적인 문제로 우리의 관심을 돌리도록 하자. 즉, 그것들의 구조적인 구성요소뿐만 아니라, 그러한 세상을 구성하는 에이전트들의 동작에는 어떤 것들이 있으며, 에이전트들은 그러한 동작을 어떻게 선택하며, 그리고 가장 중요한 것으로, 에이전트들의 상호작용이 어떻게 시스템의 전역적인 창발 행위를 생성하는가에 대하여 알아보자.

미세한 세상, 광대한 동작

전문적으로 말해서, 앨버커키아 같은 인공적인 세계에서 특정한 동작들이 발생되는 장소는 컴퓨터 내부에 있는 기억장소다. 마찬가지로, 이러한 세계에서 에이전트들은 - 주식시장의 중개자 혹은 도로 교통 시스템에서의 운전자 - 단지 프로그램들에 지나지 않으며 이것들은 데이터를 나타내는 비트 (bit) 들과 바이트 (byte) 들을 기억장소 이곳 저곳으로 옮김으로써 서로 상호작용한다. (역주 : bit 는 binary digit 에서 유래된 단어로 컴퓨터에서 정보 저장의 최소 단위를 나타내는 것이며, byte 는 8 개의 bit 가 모인 것으로 영문자 1 개를 저장하는 기본 단위이자 기억장소 용량의 단위이다.) 인공적인 세계를 구성하는 환경과 에이전트들을, 전문적인 용어를 사용하여, 각각 기계의 기억장소와 컴퓨터 프로그램으로 간주하는 경우, 시스템 속에서 에이전트들이 서로 경쟁하는 그런 세계를 만들 수 있다. 이러한 세계 중에는 미국의 유명한 과학 잡지인 사이언티픽 아메리칸의 정기 기고자 키 듀드니 (Kee Dewdney) 가 무엇인가를 흉내내어 만든 코어워 (Corewar) 라는 것이 가장 유명하다.

듀드니에 의하면 그는 어떤 대기업 프로그래머에게서 실행될 때마다 자신을 복제하는 크리퍼 (CREEPER) 라는 프로그램을 만들었다는 이야기를 듣고 거기에서 영감을 얻어 코어워를 만들었다고 한다. 크리퍼 프로그램은 자신을 복제하는 기능 외에도 회사 자체의 컴퓨터 통신망을 통해서 컴퓨터 사이를 돌아다닐 수 있는 능력을 가지고 있으며, 결과적으로 순식간에 크리퍼의 복제품들이 컴퓨터 시스템을 차지하게 되어 보다 유용한 프로그램과 데이터들이 시스템에서 밀려나게 될 것이다. 소리 없이 침입하여 시스템을 혼란스럽게 만드는 이러한 프로그램은 회사내의 또 다른 총명한 사람이 "눈에는 눈 이에는 이" 라는 전략을 생각해 냄으로써 결국은 무참하게 짓밟히게 된다. 그는 립퍼 (REAPER) 라는 역시 자기 복제 능력을 가진 프로그램을 개발하였는데, 이 프로그램은 크리퍼 복제물을 찾아서 파괴하는 것을 목적으로 만들어진 것이다. 그리고, 만일 립퍼가 더 이상 크립퍼 복제물을 찾아 파괴할 수 없는 상황이 되면 스스로 시스템에서 제거되도록 만들어졌다.

듀드니는 이 거짓말 같은 이야기를 듣고 코어워라는 게임을 생각해 내게 되었다. 이 게임에서는 두 개 이상의 프로그램이 컴퓨터 기억장소를 서로 이리저리 떠돌아다니고 있으며, 각각의 프로그램은 기억장소를 차지하고 다른 프로그램들을 위험 지역으로 몰아내는 방식으로 다른 것들을 파괴하려 한다. 프로그램들끼리의 전투는 임의로 선택된 컴퓨터 기억 장치 영역에 프로그램들을 떨어뜨리는 것에서부터 시작된다. 물론 초기에는 어떤 프로그램도 다른 프로그램들이 어디에 있는지를 모른다. 이 상황에서 각각의 프로그램들은 자신의 명령어들을 한번에 한 개씩 실행한다. 코어워라는 세계에서는 서로 경쟁 관계에 있는 프로그램들이 에이전트에 해당되는 것이므로, 에이전트가 다른 에이전트들의 생존 능력을 파괴하려는 목적으로 사용하는 규칙들이 어떤 것인가를 자세하게 파악하는 것이 무엇보다도 가치 있는 일이다.

특정 시점에, 프로그램은 자신을 만든 프로그래머가 지시한 명령어를 그것이 무엇이든지 간에 실행할 것이다. 이 게임에서 각각의 프로그램은 다른 프로그램의 명령어들을 파괴하여 결국은 그 프로그램을 못쓰게 만드는 것을 목적으로 한다. 이러한 목적을 성취하기 위한 전략은 사실 무수히 많은 수 있다. 가령 한 프로그램은 다분히 공격적인 자세를 치하여, 기억장소 곳곳으로 소프트웨어 "폭탄" 을 공중 높이 발사하여 다른 프로그램을 훼손시키는 전략을 사용할 수 있다. 반면에 어떤 프로그램은 방어적인 전략을 채택하여, 자신의 망가진 부분을 수리하거나 공격받은 지역에서 도망가는 방식으로 동작할 수도 있다. 어떤 경우에는 운영체제가 특정 프로그램에게 그것이 더 이상 실행될 수 없음을 지시하는 방식으로 그 프로그램을 제거할 수도 있다. 이 경우 해당 프로그램은 "전장에서의 부상자" 임을 선언하고 퇴역해 버린다. 남은 프로그램들은 전투를 계속하며 상처를 입지 않은 하나의 프로그램만이 남을 때 전투는 종료된다.

코어워 프로그램은 변형된 어셈블리어를 사용하여 작성된다. 어셈블리어는 컴퓨터가 이해할 수 있는 유일한 언어인 0 과 1 만의 조합으로 표현되는 기계어와 인간이 사용하는 자연어에 가까운 베이식 (Basic), C++, 포트란 (Fortran) 등과 같은 고급 언어의 중간에 해당하는 프로그래밍 언어다. 물론 코어워 언어의 세부적인 문법을 이해해야 할 필요는 전혀 없지만, 다음에 설명할 내용을 보다 쉽게 이해하도록 하기 위하여 <표 1> 에 코어워 프로그램을 작성하는데 사용하는 명령어 일부를 소개하였다.

<표 1>  코어워 프로그램 명령어

명령어

기호

매개변수

설        명

이동 (move)

더하기 (add)

점프 (jump)

MOV

ADD

JMP

A  B

A  B

A

주소 A 의 내용을 주소 B 로 옮긴다.

주소 A 의 내용을 주소 B 의 내용에 더한다.

주소 A 의 명령어를 실행한다.

코어워 에이전트들이 조용하면서도 죽음을 부르는 전투를 치르는 시스템 환경을 코어워 경기장이라 부르자. 이 경기장은 8,192 (역주 : 213) 바이트 크기의 기억장소로 구성되어 있으며, 처음에는 서로 경쟁 관계에 있는 프로그램들이 이곳이 작은 부분을 차지하고 있다. 만일 각각의 프로그램들이 다른 프로그램의 기억장소 위치를 알고 있다면 전투가 전혀 흥미롭지 않기 때문에, 상대 주소 (relative addressing) 라는 개념의 기억장소 위치 계산 방법을 사용하기로 한다. 예를 들어, 명령어 MOV 4 200 은, 현재  이 명령어가 저장된 위치에 5 를 더한 주소에 해당하는 기억장소의 내용을 읽고, 현재 이 명령어가 저장된 위치에 200 을 더한 주소에 해당하는 기억장소를 현재 저장된 값을 무시하고 읽어온 값으로 바꾸라는 명령이 된다. 여기서 매개변수 5 와 200 은 주소를 계산할 때 그대로 사용되는 값이기 때문에 이것을 직접 모드 (direct mode) 주소 지정이라고 부른다. 코어워는 간접 모드 (indirect mode) 와 즉치 모드 (immediate mode) 주소 지정 방식을 역시 제공한다. 예를 들어, 매개변수에 간접 모드가 포함된 명령어 MOV @5 200 은 상대 주소 5 에 저장된 값을 읽어서 상대 주소 200 에 덮어쓰라는 명령이 아니라, 상대 주소 5 에 저장된 값을 읽어서 다시 그것을 그곳에서부터 상대 주소로 하여 기억장소를 정한 후 그곳에 저장된 값을 읽어서 상대 주소 200 에 덮어쓰라는 명령이다. 매개변수 앞에 # 기호가 붙은 것은 즉치 모드 매개변수를 나타내는 것으로, 숫자 앞에 이 기호가 붙으면 그것은 주소가 아니라 그냥 값으로 사용된다. 따라서 MOV #5 200 은 정수 5 를 상대 주소 200 에 저장하라는 의미가 된다.

<표 2> 는 난쟁이 (DWARF) 라는 프로그램이 실행되는 초기 몇 단계를 나타낸다. 난쟁이는 아주 단순하지만 상당히 위험한 프로그램이다. 이 프로그램은 주소가 5 배의 배수인 모든 기억장소를 0 으로 바꾸는 폭탄을 쏘아대는 것으로, 0 은 실행이 불가능한 명령어에 해당되기 때문에 이 폭탄을 맞은 적군 에이전트 프로그램은 비명을 지름 멈출 수밖에 없다.

<표 2> 난쟁이 프로그램 실행의 처음 몇 단계

주소

단계 1

단계 2

단계 3

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

 

DAT

ADD

MOV

JMP

 

 

#5

#0

-2

 

  -1

  -1

@-2

 

DAT

ADD

MOV

JMP

ㅡ

 

 

#5

#0

-2

0

 

   4

  -1

@-2

 

DAT

ADD

MOV

JMP

ㅡ

 

 

 

 

ㅡ

 

 

 

 

ㅡ

 

 

 

#5

#0

-2

0

 

 

 

 

0

 

 

 

 

0

 

   9

  -1

@-2

<표 2> 에서 난쟁이는 기억장소 1-4 번지를 차지하고 있는 것으로 가정한다. 그리고 주소 1 에는 데이터 값 -1 이 저장되어 있다. (역주 : DAT 는 실행 명령어가 아니라 데이터 -1 을 저장하고 있는 기억장소에 대한 기호 이름이다. 그리고 이러한 비실행 명령어에 값을 저장하거나 더하는 경우 명령어는 그대로 있고 데이터 값만 바뀐다). 따라서 프로그램의 실행은 주소 2 에 저장된 명령어 ADD #5 -1 을 실행하는 것으로 시작된다. 이 명령어는 자신의 바로 위에 있는 (역주 : 상대 주소를 계산할 때 양수는 주소가 증가되는 방향, 음수는 감소되는 방향이다) 기억장소의 내용에 즉치 값 5 를 더하라는 것이므로 주소 1 의 내용이 DAT -1 에서 DAT 4 로 바뀐다. 다음으로, 프로그램은 절대 주소 3 번지에 있는 명령어 MOV #0 @-2 를 실행한다. 이 명령어는 즉치 값 0 을 @-2 에 의하여 정해지는 기억장소에 저장하라는 명령어다. @-2 는 현재 명령어가 저장된 위치 3 번지에서 위로 2 만큼 이동한 기억장소 1 에 저장된 값 4 를 그곳에서부터 상대 주소로 계산하는 것이므로 0 이 저장되는 위치는 기억장소 5 번지가 된다. 난쟁이 프로그램의 마지막 명령어는 JMP -2 다. 이 명령어는 프로그램의 다음 실행 명령어를 이 명령어로부터 위로 2 만큼 떨어진 곳에 위치한 기억장소 2 번지의 명령어가 되도록 지시한다. 이렇게 되면 난쟁이 실행의 첫 번째 주기가 끝나게 되며, 그때의 기억장소 상태는 표 2 의 단계 2 와 같다. 다음 단계는 기억장소 2 번지 명령어를 실행하는 것으로 시작된다. 첫 번째 단계에서와 같은 방법으로, 이 명령어는 DAT 값을 5 만큼 증가시키는 것이므로 이 명령어 실행 한 후 DAT 는 9 가 되며, 다음 명령어에서 0 이 저장되는 위치는 기억장소 10 번지가 된다. 난쟁이는 이러한 과정을 끝없이 되풀이하여 기억장소 15, 20, 25, … 에 폭탄을 투하한다.

따라서 기억장소에 저장된 명령어의 개수가 5 개 이상인 프로그램은 난쟁이가 발사한 폭탄을 도저히 피할 수가 없다는 것을 쉽게 알 수 있다. 이러한 상황에서 각각의 프로그램들은 오직 3 가지 방법만을 통하여 자신을 방어할 수 있다 : (a) 새로운 위치로 이동한다. (b) 그 자리에 머물되 난쟁이의 공격에 의하여 파손된 부분을 수리한다. (c) 먼저 난쟁이를 잡아낸다. 그러나 마지막 전략은 난쟁이가 기억장소 어디에 위치해 있는가를 알아낼 수 있는 정해진 방법이 없기 때문에 다소 위험한 선택이다. 불행하게도, 여기서는 첫 번째와 두 번째 전략을 어떻게 구현하는가에 대하여 자세하게 설명할 여유가 없기 때문에, 관심이 있는 독자들은 이 책의 참고문헌에 인용한 듀드니의 저서를 참고할 것을 바란다.

코어워라는 세상에 대한 문을 닫기 전에, 난쟁이 프로그램과 그것보다 한층 단순한 생각으로 만들어진 꼬마 도깨비 (IMP) 프로그램 사이의 전투에 대하여 알아보는 것이 그래도 좋을 것 같다. 꼬마 도깨비는 MOV 0 1 이라는 단 한 개의 명령어로 구성된 프로그램이다. 이 명령어는 상대 주소 0 번지의 내용 (즉, 자기 자신) 을 현재 위치에서 상대 주소 1 번지인 자신의 다음 기억장소에 저장하는 명령어다. 프로그램이 실행됨에 따라서, 이것은 MOV 0 1 명령어라는 꼬리를 뒤로 남기며 한 주기 당 1 씩 증가된 기억장소를 따라 내려간다. 따라서, 꼬마 도깨비는 새로운 기억장소로 자신을 이동할 수 있는 프로그램에 해당된다. 이제 난쟁이와 꼬마 도깨비를 코어워 경기장 바닥 위에 떨어뜨리고 어떤 일이 일어나는가를 지켜보자.

전투 초기 단계에는 난쟁이가 5 의 배수에 해당하는 기억장소에 일제히 쏘아대는 0 이라는 폭탄이 꼬마 도깨비가 이동하는 것보다 빠르게 기억장소들 사이로 퍼져 나갈 것 같다. 실제로, 사실 그렇기는 하다, 하지만 이것이 난쟁이가 전투에서 반드시 유리하리라는 것을 의미하지는 않는다. 중요한 것은 난쟁이가 무차별 포격의 결과로 꼬마 도깨비를 치명적인 상태에 빠지게 할 수 있는지 아닌지의 여부다. 그런데 꼬마 도깨비가 새로운 기억장소로 자신을 이동시킨다는 바로 그 점 때문에 이 의문에 대한 답이 그렇게 명확하게 얻어질 수 있는 것은 아니다. 즉, 난쟁이가 꼬마 도깨비 프로그램들 일부를 파괴한다고 하더라도, 그것들 모두를 파괴하지 않는 한은 전투에서 승리한다고 장담할 수는 없다.

반면에, 꼬마 도깨비가 난쟁이의 첫 번째 실행 명령어에 먼저 도달하면, 난쟁이는 훼손되어 결국 제 2 의 꼬마 도깨비가 될 것이다. 왜냐하면, 난쟁이가 마지막 명령어인 JMP -2 를 실행했을 때, 그 자리에는 꼬마 도깨비 명령어인 MOV 0 1 가 들어 있으므로, 결국 난쟁이는 꼬마 도깨비로 바뀌어 버린다. 이 경우에 전투는 두 가지 유형의 꼬마 도깨비들이 경기장에서 서로 쫓고 쫓기는 국면으로 바뀌게 된다. 코어워 규칙에 따라서 다를 수는 있지만, [그림 10] 은 코어워 전투의 한가지 결과를 나타낸다. 여기서 위쪽 그림은 전투 시작 단계를 나타내는 것이며, 아래쪽 그림은 난쟁이의 승리로 전투가 종료된 경우를 나타내는 것이다.

[그림 10]  난쟁이와 꼬마 도깨비의 전투 : 시작 (위) 과 끝 (아래)

이제까지 설명한 것들은 전투에서의 승리를 위한 다양한 전략들을 찾아보려는 해커들을 위한 낙원으로서의 코어워 세계에 대한 깊이와 복잡함을, 빙산의 일각만큼 나타내는 것에 지나지 않는다. 더 이상 이것에 대하여 설명하고 싶지만 지면이 그것을 허락하지 않는다. 이들에 대한 상세한 내용은 참고문헌에 제시한 다양한 글들과 소프트웨어를 구할 수 있는 사이트를 참고하기 바란다. 여기서는 코어워가 컴퓨터 속으로 들어간 세계의 구조와 그것을 사용하는 것에 대하여 우리에게 무엇을 시사하고 있는가에 대하여 알아보자.

가장 중요한 점은 우리가 전쟁터, 경기장, 난쟁이, 및 꼬마 도깨비 등과 같은 인간적인 용어를 사용하여 시스템 환경이나 에이전트들을 설명했다는 것을 인식하는 일이다. 실제로, 그 세계에는 컴퓨터 기억장소라는 물리적인 장치와 이러한 기억장소에 ON/OFF 패턴을 저장하고 지우는 정보 구조 외에는 아무것도 존재하지 않는다.

따라서, 예를 들어, [그림 10] 에 나타난 패턴은 특정 시점에 난쟁이와 꼬마 도깨비라는 전사가 기억장소 어디를 차지하고 있는지를 보여주는 단순한 기억장소 지도에 지나지 않는다. 이러한 기억장소 지도는 말하자면 뉴욕 타임 스퀘어 광장에 설치된 문자 전광판에 있는 전구들이 ON/OFF 패턴과 본질적으로 다르지 않다. 달리 말하면, 그러한 패턴들이 예를 들어 앨버커키의 교통 혼잡을 나타내는 것이라는 등의 중요한 의미를 갖기 위해서는 그것들이 반드시 해석 (interpretation) 되어야 한다는 것을 의미한다. 패턴들은 그 자체만으로는 아무런 의미가 없다 ; 그것들은 순수한 구문이며, 컴퓨터 기억장소 속에 있는 길다란 0 과 1 의 나열에 불과한 것이다. 이러한 전자적인 세계를 그것에 대응되는 실제 세계와 연결시키는 것은 해석이라는 작용, 말하자면, 의미를 주입하는 작용에 의하여 비롯된다.

난쟁이와 꼬마 도깨비 프로그램이라는 두 코어워 용사가 가지고 있는 본성이 암시하는 두 번째 핵심적인 쟁점은 둘 모두 아주 어리석지만 매우 위험하다는 것이다. 그들은 상대방의 위치나 속성을 알 수 있는 어떠한 인식 수단도 가지고 있지 않기 때문에 어리석다. 꼬마 난쟁이는 맹목적으로 한 주기 당 1 씩 증가된 기억장소를 따라 전진하는 반면에, 난쟁이는 제 자리에 머물면서 분별도 없이 주소가 5 의 배수인 모든 기억장소에 폭탄을 쏘아 올린다. 따라서, 내가 아는 몇몇 회사와 연구소의 관리자들과 마찬가지로, 그 두 프로그램들은 근시안적이며, 전적으로 경직되고, 무감각 적인 규약을 따르며 동작하는 것으로, 자신이 속한 환경이나 자신들이 다루고 있는 에이전트들에 대하여 결코 배우지 못한다. 그들은 어리석지만 위험한 존재다.

태어났을 때 우리 모두는 어리석다. 하지만 어리석음이라는 장벽을 극복하는 방법으로써 공통적으로 받아들여지는 것으로 개인에게는 학습이 있고 집단에게는 진화가 있다. 따라서 컴퓨터 속으로 들어간 가상 세계내의 에이전트들이 어떻게 그런 가장 인간적인 일을 성취하는가에 대하여 논의해 보자.

생명은 어떻게 살아가는 법을 배우는가

학습 활동이 두뇌에서 일어나는 일이라는 이론은 과학자 사회에서 모든 사람들이 전적으로 동의하는 몇 안 되는 이론중의 하나다. 그러나 그것이 정확하게 어떻게 일어나는가는 전혀 별개의 문제로서, 근소하게나마 합의된 것조차 없다. 학습에 대한 실용적인 이론을 만들어내는 것의 어려움을 이해하기 위하여 우리 두뇌의 구조와 그것이 어떻게 동작하는가에 대해서 간략하게 알아보도록 하자.

인간의 두뇌는 상상할 수 없을 정도로 많은 뉴런 (Neuron : 신경세포) 들이 모여 이루어진 것이며, 여기서 뉴런들은 조밀하게 연결된 연결망을 통하여 서로 정보를 교환한다. 이런 연결망에서 "연결선" 은 축색돌기 (axon) 와 수상돌기 (dendrite) 라 부르고, 한 뉴런과 다른 뉴런과의 연결점을 시냅스 (synapse) 혹은 연접이라 부른다. 수상돌기들은 신경망 내 다른 뉴런에서 발생된 전기화학적 신호가 흘러 들어오는 입력 통로다. 이렇게 입력된 신호들 중에서 일부는 흥분성 신호들이고, 다른 일부는 억제성 신호들이다. 만일 흥분성 신호와 억제성 신호 개수의 차이가 정해진 문턱값을 넘어서면, 이 뉴런은 축색돌기를 따라 흘러나가는 신호를 발사한다. 이렇게 출력된 신호는 흥분성 혹은 억제성 입력으로 다른 뉴런의 입력으로 작용한다. [그림 11] 은 뉴런의 전형적인 구조를 나타낸다.

[그림 11]  뉴런의 구조

실제 뇌세포 조직의 일부를 나타내는 [그림 12] 는 인간 두뇌를 구성하는 신경망의 복잡성을 잘 보여준다. 여기서 우리는 세 개의 작은 뉴런 (A, B, 및 C), 피라미드 모양을 한 중간 크기 뉴런 (D 와 E), 그리고 세 가지 유형의 뉴런형 세포 (F, J, 및 K) 들이 각각 시냅스에 의하여 연결되어 있음을 알 수 있다. G, H 및 I 로 표시된 것들은 이 그림에 나타난 것보다 깊은 수준에 위치한 뉴런들에서 뻗어 나온 수상돌기들이다. 인간 두뇌의 대뇌 피질은 약 1,000 억 개의 뉴런들로 구성되어 있기 때문에, 이 그림이 실제로는 전체 두뇌의 극히 일부분을 나타낼 뿐이라는 것을 알 수 있을 것이다.

[그림 12]  뉴런과 시냅스에 의한 연결

두뇌가 전체적으로 [그림 12] 의 200 억 배 (역주 : 그림에는 5 개의 뉴런이 있다) 에 해당하는 규모로 이루어져 있다는 사실은 우리가 가지고 있는 배울 수 있고, 말할 수 있으며, 또한 생각할 수 있는 능력을 설명하는 그 무엇이다. 원칙적으로 보면 결국 상호 연결되어있는 ON/OFF 스위치들의 모임에 해당되는 신경망이 어떻게 그렇듯 기적과 같은 재주를 부릴 수 있는지에 대하여 생각해 보자.

1949 년, 도날드 허브 (Donald Hebb) 는 행동의 구성 (The Organization of Behavior) 이라는 저서를 발간하였다. 이 책에서 허브는 만일 한쌍의 뉴런이 동시에 활성이 되면 이 두 뉴런 사이의 연결은 강화되며, 따라서 두뇌 속에서 이들 뉴런을 연결하는 특정한 경로가 강화된다. 허브의 이론에 따르면 두 뉴런은, 송신 뉴런의 신호가 수신 뉴런의 출력 신호와 거의 같은 시점에 발생할 때 동시에 활성된 것으로 간주된다. 따라서, 허브에 의하면, 학습과 기억이라는 절차에는 시냅스를 가로질러 뉴런에서 발생된 신호를 전송하는 연결 강도의 수정이 수반된다.

허브의 연구 결과가 발표된 후 40 년 정도가 지나자, 뉴런들이 작용에 의한 학습 이론을 뒷받침하는 증거들이 누적되기 시작하였다. 실제로 신경 조직 내에서 신경 신호 전송의 결과로 가장 중요하게 변하는 부위는 시냅스다. 뉴런들 사이의 연결 강도는 시냅스의 화학적 속성, 크기, 그리고/혹은 형태에 따라서 극적으로 달라진다. 기억에 대한 현재의 이론에 의하면, 기억이란 성인에 있어서 가장 주요한 기억의 출처인 수신 지역 내에 있는 활성된 화학적 수용체의 개수가 변하는 것이다. 이러한 변화 중에서 일부는 단지 수 초 혹은 수 분 동안 지속되는 반면에 어떤 변화는 영원히 지속되기도 한다.

불행하게도, 시냅스의 변화에 따른 효과에 대한 이론들을 입증하는 실험적인 근거들을 수집하는 일은 지극히 어려운 일이다. 문제가 되는 것은, 시냅스의 변하는 많은 뉴런들에 확산되고, 따라서 각 시냅스에 전달된 변화가 다소 작다는 것이다. 더군다나, 화학적 수용체 분자들은 필요에 따라서는 동일한 세포의 시냅스들 사이로 너무나 빨리 재분배된다. 그렇기는 하지만, 허브의 이론은 두뇌의 역학이 기억이나 학습과 같은 인간 행동 현상을 생성하기 위하여 어떻게 작용하는가를 연구하는 출발점으로 우뚝 솟아있는 것이다. 두뇌 구조는 전체적으로 많은 흥미로운 종류의 신경 세포들로 구성되었으며, 이것들은 두뇌의 여러 영역에 제각각 배열되어 있다. [그림 13] 은 이러한 영역들을 나타낸 것이다. 여기서 인간의 인식 활동과 관련하여 가장 중요한 두뇌 부위인 대뇌 피질에 우리의 초점을 맞추도록 하자.

[그림 13] 인간의 두뇌

대뇌 피질은 뇌의 외곽을 형성하는 깊게 주름져있는 층이다. 인간의 경우, 이 영역을 흔히 신피질 (neocortex) 이라 부르는데, 이것은 진화론으로 말해서 가장 최근에 만들어진 두뇌 부위다. 이 부위가 바로 추론과 사고 작용을 일으키는 곳이다. 비록 대뇌 피질은, [그림 14] 에 나타낸 것처럼, 구조 및 기능적으로 아주 많은 영역으로 분할할 수 있지만, 이 부위는 모두 동일한 기초 성분들로 이루어져 있으며, 유사한 방법으로 서로 연결되어 있다. 분할된 영역들의 기능적인 차이는 구조적인 차이에 원인이 있는 것이 아니라 이곳들로 전달되는 감각 신호의 차이에 원인이 있는 것으로 추정된다.

[그림 14]  영역에 따른 대뇌의 기능을 나타내는 지도

중추 신경계 (뇌와 척수) 에서 많은 얇은 층을 구성하는 뉴런들을 회백질 (gray matter) 이라 부른다. 이 영역에서는 뉴런들의 발화 문턱값이 두뇌 다른 영역에 있는 뉴런들의 문턱값보다 더 높은 경향이 있는데, 이것은 아마도 다른 곳에서 전달되는 가짜 잡음 신호를 억제하려는 수단으로 추정되며, 그리하여 돌발적으로 발생한 것이거나, 불필요한 (그리고 원하지 않는) 반응을 피하려는 것으로 보인다. 결국 이것은 전체 피질 시스템의 전반적인 안정성을 증진시키는 작용을 한다. 인간의 대뇌 피질은 2 내지 3 밀리미터 두께에 약 2,000 평방 센티미터 (약 2 제곱 피트) 를 차지하는 주름진 종이와 같다. 이 종이는 약 1,000 억 개의 세포들과 그것보다 2 내지 3 배 많은 시냅스들을 포함한다. 인간 대뇌 피질의 대부분은 조밀하게 상호 연결된 뉴런들의 층이 많이 모여서 이루어진 것이며, 각각의 뉴런은 적게는 1,000 개에서 많게는 100,000 개의 다른 뉴런들과 연결된다. 두뇌에서 가장 단순한 기능을 수행하는 단위조차도 실제로 한 개의 뉴런이 아니라 기둥 모양을 이루고 있는 4,000 개 이상의 뉴런들의 집합이라는 증거가 알려졌다. 이것은 300 미크론 (역주 : 1 미크론은 100 만 분의 1 미터) 크기의 원통으로, 대뇌 피질 내에서 수직방향으로 6 개의 층을 연결한다. 이러한 원통, 혹은 모듈 (module) 들이 서로 연결됨으로써 두뇌는 하나의 종합 시스템처럼 작동될 수 있다.

"생각하는 기계" 를 옹호하는 주장들의 핵심은, 예를 들어, 앞에서 다루었던 튜링 머신과 같은 유형의 계산 기계들이 두뇌가 할 수 있는 것과 동일한 기능을 수행할 수 있도록 어떻게든지 하여 만들 수 있다는 것이다. 이러한 주장은 우리가 만일 기계가 두뇌의 기능뿐만 아니라, 두뇌의 실제 논리적인 구조까지 흉내낼 수 있도록 할 수만 있다면 말할 수 없이 큰 힘을 얻게 될 것이다. 이제 컴퓨터 과학 사회가 이러한 마술을 성취하기 위하여 시도해 왔는가를 알아보자.

인공 신경망

1943 년, 미국 일리노이 대학교 뇌신경 과학자 워렌 맥컬럭 (Warren McCulloch) 과 시카고 대학교 수학과 대학원생 월터 피츠 (Walter Pitts) 는 "신경계의 동작에 내재된 사고에 의한 논리적 계산" 이라는 제목의 - 새로운 학문분야를 개척하게 되는 - 논문을 발표하였다. 이 논문에서 그들이 내놓은 결론은 놀라울 정도로 간단하다 : 한 뉴런의 동작과 그 뉴런과 다른 뉴런들과의 연결을 - 오늘날 우리가 신경망 (Neural Network) 이라 부르는 것 - 순수한 수학적 논리만으로 모델링할 수 있다. 이 모델에서 하나의 뉴런은, 논리적 추론과정에서 하나의 명제로부터 다른 명제를 추론해내는 것과 동일한 방식으로, 외부의 자극에 의하여 활성화된 후 다른 뉴런을 발화하는 것으로 간주된다. 더군다나, 뉴런과 논리 사이의 유사성은 회로를 통과하는 - 혹은 통과하지 못하는 - 신호라는 전기회로에서 사용하는 용어로 비유할 수 있다. 이제부터 설명하려는 내용은 맥컬럭과 피츠가 창조한 논리적인 구조를 디지털 컴퓨터에 구현하는 것에 기초적인 것에 지나지 않는다. 사실상, 맥컬럭과 피츠가 제안한 것은 뇌 과학자 마이클 아비브 (Michael Arbib) 가 "계산 가능의 생리학" 이라는 용어로 표현한 것과 같은 것으로, 이것은 튜링 머신 프로그램들 각각이 맥컬럭-피츠가 제시한 논리적 뉴런의 유한 연결망을 사용하여 구현될 수 있다는 것을 보여주는 것이다. 이제 맥컬럭과 피츠가 창조한 것이 일반적인 구조에 대하여 간단하게 알아보자. 맥컬럭-피츠의 뉴런은, 예를 들어, m 개의 입력 통로들 ("시냅스") 과 한 개의 출력 통로 ("축색") 로 구성된다. 따라서 이것은 m + 1 개의 숫자로 특성이 규정된다 :뉴런이 "발화" 되기 위한 문턱값 1 개와 m 개의 시냅스에 할당된 가중치. 여기서 가중치들은 입력 통로들을 통해서 해당 뉴런에 전달된 입력 총합을 계산하는데 사용된다. 입력 총합은 각각의 통로로 입력되는 신호를 해당 통로의 가중치에 의하여 편중시킨 후 더한 것이다. (역주 : 편중시킨다는 것은 예를 들어, 가중치가 1 보다 크면 해당 통로로 입력된 신호가 증폭되고, 1 보다 작으면 감쇄되는 것을 말한다. 이렇게 정해지는 입력 총합을 가중 총합 (weighted sum) 이라 부른다. [그림 15] 의 뉴런에 대한 입력 총합을 수학식으로 나타내면, 입력 총합 = x1*w1 +x2*w2 + ... + xm*wm 이다.) 뉴런은 계산된 입력 총합이 문턱값 보다 크면, 다음 시간 단계에 자신의 단일 출력 통로 (축색) 를 통하여 신호를 발화한다. (역주 : 발화한다는 것은 값을 출력한다는 정도로 이해하면 된다. 조금 더 구체적으로 말해서 발화하는 경우는 1 을 출력하고 그렇지 않은 경우는 0 을 출력하는 것으로 이해하면 다음에 설명하는 것을 이해하기에 충분하다). [그림 15] 는 지금 설명한 뉴런을 도식적으로 나타낸 것으로, 여기서 각각의 입력 통로에 할당된 가중치는 wi 로 나타냈으며, 뉴런의 문턱값은 θ 로 나타냈다.

[그림 15]  맥컬럭-피츠 뉴런

신경망은 서로 연결되어있는 맥컬럭-피츠 뉴런들의 층으로 구성된다. 여기서 뉴런은 다음과 같은 세 계층 중에서 한 계층에 속하게 된다 : 입력 계층, 출력 계층, 및 은닉 계층, 입력 계층에 위치한 입력 뉴런들은 외부 세계로부터 정보를 입력받아 그것을 은닉 계층을 위치한 뉴런들에게 전달한다. 출력 뉴런들은 입력에 대하여 출력을 발화하거나 가만히 있음으로써 신경망의 반응을 표시한다. 이러한 발화의 패턴들은 글자나 그림 혹은 개념으로 해석되어진다. [그림 16] 에 나타난 도식은 신경망의 계층을 나타내는 것으로, 여기서 큰 원은 하나의 맥컬럭-피츠 뉴런을 나타내고, 여러 개의 선들은 그것들을 이어주는 시냅스 연결을 나타낸다.

[그림 16]  신경망

신경망의 동작은 이해하기 위해서, 영어 알파벳 문자를 인식하는 신경망을 학습시키는 것에 대하여 알아보자. 우선, 신경망의 출력 패턴 즉, 발화 패턴과 알파벳 문자를 대응시켜야 하므로, 가능한 발화 패턴을 여러 가지 알파벳 문자에 대응시켜 부호화한다. 예를 들어, 출력 계층의 첫 번째 뉴런만이 발화 (1 을 출력) 하고, 나머지 출력 뉴런들은 발화하지 않는 (0 을 출력) 출력 패턴은 문자 A 를 나타내는 것으로 하고, 첫 번째와 두 번째가 발화학 나머지는 발화하지 않는 패턴은 문자 B 를 나타내는 것으로 가정하는 식으로 부호화할 수 있다. 그 다음 디지타이저 태블릿 등과 같은 적당한 컴퓨터 입력 장치를 사용해서 글자를 입력하면, 신경망의 입력 계층 뉴런들에 신호가 전달된다. 입력 계층 뉴런들은 다시 은닉 계층 뉴런들에게 신호를 보낸다. 마지막으로 은닉 계층 뉴런들은 출력 계층 뉴런들에게 신호를 보내고, 결과적으로 신경망의 출력 패턴이 출력 계층에 나타난다. 만일 이 패턴이 입력한 문자에 대응되는 것이면 좋고 ; 그렇지 않으면, 특별한 절차 (역주 : 신경망이 우리가 원하는 패턴을 출력할 수 있도록 가중치를 조정하는 절차를 신경망 학습 알고리즘이라 부르며, 신경망의 구조에 따라 다양한 학습 알고리즘이 존재한다. [그림 16] 과 유사한 신경망에 대한 학습 알고리즘으로 오류 역전파 알고리즘이 가장 유명하다) 를 사용하여 시냅스들의 가중치를 조정하고 지금까지의 과정을 되풀이한다. 최종적으로 출력 게층에 나타난 패턴이 입력한 문자와 일치하도록 가중치들이 조정되면 신경망이 문자를 인식할 수 있도록 "학습" 되었다고 말한다. 어떤 신경망이 예를 들어 문자 A 와 같은 패턴을 인식하도록 훈련되었을 때, 문자를 인식하는데 사용되는 지식이 신경망 전체에 분산되어 있다는 것을 파악하는 것이 중요하다. 기본적으로, 신경망이 가지고 있는 문자 A 에 대한 지식은 모두 시냅스에 할당된 가중치에 귀속되어 있다. 그렇기 때문에 만일 A 와 약간 다른 문자를 신경망에 입력하면, 신경망은 그것이 학습에 사용된 원래의 문자 A 와 유사한 것으로 인식할 수 있다. (역주 : 신경망과는 다른 많은 학습 시스템들은 학습에 사용된 것과 조금이라도 다른 입력에 대해서 아무런 출력도 계산하지 못한다.) 더욱 중요한 것은, 신경망의 인식 능력은 가중치가 조금 수정되면 인식 능력도 조금 수정된다는 것이다. 신경망 가중치가 수정되는 경우는 외부 세계로부터 잡음이 유입된 경우와 연결망을 구성하는 뉴런이 완전히 제거되는 경우가 있을 수 있다. 어떤 뉴런의 시냅스 가중치가 0 이면 그 뉴런이 신경망에서 제거되는 효과를 낳는다.

신경망에 대한 지금까지의 설명은 가장 기본적인 요점만을 간추린 것이며, 두뇌의 실제 구조에 보다 근접하기 위한 아주 많은 이론들이 개발되어 있다. 사실, 지금까지 설명한 것은 "전부 아니면 무" 형식의 발화를 제외하고는 실제 뉴런들의 동작에 대한 모든 사항을 추상적으로 요약한 것에 지나지 않는다. 하지만 가능한 모든 컴퓨터를 흉내낼 수 있다는 것이 이미 증명되었다. 따라서, 신경망은 튜링 머신과 정확하게 동일한 계산 능력을 가지고 있다. 이 놀라운 사실이 시사하는 가장 중요한 요점은 우리가 고도의 세밀함과 복잡합이 내재된 계산을 아주 단순한 요소들로 실현할 수 있다는 것이다. 그리고 그것을 얻는데 있어서 결정적으로 작용하는 요인은 구성요소들의 복잡성이 아니라 구성요소들이 어떻게 서로 연결되었는가 하는 것이다. 간단하게 말해서 구성요소가 아니라 연결이 중요하다.

계산할 수 있는 것은 무엇이든지 계산하고, 패턴을 인식하는 것을 배울 수 있다는 신경망이 가지고 있는 두 가지 기능은, 1950 년대 초반 알란 튜링으로 하여금 우리가 흔히 생각하는 것과 같은 진짜 "생각하는 기계" 를 창조하겠다는 희망을 갖게 한 근원이다. 하지만 이 책의 참고문헌에 인용한 자료를 읽어보면, 튜링의 눈에 섬광처럼 비친 신경망에 대한 심판이 아직 진행 중이라는 것을 알 수 있을 것이다. 이제까지는 우리 두뇌가 어떻게 동작하며 또한 자신이 살고 있는 환경과 관련된 새로운 것들을 어떻게 배우는가에 대하여 알아보았다. 이제부터는 컴퓨터 과학자들이 개체 수준에서의 학습이 아니라 개체들로 구성된 모집단 수준에서의 진화에 의한 학습을 어떻게 모방하여 사용하고 있는가에 우리의 초점을 맞추고자 한다. 진화에 의한 변화가 개체들의 모집단 수준에서만 일어난다는 사실에 주목할 필요가 있다. 우리가 진화 과정으로써의 학습에 대하여 연구하는 경우 개체 자체는 더 이상 의미가 없으며, 집단 내에서 어떻게 변화가 일어나는가에 주목해야 한다.

진화를 구성하는 요소

생존에 있어서 운명의 신이 사용하는 공식은 모집단 내에서 환경에 가장 잘 적응하는 구성원들만이 진화라는 게임에서 승자가 된다는 것이다. 조금 더 간결하게 이 원리를 기술하면 다음과 같다.

    적응 = 돌연변이 + 번식 + 선택

다음은 진화 과정에 대한 신-다윈 이론을 구성하는 이러한 세가지 구성요소에 대하여 조금 더 자세하게 기술한 것이다.

이렇게 단순한 원리에 의해서 오늘날 지구상에 살고 있는 당혹스러울 만큼 다양한 동물과 식물이 생겨난 것으로 여겨진다. 컴퓨터 과학자들은 이러한 진화 과정의 세 가지 구성요소를 추상화하여, 예를 들어 도시 연결망에서 최단 거리를 찾는 것과 같은, 어려운 문제들을 해결하기 위한 수단으로 유전자 알고리즘 (genetic algorithms) 이라는 것을 만들었다. 유전자 알고리즘이 어떤 것인가에 대하여 알아보자.

유전자 알고리즘

[그림 17] 과 같은 미로를 통과해야 하는 로봇이 있다고 가정하자. 특정 단계에 로봇은 뒤쪽 (B), 앞쪽 (F), 오른쪽 (R), 또는 왼쪽 (L) 으로 이동할 수 있으며, 이때 각각의 동작은 다음과 같이 두자리 이진수로 부호화하여 나타낼 수 있다 : B = 00, F = 10, R = 11, L = 01. 해결하려는 문제는 로봇이, 예를 들어 20 단계와 같이, 정해진 단계 내에 출구로 빠져나오는 경로를 찾는 것이다.

[그림 17]  로봇 이동 문제

로봇의 이동 경로 20 단계는 기호 B, F, R, 및 L 로 구성된 길이가 20 인 문자열로 표현된다. 각 기호는 두자리 이진수로 부호화되기 때문에 결국 20 단계 이동 경로는 40 비트 길이의 이진수열로 나타낼 수 있다. [그림 17] 에 이러한 이진수열 일부가 나타나 있다. 이 이진수열은 모집단에 속한 각각의 "개체 (organisms)" 들을 나타내는 "유전자형 (genotypes)" 으로 간주할 수 있으며, 각 개체가 갖고 있는 유전자형은 그 개체가 미로 속에서 어떻게 이동하는가를 나타내는 것이다. 각각의 개체들은 어떤 것이 로봇을 입구에서 출구까지 가장 효과적으로 이동시키는 방법을 표현하는가를 놓고 서로 경쟁한다. 모든 개체의 적합도는, 일단 로봇을 미로의 입구에 갖다 놓고 각 개체의 유전자형에 따라 20 단계를 이동하게 한 후, 최종 위치에서 출구까지 이동하기 위하여 필요한 남은 단계의 수를 계산하여 정한다. 이 값이 작으면 작을수록, 개체의 적합도는 더 커진다. 로봇이 20 단계 이전에 출구에 도달하도록 하는 모든 개체의 적합도는 최대적합도 0 이다. 그렇다면 그런 최적의 적합도를 갖는 이진수열을 어떻게 찾아낼 수 있을까? 가능한 유전자형 공간에서 그렇게 높은 적합도를 갖는 개체를 찾아내는 절차를 만들어냄으로써, 우리는 자연이 행하는 것과 동일한 방법으로 그러한 이진수열을 찾아낼 수 있다. 그 절차가 바로 유전자 알고리즘 (GA) 이다. 유전자 알고리즘의 핵심적인 구성요소는 돌연변이, 유전자 교차, 및 선택이라는 추상화된 자연의 절차다. 기본적으로, 우선은 기존의 유전자형으로부터 새로운 유전자형을 만드는 방법이 필요하고, 다음으로 모집단에 속한 모든 유전자형들의 상대적인 적합도를 계산할 수 있어야 한다. 앞서 언급했던 것처럼, 기존의 유전자형을 변형하여 새로운 유전자형을 만드는 방법은 다음과 같은 두 가지가 있다.

돌연변이와 교차는 유전자 변이라는 생물학적 동작을 흉내낸 것이다. 그렇다면 선택은 어떤가? 컴퓨터 과학자들에게 있어서 이것은 적응에 대한 공식에서 아마도 가장 다루기 쉬운 부분일 것이다. 선택 연산은 단순히 모집단에 포함된 개체들 중에서 다음 세대에 자신의 복제품, 즉, 자식을 남길 수 있는 개체들을 추려내는 것이다. 더 적합한 것이 자식을 생산하도록 선택된 확률이 더 높다. 그것이 전부다. 요약하자면, 전형적인 유전자 알고리즘의 실행과정은 다음과 같다. 풀어야 할 특정한 문제가 주어진 경우, 먼저 정답일 수 있는 후보 해를 0 과 1 의 이진수열로 표현하는 어떤 부호화 체계를 만든다. 그런 다음

단계 2 에서 5 까지의 과정을 한 세대라고 부른다. 보통의 경우 유전자 알고리즘은 100-500 세대 정도를 수행하며, 종료 후 모집단 속에는 대개 한 개 이상의 아주 적합한 개체들이 존재한다. 이렇게 얻어진 후보 해들 중에서 적합도가 가장 높은 것을 원래의 문제에 대한 해로 받아들인다. 예를 들어, [그림 17] 과 같은 로봇 이동 문제에 유전자 알고리즘을 적용하면, 미로의 출구를 실제로 찾아내는 것을 의미하는, 가장 높은 적합도값 0 을 갖는 개체를 금방 찾을 수 있다. 이진수열로 표현된 최적 개체의 유전자형을 복호화하면 미로 속에서 로봇의 이동을 나타내는 기호열 FLRFL ... 을 얻을 수 있다.

우리는 (신경망을 이용하여) 개체로서의 에이전트를 더욱 현명하게 만드는 방법과 (자연선택의 원리를 이용하여) 모집단을 더욱 현명하게 만드는 방법을 알게 되었다. 이제는 이러한 생각들이 실제 세계의 생물학적 개체들을 대신하는 에이전트들로 구성된 컴퓨터 속으로 들어간 세계에서 어떻게 작용하는지에 대하여 알아볼 것이다.

띠에라

1990 년 1 월 4 일은 기억할 가치가 있는 날이다 : 이날은 탄소에 기반하지 않은 최초의 생명체가 미국 델라웨어 대학의 자연과학자 톰 레이 (Tom Ray) 의 컴퓨터로부터 부글부글 끓어 넘친 바로 그 날이다. 말수가 적고, 겸손한 사람인 레이는 지구상에 존재하는 생명체를 다른 것과는 다른 뭔가 특별하게 하는 것이 정확하게 무엇인가를 알아내기 위하여 수년동안 연구를 하였다. 불행하게도 우리의 생물학은 표본이 하나뿐인 과학으로, 아직까지는 지구상의 생명체와 비교할 수 있는 외계 생명체 표본을 가지고 있지 않다. 1990 년까지는 지구상에 존재하는 우리가 익히 알고 있는 생명체에 대하여, 무엇이 생명의 일반적인 성질이고 무엇이 특수한 것인가를 알아내는 수단으로써, 생명의 부수적인 요소와 꼭 필요한 요소를 분리해내는 방법이 없을 것으로 여겨졌다.

최소한 시간이라는 측면에서, 광대한 우주에서 행성들간을 넘나드는 우주 여행이 현실적으로 불가능해 보이기 때문에, 레이는 자신의 컴퓨터 속에 대리 생명체를 만들면 어떨까라는 대담한 발상을 하게 되었다. 과거에 만들어진 유사한 속성을 가진 다른 많은 모델들과는 다르게, 레이는 자연에 존재하는 생명체를 그대로 모방하는 것을 목적으로 하지 않았다. 대신 그는 우리가 주위에서 볼 수 있는 것과는 근본적으로 다른, 완전히 다른 물리학과 화학을 바탕으로 하는, 생명 형태를 창조하는 것을 목적으로 하였다. 다음으로 그는, 그러한 생명 형태 특유의 계통 발생을 유도하기 위하여, 그것들이 그들이 속한 실리콘 환경 속에서 진화할 수 있도록 할 생각을 했다. 그는 이러한 독자적인 생명체가 비교 생물학 연구를 위한 기초로 사용될 수 있으며, 지구 생물학과 관련하여 무엇이 일반적인 것이고 무엇이 특수한 것인가를 연구하는데 밝은 서광을 비출 것으로 기대하였다.

자신의 실험을 구체화하는 시점에, 레이는 생명체를 흉내낸다는 것과 생명체를 합성해 낸다는 것 사이의 근본적인 차이점을 정확하게 인식하고 있었다. 그는 생명체를 합성하기 위하여 자신을 복제할 수 있고 또한 열린 상황에서 진화하는 능력을 갖도록 만들어진 "조상" 생명체에서 시작하기로 마음먹었다. 여기서 열린 상황이란 조상 생명체로부터 새것으로 진화하는 과정이나 만들어진 새것의 구조가 실험자/창조자가 미리 정해놓은 것에서 얻어지는 것이 아니라는 것을 의미한다. 그러기는커녕, 그것들은 진화 과정 자체의 작용을 통하여 어떻게 해서든지 독자적으로 창발될 수 있는 것이다. 레이의 연구 이전에 있었던 진화에 바탕을 둔 프로그램들과 모델들은 이러한 관점에서 열린 상황이 아니었다. 그러한 실험에서는 생명체를 나타내는 유전자형이 미리 정의된 가능한 경우들 중에서 얻어지는 것이었기 때문에, 흥미가 있는 새로운 구조를 생성할 수 있는 잠재력에 심각한 제한이 있었다. 더군다나, 예전의 실험들은 모델을 개발하는 사람이 돌연변이, 교차, 선택, 및 복제에 대한 표준을 개발하여 모델 속에 집어넣은 상황에서 진화가 일어나는 것을 전제로 하고 있었다. 생명에 대한 그러한 방식의 모의실험은 닫힌 상황, 죽은 것이다. 레이가 원하는 것은 열린 상황, 살아있는 환경에서 생명을 합성하는 것이었다. 그는 그러한 혁명적인 사고를 통하여 과거의 실험들이 쏟아지는 항의를 못 이기고 쫓겨 들어간 막다른 골목을 피해가려 했다.

레이가 자기 복제 능력과 열린 진화능력을 갖는 조상 생명체를 어떻게 생성할 수 있었는가에 대해서는 잠시 후에 논의하기로 하자. 일단 그러한 조상 생명체가 만들어지면, 실험의 다음 단계는 그것을 수프 (soup) 라는 환경에 떨어뜨리는 것이다. 그것은 그곳에서 자신을 복제하는 재생산과 새로운 종을 만드는 진화를 시작하는데 필요한 자원을 얻을 수 있다. (역주 : 수프는 통상적 말하는 음식으로써의 국 이외에 생명을 발생시킨 것으로 생각되는 물질의 혼합액을 의미하기도 한다.) 레이는 몇 세대가 지난 후에 자신의 컴퓨터 메모리라는 놀이터에 다양한 여러 전자적 생명체들이 많이 모여서 유쾌하게 떠들어대고, 약 6 억년 전 캠브리아기 동안 지구상에서 다양한 종들이 폭발적으로 출현하였던 것과 같이 다량의 생명 형태가 출현하는 것을 발견할 수 있는 행운이 따르기를 희망하였다. 레이는 자신의 실험적인 세계 (그 세계의 이름은 띠에라 (Tierra) 이고, 그것은 스페인어로 지구를 의미한다) 를 통해서 생명의 기원을 초래하는 절차를 알고자 한 것이 아니라, 캠브리아기에 폭발적으로 생겨난 종들과 같이, 그렇게 엄청나게 다양한 종이 생명체들이 어떻게 적응이라는 단순한 절차에 의하여 생겨날 수 있는가를 알고자 하였다. 이제 레이가 띠에라라는 역작을 어떻게 만들어 냈는지를 알아보자.

디지털 생명체와 실리콘 환경

지구상에 있는 생명체는 유기물질을 만들기 위하여 날마다 태양에너지를 사용한다. 이러한 유기체 형태의 생명체들은 지구라는 물리적인 환경 속에서 활동하며 살아간다. 마찬가지로, 자기-재생산 능력을 지닌 컴퓨터 프로그램 형태인, 띠에라 세계의 생명체들 역시 기계의 기억장소를 조직하기 위하여 컴퓨터 중앙처리장치를 사용한다. 자연에서 유기체로서의 생명체는 음식, 은신처, 짝짓기 등 자연 선택이 작용하는 모든 것들을 대상으로 경쟁하면서 진화한다. 모집단 구성원 중에서 환경에 보다 적합한 개체는 더 많은 자식을 생산할 수 있으며 결과적으로 시간이 흘러감에 따라서 자신의 유전자형 즉, 자신과 비슷한 개체를 더 많이 퍼뜨릴 수 있다. 반면에, 덜 적합한 개체는 더 적은 자식을 생산할 것이고 결과적으로 그들의 유전자형은 모집단 내에서 서서히 줄어들어 마침내 소멸해 버리고 만다. 띠에라 세계에서, 디지털 생명체들 역시 중앙처리장치와 기억장소를 놓고 서로 경쟁하는 자기-재생산 프로그램으로서 동일한 과정을 거치며 살아간다. 이러한 프로그램/생명체들은 진화를 통하여 다른 프로그램/생명체들을 착취하는 전략들을 개발한다. 이 전략이란 다음 세대에 자신의 복제품을 더 많이 남기기 위하여 중앙처리장치를 더 오래 사용하고 기억장소를 더 많이 차지하도록 하는 프로그램이다. 이제 디에라 세계의 피조물들이 도대체 무엇이고, 실리콘 속에서 진화가 어떻게 일어나는가에 대하여 좀더 자세하게 알아보자.

띠에라에서, 컴퓨터 중앙처리장치와 기억장소는 진화라는 절차가 진행되는 물리적인 환경 혹은 경기장에 해당된다. 띠에라 세계의 생명체는 저급 프로그래밍 언어로 작성된 자기-복제 능력을 가진 컴퓨터 프로그램이다. (역주 : 모든 컴퓨터에 있어서 컴퓨터가 실제로 실행할 수 있는 프로그램은 0 과 1 의 조합 즉, 이진수열로 표시되는 기계어뿐이다. 그러나 사람들이 그것을 사용하기가 불편하기 때문에 상징적인 기호를 사용하는 어셈블리어를 만들었다. 이 언어는 앞에서 코어워를 설명할 때 사용한 명령어와 같은 형태이다. 기계어와 어셈블리어는 컴퓨터 하드웨어와 직접 관련되기 때문에 저급 언어라 부른다. 반면에 자연어에 보다 가까운 프로그래밍 언어들은 고급 언어라 부르며, 사용하기 편리한 대신 컴퓨터 하드웨어를 직접 조작하기가 어렵다.) (기술적인 측면 : 실제로 이 프로그램들은 0 과 1 의 조합으로 표현되고 모든 컴퓨터가 실행할 수 있는 기계어보다 한 단계 진보된 언어인 어셈블리어로 만들어진다. 생물학적 관점에서 보면, 이러한 저급 언어의 명령어는 모든 생명체의 모든 단백질을 구성하는 물질인 아미노산에 비유될 수 있다.) 따라서, 띠에라에서도 동일한 구조가 유전 정보를 나타내는 동시에 생명체의 신진대사 활동을 실행하는 것이기 때문에, 띠에라인은 RNA 세계에 사는 피조물에 대한 디지털 판이다. 이것은 이러한 두 가지 기능이 DNA/RNA 와 단백질이라는 각각 다른 구조에 의해서 처리되는 DNA 에 기반한 현대의 생명체와 대조되는 성질이다.

디지털 생명체들이 그들이 거주하는 실제 컴퓨터 하드웨어에 접근하는 것을 막기 위해서, 레이는 전체 띠에라 시스템을 물리적인 컴퓨터 내부의 "가상 컴퓨터" 에서 실행되도록 만들었다. 즉, 실제 컴퓨터 내부에 띠에라 세계의 주인 노릇을 하는 컴퓨터를 소프트웨어로 흉내내도록 만들었다. 다르게 말해서, 레이는 물리적인 하드웨어 장치에서 실행되는 명령어를 흉내낸 소프트웨어 명령어 집합을 만들었다. 실제 세계에서 사용되는 컴퓨터 입장에서 보면, 띠에라 생명체는 워드프로세서나 그래픽 패키지 혹은 스프레드시트 프로그램으로 만든 데이터와 하나도 다를 것이 없는 그저 단순한 데이터에 지나지 않는다. 띠에라를 가상 컴퓨터 환경에서 실행해야 하는 이유는 많이 있지만, 가장 중요한 이유는 컴퓨터 바이러스처럼 자기 복제 능력을 갖는 띠에라 생명체가 이 컴퓨터에서 저 컴퓨터로 옮겨 다니며 자신을 복제해서 결국 컴퓨터 네트워크를 감염시키는 것을 막기 위해서다. 이것들을 가상 컴퓨터 속에 가두어 둠으로써, 이 이상한 피조물들이 실제 컴퓨터에서 꿈틀꿈틀 기어 나와 실제 세계에서 잘못을 저지르지 못하도록 할 수 있다. 띠에라를 가상 환경에서 구현하는 다른 이유로는, 띠에라라는 세계를 특정한 컴퓨터 하드웨어로부터 독립시키려는 욕구는 말할 것도 없고, 실제 컴퓨터에서 실행될 수 있는 프로그래밍 언어가 지독하게 "부서지기 쉽기" 때문이라는 점을 들 수 있다. 즉, 새로운 프로그램을 만들기 위하여 기존의 프로그램을 조금만 수정해도 컴퓨터가 멈추어 버린다. (역주 : 진화를 위해서는 돌연변이나 교차와 같은 유전 연산을 적용해서 부모를 수정해야만 한다. 항상 부모와 완전히 동일한 자식만 만들어진다면 진화는 없다. 그런데, 띠에라 생명체는 자체가 프로그램이며, 일반적으로 실행이 가능한 상태의 컴퓨터 프로그램은 조금만 명령어가 달라져도 실행이 불가능한 상태가 되거나, 실행 도중에 컴퓨터가 멈춰 버린다.) 따라서, 진화를 염두에 두고 만든 가상 명령어를 실행하는 가상 컴퓨터를 사용함으로써, 이러한 어려움을 피해갈 수 있다. 띠에라의 가상 컴퓨터 운영체제는 생명체들과 대화를 나누고, 중앙처리장치를 사용할 권한을 넘겨주며, 기억장소를 배치하는 등 디지털 생명체가 살아가는 환경의 운영에 대한 모든 것을 처리한다. 그리고 띠에라에 거주하는 생명체들은 자신들에게 유리하게 작용되는 운영체제의 특성을 찾아내는 방향으로 진화한다.

띠에라 운영체제의 주요한 동작들은 다음과 같다.

기억장소 할당 (세포질)

띠에라인들이 살아가는 가상 컴퓨터가 저장된 실제 컴퓨터의 기억장소 블록을 "수프" 라 부르기도 하자. 그것은 약 60,000 바이트의 기억장소를 차지한다. 그리고 띠에라에 살고 있는 거주자들은 이러한 수프 속에서 약간의 기억장소 블록을 차지한다.

실세계 생명체들의 순수성을 유지하기 위해서 진화는 세포라는 생명의 기본 단위를 반침투성 보호막으로 둘러싸는 것이 유용하다는 것을 알아냈다. 디지털 생명체들 역시 다른 것들로부터 쉽게 더렵혀지는 것을 막기 위하여 실제 세포의 세포막에 대응되는 무엇이 필요하다. 띠에라인들은 현재 자신이 차지하고 있는 기억 장소 블록에 자신만이 무엇인가를 저장할 수 있는 특권을 부여받는 방식으로 그러한 의미의 보호를 받는다. 따라서 띠에라 피조물들은 다른 생명체의 구조를 들여다볼 수 있고, 심지어 다른 개체의 코드를 실행할 수도 있지만 오직 자기 자신만이 자기의 구조를 수정할  수 있다.

복제 과정에서 띠에라인이 분할될 때, 부모 세포는 자식 세포가 차지하는 공간에 무엇을 저장할 권한을 갖지 못하지만, 부모 세포는 다음 복제를 위하여 또 다른 기억장소 블록을 사용할 수 있다. 복제 시점에 자식 세포는 자신의 기억장소를 할당받으며, 자신의 복제를 위하여 자신만의 또 다른 기억장소 블록을 자유롭게 사용할 수 있다.

시간 분할 (절단기)

띠에라 모집단 내 각각의 구성원들이 다른 것들과 동시에 자신의 작업을 수행할 수 있도록 하기 위해서, 띠에라 운영체제는 이상적으로 병렬로 수행되어야 한다. 실제 컴퓨터이든 가상 컴퓨터이든 지금의 순차 처리 기계를 가지고는 엄격하게 이것을 실현할 수 없다. 그러나 각각의 피조물들에게 중앙처리장치를 작은 시간 간격동안 차례로 사용할 수 있도록 나누어주는 멀티타스킹 (역주 : 중앙처리장치가 1 개인 컴퓨터-우리가 흔히 보는 컴퓨터는 모두 중앙처리 장치가 1 개다- 는 원칙적으로 한 시점에 1 개의 작업만을 처리한다. 그러나 각각의 작업이 아주 짧은 시간 간격동안 중앙처리장치를 번갈아 가며 사용하도록 할 수 있다. 그 간격이 너무도 짧기 때문에 사람들은 여러 개의 작업이 동시에 실행된다고 착각한다. 그러한 기법을 멀티타스킹 (multitasking) 이라 부르며 오늘날 우리가 사용하는 컴퓨터 운영체제는 대부분 이것을 지원한다) 환경에서 운영체제는 병렬처리를 훌륭하게 수행할 수 있다. 이 시간간격이 띠에라 생명체가 실행되는 시간보다 상대적으로 짧을수록, 이러한 시간 분할 방식은 진정한 병렬처리를 훌륭하게 흉내낼 수 있다.

중앙처리장치를 사용할 수 있는 시간간격은 그 생명체가 가지고 있는 프로그램 코드의 크기 (전체 명령어의 개수) 와 관련되어 결정된다. 코드 길이가 긴 큰 생명체에게 길이가 작은 생명체 보다 더 긴 중앙처리장치 사용시간을 할당할 수도 있고, 반대로 더 작은 사용시간을 할당할 수도 있다. 이것은 가중치 요소를 1 보다 크거나, 같거나, 혹은 작게 함으로써 조정된다. 가중치 요소가 1 인 경우에 시간 절단기는 생명체 코드의 길이에 무관하게 중앙처리장치 사용시간을 할당한다. 반면에, 이 요소가 1 보다 작은 (큰) 경우는 크기가 작은 (큰) 생명체에 더 많은 중앙처리장치 사용시간을 할당한다. 이 매개 변수는 자연선택이 생명체의 크기에 영향을 받는지 아닌지를 확인하기 위해서 사용한다.

불멸성 (죽음의 신)

자기 복제능력을 갖는 개체들로 구성된 모집단의 경우, 수프로부터 생명체를 제거하는 죽음이라는 장치가 없다면, 유한한 그 세계는 결국 생명체들로 가득 차 버릴  것이 분명하다. 띠에라에는 죽음의 신이라는 장치가 있다. 죽음의 신은 수프 내의 개체수가 일정한 수준, 대개 약 80 퍼센트, 이상에 도달하면 생명체들을 수프에서 제거하기 시작한다. 죽음을 맞이한 생명체는 자신이 사용하던 기억장소를 반납하고, 절단기 및 죽음의 신의 통제 대상에서 제외된다. 그렇지만, 죽은 생명체의 코드는 수프에서 지워지지 않는다. 이것은 띠에라에 살아남은 다른 생명체들이 나중에 죽은 코드를 자신들의 이익을 위해서 사용할 수 있다는 것을 의미한다. 생물학적으로, 이것은 같은 세대 생명체들이 진화에 있어서 최상의 상태를 유지할 수 있도록 하는 일종의 유전자 보관소 역할을 한다. 죽음의 신은 새로운 피조물이 탄생하면 그것을 큐 (queue) 의 밑바닥에 위치시킨다. 그리고 매 단계마다 큐의 꼭대기에 위치한 피조물을 죽인다. (역주 : 큐는 특별하게 동작하는 기억장소로서 무엇인가를 이곳에 저장할 때는 항상 밑바닥에 위치시키고, 이곳에서 무엇인가를 꺼낼 때는 항상 꼭대기에서 꺼낸다. 따라서 큐라는 형태의 기억장소에서는 가장 먼저 들어간 것이 가장 먼저 나온다. 이것은 마치 뷔페 식당에서 먼저 들어온 사람이 먼저 음식을 먹거나, 은행에서 먼저 들어온 고객이 먼저 서비스를 받는 것과 같다. 따라서, 새로 생성된 생명체가 큐로 들어가면 그것은 현재 큐에 있는 생명체들 중에서 가장 나중에 죽는다. 그렇지만 인간들이 경우에 따라서는 새치기를 하거나 특별한 사정에 의하여 양보를 받아 순서를 바꾸는 것처럼 큐에 저장된 것들도 내부적으로 순서를 바꿀 수 있다. 하지만 들어가는 위치와 꺼내는 위치는 변하지 않는다.) 띠에라 생명체들은 명령어를 얼마나 성공적으로 실행하느냐에 따라서 큐 안에서 위 혹은 아래로 이동할 수 있다. 특히, 어떤 피조물이 실행한 명령어가 오류를 일으키는 경우, 큐 안에서 이 피조물 바로 위에 있는 것이 더 많은 오류를 축적하지 않은 한, 이 피조물은 위로 한 단계 이동한다. 반면에, 어떤 피조물이 보통의 경우 오류를 일으키는 어려운 명령어를 성공적으로 실행하면, 그것은 앞에서와 같은 조건 즉, 바로 아래에 있는 생명체가 일으킨 오류의 양에 따라서 큐의 아래로 이동한다. 결국 죽음의 신은 근본적으로 결함이 있는 프로그램을 큐의 꼭대기로 밀어 올려 죽여 버리는 역할을 한다. 반면에 결함이 없는 좋은 프로그램은 오래도록 장수한다. 그렇지만, 결국은 모든 생명체들이 나이를 먹어감에 따라 죽을 가능성이 높아지는 것은 사실이다.

변이성 (돌연변이기)

피조물의 게놈을 수정하는 방법과 이렇게 수정된 것을 자손에게 물려주는 방법이 존재하지 않는다면, 진화는 일어날 수 없다. 띠에라에서는 두 가지 상이한 방법으로 게놈이 수정된다.

첫 번째 방법은 생명체 자체에서 무작위 적으로 발생하는 돌연변이다. 생명체 프로그램을 나타내는 이진수열 내의 비트들을 어떤 정해진 비율 (예를 들어, 100,000 개 명령어 수행마다 1 비트의 비율) 에 따라 0 은 1 로 1 은 0 으로 무작위 적으로 바꾼다. 이것은 실제 세계의 DNA 가 우주에서 날아오는 전자파에 의하여 돌연변이 되는 것과 유사한 것이다. 비트 맞바꾸기는, 결과적으로 모든 피조물들이 이 절차에 의하여 자신의 코드 일부를 수정하여 더 이상 생존할 수 없는 형태로 돌연변이 되게 함으로써, 어떤 피조물이 영원히 죽지 않는 것을 막는 효과를 가지고 있다. 생명체 내부에서 일어나는 무작위 적인 돌연변이 외에, 낮은 비율이기는 하지만 불완전한 복제 과정이 원인이 되는 돌연변이도 있다. 이러한 낮은 빈도의 무작위적 돌연변이 때문에, 띠에라 피조물의 동작은 완전히 결정적이 아니고, 예측할 수 없게 변한다.

이제 띠에라라는 세계의 모든 조각들이 제자리를 찾았다. 우리는 공간적인 환경 (기억장소) 과 에너지원 (중앙처리장치), 이러한 자원을 생명체에 할당하는 방법 (절단기), 유한한 세계에서 모집단의 크기를 유한하게 유지하는 방법 (죽음의 신), 그리고 진화 기구 (돌연변이기) 에 대하여 알았다. 빠진 것이라고는 수프 속으로 떨어져 진화과정을 시작하는 최초의 조상에 해당하는 생명체, "원형 Urtyp", 뿐이다. 띠에라 세계의 조상을 생성하기 위해서, 톰 레이는 그가 평생동안 줄 곳 사용해왔던 어셈블리 언어 프로그램을 작성하였다. 이것은 전혀 환상적인 것이 아니다 ; 단지 80 개의 명령어로 구성된 자기 복제능력을 가진 프로그램일 뿐이다. 레이는 당초에 이 조상 생명체를 자신의 시스템을 디버깅 (역주 : 컴퓨터 프로그램의 오류를 수정하는 것을 디버깅이라 부른다.) 할 때 사용할 목적으로 만든 것이다. 따라서 이것은 자기 복제 능력 외에는 아무런 기능적 특징도 가지고 있지 않은 것이다. 1990 년 1 월 3 일, 그 마술과도 같은 날 저녁, 레이는 그 조상을 수프 속에 떨어뜨렸으며 그리하여 띠에라가 탄생하였다. 어떤 일이 일어났을까?

진화와 대도시 "E"

다음날 아침, 잠에게 깨어난 레이가 띠에라를 들여다보았을 때, 놀랍게도 그는 자신이 창조한 전자 세계에서 눈부시게 반짝거리며 활동하는 현란한 생명체들이 문자 그대로 풍부하게 우글거리는 것을 발견하였다. 그것은 마치 지구상에서 30 억년 이상의 장대한 진화과정이 지난 후에야 일어났던 캠브리아기 대폭발이 불과 수 시간만에 일어났음을 시사하는 것이다. 간단하게 요약하자면, 레이는 띠에라 가상 컴퓨터 속에서 5 억 2 천 6 백만 개의 명령어들이 실행되고 난 후에 프로그램의 크기가 서로 다른 366 가지 부류에 속하는 수많은 생명체들이 헤엄치며 돌아다니는 것을 발견하였으며, 그중에는 5 개 이상의 개체들을 포함하는 부-모집단이 93 개가 있었다. 성적 재결합이 허용되는 경우 다른 크기를 갖는 생명체끼리 유전자를 재결합한다는 것이 매우 어렵기 때문에, 생물학적으로 해석하자면 그러한 상이한 크기로 구성된 생명체 집단은 종에 해당하는 것으로 볼 수 있다. 그러나 이러한 종의 무리들 모두가 진화에 의하여 띠에라해변으로 밀려온 것은 아니다.

최초의 조상과 크기가 다르지 않은 단순한 돌연변이체 이외에, 수프에는 기생충이라고 설명할 수밖에 없는 개체들도 포함되어 있다. 이것들 역시 부모 생명체의 복제 과정을 통하여 생겨난 돌연변이들이므로 생명체인 것은 분명하지만, 이것들은 자신을 복제하는 명령어를 가지고 있지 않다. 따라서, 그러한 생명체들은 수프 속에 있는 다른 숙주 생명체가 가지고 있는 복제 명령어를 읽어 들인 후, 그 명령어를 사용해서 자신의 복제물을 만들 수밖에 없다. 공짜로 얻어 먹는 식객 (혹은 기생충) 같은 이러한 생명체들은, 크기가 작아서 자식을 생산하는데 필요한 자원이 적기 때문에, 복제 명령어를 가지고 있는 개체들보다 더 자주 자신을 복제할 것이다.

[그림 18] 은 숙주 집단과 기생충 집단 사이에서 벌어지는 진화적 군비 경쟁을 보여주는 것으로, 각각의 그림은 60,000 바이트 크기의 수프를 1,000 바이트 크기를 갖는 60 개 구간으로 나눈 경우의 컴퓨터 기억장소 지도를 나타내는 것이다. 좌측 상단 그림의 경우 대부분은 숙주 (붉은색) 들이고 기생충 (노란색) 들은 이제 막 출현하기 시작한다. 우측 상단의 그림에서는 이제 기생충들이 대부분의 영역을 차지하고 있으며 드물게 숙주들을 발견할 수 있다. 그리고 비록 드물기는 하지만 기생충에 면역이 생긴 숙주 (파란색) 들이 출현하기 시작한다. 좌측 하단의 그림을 보면 면역이 된 숙주들이 기생충들을 기억장소 위쪽으로 몰아내고 기억장소의 상당 부분을 차지하고 있음을 알 수 있다. 마지막으로 우측 하단의 그림을 보면, 면역이 된 숙주들이 거대 모집단으로 구성한 반면에 기생충이나 의심이 가는 숙주들이 많이 사라져 버렸음을 알 수 있다. 현재의 기생충들은 머지 않아 멸종되어 버릴  것이다.

[그림 18]  띠에라에서의 종의 창발 (컬러 사진 10)

"젖은-생명" 으로 구성된 실세계에서의 진화와 마찬가지로, 띠에라 생명체들 역시 결국은 그러한 기생충들에 면역이 된 피조물을 생성하는 방법을 알아냈다. 여기서 띠에라 세계에서 면역이 어떻게 생겨나는가에 대한 정확한 체제를 설명하기는 다소 어렵다. 하지만, 그것은 기생충의 크기와 기생충들이 훔쳐서 사용하려는 복제 명령어를 가지고 있는 피조물들의 크기와 관련이 있다. 만일 이러한 두 개체의 크기가 크게 다르면, 갑자기 기생충들이 혼란에 빠지기 시작한다. 그리고 기생충들을 멸종시키는 초기생충이 자연스럽게 생겨난다는 것이 밝혀졌다. 일정한 시간이 경과하고 나면, 띠에라 세계는 사회 조직을 진화하기 시작하는데, 이 조직은 상대적으로 높은 수준의 유전적 동질성을 갖는 사회로 구성된다. 즉, 개체와 사회 사이에 높은 수준의 유전적 관련성이 있는 것이다. 이제 독자들도 띠에라에 대하여 나름대로의 생각을 갖게 되었을 것이다. 우리가 자연의 진화에서 볼 수 있는 모든 특징들과 지구상에 존재하는 생명체가 보이는 모든 유형의 기능적 행위가 띠에라에서도 역시 발견된다. 뿐만 아니라, 생물학적 시스템에 잘 기록되어 있는 진화의 흔적 즉, 복잡성의 증가에 대한 기록 역시 진화된 생명체의 고도로 복잡한 동작에서 찾을 수 있다. 띠에라에서, 처음에는 다른 것들과 아무런 상호작용을 하지 않는 생명체들이 나중에는 다른 것들을 착취하는 방법뿐 아니라 다른 것들로부터 착취당하지 않는 방법까지 발견해 낸다. 2 장에서 논의했던 브라이언 아서의 주식시장 중개자와 마찬가지로, 띠에라 속의 피조물들 역시 게임 속 다른 선수들의 도전을 극복하고 진화를 계속해야 한다는 것을 배운다. 따라서, 끊임없이 변하는 환경 속에서 살아 남는 한가지 최상의 방법이라는 것은 존재하지 않는다. 변화는 게임의 또 다른 이름이다.

1996 년에 벨 연구소의 앤드류 파겔리스 (Andrew Pargellis) 가 수프에 최초의 조상에 해당하는 씨앗을 넣지 않고서 생명 형태들의 생태계를 만들었다는 것은 매우 흥미로운 사실이다. 파겔리스는 자신의 실험에서 컴퓨터 프로그램 코드 조각을 무작위로 조합하여 결국 자기 - 복제 능력을 갖는 개체를 만들었다. 그 이후부터는 표준적인 진화 알고리즘을 적용하여, 아주 많은 상이한 생명-형태들을 창조하였다. 파겔리스가 아메바 (Amoeba) 라고 부른 이 세계에 대하여 자세하게 알고싶은 독자는 참고문헌에 인용된 자료를 참고하기 바란다.

띠에라에 대한 이야기를 마치기전에 톰 레이의 실험이 한 대의 컴퓨터만을 사용한 것이라는 점을 지적하고자 한다. 한 컴퓨터의 중앙처리장치와 기억장소는 결국 띠에라 세계를 제한하기 때문에, 거기에서 진화한 피조물 역시 그러한 하드웨어적인 제한에 의하여 어떤 방식으로든 하정되었음이 분명하다. 레이는 최근에 독자들이나 내가 사용하고 있는 컴퓨터의 휴식중인 자원을 전체 띠에라 자원의 일부분으로 사용하는 방식으로 띠에라를 인터넷상에서 실행하자고 제안하였다. 일단 레이가 자신의 디지털 "야생의 바다" 에 컴퓨터 자원을 기증하겠다는 지원자를 충분히 확보하면, 그는 자신의 프로그램을 그들에서 보내 널리 퍼뜨릴 것이다. 그는 엄청나게 많은 시간과 에너지 자원이 부여되는 이러한 띠에라 세계에서는, 한 대의 컴퓨터가 제공하는 상대적으로 단순한 환경에 비하여, 최초의 조상에서 생겨나는 자식들이 생존과 재생산에 대한 훨씬 다양한 전략들을 구사할 것으로 기대하고 있다.

앞서 언급했던 것처럼, 띠에라 생명체는 유전적으로 밀접하게 관련되어 있는 생명체들의 모임들로 구성된 사회 구조와 비슷한 어떤 것을 진화한다. 그러나 사회의 수준을 결정하는 특성에는 단순한 유전적 관련성 이외에 거래, 이민, 문화 등과 같은 다른 많은 것들이 포함된다. 컴퓨터 속으로 들어간 세계에 대한 마지막 예로 슈거스케이프 (Sugarscape) 라는 세계에 대하여 알아보자. 이 세계에서는 문화적 특성이 일차적인 흥미의 대상이다.

실리콘 속 사회

800 여년 전에 번성했던 미국 남서부 토속 문화 아나사지 (Anasazi) 는 고고학자들에게 중대한 수수께끼로 간주되어왔다. 그들은 아나사지 같이 크게 번성했던 문명이 어떻게 거의 하룻밤만에 사라져 버릴 수 있었는지에 대하여 의문을 갖게 되었다. 비록 당시의 기후 패턴, 곡물 생산량, 및 다른 환경적인 조건에 대한 많은 요소들 중에서 한 두 개를 변경해가면서 그것이 아나사지에서 일어난 집단 아주 행위에 어떻게 작용하는가를 반복적으로 실험할 수 없기 때문에, 이 수수께끼에 대한 답은 사람들의 눈을 잘 피해왔다. 이것이 사회 현상을 연구하는 사람들이 기본적으로 안고 있는 딜레마다 : 역사란 단 한번만 실행되는 실험이다. 그렇지 않은가? 예를 들어, 만일 남부 연방이 미국 남북 전쟁에서 이겼다면 어떤 일이 벌어지며, 1973 년에 원유 가격이 4 배가 아니라 2 배로 인상되었더라면 어떤 일이 발생했을지를 결정할 수 있는 환경을 컴퓨터 내부에 만들어 넣을 수 있을까? 미국 워싱턴 시에 있는 부루킹 연구소의 두 연구원 조슈아 엡스타인 (Joshua Epstein) 과 롭 엑스텔 (Rob Axtell) 은 그것이 가능하다고 생각했다. 자연 과학자들이 물리적이며 공학적인 시스템에 대한 이론을 이해하고 생성하기 위하여 사용하는 반복적으로 되풀이할 수 있고 통제가 가능한 그런 유형의 실험이 되도록 하기 위해서, 엡스타인과 엑스텔은 끊임없이 변하는 환경, 상호작용하는 에이전트들, 그리고 간단한 생존 규칙을 따르는 환경을 생성하여 그야말로 무에서부터 질서가 있는 사회를 "성장" 시키기로 작정하였다. 거래, 경제, 및 문화와 같은 모든 사회 구조는 에이전트들의 상호작용에 의하여 진화한다. 엡스타인은 사회와 관련된 문제에 대하여 "그것은 풀 수 없다, 그것을 진화시켜라" 라고 말했다. 엡스타인과 엑스텔은 사회가 진화하는 그들의 실험실을 컴퓨테라리움 (CompuTerrarium) 이라고 불렀다. 그것이 어떻게 동작하는가에 대하여 알아보자.

상호작용하고 있는 에이전트들 각각은 그들이 거주하는 풍경 위에 슈거스케이프 (역주 : 설탕이 있는 풍경 혹은 세계 정도의 의미를 갖는다) 라 부르는 색깔이 있는 한 개의 점으로 표현된다. 풍경 속의 모든 위치에는 설탕이라 부르는 식량 자원이 시간에 따라 농도가 변하며 흩어져 있다. 각각의 개체는 고유한 특성들을 가지고 있다 ; 그것들 중에서 성별, 음식 탐지를 위한 시계, 및 신진 대사율 등을 포함한 일부는 고정된 것이고, 건강, 혼인 여부 및 재산과 같은 다른 것들은 가변적이다. 이러한 에이전트들의 행동은 생존과 교배에 관한 지극히 상식적인 것에 지나지 않는 극도로 단순한 규칙들에 의하여 결정된다. 대표적인 규칙들은 다음과 같다 :

이러한 기본적인 규칙들만을 사용하더라도, 이상하고 야릇한 일들이 일어나기 시작한다. 다음 [그림 19] 는 대표적인 시나리오를 보여주는 것으로, 여기서 설탕은 슈거스케이프 위에 노란색으로 표시된 것들이다. 시작단계에 에이전트들은 풍경 위에 무작위 적으로 분산되는데, 붉은색 점들은 멀리 떨어진 곳에서도 먹이를 잘 발견할 수 있는 에이전트들을 나타내고 있으며, 푸른색 점들은 근시적인 개체들을 나타내고 있다. 다른 고려사항이 주어지지 않는다면 자연 선택이 시간이 경과하면서 더 잘 보는 쪽에 우호적으로 작용할 것으로 예상하는 것은 아주 합리적인 판단이다. 모집단 내에 붉은색 에이전트들이 우위를 차지하고 있는 가운데 그림에서 볼 수 있듯이 실제로 그렇다. 그러나 에이전트들에게 설탕이라는 재산을 자신의 자손들에게 넘겨줄 수 있는 능력을 부여하고 실험을 다시 수행하면, 상속이라는 것이 생존에 두드러지게 영향을 준다는 것을 발견할 수 있다. 세 번째 그림에 이것이 잘 나타나 있다.

[그림 19]  슈거스케이프에서의 진화 (컬러 사진 11)

이 그림을 보면 근시 에이전트들이 그들의 부모로부터 물려받은 설탕을 이용하여 더 많이 살아 남아있다는 것을 알 수 있다.

비록 이 간단한 예가 컴퓨테라리움의 동작을 잘 보여주기는 하지만, 사회 구조를 연구하고 그것에 대하여 생각하는 방식에 어떤 혁신을 주지는 않는다. 그렇기 때문에 시스템에 더 많은 호각과 방울을 추가할 필요가 있다. 엡스타인과 엑스텔은 이것을 정확하게 실행하였다. 그들이 양념을 추가하여 설탕의 농도가 시간에 따라 주기적으로 변하게 하자, 에이전트들이 다른 곳으로 이주하기 시작하였다. 그리고 두 번째 양념이 추가되었을 때는 초기 형태의 형제가 출현하였다. 추가된 양념은 다음과 같은 새로운 기본 규칙을 가능하게 한다 : "나에게 필요한 물자를 가지고 있는 이웃을 찾는다. 서로 만족할 만한 가격에 도달할 때까지 이웃과 흥정을 한다. 그리고 그 가격으로 거래를 한다." [그림 20] 은 이러한 유형의 무역 경제를 보여준다. 첫 번째 그림에서, 에이전트들은 설탕과 양념을 가리지 않고 단순하게 이리저리 헤매며 먹이를 찾고 있다. 두 번째 그림에서는 무역이 시작됨으로써 발생한 효과를 볼 수 있다 : 많은 에이전트들이 번성하고 있다. 마지막으로, 세 번째 그림은 무역이 중단된 효과를 나타내고 있다. 무역이 허용되지 않았을 때, 많은 에이전트들이 생존할 수 없었다. 아주 놀랍게도, 이런 기초적인 교환-방식 경제가 모든 경제학에서 가장 신봉되는 이론인 효율적인 시장 가설을 평가하는 실험을 수행하기에 충분한 구조를 제공한다.

[그림 20]  슈거스케이프에서 무역의 효과

효율적인 시장

교과서에 나와있는 고전 경제학적 사고에 따르면, 모든 에이전트들이 자신의 선호도를 바꾸지 않고 또한 자신의 시장과 관련하여 상품의 수요와 공급에 대한 확보된 정보를 모두 처리할 수 있을 만큼 충분히 오래 살 수 있는 그런 경제에서, 가격은 모든 상품에 대한 평형 수준으로 고정되어 정해진다. 다르게 표현하자면, 시장에서 균형이 맞지 않는 모든 가격은 빠르게 조정이 될 것이라는 것이다. 이것은 모든 확보된 정보는 즉각적으로 상품의 가격으로 융합된다고 말하는 효율적인 시장 가설의 다른 변형이다. 만일 예를 들어 설탕이 부족하게 되면, 이 사실은 빛의 속도만큼이나 빠르게 퍼져나가 즉각적으로 설탕의 가격을 치솟게 할 것이다. 우리는 컴퓨테라리움을 사용하여 이 가설을 평가해 볼 수 있다.

[그림 21]

이 가설을 평가하기 위해서 가장 먼저 해야 할 것은 에이전트들에게 전통적인 경제학에서 가정하고 있는 개체 선호도의 불변성과 무한의 정보처리 시간 사용이라는 특성을 부여하는 것이다. 그러면 전통적인 이론에 의하여 설탕과 양념의 거래에 있어서 상품의 가격은 단일 가격으로 고정될 것으로 예상되며, [그림 21] 의 (A) 와 같이 실제로도 그렇게 된다. 이 실험의 나머지 절반은 시스템을 처음의 상태로 다시 설정하고, 에이전트들에서 사람이 가진 특성을 부여하여 실험하는 것이다.  사람이 가진 특성이란 유한한 시간, 기호를 바꾸는 능력, 자신과는 다른 기호를 갖는 자식을 생산할 가능성 등이다. 이러한 한층 더 실제적인 가정들 아래서, 가격은 그림 (B) 에서 볼 수 있듯이 대체로 무작위 적인 방식으로 움직인다. 보다 현실적인 두 번째 경제 모델에서, 거래 가격은 결코 일정한 수준으로 안정된 값으로 고정되지 않고, 오히려 - 완전하게 그런 것은 아니지만 - 무작위 적으로 움직이는 것처럼 보인다. 비록 무작위 적인 가격 변동이 모두 일정한 가격 수준 주위에서 요동치고 있다는 것을 알 수 있다. 그 가격 수준은 효율적인 시장 가설의 뿌리가 되는 이상적인 가정아래서 얻을 수 있는 가격의 평형 수준과 정확하게 일치한다. 이런 사실은 효율적인 시장은 좀더 실제적인 시장에 대한 제한된 변형이라는 것을 강하게 암시하는 것이다. 여기서 더 실제적인 시장이란 고전 경제 이론에서 사용하는 La-La-Land (역주 : 이상적인 세상, 혹은 상태, 즐거운 장소, 자기 뜻대로 돌아가는 장소나 상황을 말한다.) 가정을 약화시킨 것들이다. 추측컨대, 가정들이 더 현실적일수록 효율적인 시장에서의 가격 수준보다 더 심한 가격 변동이 발생할 것이다. 엡스타인은 "에이전트들이 교과서적이지 않다면 - 에이전트들이 다소라도 사람과 같다면 - 그것은 반드시 그렇게 동작한다고 경제학 교과서들에 나와있는 것처럼 시장이 동작할 것이라고 가정할 아무런 이유가 없다" 고 말했다. 컴퓨테라리움을 가지고 우리가 연구해 볼 수 있는 사회경제학적 행위에 대한 이론들은 효율적인 시장에 대한 것만이 아니다.

경제 활동과 관련된 다른 기본적인 의문점은 "환경에 대한 조건들이 주어진 경우, 재산이 사회 전체적으로 근사적으로라도 균등하게 분배될 것이냐, 아니면 에이전트들의 소위 말하는 파레토 (역주 : 파레토 (Pareto) 는 이탈리아 출신으로 스위스에서 주로 활동한 사회학자 겸 경제학자) 분배를 스스로 조직할 것인가?" 라는 것이다. 파레토 분배는 극소수의 에이전트들이 전체 재산의 거의 대부분을 통제하는 것을 말한다. 두 가지 가능성 중에서 어떤 것이 일어날 것인가는 에이전트들이 사용하는 고유한 거래 규칙들과 상속, 이주, 및 자원의 획들을 지배하는 규칙들에 의존하게 될 것이 분명하다. 이러한 변수들에 대하여 굉장히 다양한 여러 가지 경우를 가지고 실험을 수행한 결과 사회의 재산을 결국 공평하게 분배되도록 하는 조건들을 찾는 것이 매우 어렵다는 놀랄 만한 사실을 알 수 있었다. 이것은 다양한 평등주의 사회 과학자들의 이상을 실제로 그들이 기대하는 것처럼 실현하는 것이 왜 어려운가에 대한 좋은 이론적 이유를 제공하는 듯하다 : 그들은, 적어도 자연을 경제 활동을 통한 상호작용으로 구체화하는 경우에 있어서, 인간이 가지고 있는 본성을 잘 반영하지 못했다.

엡스타인과 엑스텔이 만든 사회에 대한 실험실에 대하여 더 설명할 것들이 분명히 무척이나 많다. 문화 집단들의 출현, 전쟁, 사회적인 제도 등 사회 과학자들이 흥미를 가지고 있는 수많은 의문들을 연구하는데 필요한 모든 것들이 바로 그것이다. 관심이 있는 독자들은 이러한 주제들과 기타 다른 주제들에 대하여 상세하게 기술되어있는 엡스타인과 엑스텔의 논문을 참고하기 바란다. 이 논문은 이 책의 참고문헌에 인용되어 있다. 여기서 우리가 반드시 알아야 할 사항은 컴퓨테라리움이 사회를 밑바닥부터 연구할 수 있는 출발점을 제공한다는 사실이다. 우리는 이것을 가지고 역동적이고 진화적이며 지역적으로 보았을 때 단순한 사회적인 행위들을 조사해 볼 수 있다. 그러한 실험들을 수행할 수 있는 이런 실험실을 갖는 것보다 더 좋은 것이 있을까?

심판의 판정

우리는 제 1 장에서 좋은 모델과 나쁜 모델을 구분하는 몇 가지 성질들에 대해서 언급하였었다. 그것들은 다음과 같다.

이러한 개념들을 구체화하기 위해서 이러한 다양한 척도들을 여기서 설명한 몇 가지 가상 세계에 적용하여 평가해 보자.

TRANSIMS

충실함이라는 측면에서 TRANSIMS 는 이 책에서 논의한 어떠한 가상 세계 - 혹은 내가 알고 있는 그러한 유형의 어떤 가상 세계 - 보다도 자신이 묘사하는 실세계를 충실하게 표현한 모델이다. 앨버커키 도로망에 대한 세부적인 묘사, 시스템 내부 이동 인구에 대한 인구 통계, 그리고 교통의 흐름에 대한 정밀한 표현 등은 전례 없이 정확하다. 따라서 TRANSIMS 는 충실함에 있어서 아주 높은 점수를 기록한다.

불행하게도, 앨버커키 도로 교통망에 대한 TRANSIMS 모델은 수십만 가지의 변수들 (에이전트들) 로 구성되어 있다는 측면만을 고려해 보더라도 단순성과는 아주 거리가 멀다. 그러나 지역적으로 서로 상호작용하며 도로상을 이동하는 개별 통행인들의 일반적인 행동 양식은 아주 단순하고 확실하다 ("직진하라, 오른쪽 혹은 왼쪽으로 돌아가라, 멈추어라," 등등). 따라서, 단순성이라는 기준에서 TRANSIMS 는 보통으로 단순하다는 정도로 등급이 정해진다.

명료성에 관해서 말하자면, TRANSIMS 는 확실하게 높은 점수를 얻을 수 있다. 시각적으로 표현되는 모델의 출력은 교통 흐름의 패턴과 밀집 정도, 혼잡 상황 등과 같은 것들이 어떻게 나타나고 사라지는지를 투명하고도 명확하게 보여준다. 더군다나, 이 모델은 시스템 내부의 개별 통행인에 대하여 정해진 어떤 순간에 그 통행인이 사용하는 규칙들을 포함하여 아주 상세한 정보를 제공한다. 이 모델은 뛰어난 명료성을 가지고 있다.

계산의 현실성이라는 측면에서 TRANSIMS 는 다소 좋지 않다. 이 모델이 정해진 계산을 하는데 있어서 이론적으로 어떤 장벽이 있는 것은 아니지만, 모든 이동물체의 상태를 갱신하고 정보를 출력하기 위하여 실제로 처리해야 할 계산은 엄청나게 많다. 사실 이 모델을 축소하지 않고 전체를 실행하려면, 커넥션 머신 5 (역주 : 미국 씽킹 머신 (Thinking Machine) 사에서 만든 1 초에 1012 번의 부동소수점 연산을 처리하는 슈퍼컴퓨터로 중앙처리장치가 512 개이다) 컴퓨터가 갖고 있는 정도의 계산 능력이 필요하다. 이 모델은 분명히 계산적으로 비현실적이지는 않다 - 그러나 이 모델에 흥미를 가질 수 있는 사용자들이 보통 가지고 있는 컴퓨터의 계산능력과는 거리가 한참 떨어진 것임은 분명하다.

이 절에서 다룬 다른 모델들과 마찬가지로, TRANSIMS 에 모델 설계자의 편견을 전혀 들어있지 않는 것 같다. 내가 알기로, 앨머커키 시청에 대한 크리스 바렛의 개인적인 감정, 그의 정치적인 성향, 및 은행 계좌의 잔액 상태 따위는 TRANSIMS 의 구조나 가정 등에 전혀 포함되어 있지 않다. 이 모델에 프로그램된 모든 것들은 주어진 상황에서 운전자들이 어떻게 행동하느냐에 대한 단순한 규칙들이다 ; 그 외의 모든 것들은 운전자들의 행동이나 상호작용에 대한 규칙들이 적용된 결과로 창발한 것이다. 따라서, 공평성 측면에서도 TRANSIMS 는 높은 점수를 받는다.

띠에라

띠에라를 만든 톰 레이에 의하면, 띠에라는 실제 세계의 생물학적 진화 과정에 대하여 엄격하며 사소한 것까지 상세하게 표현하는 모델을 염두에 두고 만든 것이 아니다. 띠에라의 목적은 그것이 진화에 대한 은유 역할을 하는 것이다. 그리고 그것은 유전자들의 모집단이 진화할 때 사용하는 - 돌연변이, 교차, 및 자연 선택 같은 한 줌의 특징적인 성질들을 추출하여 사용함으로써 그것은 실현한다. 그런 후, 띠에라는 실제 생물학적 유전자가 가지고 있는 수많은 세부적인 특징들과 그것들이 시간에 따라 변하는 방식들은 모두 무시하고, 추출된 한줌의 기능적인 활동들을 컴퓨터 프로그램 코드에 집어넣어 그것을 흉내낸다. 따라서 띠에라 세계의 유전자들과 실제 세계의 유전자들 사이의 충실성은 기껏해야 중간 정도다.

톰 레이가 컴퓨터 속에 존재하는 유전자를 창조하기 위해서 사용한 추상화는, 진화 과정을 진행하기 위하여 모델에 넣은 변수의 개수가 상재적으로 적다는 점에서, 그 모델을 아주 단순 명료하게 만들었다. 물론, 다양한 유형의 유전적인 구조나 (유전자들이 반드시 적용해야 할) 환경을 생성하기 위해서, 모델 속에는 변경이 가능한 많은 변수들이 있기는 하다. 그러나 어느 모로 보아도, 띠에라는 구조의 단순성과 결과의 명료성 측면에서 분명히 잘 음미해야 할 대표적인 모델이다.

띠에라에 대한 계산의 현실성 역시 비슷하게 평가된다. 비록 이 모델이 단순한 개인용 컴퓨터에서부터 고성능 워크스테이션뿐만 아니라 인터넷에 의한 분산시스템에 이르기까지 다양한 계산 환경에서 실행될 수 있기는 하지만, 띠에라를 통해서 발견할 수 있는 진화에 대한 대부분의 성질들은 누구나 쉽게 접할 수 있는 대다수 낮은 수준의 시스템에서도 쉽게 발견할 수 있다. 게다가, 실험을 수행하는데 있어서 실제로 필요한 계산 작업량이 적당하기 때문에, 흥미로운 결과를 얻기까지 며칠 혹은 몇 달을 기다려야 할 필요가 없다. 수 분 - 혹은 성능이 낮은 컴퓨터에서는 수 시간 - 이면 충분하다.

내가 알고 있기로는 띠에라를 만들 때 유일하게 부가된 제작자의 편견은 유전에 의한 모집단의 진화에서 무엇이 중요하고 무엇이 중요하지 않은 가에 대하여 톰 레이 자신이 가지고 있던 전문가적 편견이다. 그것은 정확한 사실이다. 그러나 사회의 수준, 세계 경제 및 정치적 성향 등에 대하여 레이가 어떤 생각을 가지고 있든지 그것이 띠에라의 동작에 영향을 주는 것 같지는 않다. 따라서, TRANSIMS 와 마찬가지로 띠에라는 공평성을 가진 모델이다.

슈거스케이프

조슈아 엡스타인과 롭 엑스텔이 만든 문화 현상이 진화에 대한 슈거스케이프 모델은 띠에라보다 한층 더 은유적이다. 우리 모두가 부엌 어딘가에 설탕 봉지와 양념 통을 가지고 있을 것으로 생각되는 한, 우리가 선반에 그러한 물건들 같은 자원을 비축하기 위해서 일과 시간을 사용한다는 것은 다소 과장된 생각인 것 같다. 슈거스케이프라는 경기장에 있는 설탕과 양념으로 된 산과 계곡은 단순히 우리가 필요로 하거나 원하는 두 가지 상이한 유형의 무엇을 상징하는 것이다. 따라서, 이 모델은 문자 그대로 충실함에 있어서 아주 낮은 점수를 기록한다. 실제 세계에서 비슷한 어떤 일이 어떻게 일어나는가에 대한 지표로서 "국제" 무역이나 슈거스케이프에서 일어나는 거래와 같은 경제에서의 상호작용 규칙의 진화를 위해서는 어느 정도의 충실함이 요구되느냐는 의문이 제기된다. 다른 한편, 이 모델을 통해서 아주 기본적인 경제 에이전트들 사이의 상호작용을 규정하는 아주 단순한 규칙들로부터 그러한 경제 행위들이 창조적으로 출현된다는 것을 알 수 있다. 따라서 슈거스케이프를 통해서 확인된 결과들은, 경제 활동에 대한 모델을 만들고자 하는 사람들에게, 이러한 단순한 규칙들을 대상으로 하고 그것들이 생성하는 결과를 관찰하는 것이 좋은 출발점이 될 것이라는 것을 강하게 암시한다. 슈거스케이프의 에이전트들은 그들이 필요로 하는 설탕과 양념을 확보할 때 아주 제한적인 규칙 및 상호작용 목록만을 사용함으로써, 슈거스케이프의 낮은 충실성은 대신에 높은 수준의 단순성을 갖게 하는 원인이 된다. 이것은 거기에서 무슨 일이 진행되고 있으며 에이전트들은 왜 자신들이 그렇게 한 것처럼 동작하는가를 이해하는데 대단히 중요한 자산이다. 그리고, 2 차원적인 슈거케이프 세상에서 에이전트들의 행위는 시각적으로 표시하기가 아주 쉽기 때문에, 슈거케이프는 그 안에서 일어나는 일을 아주 명료하게 보여준다. 즉, 명료성이 아주 높다.

계산의 현실성 측면에서도 슈거케이프는 명료성과 만큼이나 높은 점수를 받는다. 띠에라와 마찬가지로, 이 모델은 피시 (PC) 와 맥 (Mac) 같은 개인용 컴퓨터가 가진 계산능력 정도의 낮은 컴퓨터 자원에서 실행되도록 만들어진 것이다. 따라서 누구든지 수 분 내에 슈거스케이프를 가지고 실험을 할 수 있다.

이제까지 우리는 세 가지 컴퓨터 속으로 들어간 세상 - TRANSIMS, 슈거스케이프, 띠에라 - 에 대하여 자세하게 알아보았으며, 각각이 나름대로 실제 세계를 이해하는데 기여하는 방식에 대해서도 알아보았다. 그렇지만 우리가 언급하지 않았던 한가지 사실은 사람들이 "실제로 어떻게 그러한 세상을 창조하느냐." 하는 것이다. 이 질문에 대한 몇 가지 구체적인 측면들을 설명하는 것으로 이 장을 마치고자 한다.

실리콘 세계 만들기

매년 3 월, 산타페 연구소에서는 연구진들이 연구소 과학 위원회 앞에서 자신들이 수행하는 연구를 설명하는 좌담회를 하루동안 개최한다. 1994 년 멜라니 미첼 (Melanie Mitchell) 은 적응적인 계산과 학습에 대한 그녀의 연구 몇 가지를 발표하였다. 이 발표에서 그녀는 이 장에서 우리가 다루어 왔던 것과 같은 유형의 탐색적인 모의 실험을 구성하는 경우에 확인해야 할 대표적인 작업 단계 목록을 제시하였다. 미첼이 제시한 항목은 띠에라 혹은 TRANSIMS 같은 세계를 창조할 때 반드시 해야 할 것으로 여겨지는 것을 잘 설명하고 있다. 따라서 여기서는 그녀가 설명한 것을 요약하여 제시하려고 한다. 미첼에 의하면 그러한 세계를 창조하기 위해서는 다음과 같은 절차를 따라야 한다.

미첼이 제시한 단계는 보통의 연구자들이 실제 세계 현상에 대한, 계산적인 모델과 반대되는, 수학적인 모델을 만들 때 사용하는 절차와 상당부분 일치한다. 그러나 거기에는 아주 큰 차이가 한가지 있다 : 이 단계에는 컴퓨터 프로그램을 작성하는 과정이 포함되어 있다. 컴퓨터 과학을 잘 알고 있는 독자들은, 개별 에이전트들을 나타내는 모든 데이터 요소들과 그것들의 동작과 상호작용을 결정하는 규칙들 그리고 그것들이 상호작용하는 환경을 프로그램으로 만들기 위해서 해야 할 일들이 일반적으로 전문적인 솜씨를 필요로 하는 시간이 많이 걸리는 일이라는 것을 이미 잘 알고 있을 것이다.

이렇게 만들어진 모델의 구조와 강건함을 어떻게 평가할 수 있는지 역시 중요한 문제다. 이러한 모델들은 아주 많은 매개변수들과 비선형적인 상호작용들을 포함한다는 특징을 가지고 있기 때문에 표준적인 통계에 의한 방법들을 가지고는 그것의 동작을 이해하는 것이 어렵다. 최근 들어 카네기 멜론 대학의 존 밀러 (John Miller) 는 유전자 알고리즘을 이용하여 복잡한 매개변수 공간을 효율적으로 탐색함으로써, 모델에 내재된 비밀을 "밝혀낼" 것으로 보이는 환경을 효과적으로 탐색해내는 절차를 제안하였다. 밀러가 제안한 접근 방법의 자세한 사항은 참고문헌에 인용된 자료에서 찾을 수 있다. 여기서 소개한 세계들에서, 각각의 연구자들과 - 톰 레이, 조쉬 엡스타인, 로브 엑스텔, 크리스 바렛 - 그의 동료 연구자들은 그저 자신들의 필요에 의하여 골치 아픈 소프트웨어 제작을 감내하였으며, 그것은 본질적으로 각각 다른 세계에서 바퀴를 재 발명한 것에 지나지 않는다. 이러한 중복된 노력의 비효율성을 간파한 크리스 랭턴은, 몇 년 전에 자신의 인공 생명에 대한 연구의 하나로, 모의실험 모델을 쉽게 만들 수 있는 범용의 모의실험 도구를 개발하기로 결정하였다. 그는 그것을 스웜 (SWARM) 이라 불렀다. 이것을 여기서 자세하게 설명할 수 있는 상황은 아니지만, 스웜에 담긴 철학과 내용을 한두 쪽에 걸쳐서 포괄적이며 개략적으로 설명하는 것은 우리의 관심에 비추어 중요한 일이다. 이 모의실험 도구는 공개되어 있는 것이며, 그것을 구할 수 있는 곳은 참고문헌에 기록되어 있다.

스웜 모의실험 시스템

스웜 모의실험 시스템은 이 책에서 이제까지 소개해온 유형의 복잡하고 적응적인 시스템에 대한 실험을 하려는 연구자들에게 표준적이며, 융통성 있고, 신뢰할 수 있는 소프트웨어 도구를 제공하는 것을 목적으로 만든 것이다. 특히, 스웜은 그러한 멀티 에이전트 시스템을 설계하고, 구현하고, 실행하고, 분석하는 범용의 수단들을 제공한다.

스웜 시스템의 일차적인 목적은 규모가 큰 컴퓨터 모의실험을 구성할 때, 필연적으로 발생되는 컴퓨터 과학과 관련된 주제를 다루어야 하는 부담에서 연구자들을 구제하는 것이다. 이것을 성취하기 위해서, 스웜은 실험을 구동하는 핵심 요소와 함께, 광범위한 도구들을 제공한다. 이것을 사용하는 연구자들은 자신의 관심 분야에 대한 모델을 만들기 위하여 스웜에서 제공하는 범용의 객체들을 자신의 취향이나 목적에 부합되도록 자유롭게 맞추어 사용한다.

스웜을 가지고 생성할 수 있는 세계는, 이동할 수 있는 에이전트들이 물리적으로 이동하는 공간에 해당하는 TRANSIMS 의 2 차원 평면 세계에서부터, 에이전트들이 의견이나 물자를 교환하는 것을 나타내는 교환망을 나타내는 추상적인 그래프에 이르기까지 각각의 세계가 가지고 있는 성격에 따라서 크게 다를 수 있다. 연구의 대상이 되는 세계가 무엇이든지 간에, 스웜은 데이터 조작, 사용자 인터페이스, 및 다른 순전히 소프트웨어 기술적이며 프로그래밍에 국한된 문제들에 방해 받지 않고, 연구자들이 자신들이 이해하려는 특정 시스템에 집중할 수 있도록 하는 일반적이며 균일한 틀을 제공한다.

이것을 명확하게 보여주기 위해서, 스웜 시스템을 이용해서 개미군집을 모의실험하려 한다고 가정해보자. 가장 먼저 해야 할 일은 스웜 라이브러리에서 일반적인 (generic) 2 차원 영역을 선택하는 것이다. (역주 : 프로그래밍 언어에서 자주 사용하는 기능을 사용자들이 편리하게 사용할 수 있도록 미리 만들어놓은 것을 라이브러리라 부른다. 스웜은 시스템 전체를 총괄하는 커널이라는 핵심 프로그램과 엄청나게 많은 라이브러리들로 구성되고, 사용자는 자신의 목적에 맞는 라이브러리를 선택하여 사용한다.) 이것은 군집 내 개미들이 이동하는 물리적인 세계를 나타내는 것이다. 다음으로 라이브러리에서 일반적인 에이전트 클래스를 선택하는데, 이 시점에 우리는 에이전트 즉, 개미가 이 세계에서 어떻게 움직이는지, 자신의 세계를 어떻게 감지하는지, 그리고 다른 에이전트들과 어떻게 대화를 나누는지에 대하여 잘 알고 있다. 일단 일반적인 세계와 에이전트들이 선택되면, 특별한 개미 - 세계의 속성과 그것에 대한 규칙을 추가하여 이 일반적인 모듈을 특수화시킨다. 예를 들어, 개미집의 위치를 저장한다든가, 이 세계에 분포된 페로몬의 농도를 추적한다든가, 또는 시간이 진행됨에 따라서 페로몬이 퍼져나가는 방식 등을 추가할 수 있을 것이다. 이러한 개미 에이전트는 원래의 일반적 에이전트에서 상속되어 2 차원 공간에서 움직이는 에이전트로 프로그램된다. (역주 : 스웜은 객체지향 프로그래밍 기술을 사용하여 만든 것이다. 여기서는 기존의 절차적인 프로그래밍과는 다르게 데이터와 그 데이터가 사용하는 연산자가 클래스라는 객체를 생성하는 틀로 정의되며, 이러한 객체를 중심으로 문제를 해결한다. 어떤 대상의 공통적인 측면을 중심으로 클래스가 만들어지고 그것보다 특수한 기능을 추가하고자 할 때는 우선 기존의 클래스에서 공통 성질은 상속받고 나머지를 추가할 수 있다.) 다음 단계는 에이전트들에게 개미가 다음 단계에 어디로 이동할 것인가를 결정할 때 사용하는 개미 세계를 규정하는 프로그램 코드뿐 아니라, 에이전트들이 페르몬의 농도와 방향을 감지할 수 있도록 특수한 프로그램 코드를 추가한다. 이렇게 특수화된 공간과 개미 에이전트들은 활동 스케줄과 함께 스웜 시스템과 결과된다. 마지막으로 이것이 바로 개미의 행위에 대한 맞춤식 모의실험이다. 스웜 시스템에 대한 실제 구현 방식을 세부적으로 알고자 하는 독자들은 참고문헌에 인용한 곳에서 필요한 자료를 모두 얻을 수 있다.