계산 기계와 지능 by 앨런 튜링 (번역 연재 4회)
안녕하세요. 뉴비 @armdown 철학자입니다. (armdown은 ‘아름다운’입니다.) 금요일에 서울에서 강의하고 제가 사는 시골로 내려와서 주말에 번역하려니까 좀 힘드네요.
이번 포스팅은 '계산 기계와 지능 by 앨런 튜링' 연재의 4회입니다. 이번 4절은 좀 길어서 둘로 쪼갭니다.
아는 사람은 다 아는 사실인데, 인공지능의 논리적, 수학적 개념이 처음 제시된 것은 앨런 튜링의 1950년 논문 “계산 기계와 지능”입니다. 그런데 아쉽게도 이 논문은 아직 한국어로 된 쓸 만한 번역이 없습니다. 제가 번역을 시작한 배경에 대해서는 연재의 첫 포스팅 을 참조하기 바랍니다.
분량이 길지는 않지만, 한꺼번에 올리는 것은 번역자나 독자나 모두 부담되는 일일 것 같아서, 나누어 순차적으로 포스팅합니다. 원문이 28쪽 정도 되는데, 한 번에 두세 쪽씩 올리도록 하겠습니다. 물론 다른 주제들을 포스팅하는 것과는 별도로 진행되는 작업입니다.
처음에는 쪼개서 올리지만, 연재가 끝나고 나면 주석을 붙여 하나의 포스팅에 정리할 생각입니다. 연재 중에 오류, 제안, 의견, 질문 등을 댓글로 자유롭게 달아 주시면 고맙겠습니다. (리스팀, 보팅, 팔로는 저에게 힘이 됩니다.)
계산 기계와 지능 (번역 연재 4회)
앨런 튜링
4. 디지털 컴퓨터
디지털 컴퓨터의 배후에 있는 아이디어는 이렇게 설명될 수 있을 것이다. 즉, 이 기계는 인간 계산기human computer(=계산을 행하는 인간)가 행할 수 있는 모든 연산을 수행하도록 의도되었다. 인간 계산기는 정해진 규칙들을 따른다고 상정되어 있다. 인간 계산기는 정해진 규칙들을 아주 조금이라도 벗어날 권한이 없다. 이 규칙들이 책에 적혀 제공되며, 이 책은 인간 계산기가 새 일을 맡을 때마다 변경된다고 상정해 볼 수 있다. 인간 계산기는 계산에 필요한 종이를 제한 없이 공급받을 수도 있다. 인간 계산기는 ‘책상 기계’ 위에서 곱셈과 덧셈을 할 수도 있지만, 이 점은 중요하지 않다.
우리가 위의 설명을 정의로 사용한다면, 우리는 순환 논증의 위험에 빠질 것이다. 이를 피하기 위해, 우리는 바라는 결과를 달성할 수단의 윤곽을 그려 보이겠다. 디지털 컴퓨터는 통상 세 부분으로 구성된다고 여겨질 수 있다:
(1) 저장소Store.
(ii) 실행 유닛Executive unit.
(iii) 제어Control.
저장소는 정보의 저장소이며, 인간 계산기의 종이에 대응하는데, 이 종이는 계산을 하는 곳이건 규칙 책이 인쇄된 종이이건 상관없다. 인간 계산기가 머릿속에서 계산하는 한, 저장소의 일부는 인간 계산기의 기억에 대응할 것이다.
실행 유닛은 한 계산에 관여되어 있는 다양한 개별 연산을 수행하는 부분이다. 이 개별 연산들은 기계마다 다를 것이다. 통상 ‘3540675445를 7076345687과 곱하라’처럼 꽤 긴 연산이 행해질 수 있지만, 어떤 기계에서는 ‘0을 적어라’처럼 단지 아주 단순한 연산도 가능하다.
앞에서 우리는 컴퓨터에 제공된 ‘규칙 책book of rules’은 기계 안에서 저장소의 일부를 대신 차지한다고 언급한 바 있다. 이럴 때 그것은 ‘지시 표table of instructions’라고 불린다. 이 지시들이 정확히 올바른 순서로 따르는지를 보는 것이 제어의 임무이다. 제어는 이 일이 반드시 일어나도록 건설되어 있다.
저장소 안의 정보는 통상 적절히 작은 크기의 패킷(packet(=꾸러미)들로 쪼개져 있다. 가령 한 기계에서 한 패킷은 10개의 십진수로 구성될 수 있다. 다양한 정보 패킷이 저장된 저장소의 부분들에는, 체계적인 방식으로 숫자들이 할당된다. 전형적인 지시는 다음과 같을 수 있다 ―
‘6809 위치에 저장된 수를 4302에 저장된 수와 더하고, 그 결과를 다시 4302 저장소 위치에 넣어라.’
말할 필요도 없이 기계에서는 방금 영어로 표현한 방식으로 일이 일어나지는 않는다. 더 그럴듯한 건, 6809430217 같은 형식으로 코드화되는 것이다. 여기서 17은 많은 가능한 연산 중 어떤 것이 두 수 사이에서 수행되어야 할지 말하고 있다. 이 경우에 연산은 위에서 기술된 것, 즉 ‘... 수를 더하라’이다. 지시는 10개의 십진법 숫자digit를 차지하며 그런 식으로 아주 편리하게 정보 패킷 하나를 형성한다는 점에 주목해야 할 것이다. 보통 제어는 지시가 저장된 위치들 순으로 지시를 따르게 하겠지만, 종종
‘자, 5606 위치에 저장된 지시를 따르고, 거기서부터 계속하라’ 같은 지시를 만나게 되거나, 또는
‘만약 4505 위치가 0을 포함한다면 그 다음엔 6707에 저장된 지시를 따르고, 그렇지 않다면 계속 죽 가라.’ 같은 지시를 만나게 될 수도 있다.
이런 후자 유형의 지시는, 어떤 조건이 충족될 때까지 일련의 연산이 반복되게끔 하면서도 반복할 때마다 새 지시를 따르는 게 아니라 같은 지시를 되풀이해서 따르게 할 수 있다는 점에서 매우 중요하다. 집에서 일어나는 일의 비유를 들어 보자. 이렇게 가정해 보자. 어머니는 토미가 매일 아침 학교 가는 길에 신발 수선공에게 들러서 자기 신발을 다 고쳤는지 알아보려 한다. 어머니는 매일 아침마다 토미에게 새로 부탁할 수 있다. 아니면 어머니는 토미가 학교에 갈 때 볼 수 있게 현관에다 알림장을 딱 한 번 붙여 놓고는, 신발을 확인해 보라고, 또한 신발을 갖고 돌아오게 되면 알림장을 떼어버리라고 요구할 수도 있다.
(계속)
@whosoonhwang님께서 이 포스팅에 많은 관심을 가지고 있어요. 리스팀을 해주셨군요~!