구구표 출력 프로그램

 

컴퓨터는 시키는 일만 하기 때문에 무엇을 할지 항상 예측할 수 있다고 보는 사람들이 떠올리는 이미지는 구구표를 출력하는 프로그램이다. 프로그래밍을 조금이라도 배운 사람은 구구표를 출력하는 간단한 프로그램을 만들어 보았을 것이다. 버그가 없는 프로그램을 실행시키면 머리 속에 떠올렸던 구구표가 예쁘게 출력된다.

 

구구표 출력 프로그램을 만들기 전부터 프로그래머의 머리 속에는 구구표가 완벽하게 그려져 있다. 이런 경우에는 컴퓨터가 하는 일을 완벽히 예측할 수 있다고 이야기해도 무방할 것이다. 프로그램에 버그가 있거나, 실행 중에 컴퓨터가 벼락을 맞거나 하는 경우에는 예측하지 못했던 일이 일어나지만 지금 논의되는 점에 비추어 볼 때 이런 것들은 무시해도 된다.

 

 

 

 

 

워드 프로세서

 

워드 프로세서가 하는 일은 어떤 면에서는 전혀 예측할 수 없다. 왜냐하면 워드 프로세서를 쓰는 사람이 키보드에 어떤 키를 입력할지 전혀 예측할 수 없기 때문이다. 어떤 소설가가 워드 프로세서로 소설을 쓸 때 워드 프로세서의 행동을 예측하려면 소설가의 머리 속에서 무슨 일이 일어날지를 예측해야 한다. 소설가가 소설을 쓰는 중에 그의 주변에서 벌어지는 일이 소설에 어느 정도 영향을 끼칠 것이기 때문에 제대로 예측하려면 소설가의 주변에서 무슨 일이 벌어지는지를 예측해야 한다. 이런 식으로 따지다 보면 결국 우주에서 일어나는 모든 일을 예측해야 컴퓨터 프로그램에서 무슨 일이 벌어지는지를 예측할 수 있다.

 

워드 프로세서의 행동(?)을 예측할 수 없는 근본적인 이유는 입력 값에 따라 행동이 달라지기 때문이다. 이런 면에서 컴퓨터는 인간과 닮았다. 인간도 감각 기관으로 입력되는 정보에 따라 생각과 행동이 달라진다. 기독교 문화권에서 자라서 맨날 기독교 이야기만 들으면 기독교도가 되기 쉽고 이슬람 문화권에서 자라면 이슬람 교도가 되기 쉽다.

 

하지만 워드 프로세서의 행동이 예측 불가능하다는 점은 별로 인상적이지 않다. 워드 프로세서로 소설가가 소설을 쓸 때 지적인 작업은 워드 프로세서에서 이루어지는 것이 아니라 소설가의 머리 속에서 이루어진다고 보는 것이 정확할 것이다.

 

 

 

 

 

난수 발생기

 

컴퓨터가 진짜 난수(random number)를 만들어내지는 못한다. 하지만 컴퓨터를 관찰하는 사람의 입장에서 볼 때에는 그 정도면 충분히 난수라고 봐도 무방할 것이다. 이런 면에서 관찰자는 컴퓨터의 행동을 예측할 수 없다. 하지만 이것도 그리 인상적인 것은 아니다. 설사 진정한 난수를 만들어내는 능력이 컴퓨터에게 있다고 해도 그것이 대단한 지적인 과업으로 보이지는 않는다.

 

 

 

 

 

Deep Blue

 

1997년에 Deep Blue라는 컴퓨터가 체스 세계 챔피언을 꺾어서 화제가 된 적이 있다.

http://en.wikipedia.org/wiki/Deep_Blue_(chess_computer)

 

Deep Blue를 프로그래밍한 프로그래머의 입장에서 보자. 한편으로 그는 Deep Blue의 행동을 예측할 수 있다. 버그 등의 요인을 제외하면 Deep Blue는 프로그래머가 시키는 일만 한다. 물론 상대편 선수가 두는 수에 따라 입력 값이 달라지기 때문에 이런 면에서 Deep Blue의 행동을 예측할 수는 없다. 하지만 이것은 워드 프로세서의 예처럼 별로 인상적이지 않다. 또한 Deep Blue는 아마 난수 발생기를 사용할 것이다. 이런 면 때문에 예측이 어렵다. 하지만 이것도 역시 별로 인상적이지 않다.

 

정말 인상적인 것은 Deep Blue가 자신을 만든 프로그래머보다 체스를 더 잘 둔다는 것이다. 나는 오델로(othello, reversi, 오목과는 상당히 다른 보드 게임)를 두는 프로그램을 만든 적이 있는데 초보자는 이길 정도로 꽤 잘 두는 편이어서 그것을 만든 나도 그 프로그램을 잘 이기지 못했다.

http://en.wikipedia.org/wiki/Reversi

 

그 오델로 프로그램은 나 혼자 만들었으며 나는 만들 당시에는 그 프로그램이 어떻게 작동하는지 잘 알고 있었다. 그럼에도 불구하고 나는 그 프로그램이 다음에 무슨 수를 둘지 예측할 수 없었다. 이것은 단지 난수 발생기 때문만은 아니다. 그 프로그램은 마지막 열 다섯 수 정도(정확한 숫자는 기억이 안 난다)는 완벽하게 둔다. 또한 중간에도 몇 수의 수읽기를 정확하게 한다. 나는 마지막에 그렇게 완벽하게 둘 수도 없고 중간에도 그 정도로 깊이 수읽기를 할 수도 없다. 프로그램이 프로그래머인 나를 어떤 측면에서는 뛰어넘어서 내가 예측할 수 없는 수를 두는 것이다.

 

내가 만든 프로그램이나 Deep Blue나 비슷한 업적을 이루었다. 나는 오델로 초보자인 반면 Deep Blue의 상대는 체스 세계 챔피언이었다는 차이가 있고, 체스가 오델로에 비해 컴퓨터로 프로그래밍 하기가 훨씬 어렵다는 차이도 있지만 여기에서 다루는 논점에 비추어 볼 때 그 차이가 중요한 것은 아니다. 중요한 것은 프로그래머가 프로그램의 작동 방식을 아주 잘 알고 있음에도 불구하고 그 행동을 예측할 수 없다는 점이다. 그것은 단지 입력 값을 예측할 수 없고, 난수 발생기가 작동하기 때문만은 아니다. 프로그램이 프로그래머보다 체스를 더 잘 둔다는 점에 주목해야 한다.

 

 

 

 

 

수학 증명 프로그램

 

수학 정리(theorem)를 증명하는 프로그램은 상당히 오래 전에 만들어졌다. 물론 이 프로그램을 만든 프로그래머는 프로그램이 어떻게 작동하는지 잘 알고 있다. 하지만 어떤 면에서는 프로그램의 행동을 예측할 수 없다.

 

그런 프로그램이 지금까지 발표되지 않은 증명 절차를 거쳐서 증명을 하는 경우가 있다. 많은 수학자들이 프로그램이 출력해낸 증명 절차의 우아함에 감탄한다고 한다.

 

프로그래머는 프로그램이 어떤 식으로 작동할 지 예측할 수 있다. 하지만 어떤 우아한 새로운 증명을 토해낼지는 예측할 수 없다. 아마 프로그래머가 수학을 잘 모른다면 자기가 만든 프로그램이 출력한 증명 절차의 우아함을 만끽하지도 못할 것이다. 그는 옆에 있는 수학자가 감탄하는 모습을 멍하니 쳐다보면서 자신이 만든 프로그램이 그런 일을 해냈다는 것에 우월감을 느껴야 할지 그 프로그램이 출력한 증명 절차를 자신이 잘 이해하지도 못하는 것에 열등감을 느껴야 할지 헷갈려 할 것이다.

 

 

 

 

 

입력 값과 학습

 

워드 프로세서의 경우에는 입력 값에 따라 행동이 달라진다고 해도 별로 인상적이지 않다. 이것은 인간이 책을 읽는 경우와 비슷하다. 읽는 책에 따라 인간이 내뱉는 말은 달라진다. 하지만 여기에서 지적인 작업을 한 쪽은 책을 읽는 사람이 아니라 책을 쓴 사람이다.

 

입력 값과 관련하여 인간이 인상적인 이유는 학습을 하기 때문이다. 학습이 없다면 위상 수학이나 양자 역학은 있을 수 없었을 것이다. 그리고 컴퓨터도 학습을 할 수 있다. 여전히 초보적인 수준이지만 학습을 한다는 점이 중요하다. 예컨대 학습을 할 줄 아는 체스 프로그램은 체스를 계속 두면 둘수록 실력이 더 세진다. 어떤 근본적인 이론적 이유를 설득력 있게 제시하지 못한다면 이런 학습이 더 고급스러운 지적인 과업에서는 불가능할 것이라고 예단해서는 안 된다.

 

 

 

 

 

예측의 여러 가지 의미

 

이창호 9단과 이세돌 9단이 바둑을 둔다면 어떤 면에서는 정확히 예측할 수 있다. 나는 그 두 명이 바둑을 두면 내가 두는 것보다 훨씬 더 수준 높은 바둑이 될 것이라고 자신 있게 예측할 수 있다. 하지만 어떤 수를 둘 지는 예측할 수 없다.

 

Deep Blue를 만든 프로그래머의 경우에도 사정은 비슷하다. 그는 Deep Blue가 자신보다 체스를 훨씬 더 잘 둘 것이라고 예측할 수 있지만 어떤 수를 둘 지는 예측할 수 없다.

 

물론 인간이 하는 지적인 일 중에 체스가 컴퓨터로 만들기가 가장 쉬운 편에 속한다. 상당히 비슷한 게임으로 보이는 바둑의 경우만 해도 컴퓨터는 아직 왕초보의 수준을 조금 넘었을 뿐이다.

 

나는 아직 인간이 증명하지 못한 수학 정리를 컴퓨터가 증명했다는 이야기는 들어 보지 못했다. 아직까지는 이미 인간이 증명한 것을 컴퓨터가 재발견하거나 새로운 절차로 증명하는 수준인 듯하다. 이것은 체스 초보자만 이길 수 있었던 체스 프로그램 초창기와 비슷하다. 지금은 세계 챔피언도 이긴다. 아마 컴퓨터가 인간이 증명하지 못한 수학의 명제를 증명하는 날이 오면 훨씬 더 인상적일 것이다.

 

여기에서 중요한 것은 프로그램이 충분히 복잡해지고 엄청나게 많은 연산을 하게 되면 어떤 측면에서는 프로그래머가 컴퓨터의 행동을 예측할 수 없다는 것이다. 그 와중에 컴퓨터는 아직까지 발표되지 않은 우아한 증명을 출력하거나, 체스 고수들이 감탄할 만한 수를 둔다. 컴퓨터는 인간이 높은 수준의 지능이라고 부르는 것에 이미 한 발짝 다가왔다. 그리고 여기에서 멈추리라는 보장은 전혀 없다.

 

시키는 일만 하기 때문에 컴퓨터가 인간보다 열등하다고 믿는 사람들은 예측 개념에 대해 깊이 생각해 보지 않는 것 같다. 절대적 결정론이 지배하는 체계에서도 놀라운 일은 벌어질 수 있다. 내 생각에는 인간의 뇌가 놀라운 이유는 절대적 결정론에서 해방되었기 때문이 아니다. 오히려 절묘하고 복잡하게 잘 짜인 구조가 어떤 정해진 경로를 거쳐서 어떤 일을 아주 잘 하기 때문에 인간이 똑똑한 것이다. 즉 인간은 결정론 때문에 똑똑한 것이다. 다른 말로 하면, 뇌는 기계가 아니기 때문에 놀라운 일을 하는 것이 아니라 놀랍도록 정교하고 복잡한 기계이기 때문에 놀라운 일을 하는 것이다.

 

대량 모듈성(massive modularity) 테제를 지지하는 진화 심리학자들은 잘 짜인 온갖 선천적 메커니즘들이 있기 때문에 학습이 가능하다고 주장한다. 즉 인간이 결정론으로부터 해방되었기 때문이 아니라 결정론적인 학습 기계이기 때문에 학습이 가능하다는 것이다. 어떤 규칙도 없이 아무렇게나 연결될 수 있는 신경 덩어리는 학습을 할 수 없다.

 

 

 

 

 

2010-04-22