|
현대세계에서 퍼스널 컴퓨터가 없다는 것은 아마 상상조차 할 수 없을지도 모른다. 그렇지만 내가 사회생활을 처음 시작하던 시절, 나는 회사에서 처음 컴퓨터를 접했다. 사무실 한쪽에 서너 대의 컴퓨터가 줄지어 있었고, 사람들은 컴퓨터를 쓰려면 앞서 쓰던 사람이 끝내기를 기다려야 했다. 또한 컴퓨터를 사용하는 방법을 배우기 위해 일주일간 사외교육을 받았고, 거기서 당시 쓰이던 프로그램인 PE와 MP를 배웠다. 그 때, 컴퓨터를 사용하여 할 수 있었던 것은 문서작성이 전부였는데 말이다. 그러다 몇 년 후, 아래한글 프로그램이 출시되자 그 사용방법을 몰라 끙끙대던 기억은 지금도 그 때를 생각하면 웃음이 저절로 나오게 만든다. 요즘이야 컴퓨터 프로그램도 많고, 또 사람들은 자기가 하고자 하는 목적에 맞게 컴퓨터를 자유자재로 다루고 있는 것을 보면 격세지감을 느끼기도 하지만, 앞으로 컴퓨터가 어디까지 진화할지를 생각하면 일말 기대가 되기도 하지만, 조금은 두려운 마음이 들기도 한다. 이 책 [생각하는 기계]는 이처럼 현대 전자기술 문명의 근간을 이루는 컴퓨터의 근본 원리를 다룬 책이다. 시중에는 수많은 컴퓨터 관련 서적이 범람하지만, 대부분이 여러 장치구성이나 활용법에 관한 것이라고 한다. 이에 저자는 현란한 신기술에 가려 잘 보이지 않는 컴퓨터과학의 근본원리를 일반인들이 쉽게 이해할 수 있도록 하기 위해 이 책을 썼다고 한다. 일찍이 아인슈타인은 “어린아이에게 설명하지 못하는 이론이라면, 제대로 이해하고 있다고 말 할 수 없다.”라고 했다. 이는 자신이 제대로 알지 못하는 경우, 남들이 알아들을 수 있도록 설명하는 것이 불가능하다는 말이기도 하다. 설명하고자 하는 것을 확실하게 알지 못하는 상태에서 남에게 설명한다는 것은, 이해를 돕기 보다는 오히려 혼란을 가중시키는 것임을 우리는 일상에서도 흔히 느낄 수 있다. 그렇지만 이 책을 읽으면서 나는 듣는 사람도 어느 정도 지식을 가지고 있을 때, 그 말이 성립함을 다시 한번 느낀다. 책을 읽는 순간에는 이해가 가는 것 같았지만, 한 단락을 다 읽고 난 다음에는 속 시원하게 이해가 되지 않았기 때문이다. 아마 IT부분에 대한 나의 지식이 짧기 때문에 생긴 일이 아닐까 싶기도 하다. 컴퓨터는 스위치(제어요소)와 커넥터(연결요소)라는 두 가지 요소만 충분히 확보되면 누구든지 재료에 상관없이 만들 수 있으며, 작동원리는 AND와 OR 함수의 조합이라고 한다. 컴퓨터 논리에서는 두 신호에 1과 0이라는 이름을 붙였고, 이는 일단 주어진 기능을 구현할 방법만 알면 더 이상 생각하지 않아도 된다는 뜻이라고 한다. 이것을 기능적 추상화라 하며, 컴퓨터는 기능적 추상화를 통해 만들어진 계층구조로 이루어졌다. 다시 말하여 AND나 OR 함수를 취급할 때, 기술에는 전혀 신경 쓰지 않아도 된다는 말이다. 또한 컴퓨터를 구현하기 위해서는 하드웨어적인 구성요소와 소프트웨어적인 구성요소가 필요하다. 하드웨어적인 구성요소로는 논리함수와 유한상태기계가 필요한데, 논리함수란 1과 0으로 추상화된 논리블록을 가리킨다. 각각의 입력조합에 대한 출력을 확정할 규칙만 기술할 수 있다면 AND, OR, 그리고 인버터 함수를 사용하여 어떠한 이진법 함수도 모두 구현할 수 있으며, 이것은 시간의 흐름에 관계없이 항상 일정한 작업을 수행하는 임의의 논리블록을 구성할 수 있음을 뜻한다고 한다. 그런가 하면 유한상태기계란 시간의 흐름에 따라 변하는 기능을 다루기 위한 장치로, 이전에 입력된 일련의 값들을 기억하게 만든다. 이런 유한상태기계의 상태를 저장하는 비트들을, 저장하는 논리블록을 우리는 레지스트라 부른다. 한편 소프트웨어적인 구성요소로는 프로그래밍 언어를 들 수가 있다. 컴퓨터는 자신이 어떤 일을 해야 할지 알아 듣도록 정확히 설명만 해주면 컴퓨터 스스로 다 알아서 한다. 이를 프로그래밍이라 하며, 프로그래머는 컴퓨터가 어떻게 그 일을 하는지 신경 쓰지 않고, 프로그래밍이라는 언어만 다루면 된다고 한다. 이처럼 컴퓨터는 프로그램이 실행되는 대로 작동되며, 프로그램은 프로그래밍 언어로 작성된다. 이 언어는 운영체계라 부르는 서브루틴 집합의 제어에 따라 인터프리터나 컴파일러에 의해 기계어 명령열로 변환되며, 컴퓨터 메모리 안에 저장되어 있는 이 명령들에 어떤 작업이 수행될 지에 대한 정의가 담겨있다. 유한상태기계는 이 명령들을 호출하여 실행하는 것이다. 이러한 유한상태기계와 메모리는 저장용 레지스트와 논리함수 블록으로 구성되어 있으며, 논리함수는 직렬이나 병렬로 구성된 스위치에 의해 구현된다. 이 스위치들은 0이나 1중 한 신호를 전송한다. 이것을 기능적 추상화의 계층구조라 부른다고 한다. 시간이 지날수록 인류의 기술은 발전하고 있다. 그리고 그 기술의 중심에는 컴퓨터가 있다. 지금까지 알려진 한, 인간이 증명할 수 있는 정리는 컴퓨터도 증명할 수 있고, 컴퓨터가 계산하지 못하는 문제는 인간도 계산할 수 없다고 한다. 이는 컴퓨터가 할 수 있는 일의 한계에 대한 논쟁을 불러 일으키기에 충분했다. 그 논쟁의 중심에 있는 것이 튜링기계, 호환성, 카오스 시스템 그리고 양자 컴퓨터와 같은 것 들이라고 한다. 튜링기계란 영국의 수학자 엘런 튜링의 이름에서 따온 것으로 무한한 메모리를 갖는 유한상태기계를 말한다. 세상에 존재하는 모든 종류의 계산장치를 다 모방할 수 있을 만큼 성능이 뛰어난 컴퓨터를 보편컴퓨터라 부른다. 이것은 수행하는 일의 관점에서 보면 모든 컴퓨터들은 근본적으로 동일하다는 것이며, 단지 임의의 두 컴퓨터 사이의 성능차이는 속도와 메모리 크기, 두 가지 밖에 없음을 뜻한다. 따라서 튜링기계란 프로그램만 적절히 만들어 주면 인간의 뇌가 하는 일을 보편컴퓨터가 따라 할 수 있다는 것이다. 한편, 카오스 시스템은 말 그대로 초기조건이 아주 조금만 변해도 시스템의 출력상태에 아주 큰 변화가 생기는 시스템을 말한다. 디지털 컴퓨터의 작동방식은, 설계된 대로 입력만 받아들여서 작업을 수행하기 때문에 무작위성을 나타낼 수 없다는, 결정론적인 법칙을 따르지만, 이 법칙들이 만들어내는 결과는 너무나 복잡하여 예측하기가 어려운 카오스 시스템의 특성들을 갖는다고 한다. 이것은 만약 양자컴퓨터가 가능하다면 기계로 인간의 뇌를 시뮬레이션 하는 것이 가능할지도 모른다는 우려를 낳게 만든다. 이처럼 컴퓨터의 한계가 어디까지 발전할지 모른다는 우려가 논쟁을 불러 일으키고 있는 것이다. 저자는 이에 대해 아무리 그렇다고 해도 인간 사고의 가치가 손상되지는 않을 것이라고 조심스레 말하고 있다. 튜링기계에서 보듯이 일반적으로 컴퓨터의 성능은 메모리와 속도로 결정된다. 메모리의 필요량은 컴퓨터의 성능과 처리시간을 판단할 때 중요한 기준이 되는 것이다. 그러나 이상적인 보편 컴퓨터는 메모리가 무한대이지만, 실제 컴퓨터는 비용문제로 인해 메모리가 제한적이다. 또한 컴퓨터의 속도는 메모리에 데이터를 넣고 빼내는 시간에 따라 결정된다. 지금까지 컴퓨터 기술의 발달로 메모리 방식 등 다른 것은 다 바뀌었어도, 프로세서와 메모리의 연결이라는 단순한 설계방식은 바뀌지 않았다. 즉, 프로세서와 메모리가 두 부분으로 나뉘어 데이터의 흐름이 순차적인 순차적 컴퓨터이다. 그리고 이것이 컴퓨터 속도를 한계에 봉착하게 만들었다고 한다. 이 문제를 해결할 수 있는 방식이 병렬컴퓨터 혹은 네트워크컴퓨터 라고 한다. 둘 사이의 차이는 명확하게 구별되지 않지만, 일반적으로 병렬컴퓨터는 한 장소에 모여있고, 네트워크컴퓨터는 지리적으로 여러 곳에 분산되어 있는 것 정도이다. 이는 실제 세계가 병렬로 작동하듯, 물리법칙에 근거한 연산도 병렬로 작동할 수 있음을 뜻한다. 인터넷은 순차적 컴퓨터들을 네트워크로 연결하다가 우연히 만들어진 것이라고 한다. 그렇다면 인공지능은 가능할까? 저자는 그 가능성을 열어두고 있다. 지금까지의 컴퓨터는 프로그래머가 제공하는 고정된 규칙에 따라 작동하는 것들이었다. 그러나 우리는 목표를 달성하기 위해서, 발생하는 오류에 따라 적절히 반응을 조절하는 피드백시스템과, 훈련신호가 그 시스템 내에서 자체적으로 만들어지는 자기조직화 시스템을 갖춘 컴퓨터가 머지않아 출현될 것 임을 쉽게 예상할 수 있다. 이미 온도제어 시스템과 같은 피드백시스템을, 그리고 자동항법장치나 복구메커니즘과 같은 자기조직화 시스템을 갖춘 기계들을 사용하고 있기 때문이다. 앞으로 컴퓨터가 어디까지 진화할지를 가늠케 하는 부분들이다. 그러나 기능적 추상화라는 계층구조는 오작동에 의한 시스템 붕괴를 일으킬 가능성이 항상 상존한다. 이는 각 부분이 다른 부분과 어떻게 상호작용 해야 할지 구체적 설계기준을 충족시켜야 하고, 또 각 부분이 제대로 작동함에도 불구하고 상호작용 시 예상 밖 행동이 나타나지 않도록 해야 하지만, 지금까지 이것들은 공학적인 설계과정의 약점으로 지적되고 있다. 인간의 뇌는 컴퓨터보다 훨씬 더 복잡하지만, 치명적인 오작동을 일으킬 우려는 훨씬 적은데 말이다. 저자는 이것을 시뮬레이션 진화로 해결할 수 있다고 생각한다. 컴퓨터가 생물학적 진화과정을 흉내 내게 하는 것이다. 특정목표를 실패 없이 달성할 수 있는 보장된 절차를 알고리듬이라고 한다. 이는 더 이상 빠른 해가 존재하지 않음을 증명하는 것으로 컴퓨터과학 최대의 미해결과제 이기도 하다. 또 정답을 낼 가능성은 크지만 완전히 100퍼센트 보장한다고는 할 수 없는 규칙을 휴리스틱이라고 하며, 이런 휴리스틱은 학습을 통해서 추측을 한다. 계층구조적 설계가 갖는 복잡성 대신, 초점을 컴퓨터의 조합능력으로 옮겨서, 설계방법을 경우의 수로 갖는 검색공간에서의 휴리스틱 탐색법을 사용한다면 그것이 가능하리라 저자는 생각한다. 수많은 검색을 통하여 휴리스틱은 강화되고, 결국은 알고리듬에 도달할 수 있다는 것이다. 컴퓨터가 스스로 알아서 진화하게 만드는 것이다. 오늘날 우리는 일상생활에서 컴퓨터의 존재를 무시하고서는 거의 아무것도 할 수가 없다. 그리고 지금보다 더 많은 것을 컴퓨터에 의존하려고 한다. 이러한 우리의 습관은 컴퓨터가 보다 더 똑똑해지기를 바라고, 마침내 인간의 기술로 진화한 컴퓨터는 스스로 생물학적 진화를 할지도 모른다. 그것은 우리가 공상소설에서 보아 온 지능을 가진, 생각하는 기계가 탄생될지도 모른다는 것이다. 이런 컴퓨터에 대해 우리 일반인들이 아는 것은 사실 아무것도 없다. 그렇기 때문에 이 책을 통해서 컴퓨터의 근본원리를 알아가는 시간은 책을 읽는 즐거움을 배가시켜 준 것 같다. 그러나 이 책을 내가 제대로 이해를 했는지는 자신이 없다. 이 글을 쓰고 난 후, 내가 다시 읽어보아도 아인슈타인의 말만 생각나기 때문이다. |
|
- 대니얼 힐리스 저, 노태복 역, 2006, 270쪽, 사이언스북스 그렇지 않아도 작년 이세돌과 ‘알파고’의 바둑게임에서 적지 않은 충격을 받은 바 있기에 ‘생각하는 기계, 컴퓨터’인 ‘인공지능’ 이야기가 담겨 있는 <생각하는 기계>를 몇 년 만에 다시 읽었다. “컴퓨터 한 대에 들어 있는 부품의 개수는 라디오에 비하면 훨씬 많지만, 부품들이 함께 작동하는 방식은 훨씬 더 단순 하다.”(12쪽)
저자는 ‘기술’보다는 ‘아이디어’가 ‘컴퓨터의 핵심’이라고 주장한다. 게다가 아이디어는 컴퓨터를 제조하는 데 필요한 전자 기술과는 별로 관련이 없다고까지 말한다. 보통은 컴퓨터를 트랜지스터와 전기 회로로 만들지만, 컴퓨터 구성 원리에 따르기만 하면, “밸브나 수도관 심지어 막대와 줄로도 만들 수 있다”는 것이다. “컴퓨터가 컴퓨터일 수 있게 해주는 것은 바로 그 원리다! 컴퓨터에 관한 가장 놀라운 점은 기 술보다는 핵심 원리가 훨씬 더 중요하다는 사실이다. 이 책은 바로 그 원리에 관한 책이다.”(12쪽)
<생각하는 기계>는 대니얼의 설명처럼 아이디어에 관한 책이다. 따라서 컴퓨터 활용법 내지는 컴퓨터를 만드는 기술(롬, 램 디스크 드라이버 등)에 관한 대다수의 책들과는 다르다. 이 책에서는 컴퓨터 과학 분야의 가장 중요한 아이디어들을 설명하거나 적어도 간략히 소개한다. 불 논리, 유한 상태 기계, 프로그램, 컴파일러와 인터프리터, 튜링 보편 기계, 정보 이론, 알고리듬과 알고리듬의 복잡성, 휴리스틱, 계산불능 문제, 병렬 컴퓨터, 양자컴퓨터, 신경 네트워크, 기계어, 자기 조직화시스템 등을 말이다.
컴퓨터에 관심이 많은 독자라면, 이 책에 나오는 아이디어들을 이 전에 접해 보았을지도 모른다. 그러나 컴퓨터 과학을 정식으로 배우지 않은 이상, 각각의 아이디어를 전체적으로 연결하여 하나의 컴퓨터를 구성하는 방법에 대해서는 알아볼 기회가 거의 없었을 것이다. 이 책은 바로 그 연결에 대해 설명한다. 저자는 이 책에서 스위치 1개를 켜고 끄는 물리적인 동작에서부터 자기 인식 병렬 컴퓨터가 행하는 학습과 적응능력까지 컴퓨터 과학에서 다루는 아이디어를 연결한다.
대니얼은 블록 쌓기놀이의 일종인 ‘팅커토이’라는조립용 완구로 어린 시절 오목게임과 비슷한 간단한 게임을 하는 ‘팅커토이 컴퓨터’를 만들었다. 어떻게 어린 아이가 컴퓨터를 만들 수 있었을까? 어린 대니얼이 컴퓨터의 근본원리를 훤히 파악했기에 가능한 일이었다. 어린 대니얼이 컴퓨터를 제작할 수 있도록 이끌었던 그 근본 원리는 바로 ‘보편 구성 블록’과 ‘불 논리 (boolean logic)’다.
역자는 이 근본 원리를 적용하면, “재료나 제작 수단은 문제가 되지 않는다”고 말한다. “굳이 전자 장치가 아니어도, 기계 장치나 장난감 완구, 물놀이 기구 그리고 생체 분자로도 컴퓨터를 만들 수 있다. 어떤 형태의 컴퓨터든 컴퓨터를 컴퓨터가되도록 만든 이 근본 원리를 이 책을통해 손에 넣을수 있다. 어쩌면 컴퓨터를 만들어낸 근본 원리가 세상 모든 현상을 지배하는 만물의 근본원리와 통하는지도 모를 일이다. 근본은 근본끼리 통하니까 말이다."(6쪽)
<생각하는 기계>의 1장에서는 컴퓨터의 근본원리와 이를 어떻게 손에 잡히듯이 구현할 수 있는지를 소개하고 있다. 1장과 2장에서는 불 논리(boolean operations), 비트, ‘유한 상태 기계 (finite-state machine, FSM)’, ‘보편 구성 블록’의 개념을 다룬다. 3장이 끝날 무렵에는 컴퓨터가 어떻게 작동하는지를 전체적으로 이해할 수 있다. (불 논리 : AND, OR, XOR 와 NOT 연산자. 한 개의 비트라고 하면 떠올릴 수 있는 것은 정보의 최소 단위량이다. 그런데 이것은 예, 아니오, 활성화와 비활성화, 참, 거짓 등… 두 가지의 가능한 값 중 하나만을 표시하는 것과 같이 단지 1과 0만을 저장할 수 있다. 여러 가지 연산에서 다른 비트들과 또는 스스로와 결합하는 비트 연산을 할 수 있다. 이러한 연산을 이 분야에 공헌을 한 수학자 George Boole(1815-1864)의 이름을 따서 불 연산-논리-이라고 부른다.) (유한 상태 기계 : 컴퓨터 프로그램과 전자 논리 회로를 설계하는데에 쓰이는 수학적 모델이다. 간단히 ‘상태 기계’라고 부르기도 한다. 유한 상태 기계는 유한한 개수의 상태를 가질 수 있는 오토마타, 즉 추상 기계라고 할 수 있다. 이러한 기계는 한 번에 오로지 하나의 상태만을 가지게 되며, 현재 상태(Current State)란 임의의 주어진 시간의 상태를 칭한다) (보편 구성 블록 : 논리 함수와 논리 블럭 그리고 유한 상태 기계의 집합. 이 요소들을 이용하면 컴퓨터를 쉽게 만들 수 있다.)
4장 에서부터 6장 메모리에서는 컴퓨터를 작동시키는 핵심 요소들에 대해 간결하면서도 자세한 설명이 담겨 있다. 특히 4장에서 소개한 ‘튜링 기계’의 보편성과 ‘양자컴퓨터’의 가능성도 주목할 만하다. (튜링 기계 : 수학적 모형의 일종으로, 특수한 테이프를 기반으로 작동하는 기계이다. 튜링 기계가 사용하는 테이프 위에는 테이프 머릿기호를 바탕으로 기계가 인식하거나 기록할 수 있는 기호들이 있다. 작동 방식은, “42번째 상태에서 0이라는 기호가 있다면 1을 쓴다. 1이라는 기호가 있다면 17번째 상태로 간다. 17번째 상태에서 0이라는 기호가 있다면 1을 쓰고, 1이라는 기호가 있다면 6번째 상태로 간다”와 같이 유한한 개수의 기초적 지시문으로 이루어진다.) (양자 컴퓨터 : 얽힘(entanglement)이나 중첩(superposition) 같은 양자역학적인 현상을 이용하여 자료를 처리하는 계산 기계이다. 고전적인(전통적인) 컴퓨터에서 자료의 양은 비트로 측정된다. 양자 컴퓨터에서 자료의 양은 큐비트로 측정된다. 양자 계산의 기본적인 원칙은 입자의 양자적 특성이 자료를 나타내고 구조화할 수 있다는 것과 양자적 메카니즘이 고안되어 이러한 자료들에 대한 연산을 수행할 수 있도록 만들어질 수 있다는 것에 기한다. 양자 컴퓨터가 기존 컴퓨터보다 빠를 수는 있지만, 기존 컴퓨터로 풀 수 없는 문제는 양자 컴퓨터 역시 풀 수 없다. 충분한 시간과 메모리가 주어지더라도 마찬가지이다.)
7장과 8장에서는 ‘병렬 컴퓨터’와 ‘학습형 컴퓨터’에 대해 논의 한다. 실제 컴퓨터 과학자로서 수많은 컴퓨터 제작 경험을 바탕으로 한 컴퓨터 과학의 현재와 미래가 생생히 조망되어 있다. (병렬 컴퓨터 : 동시에 많은 계산을 하는 연산의 한 방법이다. 크고 복잡한 문제를 작게 나눠 동시에 병렬적으로 해결하는 데에 주로 사용되며, 병렬 컴퓨팅에는 여러 방법과 종류가 존재한다. 그 예로, 비트 수준, 명령어 수준, 데이터, 작업 병렬 처리 방식 등이 있다. 병렬 컴퓨팅은 오래전부터 주로 고성능 연산에 이용되어 왔) (학습형 컴퓨터 : 되먹임 시스템과 뉴런 네트워크, 자기 조직화 시스템 등을 이용하여 스스로 학습하는 기능이 부여된 컴퓨터로서 병렬 컴퓨터로 가능하다. 자동 항법 장치나 복구 매카니즘 등은 학습형 컴퓨터의 사례다.) “컴퓨터의 능력을 한층 더 업그레이드 시킬 이 연구들이 어떠한 마인드를 바탕으로 어떻게 실제로 구현될 수 있는지 보여준다. 실제로 이러한 연구와 관련된 독자라면 이 장에서 나름의 통찰력을 얻을 수 있으리라."(7쪽) 한낱 기계장치가 어떻게 그런 능력을 가질 수 있는지를 단순한 공상의 관점에서가 아니라 현장 설계자의 관점으로 구체적으로 제시하고 있다.
대니얼은 컴퓨터의 본질을 잘 나타내는 일반적인 주제 몇 가지 있다고 설명한다. 그 첫째가 ‘기능적 추상화(functional abstraction)’의 원리다. “이는 원인과 결과의 계층 구조와 관련이 있다. 이 원리가 여러 단계에 걸쳐 반복적으로 적용된 대표적인 예가 바로 컴퓨터라고 할 수 있다. 하위 단계에서 무슨 일이 진행되고 있는지 세세하게 알지 못하더라도, 계층구조의 어느 특정 단계의 작업에만 집중할 수 있다는 점에서, 컴퓨터는 이해하기 쉽다. 기능적 추상화의 원리로 인해 아이디어와 기술은 별개가 될 수 있다.”
이 책의 세 번째 주제는 첫 번째 원리와는 어떤 의미에서 반대라고 할 수도 있다. 완전히 새로운 컴퓨터 설계와 프로그램 작성법, 즉 기존에 표준으로 여겨졌던 공학적 접근법과는 동떨어진 전혀 새로운 방법이 존재할 수 있다. “시스템이 너무 복잡해지면 정상적인 설계 방법이 소용없어진다는 점을 생각해 볼 때, 이 방법은 매우 흥미롭다. 컴퓨터를 설계할 수 있도록 해준 ‘기능적 추상화’의 원리가 결국에는 취약성과 비효율성을 초래하고 만다. 이 약점은 정보처리 기계의 어떤 근본적인 한계와는 전혀 관계가 없고, 계층 구조의 설계 방법이 갖고 있는 한계일 뿐이다. 그 대신에 생물학적 진화와 유사한 설계 방식을사용하면 어떨까? 즉 하향식 제어(top-down control) 구조가 아니라 많은 단순한 상호작용들의 축적을 통하여 시스템 특성이 창발적으로 출현하도록 하는 방식은 어떨까? 그처럼 진화된 방식으로 설계된 컴퓨터는 생물이 가진 견고성과 융통성을 동시에 가질지도 모른다. 최소한 그러한 희망을 품어 볼 수는 있다. 이 접근방식은 아직 제대로 정의조차 되어 있지 않고, 어쩌면 끝내 실현할 수 없을지도 모른다. 이것이 내가 최근에 연구하고 있는 주제다.”
<생각하는 기계>를 읽다 보면, 대니얼이 2006년에 이미 10년 후 ‘알파고’가 이세돌과의 바둑 게임에서 승리할 것을 예언한 셈이다. 그러나 알파고가 바둑 게임에서 이세돌을 이기기는 했어도 <생각하는 기계>의 출간 당시 대니얼이 연구하고 있던 주제인 ‘생물이 가진 견고성과 융통성을 동시에 가진 컴퓨터’는 아직 요원한 상태로 보인다. 그리고 역자가 지적하듯이 ‘생각하고 스스로 발전하는 컴퓨터’의 출현이 인류에게 던진 질문인 ‘인간 또는 인간의 정신이란 무엇인가’에 대한 해답도 궁리 중일 뿐이다. 저자는 이에 관해서도 나름의 철학을 제시하고 있다. 단순히 컴퓨터 사용법이나 컴퓨터의 구성 장치를 설명하는 책은 헤아릴 수 없이 많다. 또한 컴퓨터의 원리나 기능에 대한 전문서적들도 많이 존재한다. 하지만컴퓨터의 근본원리와 그 기능을 손에 잡힐 듯이 다룬 책은 참으로 드물다. 뿐만 아니라 ‘생각하고 스스로 발전하는 컴퓨터’의 현재와 미래를 현장 개발자의 시각으로 생생히 탐구한 점도 경이롭다."(8쪽)
“나는 우리가 지능의 본질이 무엇인지 이해하기 전이라도 인공지능을 창조할 수 있다고 믿 는다. 내 생각에는 지능의 창조는 아마도 자세히 이해할 수 없는 복잡한 일련의 상호 작용을 통해 지능이 출현하도록 여건을 마련 해주면 되는 것 같다. 즉 그 과정은 기계를 공학적으로 만드는 것보다는 케이크를 굽거나 정원을 가꾸는 일에 좀 더 가까울 듯하다. 인공 지능을 공학적으로 만들기보다는 지능이 출현할 올바른 조건들을 마련하면 된다. 이 시대의 가장 위대한 기술상의 성취는 공학의 한계를 뛰어 넘는 도구의 발명, 즉 이해가능한 것 이상을 창 조하게 해주는 도구의 발명이라고 해도 좋으리라."(327쪽)
하지만 <생각하는 기계>를 읽은 후 필자는 대니얼의 예측과 기대는 ‘불가능’에 가깝다고 생각한다. ‘지능’은 ‘인공적’으로 만들 수 없기 때문이다. 인류의 과학자들이 지금까지 ‘창조’나 ‘발명’이라고 주장해온 중요한 것들, 즉 원자, 광자, 양자, 유전자 등 물리적, 화학적 요소와 현상들은 ‘만들어진’ 게 아니라 ‘태초부터’ 원래 존재하던’ 것이었다. 인류는 ‘존재하던’ 것을 ‘발명’이 아니라 ‘발견’했을 뿐이다.(이것은 ‘창조자’나 ‘신’과 관련된 이야기도 아니다.) 물론 인간의 ‘지능’이 ‘태초부터’ 존재하던 것은 아니었다. 그러나 인간의 지능이 작동하는 물리적, 화학적 바탕은 마찬가지로 ‘태초부터’ 존재하던 물질에 기반하며, 더욱 결정적인 것은 ‘인간의 지능’은 현재 인류가 직접 볼 수 없는 ‘원소’ 물질에서 시작하여 수십 억년의 진화를 거쳐 발달해왔고 앞으로도 발달할 것이기 때문이다.
더군다나 ‘인간의 지능’ ‘인류의 진화’는 대니얼과 같은 과학자들이 아직 바라보지 못하는 특성이 다수 존재한다. 그중 가장 중요한 요소는 ‘생명체’와 ‘우주적, 사회적 존재’라는 인간의 특징, 그리고 ‘인류 진화는 현재진행형’이라는 특징이다. 컴퓨터나 기계와 달리 동식물과 인간은 모두 ‘살아 숨쉬는 생명체’이고 ‘죽고 다시 태어나는 존재’이다. 살아 숨쉬는 것과 죽음은 생명체에게는 동시에 존재한다. 태어남과 동시에 죽음이 시작되는 셈이다. 무생물체인 기계와 컴퓨터에게는 애초부터 불가능한 부분이다.(그래서 작가와 영화감독들이 상상한 것이 바로 그런 생명체를 숙주로 하여 미래에 존재할 것 같은 공상영화 ‘매트릭스’다.) ‘현재진행형’ ‘우주적 사회적 존재’라 함은, 인간은 홀로 존재하고 진화하고 발달하는 것이 아니라 태양-지구-달이라는 태양계 시스템 속에서 태어나고 죽는 존재이며 태양계는 거대한 은하계 시스템 속에 존재하고 있다. 또한 인간은 집단을 이루며 서로 소통하기 때문에 다른 동물보다 월등(?)하게 진화할 수 있었고 끊임없이 발달하고 있다. 이러 부분 역시 기계나 컴퓨터에게는 불가능한 일이다. 대니얼이 <생각하는 기계>에서 다룬 불 논리, 유한 상태 기계, 프로그램, 컴파일러와 인터프리터, 튜링 보편 기계, 정보 이론, 알고리듬, 휴리스틱, 병렬 컴퓨터, 양자컴퓨터, 신경 네트워크, 자기 조직화시스템 등은 인간이 ‘사회적, 조직적’으로 컴퓨터에게 입력하는 것이다.
<생각하는 기계>는 오랜만에 읽는 과학도서다. 보관 중인 책과 서평을 정리하다가 2010년 경 읽은 것으로 분류해 놓았던 ‘사이언스 마스터스 시리즈’ 중에서 <생각하는 기계>의 서평이 누락된 것을 발견했다.
[2017년 6월 30일] |
|
생각하는 기계/대니얼 힐리스/노태복/사이언스북스/2006 완전히 깜깜한 컴맹까지는 아니지만 그래도 거기에 가까운지라 한번쯤은 이런 책을 읽어봐야 겠다고 생각했습니다. 어차피 요즘이야 컴퓨터를 활용하는 것은 컴퓨터가 하라는 데로 하는 것이고 관련 종사자가 아닌 이상 물리적으로 컴퓨터를 만들 일도 관련 소프트웨어나 프로그램을 개발할 일도 없지만 컴퓨터 공학 자체가 논리적 연산에 의거하고 있고 그렇다면 결국 논리학과 철학에서 시작한다 하니 컴퓨터라는 것이 존재하게 된 기본적인 아이디어에 대해 한번쯤은 정리를 해 두는 것도 좋겠다 싶어서지요. 이 책은 머리말과 맺음말이 있고 가운데 실제 내용은 총 9편입니다. 머리말에는 컴퓨터 과학 분야를 관통하는 핵심 아이디어 즉 기능적 추상화, 특수가 아니라 어떤 컴퓨터든 원리적으로 동일하다는 보편 컴퓨터 논리 그리고 하향식 제어 시스템에서 벗어나 창발적인 시스템으로와 전환 등에 관한 것을 간략하게 소개합니다. 1장은 불 대수 즉 논리 명제. AND OR NOR 에서 클로드 섀넌의 계전식 스위치 회로의 기호 해석 입니다. 제목이 어렵게 느껴질 수 있는데 책을 읽어 보면 틱택톡이나 게임트리 같은 것으로 쉽게 설명해 주고 있습니다. 결국 AND OR 인버터 함수로 잘 구현할 수 있다고. 2장은 보편논리 구성. 0과 1로 추상화된 논리 구조가 컴퓨터 원리의 기본인 것은 다들 들어보셨을 듯. 논리 함수와 유한 상태 기계라는 유용한 구성 불록 집합이 결국 컴퓨터라는 것. 당연히 AND OR 인버터로 결국 0,1 중 하나가 나오게 되는 과정을 따르며 비트가 8인지 16인지 64인지 등등에 따라 한계가 있고 그 한계를 넘어서면 다시 0부터 시작한다는 것이지요. 3장은 프로그래밍.컴퓨터가 작업을 잘 시행할 수 있도록 컴퓨터가 이해할 수 있는 용어로 짜야 한다는. 즉 객체 지향 언어. 그렇지 않으면 의도하지 않은 무한 루프에 빠지기도. 물론 애초에 컴퓨터 용어의 특성상 반 접으면 똑같은 회문은 피해야. 4장 튜링기계는 보편적일까? 보편적이다. 5장 알고리즘과 휴리스틱. 알고리즘을 애초에 잘 짜면 복잡해 보이는 과정이 아주 쉽게 단축될 수 있고, 그렇지 못하면 빙빙 돌아 일을 처리하게 된다는. 그리고 알고리즘도 완벽하지 않다. 심지어 참인 걸 빤히 알지만 증명할 수 없는 문제가 있는 법이라고 괴델이 말하지 않았나. 그렇다고 대략의 답을 만들지 않을 수는 없는 것이 세상사. 어림 값으로라도 처리 할 수 있는 그 상태 나름에서 최선을 뽑는 휴리스틱도 있다는. 이미 설정되어 있는 알고리즘과는 달리 휴리스틱은 반복적인 학습(연산처리)을 통한 추측 기제로 당시에는 체스 라든가, 바둑에도 널리 쓰였다고. 6장 메모리 최대한 메모리를 잘 활용하려면 압축, 오류발견과 수정 프로그램, 그리고 난수와 암호 해독 등이 도입. 데이터의 규칙성을 이용한 압축, 오류 확인 위해 데이터 전체를 반복하는 것보다 효율적인 패리티 비트 등 7장 컴퓨터의 속도 : 병렬 컴퓨터 예찬. 프로세스와 데이터 사이의 흐름이 원활하지 않은 문제를 해결하기 위한 병렬 컴퓨터 활용 제시. 저자가 이 책을 쓸 때는 20세기 말로 이 병렬 컴퓨터 혹은 네트워크 컴퓨터가 인터넷으로 발전하는 초입이었는데 정말 저자의 예상대로 눈부신 발전을 거듭해 왔음. 그리고 프로세스와 데이터 사이의 흐름은 지금 우리 나라 SK에서 신기술로 극복중. 8장 학습하고 적응하는 컴퓨터 - 뉴런 네트워크로 가중치를 얻어 점차 배워가는 컴퓨터, 그리고 그 훈련 신호를 컴퓨터 자체적으로 조성하는 자기 조직화 시스템 9장 생각하는 기계의 진화 - 자연 속에 일어나는 진화와 학습 사이의 상호 효과인 볼드윈 효과는 기계에서도 가능하다. 과연 이 기계의 미래는... 저자는 컴퓨터 공학자이자 과학자입니다. 이 책이 나온지 25년 이상 지났지만 컴퓨터는 이 책에서 유추하거나 짐작한 것이 모두 지금 현실화되고 더 나아가 있는 상황이지요. 그런데 놀랍게도 이 책에서 설명한 기본적인 컴퓨터의 원리와 아이디어는 지금도 여전합니다. 처음 도식과 그림에 살짝 겁을 먹었지만 차근차근 읽어 보면 그리 어렵지 않으며 컴퓨터라는 존재에 대해 기본적인 이해를 하기에는 좋은 책이라고 생각합니다. 조금더 상세하게 알고 싶다면 이광근의 컴퓨터 과학이 여는 세계가 괜찮을 듯. |