애드센스세로

Google 광고

구글애널리틱스


애드센스가로


MIU- 체계와 Computability

글자 M, I, U를 임의로 배열할 수 있는 형식 체계가 있다고 하자. 예를들어 MI, MIU, MIIU, UMII 등등이 이 형식 체계 내에 존재할 것이다. 이 형식 체계에 다음과 같은 규칙이 있다고 하자.
  1. 마지막 글자가 I인 경우에는 그 끝에 U를 추가할 수 있다. (예, MI -> MIU)
  2. Mx가 있다면 Mxx를 만들 수 있다. 여기서 x는 임의의 길이의 글자이다. (예, MIU -> MIUIU, MU->MUU)
  3. 만약 III가 나타나면 이를 U로 바꿀 수 있다. (예, MIII -> MU, UMIIIMU-> UMUMU)
  4. 만약 UU가 나타나면 이를 삭제 할 수 있다. (예, MUU->M, MUUUIII-> MUIII)

이 규칙들은 무한히 반복하여 정의 될 수 있다. 여기서 과제는 특정 문자열에서 다른 문자열을 이끌어 낼 수 있는지를 판별하는 것이다. 예를들어 MI에서 위의 규칙들을 임의 순서로 적용해서 MU를 만들어 낼 수 있을까? (한번 해보세요) 컴퓨터에게 이러한 일을 할 수 있는 프로그램을 짜려고 한다. 다음과 같은 알고리즘을 보자

  1. 초기 문자열을 set에 넣는다.
  2. 만약 set에 결과 문자열이 있으면 만들 수 있는 것이다.
  3. set에 있는 문자열들에 각각 1,2,3,4를 적용하여 적용된 문자열을 집어 넣는다.
  4. 2번으로 돌아간다.

이 알고리즘의 문제는 만약 규칙을 적용해서 결과 문자열을 만들어 낼 수 있으면 결과가 나오지만 만들어 낼 수 없는 경우에는 무한히 계속된다는 점이다. 이 과제를 사람한테 시켰을때에는 어떨까? 앞에 주어진 MI에서 MU를 이끌어 내는 과제를 해보신 분은 느끼셨겠지만 (답은 이끌어 낼 수 없다이다. ^^;;) 사람은 이를 적용하면서 규칙에 관한 규칙 (메타 규칙)을 이끌어 낸다고 한다. 쉬운과제를 생각해보자. MI에서 U를 이끌어 낼 수 있을까? 아마 컴퓨터는 위의 알고리즘을 무한히 반복할 것이다. 하지만 사람의 경우 위의 규칙 만으로는 맨 앞의 M을 제거할 수 없다는 것을 쉽게 깨닫고 이것이 불가능함을 말할 것이다. 이것이 알고리즘의 문제일까? 만약 컴퓨터도 위와 같은 메타 규칙을 이해하는 프로그램을 짠다면 이를 계산해 낼 수 있지 않을까?

답은 그런 알고리즘을 짤 수 없다이다. 왜? 이 문제는 컴퓨터 과학에서 Halting Problem이라는 문제로 증명되었다. 간단하게 얘기하면 어떤 프로그램이 무한히 동작할지 그렇지 않을지는 그 프로그램을 직접 돌려보기 전까지는 알 수 없다는 것이다.

Step 1. Halting Problem을 해결하는 프로그램 Q가 있다고 하자. Q는 다음과 같은 결과 값을 지닌다.

Q(P, x) return "Halt" when P(x) halts
Q(P, x) return "Does not Halt" when P(x) does not halts

Step 2. Q를 이용해서 D라는 프로그램을 작성했다고 하자. D(P)는 아래와 같은 결과값을 지닌다.

D(P) return "run forever" when Q(P, P) halts
D(P) return "halt" when Q(P, P) does not halts

여기서 Q를 풀어내면 D(P)는 아래와 같은 결과를 지닌다.

D(P) return "halt" when P(P) does not halts
D(P) return "run forever" when P(P) halts

Step 3. 여기서 P는 임의의 프로그램 프로그램이므로 D 자신일 수도 있다. 그러면 P에 D를 대입해보자.

D(D) return "halt" when D(D) does not halts
D(D) return "run forever" when D(D) halts

매우 재미있는 결과가 나온다. D(D)가 멈추지 않을 경우에는 "halt"가 나오고 D(D)가 멈출 경우에는 "run forever"가 나와야 한다. 물론 이는 모순이다. 따라서 Step 1에서와 같은 프로그램 Q는 작성할 수가 없다. 이를 앞에 알고리즘에 적용한다면 MI에서 MU를 이끌어 낼 수 있는지 없는지를 판별하는 프로그램은 작성할 수 없다는 것을 의미한다.

과연 이러한 사실로부터 인공지능이 불가능하다는 논리를 이끌어 낼 수 있을까?

참고

괴델, 에셔, 바흐: http://www.aladdin.co.kr/shop/wproduct.aspx?ISBN=897291231X&partner=egloos
Halting Problem: http://en.wikipedia.org/wiki/Halting_problem

공유하기 버튼

 

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://beyondweb.egloos.com/tb/2207690 [도움말]

덧글

  • 홍민희 2006/07/07 00:44 # 삭제 답글

    저는 다른 이유에서도 인공지능이 불가능하다고 생각합니다. 인공지능이란, 사람의 정신을 시뮬레이션하는 것인데, 시뮬레이션하기 위해서는 그 대상에 대해서 궤뚫고 있어야 한다고 생각하기 때문입니다. 정신분석학, 분석심리학, 인지공학 등으로 불리는 학문들을 통해 대상에 대한 규칙들을 도출해내야 할텐데, 그러기에는 너무 오랜 시간이 걸릴 것 같습니다.

    저는 같은 이유에서, 매트릭스와 같은 완벽한 가상 현실 역시 물리학이 그 최고 진리를 획득하여 단 하나의 규칙만으로 모든 물리 현상을 해석할 수 있기 전까지는 불가능하다고 생각합니다.
  • 달삼 2006/07/07 00:56 # 답글

    홍민희/시간이 오래 걸려서 만들수 있다면 불가능한게 아니라 어려운 것일 뿐이죠. 괴델 같은 사람의 관점은 백년 후에는 가능한가? 아니면 천년 후에는? 이런 관점인 것 같습니다. 즉, 인공지능이 아예 논리적으로 불가능한 것 아닌가 하는 문제이죠. 예를들어 괴델의 불완전성 정리 같은 경우 "물리학의 그 최고 진리"를 형식 언어로 표현할 수 없음을 증명하고 있고 따라서 프로그래밍 될 수 없는 것이죠.
  • a77ila 2006/07/07 13:15 # 삭제 답글

    열심히 읽고 계시는군요. 저도 옛날에 이 이야기가 꽤 재미있었던 것으로 기억합니다.
    흥미로운 점은 위의 MU가 불가능하다는 것을 깨닫는다고 하셨는데, 그 시점에서 대부분의 사람들은 -- 저도 포함하여 -- 왜 불가능한지를 설명 내지는 증명할 수 없다는 것 같아요. 그러니까, 소위 직관이라는 건데, 이게 불가능하다는 것을 (귀납적이 아니라) 연역적으로 증명하고 그 이유를 설명할 수 있게 되면, 위의 알고리즘에서 이런 조건이 나오면 halt하라고 지시할 수 있지 않을까요? 만약 인공지능이라는 말이 말 그대로 생각하는 기계가 아니라 인간의 지적 활동을 가능한 한 근접하게 시뮬레이트하는 것이라고 규정한다면 불가능할 것 같지는 않은데요...
  • 달삼 2006/07/07 15:22 # 답글

    a77ila/ 위의 Halting Problem 증명과 괴델의 불가능성 정리가 결국 말씀하신 시뮬레이팅이 불가능 하다는 것을 보여줍니다. 메타 지식을 이용해 프로그램을 만들면 메타-메타 형식 체계에서 결정불가능성이 생기고, 또 이를 확장해 메타-메타 지식을 이용해 프로그램을 만들면 메타-메타-메타 형식 체계에서 결정불가능성이 생기는 것이죠. Halting Problem 증명에서는 P가 정지하는지 알아내는 메타 프로그램인 Q의 경우 Q가 정지하는지 안하는지를 알아내는 메타-메타 프로그램인 D가 모순에 이르게 되는 과정과 유사하지요.
  • PRAK 2006/07/07 17:28 # 삭제 답글

    오..정말 재미있는 모양이군요. 저도 정신없는 일들이 좀 지나고 나면 꼭 읽어봐야 겠어요.^^
  • 달삼 2006/07/07 17:49 # 답글

    PRAK/ 안 그래도 최근 괴델의 불완전성에 대해 이러저러한 관심을 많이 가지고 있었는데 관련 내용을 잘 다루고 있는 것 같아요. 아직 절반도 못읽었지만요. 한번 꼭 읽어보세요.
  • zingle 2006/07/07 19:50 # 삭제 답글

    빨리 읽고 빌려줘 ㅎㅎ
댓글 입력 영역