불교와 인공지능|컴퓨터와 인공지능의 역사 (2)__석봉래

컴퓨터와 인공지능의 역사 (2)

알고리즘

 

석봉래

미국 앨버니아 대학교 니액 연구 교수

알고리즘과 컴퓨터

사고의 형식적 구조 (즉 형식논리)에 관한 연구가 컴퓨터의 개발로 이어지는 데는 두 가지 커다란 사건이 있다. 첫 번째는 수학적 지식에 관한 철학적 고찰이고, 둘째는 전자공학의 발전이다. 수학적 지식은 보통 증명으로 설명되는데 이 증명이라는 개념을 어떻게 설명할 수 있는가 하는 철학적 물음이 제기되었다. 처음에는 이 수학적 증명을 우리 의식이 자명하게(뻔하게, 의심의 여지없이, 혹은 그 자체로 분명하게) 생각한 것으로 설명하려고 했는데 이것은 너무 주관적인 설명이 되고 만다. 이런 설명은 수학적 진리를 설명하기에는 부족하다는 주장이 제기된 것이다. 예를 들어 ‘1 + 1 = 2’라는 수학 정식이 참이라는 것을 어떻게 설명할 것인가? 이 수학 정식은 사과 하나에 또 다른 사과 하나를 더하면 사과 두 개가 된다는 것을 의미하는가? 1이라는 숫자는 단순히 사과만을 가리키는 기호가 아니기 때문에 단순히 사과 하나를 가지고 이 정식을 참이라고 할 수 없다. 그러면 이 세상의 모든 물건을 다 하나하나 더해보아야 이 정식이 옳다는 것을 알 수 있다는 것인가? 그래서 다른 방식으로 이 정식을 설명하는 것이 필요하다. 한 개인이 생각하기에 자명하다는 방식으로 수학적 진리를 설명하는 것은 수학을 주관적으로 혹은 직관적으로 이해하는 것인데, 이런 방식의 설명은 많은 패러독스(paradox, 상호 양립할 수 없는 두 수학적 정식을 동시에 인정하게 되는 경우)를 만들어냈다. 그래서 수학적 진리는 주관적 직관이 아니라 사고가 논리적 과정을 통해서 증명된다는 주장이 개진되었다.

그런데 사고가 논리적 과정을 따라 수학적 명제를 도출한다는 것이 무엇을 의미하는지를 분명히 밝히는 일은 쉽지 않았다. 물론 주어진 문제의 해결을 이미 증명되었거나 자명하다고 인정된 논리적 원리에 따라 도출해나가는 과정은 분명하게 연구되었지만 그 논리적 과정(logical derivation)을 분명하게 또 객관적으로 설명하는 것에는 어려움이 있었다. 그냥 책상머리에 앉아서 집중된 생각을 이어가는 것이 논리적 사고 과정이라 설명하는 것은 너무 불분명하다. 예를 들어 다음과 같은 추리 문제에서 “$ + #”를 찾는 과정이 그러한 논리적 추리의 과정이다.

& + & + & = 30

& + $ + $ = 20

& + # = 17

$ + # = ?

이런 추리의 과정을 거치면 ‘$ + #’는 12가 된다. 이 과정을 거쳐 정답을 맞힌 독자분들은 바로 이 논리적 도출 과정을 마음으로 진행하신 것이다. 그런데 문제는 이 과정의 구체적 모습을 낱낱이 규정하기가 어렵다는 것이다. 그냥 앉아서 하나하나 계산을 하면서 ‘$ + # = 12’라고 생각할 뿐이지 그 중간 단계에 구체적으로 어떤 일이 벌어지고 있는지는 우리의 의식에 자세히 알려지고 있지 않다. 아래 그림에서 생각의 구름 속에 벌어지는 계산 과정이 구체적으로 무엇인지는 정확히 객관적으로 규정하기가 쉽지 않다. (참고로 우리의 마음에는 무의식도 있고 비의식도 있어서 생각의 모든 구체적 과정이 의식에 모두 알려지지 않는다.)

그래서 마음속에 벌어지고 있는 이 과정에 대한 구체적인 설명이 필요하게 되었다. 그 해결책으로 제시된 것이 알고리즘(algorithm)이다. 알고리즘은 단순한 작업의 유한한 단계를 통해 문제 해결에 이를 수 있는 수단을 의미한다. 특별히 컴퓨터공학에서 알고리즘이라고 하는 것은 프로그램의 기반이 되는 정보처리의 순차적 과정을 규정하는 규칙의 체계를 말한다. 알고리즘은 구체적인 조작 과정을 보여주는 것이기 때문에 계산이나 추리의 구체적 과정을 설명하는데 매우 유용하게 쓰인다. 알고리즘의 가장 쉬운 예로 거론되는 것은 레시피(recipe, 조리법)이다. 레시피가 알고리즘으로 이해될 수 있는 이유는 다음과 같다 : (1) 레시피는 간단한 요리 작업(즉 자르고, 굽고, 찌고, 볶는 활동)으로 구성되어 있다. (2) 레시피의 과정은 유한하다. 무한한 과정을 거치는 요리는 없다. 그렇게 하다가는 모두 굶어 죽는다. (3) 레시피의 과정을 따르면 구체적인 결과물을(완성된 요리를) 달성할 수 있다. 즉 수학에서 증명이나 추론과 같은 인지적 활동은 레시피와 같은 알고리즘적 과정을 통해 진행되는 것으로 설명되었다.

알고리즘적 설명과 컴퓨터의 개발을 연결하는 데는 두 가지 연결 고리가 있다. 그 첫 번째 연결 고리는 바로 튜링머신(Turing Machine)이다. 이왕에 사고의 논리적 과정이 규칙의 순차적인 실행으로 설명된 이상, 이것을 기계화하는 것은 자연스러운 것이지만 튜링의 시도는 수학적 계산과 논리적 연산을 가상의 기계를 통해 설명하는데 결정적 기여를 했다. 튜링머신은 영국의 수학자 앨런 튜링(Alan Turing, 1912~1954)이 제안한 수학적 증명 과정을(알고리즘적 과정을) 실행하는 가상의 기계(개념적 기계)이다.

이 가상 기계는 먼저 작동 규칙이 알고리즘 형태로 저장된 저장소와 입력과 출력이 기록되는 긴 테이프와 주어진 규칙에 따라 테이프 위를 움직이면서 입력을 읽고 출력을 쓰는 헤드(head)가 있다. (튜링머신은 개념적 기계이기 때문에 테이프가 움직이고 헤드가 읽고 쓰는 물리적인 방식에 관한 설명은 없다. 단지 정보처리의 과정이 추상적으로 설명되고 있다.) 그런데 이 튜링머신에 관해 중요한 한 가지 사실이 밝혀졌다. 튜링머신은 절차적 과정이 분명하게 정리된 알고리즘이 있는 문제라면 어떤 문제도 풀 수 있는 능력을 지니고 있다는 점이 밝혀진 것이다. 특별히 이런 보편적 문제 해결 능력을 강조하는 의미에서 유니버설 튜링머신(Universal Turing Machine, 보편적 튜링머신)이라는 개념이 나오게 된다. 즉 알고리즘을 가지고 어떤 문제든 해결하는 체계가 바로 유니버설 튜링머신인 것이고 이것이 바로 컴퓨터라는 정보처리 체계의 정체를 규정하는 개념적 기반이 된다. 즉 우리가 현재 사용하고 있는 컴퓨터는 튜링머신이라는 간단하지만 강력한 알고리즘 실행 구조를 그 이론적 바탕으로 하고 있다.

유니버설 튜링머신에서 현대의 컴퓨터가 나타나게 된 것에는 마지막 고리, 즉 전자공학의 발전이 있다. 전자공학의 발전을 통해서 이런 가상적 기계가 물리적으로 개발되어 작동할 수 있게 되었다. 현대적 컴퓨터는 처음에는 진공관을 통해서 그리고 반도체를 통해서 물리적으로 실현된 것이다. 그리고 논리적 사고의 기반이 되는 진리 값, 즉 참과 거짓은, 1과 0이라는 닫히거나 열린 스위치의 전압 차이로 실현되었고 이를 매우 빠른 속도로 처리하는 과정이 전기적으로 가능하게 되었다. 아주 단순하게 표현한다면 사고의 논리적 형식과 과정이 전기회로에서 수많은 스위치가 열리고 닫히는 과정으로 실현되도록 한 기계가 컴퓨터라는 것이다. 1946년 미국 펜실베이니아대학이 탄도 궤적을 계산하기 위해 만든 에니악(ENIAC, Electronic Numerical Integrator And Computer)이 이러한 전자적 컴퓨터의 초기 사례가 된다. 이 컴퓨터는 진공관으로 구성되어 있었으며 유니버설 튜링머신의 이상을 따라 포탄의 탄착 지점뿐만 아니라 수학과 공학에 관련된 문제 해결에 사용되었다. 결국 현재 우리가 사용하는 컴퓨터는 많은 철학자, 수학자, 그리고 공학자들의 노력이 함께 이룬 결실이다.

__다음 호에 계속

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

ten + 5 =