본문 바로가기

생명의 철학

랜덤 불리언 네트워크 random boolean network (2002.9)

세포자동자 보충자료

 

랜덤 불리언 네트워크

 random boolean network

 

 

연관 소프트웨어 Attractor Maps 다운받기

 

원래 이 소프트웨어가 소재했던 곳..사용설명도 실려있음.

http://www.calresco.org/sos/calressw.htm

 

애플릿을 사용한 랜덤 불리안 네트워크와 카우프만의 NK에 대한 소개

http://users.ox.ac.uk/~quee0818/complexity/complexity.html

 

카우프만의 주저 『우주는 우리의 집』에 대한 해설

조용현, 『작은 가이아』(서광사)  2.2 "신은 네트워크인가?"

 

 

세포자동자와 랜덤 불리언 네트워크

 

랜덤 불리안 네트워크(random boolean network)는 세포자동자의 보다 일반화된 형태이다. 그래서 신경망이나 유전자 발현에서의 조절 등 실제 세계에서 일어나고 있는 현상들에 대한 보다 더 그럴듯한 모델이다.

랜덤 불리안 네트워크와 세포자동자는 기본적으로는 동일하지만 세부적인 데서는 다르다. 우선 세포자동자는 인근 셀(무어 이웃의 경우 인근 8개의 셀)에 의해서 영향을 받는다. 그러나 불리안 네트워크의 경우 그것은 결정되어 있지 않고 어떤 셀을 어떤 셀과 연관시킬 것인지를 배선망을 통해서 임의로 조절할 수 있다. 아래 그림은 그 차이를 도식적으로 보여주고 있다.

 

 

둘째 세포자동자의 경우 상태이행의 규칙이 모든 셀에게 동일하게 적용된다. 예컨대 콘웨이의 라이프의 경우 23/3 규칙이 주어지면 그것은 모든 셀에게 동일하게 적용된다. 자신이 on이고 인근 셀들 가운데 on셀이 둘 또는 셋이면 다음 세대에서 on상태를 유지하고 자신이 off이고 인근 셀들 가운데 on셀이 셋 있으면 다음 세대에 on으로 변한다. 그러나 랜덤 불리안 네트워크의 경우 각 셀들에 적용되는 규칙을 다르게 할 수 있다. 보통 각 셀에 AND, OR, IF 등 진리조건들을 임의로 부여할 수 있다. 실례로 가장 간단한 불리언 네트워크의 한 사례를 보자.

 

 

간단한 불리언 네트워크

 

주어진 순간에 네트워크의 각 요소(그림에서 검은 사각형)는 다른 요소들의 상태를 입력받고 자신에 주어진 논리규칙에 따라 자신의 다음 상태를 결정한다. 여기서 1은 AND, 2와 3은 OR 게이트이다. 각 요소의 초기상태가 (000)이라면 다음 상태도 (000)일 것이고 더 이상의 변화가 없을 것이다. (001)이라면 (010)이 되고 이것은 다시 (001)이 되어 이 두 상태를 계속 반복하게 된다. (100)이라면 (011)이 되고 다시 (111)이 되어 이 상태에 영원히 고착될 것이다. 이 네트워크는 어떤 초기상태에서 출발하든지간에 초기상태에 상관없이 (000) 또는 (111)로 고착되든지 아니면 (001)과 (010)을 반복하게 된다. 이것을 그 계의 끌개(attractor)라고 부른다. 물론 각 요소에 다른 진리조건을 주면 다른 형태의 끌개가 만들어질 것이다. 그러나 끌개가 만들어진다는 점에서는 다름 없다.

 

 

3개의 요소로 된 부울리안 모형은 극단적으로 단순한 것이다. 좀 더 큰 모형을 제공하는 소프트웨어 Attractor Maps이 있는데 여기서 이것을 소개하려고 한다.1)

 

 

요소수 9개의 랜덤 불리언 네트워크

 

앞서 우리가 수작업으로 해본 불리안 모형에서 요소가 3개였는데 대해 Attractor Maps은 9개의 요소로 된 모형을 제공하고 있다. (유감스럽게도 이것은 도스로 되어 있어 인터페이스가 좀 불편하다. 윈도우2000에서는 도스창이 떠지 않기 때문에 이것을 실행하기 위해서는 도스를 따로 설치해야 한다.)

attract.exe를 클릭하면 다음 창이 뜬다.

 

 

이것은 각 게이트(세포자동자의 "셀")에 부여할 진리조건들의 메뉴판이다. 만일 14를 입력하면 AND조건이 되어 각 게이트들은 그것과 연결된 다른 두 게이트(어떤 게이트의 다음 상태 이행을 결정하기 위해서 몇 개의 게이트로부터 입력을 받아 들이느냐에는 원리적인 제한이 없다. 이 소프트웨어에서는 2개의 게이트로 고정되어 있다.)들이 모두 1일 경우만 1이되고 그 외에는 0으로 된다. 지정하지 않고 엔터키를 치면 초기값으로 지정되는 데 그것은 Random이다. 이 경우 각 게이트들의 진리조건은 컴퓨터에 의해서 임의적으로 주어진다. 이것이 진정한 의미에서의 랜덤 불리안 네트워크이다.

참고로 각 기호의 진리조건들은 다음과 같다.

 

 

IF(가언), OR(선언), AND(연언) 등은 우리에게 익숙한 것이지만 NOR은 무엇일까? N은 NOT를 나타내기 때문에 OR의 부정이다. 그래서 OR의 1은 NOR에서 0으로, OR의 0은 NOR에서 1로 된다. 위 진리조건표에서 확인해 보기 바란다. (논리학에서는 1, 0 대신에 T(Truth), F(False)로 나타낸다.) NA, NB, NAND 등도 마찬가지이다.

각 게이트들은 A, B 두 곳으로부터 입력을 받아 다음 상태를 결정한다. 만일 그 게이트가 XOR 게이트(배타적 선언 exclusive disjunction)라면 두 게이트 가운데 하나가 0 또는 1일 때만 1이 되고 그 외에는 0이 된다.

 

이것이 어떻게 작동하는지를 구체적 사례를 가지고 살펴보자. 아래 그림은 앞서 소개한 소프트웨어 attractor maps 에 진리조건으로 EQV를 선택했을 때 보여지는 네트워크 가운데 하나이다.

 

 

각 게이트의 진리조건은 EQV(둘다 0이거나 1일 때만 1이고 그 외에는 0이다)로 되어 있다. 그리고 각 게이트는 두 곳으로부터 입력받는데 게이트0의 겨우 게이트5와 4로부터, 게이트1의 경우 6과 8로부터 ...등이 좌측 표에 지정되어 있다.

이 네트워크 상에서 어떤 변화가 일어나는지를 보기 위해서는 우선 초기조건으로 각 게이트의 상태가 지정되어야 한다. 초기조건은 임의로 지정할 수 있는데 0에서 511의 수치안에 임의의 수를 입력하면 된다.(게이트의 수가 9개이고 각 1, 0의 두 상태를 가질 수 있으므로 가능한 상태의 수는 2^9=512개이다.) 이 수치가 무엇을 의미하는가? 예를 들어 343을 입력했다고 하자. 343을 이진법으로 바꾸면 101010111이다. 이 바꾸는 방법은 중고등학교 때 다 배운 것이지만 기억하고 있다는 보장이 없기 때문에 다시 부연한다.

343을 2(이것을 343의 좌측에 표시하자)로 나누고 그 값을 343의 아래에 남은 우수리를 값의 우측에 쓴다. 더 이상 나눌 수 없을 때까지 이 과정을 계속한다.

 

2    343

2    171......1

2     85.......1

2     42.......1

2     21.......0

2     10.......1

2       5.......0

2       2.......1

         1.......0  

 

초록색으로 표기된 부분을 하단에서 읽어나가면 101010111이 된다. 이것을 다시 10진법으로 바꾸려면 어떻게 해야 할까? 십진수 343의 경우 이것은 3×10^2 + 4×10^1 + 4×10^0 으로 표기될 수 있다. 이진수 101010111도 이와 같은 방식으로 표현하면 아래와 같다.

 

1×2^8 + 1×2^6 + 1×2^4 + 1×2^2 + 1×2^1 + 1×2^0

 

이것을 계산해서 합산하면 343이 된다.

초기값이 343이라는 것은 101010111이라는 것이고 이 값을 게이트0(단 자리수)에는 1, 게이트1(십 자리수)에는 1, 게이트2(백 자리수)에는 1,...., 게이트8(억 자리수)에는 1의 식으로 각 셀에 순서대로 채워넣으면 이것이 이 네트워크에 부여된 초기값이다. 위의 그림에서 게이트의 우측에 괄호안에 그 값을 넣어 놓았다.(제일 하단 우측에서 좌측으로 다시 중간단의 우측에서 좌측으로..이런 순서로 수를 채우면 된다.) 게이트0의 현재의 상태는 1인데 다음 세대에서는 어떻게 될까?  게이트5, 4에서 입력을 받는데 그 값이 각각 0, 1이기 때문에 EQV조건에 의해서 게이트0은 다음 세대에서 0이 된다. 같은 요령으로 게이트1은 게이트6, 8로부터 입력을 받는데 모두 1이므로 다음 세대에는 1이다. 이런 방식으로 네트워크의 상태의 변화를 추적해 보면 아래와 같다.

 

 

이 과정에서 일정한 상태에 끌려 들어가서 거기서 머무는 점끌개(point attractor)가 나타날 수도 있고 또 경우에 따라서는 두 상태 사이를 순환하는 순환끌개(cyclic attractor)가 출현할 수도 있다. 그리고 그 끌개 영역으로 들어가는 이행과정이 길수도 있고 짧을 수도 있다. 이것은 초기조건에 의존하는데 이 소프트웨어에서처럼 게이트의 상태가 다른 두 게이트의 상태에 의해서 결정되는(k=2) 경우는 이행과정에는 다소 차이가 있으나 반드시 끌개가 존재한다는 것이 알려져 있다. 여기서는 7개의 상태를 반복하는 순환끌개가 만들어지고 있다.

소프트웨어 Attractor Maps 이 상태이행 과정을 볼 수 있는 두 가지 방식을 제공한다. 하나는 State이고 다른 하나는 Attractor Map이다. 다음은 초기화면이다.

 

 

Display에서 Attractor Map은 0번, State는 2번으로 되어 있고 지정하지 않고 엔터키를 치면 Attractor Map의 형식으로 표시된다. 아래는 State로 display된 것이다.

 

 

 

검은칸을 0으로 흰칸을 1로 해서 하단 우측에서 좌측으로 다시 중간단의 우측에서 좌측으로 다시 상단의 우측에서 좌측으로 읽으면 011110101 이 되는데 이것이 이 네트워크의 현재 상태이다. 상태가 계속 변화기 때문에 계속 업데이트되면서 바뀔 것이다. 앞서의 101010111은 다음과 같이 화면이 업데이트되면서 다음 7가지 상태를 순환할 것이다.

 

 

이 이행과정을 한 눈에 보는 방법이 초기값으로 주어져 있는 Attractor Map이다. 9개의 셀에서 가능한 상태의 수는 2^9 즉 512개이다. 가로 32개, 세로 16개로 배열하면 512개를 배열할 수 있다. 그래서 상단 제일 좌측은 000000000이 되고 하단 제일 우측은 111111111이 된다. 상태변화의 과정은 화살표로 나타낸다. 000000000에서 111111111으로 이행했다면 좌측 상단에서 우측 하단으로 긴 대각선이 만들어질 것이다. 아래 그림은 위의 상태변화를 Attractor Map으로 표시한 것이다.

 

 

 

우측 판은 진리조건으로 EQV를 주었을 때 초기값 101010111의 상태이행 과정을 보여주고 있다. attractor size가 7이라는 것은 우측 그림의 상태들의 수(사각형)를 헤아려 보면 알 수 있다.(여기에 다 표시되지 않았지만 사각형의 총수는 512개이다.)  초기조건을 바꾸고 싶으면 I(initial) 를 친 다음 넣고 싶은 배열을 십진수로 바꾸어 입력시켜 주면 된다. 그리고 W를 치면 배선방식을 볼 수 있다. 다시 D를 치면 Attractor Map으로 돌아온다. 새로운 조건으로 다시 시작하고 싶으면 R을 , 끝내고 싶으면 Esc키를 치면 된다.

이 랜덤 불리안 네트워크가 생명의 현상을 이해하는데 어떤 중요성을 갖는가에 대해서는 졸고 『작은 가이아』의 2부 2장 "신은 네트워크인가?"를 참조하기 바란다.

 

  

1) 불리안 네트워크를 다루고 있는 좀 더 전문적인 소프트웨어로 Andrew Wuensche가 만든 유명한 소프트웨어인 DDLab(Discrete Dynamics Lab)이 있다.

이것은 Zooland(http://surf.de.uu.net/zooland/)http://www.ddlab.com에서 다운받을 수가 있다. 이것은 매뉴얼이 A4용지로 근 350페이지에 이르는 대형 소프트웨어이다. 그만큼 복잡한데다가 DOS로 되어 있어 인터페이스가 여간 까다롭고 복잡하지 않다. 접근하기 쉽지 않은 소프트웨어이다.