« 인형사를 닮은 스미스 | Main | reloaded, 현각스님 관람기 »

시뮬레이티드 어닐링

매트릭스 관련 사이트들의 포럼에는 '시온 또한 또하나의 매트릭스' 이며 매트릭스와 시온을 포함한 더 큰 차원의 매트릭스가 있다는 가설이 많은지지를 얻고 있습니다. 이런 가설들이 나오게 된 이유는 단 하나. 현실세계에서 네오가 기계들을 물리친 장면을 설명하기 위해서인데요.


출처 : dvdprime '영이'님의 글

매트릭스 리로디드의 핵심은 니오와 아키텍트와의 대화입니다. 이 대화를 통해서 매트릭스의 진화 시스템을 짐작할 수가 있는데, 그건 바로 시뮬레이티드 어닐링이라는 방법입니다.

시뮬레이티드 어닐링은 인공 지능 분야에서 사용하는 테크닉 중의 하나입니다.

어닐링 (annealing)의 사전적 의미를 야후에서 찾아보면 다음과 같습니다.
anneal [nil] vt.
1 <강철유리 등을> 달구었다가 천천히 식히다, 벼리다.
2 <정신을> 단련하다.
~ing n. 가열 냉각, 벼림

시뮬레이티드 어닐링은 아주 어려운 문제를 풀기위해 점진적으로 그 해 (solution)에 가까운 방향으로 이동하되 적은 확률(0.05~0.5%)로 예상되는 해에 아주 먼 방향으로 이동하는 겁니다.

좀 더 이해하기 쉬운 예로 산오르기를 들겠습니다.

수백개의 산들로 이루어진 산맥에서 가장 높은 산에 오르고 싶습니다. 그런데 그 산이 어떤 산인지, 가장 높은 산의 높이가 얼마인지 전혀 모릅니다. 그리고 지금 가지고 있는 장비는 고도계 하나 뿐입니다. 그리고 산에는 나무가 아주 울창해서 가장 높은 산은 커녕 어느 방향이 산봉우리인지도 모릅니다. 이러한 상황에서 우리가 할 수 있는 것은 주위를 보고서 현재 위치보다 좀 더 높은 곳으로 향하는 것이 제일 무난한 방법입니다. 그런데 이런 식으로 가면 결국은 한 산봉우리에 올라갈 수는 있습니다. 그런데 그 산봉우리가 가장 높은 산일 확률은 1/(산봉우리의 수) 입니다. 매우 낮은 확률이죠.

시뮬레이티드 어닐링은 가장 높은 산으로 갈 확률을 높이기 위해서 어느 정도 올라가다가 주사위를 굴립니다. 그래서 특정한 수가 나오게 되면 절벽이나 낭떠러지 밑으로 떨어집니다. 다 떨어진 뒤에 다시 조금더 높은 곳으로 올라가기 시작합니다. 이와 같이 가끔씩 떨어지면 산봉우리에 올라가는데 걸리는 시간은 굉장히 오래 걸리지만 아주 높은 산봉우리에 올라갈 가능성이 훨씬 높아집니다.

자, 그럼 매트릭스로 돌아갑시다.

매트릭스는 수학적으로 구성하였지만 그 틈들 사이의 오류로 인해 모피어스나 니오 같은 에러가 발생하게 됩니다. 매트릭스의 입장으로는 이러한 문제를 해결할 완전한 방법을 알지 못합니다. 대개의 프로그래머들이 그러하듯이 이러한 에러가 발생하면 소스코드를 살핀 다음에 원인을 찾아서 패치하고 다시 수행을 시킵니다. 패치란 것은 크게 두 종류가 있는데, 하나는 타이핑 에러를 고치는 것이고, 다른 하나는 파라메터나 상수값 등을 변경하는 것입니다. 이런 상수값들은 물리 세계를 매트릭스 세계에서 구현하기 위한 값들입니다. 예를 들어 중력 가속도 라던지, 각 물체의 마찰 계수 같은 값들입니다. 이런 식으로 매트릭스를 계속적으로 패치하면 크게 두가지 문제가 생기는데, 하나는 걸핏하면 시스템이 리부팅된다는 게 문제고, 다른 하나는 위의 산오르기 문제처럼 이렇게 패치한다 (상수값을 바꾼다)고 해서 그것이 가장 이상적인 시스템을 향하여 간다는 보장을 할 수가 없다는 것입니다. 왜냐하면 삼라만상은 너무나도 많은 요소들을 포함하고 있기 때문에 유한한 개수의 수학 공식으로는 이러한 요소들을 모두 커버할 수가 없기 때문입니다.

그런데, 이렇게 매트릭스의 세계에 에러가 발생하는 이유가 무었이겠습니까?

바로 변덕장이 인간들 때문입니다. 인간들의 청개구리적인 경향은 산으로 가라고 하면 바다로 가고, 왼쪽으로 가라고 하면 오른쪽으로 가려고 합니다. 그 때문에 수학적으로 구성한 매트릭스에 계속해서 오류가 발생하는 겁니다. 또 다른 예를 들자면 디아블로와 같은 네트워크 게임에서 계속적으로 아이템 복사와 같은 해킹이 끊임없이 발생하는 이유는 이 게임의 플레이어인 인간들이 하라는 대로 안하고 계속 딴짓을 하려고 하기 때문입니다.

그래서 매트릭스는 에러가 생길 때마다 소스 코드를 패치하는 대신 적당해 땜빵했다가 (애니메트릭스의 한 에피소드처럼) 현재 생성되는 문제들의 총집합체에 해당하는 `더 원'이 생기면, 오라클을 시켜서 소스로 향하게 하고 '더 원'을 만든 원인이 되는 에러들을 한꺼번에 패치합니다. 그런데, 이 때 시뮬레이티드 어닐링을 적용시킵니다. 즉, 현재 상황보다 좀 더 에러가 적게 패치를 할 것이냐, 아니면 갈 데까지 가 볼 것이냐에 대한 결정을 하도록 합니다. 우선 갈 데까지 가보는 가능성을 될 수 있는 한 줄이기 위해서, '더 원'에게 갈 데까지 가면 인류가 멸망하게 된다고 경고합니다. 그래서 이전의 `더 원'들은 시스템 패치를 선택하고, 니오는 주인공이기 때문에 다른 길을 선택합니다.

그렇다면, 왜 매트릭스가 스스로 선택하지 않고 인간인 니오에게 선택을 강요한 걸까요?

그 이유는 컴퓨터 프로그램 자신은 '예측할 수 없는 행동을 하지 못하기' 때문입니다. 자신이 어떤 선택을 할지 뻔히 알고 있기 때문에, 그리고 프로그램의 입장에서 보다 나은 길이 뻔히 보이기 때문에 매트릭스는 항상 소스를 패치하는 길을 택하게 될 겁니다. 그런데, 니오는 인간이면서 삐딱한 행동으로 인해 발생한 에러의 총집합체이기도 합니다. 이미 1편에서 니오는 자신의 안전을 포기하고 모피어스를 구하기 위해 다시 매트릭스로 들어가는 기계가 예상할 수 없는 행동을 합니다. 그래서 `더 원'이 된 것이기도 하지만, 결국 니오는 매트릭스와는 다른 선택을 할 가능성이 가장 높은 존재인 겁니다.

가장 이상적인 시스템은 인간과 기계가 공존해서 알콩달콩 살아가는 것이지, 인간을 매트릭스내에서 사육하면서 죽도록 패치하는 것이 아닙니다. 즉, 소스를 아무리 패치해 봤자 이상적인 시스템으로는 갈 수 없는 거지요. 니오가 아키텍트에게 '선택의 문제군' 이라고 한 것은 바로 이러한 이유 때문입니다. 이제 그 선택 (벼랑 밑으로 굴러 떨어진)이 가장 이상적인 결과를 낳을지는 revolution을 통해서 봐야 겠죠.

두슬 주)
윗글의 산봉우리 예는 시뮬레이티드 어닐링을 이해하는데 부적합한 면이 있습니다. 좀더 명확한 이해를 돕기 위해 몇 개의 링크를 제공합니다.

http://no-smok.net/nsmk/SimulatedAnnealing
http://eunjae85.new21.org/lecture4/approx5.htm
http://eunjae85.new21.org/lecture4/approx6.htm

TrackBack

TrackBack URL for this entry: http://dusl.x-y.net/cgi-bin/movabletype/mt-tb.cgi/112.

14197.jpg

Post a comment