JANGUN


생각하는 기계
THE PATTERN ON THE STONE
: The Simple Ideas That Make Computers Work

저자 : Daniel Hillis
노태복 옮김


목차

머리말: 돌 위에 새겨진 마법의 무늬
1장 너트와 볼트
2장 보편 구성 블록
3장 프로그래밍
4장 튜링 기계는 과연 보편적일까?
5장 알고리즘과 휴리스틱
6장 메모리 : 정보와 암호
7장 컴퓨터의 속도 : 병렬 컴퓨터
8장 학습하고 적응하는 컴퓨터
9장 생각하는 기계의 진화

머리말: 돌 위에 새겨진 마법의 무늬

컴퓨터의 본질을 잘 나타내는 일반적인 주제가 몇 가지 있다. 그 첫째가 기능적 추상화의 원리다. 이는 앞서 말한 원인과 결과의 계층 구조와 관련이 있다. 이 원리가 여러 단계에 걸쳐 반복적으로 적용된 대표적인 예가 바로 컴퓨터라고 할 수 있다. 하위 단계에서 무슨 일이 진행되고 있는지 세세하게 알지 못하더라도, 계층 구조의 어느 특정 단계의 작업에만 집중할 수 있다는 점에서, 컴퓨터는 이해하기 쉽다.
두 번째 주제는 보편 컴퓨터의 원리다. 이는 세상에는 오직 한 종류의 컴퓨터만 존재함을 뜻한다. 컴퓨터 장치는 트랜지스터, 막대, 줄, 신경 세포 등 무엇으로 만들든 하나의 보편 컴퓨터로 환원될 수 있다.
세 번째 주제는 첫 번째 원리와는 어떤 의미에서 반대라고 할 수도 있다. 완전히 새로운 컴퓨터 설계와 프로그램 작성법, 즉 기존에 표준으로 여겨졌던 공학적 접근법과는 동떨어진 전혀 새로운 방법이 존재할 수 있다.
철학자 그레고리 베이트슨은 언젠가 정보를 가리켜 ‘차이를 생기게 할 정도의 차이’라고 정의했다.
컴퓨터의 진정한 위력은 아이디어의 결과물인 미디어를 처리하는 능력이라기보다는 바로 아이디어 그 자체를 교묘히 다룰 수 있는 능력이다. 내가 경이롭다고 생각하는 사실은 도서관에 있는 모든 책에 들어 있는 정보들을 컴퓨터에 저장할 수 있다는 것보다 이 책에 기술된 개념들 사이의 관계를 인지할 수 있는 컴퓨터의 능력이다. 즉 회전하고 있는 은하계나 비행 중인 새의 동영상을 보여 주기보다는 이런 신비한 현상을 일어나게 하는 물리 법칙의 결과를 예상할 수 있는 그런 능력 말이다.
컴퓨터는 성능이 좋은 계산기나 카메라나 그림 그리는 붓이라기보다는 우리의 사고 능력을 키우고 확장하는 장치이다. 상상의 세계를 현실화하고 있는 이 기계는 처음에는 인간이 생각하는 대로 작동했지만 이제는 인간의 생각으로는 결코 도달하지 못했던 세계를 우리 앞에 펼쳐 보여 주고 있다.

1장 너트와 볼트

불 논리
논리학자 조지 불 (George Boole-‘An Investigation of the Laws of Thought’) : Boolean Algebra
드모르간의 법칙 (Augustus De Morgan)
불의 업적은 MIT의 젊은 공학도인 클로드 섀넌의 위대한 논문을 통해 컴퓨터 과학에 본격적으로 도입되었다. 섀넌은 수학의 한 분야인 정보 이론을 창안한 사람으로 유명한데, 이 이론에서 섀넌은 정보의 단위를 비트라고 정의한다. 섀넌은 1940년에 ‘계전식 스위치 회로의 기호 해석’ – 불 대수의 표현을 전기 회로로 그대로 옮길 수 있다는 사실을 보여 주었다.
틱택토 게임
첫 번째 단계는 가능한 모든 경우의 수를 유형별로 정리하는 것이다. 두 번째 단계는 각각의 유형을 판별하고, 그에 따라 응수할 수 있도록 각 유형을 전기 회로로 변환하는 것이다.
비트와 논리블록
밸브와 파이프로 만드는 수압 컴퓨터
팅커 토이 – 복잡한 시스템을 제어하는 유일한 방식은 오직 복원 논리뿐이다.
기능적 추상화의 힘 – 컴퓨터 논리에서 두 신호에 1과 0이라는 이름을 붙이는 것은 기능적 추상화의 한 예다.


2장 보편 구성 블록

논리 함수 – 보편적 논리 블록의 집합이 중요한 까닭은 이 집합만으로 무엇이든 만들 수 있기 때문이다.
유한 상태 기계


3장 프로그래밍

어떤 일을 수행할지를 컴퓨터가 알아듣도록 정확히 설명해 주기만 하면 컴퓨터는 마치 마법을 척척 그 일을 해 낸다. 핵심은 컴퓨터가 해 주었으면 하는 일을 제대로 설명하는 것이다. 숙련된 프로그래머는 보통 사람들은 표현하기 어려운 느낌을 언어로 표현할 줄 아는 시인과 비슷하다.
컴퓨터에게 말 걸기
어떤 단어의 정의 안에 그 단어를 다시 끼워 넣는 것이 ‘재귀(recursion)’라고 부른다. 재귀적 정의의 전형적인 구조는 두 부분으로 구성되어 있다. 첫 번째 부분에서는 단순한 어떤 특정 사례를 기술하고, 두 번째 부분에서는 좀 더 복잡한 사례가 어떻게 해서 더 단순해질 수 있는지를 기술한다.
연결 고리 만들기
컴퓨터는 메모리와 결합된 특별한 유형의 유한 상태 기계라고 할 수 있다.
컴퓨터는 번역가
계층 구조의 세계 – 기능적 추상화라는 계층 구조.


4장 튜링 기계는 과연 보편적일까?

튜링 기계 – 프로그램만 적절히 만들어 주면 인간의 뇌가 하는 일도 보편 컴퓨터가 따라서 할 수 있다.
아날로그 컴퓨터와 디지털 컴퓨터
컴퓨터와 카오스 시스템
계산 불능 문제 – 어떤 수학 명제의 참과 거짓을 판단할 수 있는가?
괴델의 불완전성의 정리(‘산술의 기본 공리를 포함하는 임의의 모순 없는 이론 체계에서, 참이지만 증명이 불가능한 명제가 항상 존재한다’)에 따라 이 문제를 풀 알고리즘도 역시 존재하지 않는다.
양자 컴퓨터
컴퓨터에 관한 이론의 한계를 가지고 인간과 기계를 분리하는 구분선을 그을 수는 없다. 지금까지 알려진 바에 따르면 인간의 뇌는 컴퓨터와 같으며 사고는 단지 복잡한 계산일 뿐이다. 사고가 복잡한 계산이라는 주장은 생명은 복잡한 화학 반응이라는 생물학자의 말과 비슷하다. 단순하고 이해 가능한 부분들이 모여서 생명과 사고가 형성된다는 사실이 내게는 매우 위해대 보인다.


5장 알고리즘과 휴리스틱

최적의 알고리즘 찾기
휴리스틱: 만점이 아니라 합격점에서 만족하기
정답을 낼 가능성이 크지만 완전히 100퍼센트 보장한다고는 할 수 없는 규칙을 휴리스틱이라고 부른다. 휴리스틱은 학습을 통해 추측을 한다. 좋은 류리스틱일수록 그 추측이 옳을 확률이 높다. 컴퓨터가 놀랍도록 뛰어난 성능을 발휘하는 것은 알고리즘보다는 실은 휴리스틱 덕분이다.
1. 체스 판 위에 말들이 종류별로 몇 개 있는지 세어 어느 편이 상대적으로 얼마나 강한지를 판단한다.
2. 몇 수 후를 내다보고 가능한 한 최상의 위치로 말을 옮긴다
3. 상대방이 자기와 비슷한 전술을 구사하리라고 예상한다.
적합도 지형
단순한 요소들이 결합하여 결국 경우의 수가 폭발적으로 늘어나는 것을 결합적 폭발이라고 한다. 경우의 수의 집합도 ‘공간’이라고 부를 수 있다. 이 논리를 확대하여 경우의 수를 적합도 지형이라는 이차원 지형에 표현한다고 상상해 보자. – 언덕 오르기


6장 메모리 : 정보와 암호화

정보의 측정 단위인 비트는 정보의 전송과 저장 두 가지 면에서 모두 안성맞춤이다. 어떻게 보면 정보의 전송과 저장은 동전의 양면과다 같다. 전송은 메시지를 한쪽에서 다른 쪽으로 보내는 반면에, 저장은 메시지를 한 시간대에서 다른 시간대로 ‘보낸다’.
데이터 압축의 비밀
암호화
오류 탐지 코드


7장 컴퓨터의 속도 : 병렬 컴퓨터

병렬 컴퓨터와 컴퓨터 네트워크 – 일반적으로 서로 협동해서 작동하는 일련의 컴퓨터는 병렬 컴퓨터라고 부르고, 연결된 컴퓨터가 개별적으로 사용되면 컴퓨터 네트워크라고 부른다.
병렬 컴퓨터는 복잡해 질 것이고 시스템의 구성 부분은 제대로 협동하지 못할까?
암달(Gene Amdahl)의 법칙 – 병렬 처리 과정에는 한 번에 한 프로세서만 수행할 수 있는 순차적인 연산 과정이 포함되어 있을 수 밖에 없다. 그리고 순차적인 연산 과정이 단 10퍼센트뿐이어도, 나머지 90퍼센트의 속도를 아무리 증가시켜도 전체적으로 볼 때 연산 속도는 10분의 1 이상 증가할 수 없다.
수백만 개의 연산을 동시에 일관성 있게 처리하고 인간의 뇌보다 병렬성이 더 뛰어난 컴퓨터를 향한 열정! 인간의 뇌는 느린 요소들로 구성되어 있으면서도 빠른 연산을 수행할 수 있으니 암달의 법칙이 통하지 않는 경우라고 생각한다. 설계가 성능을 결정하는 것이다.
데이터 병렬 분할 기법
연산 병렬 분할 기법
해결의 열쇠는 정렬 알고리즘에서 사용된 방식과 약간 비슷하게, 매 단계마다 절반씩 그 문제를 나누는 방법이다. 대부분의 연산이 작은 부분 연산으로 일관성 있게 나뉠 수 있는 한 가지 이유는 그것이 실제 세계의 물리 법칙에 근거를 두고 있기 때문이다. 실제 세계가 병렬로 작동하듯 물리 법칙에 근거한 연산도 병렬도 작동될 수 있다.
창발(Emergence)이란 하위 구성 요소에서는 나타나지 않는 행동 특성이 상위 전체 구조에서는 돌연히 나타나는 현상


8장 학습하고 적응하는 컴퓨터

컴퓨터는 실수를 통해 배울 수 있고 자신의 오류를 스스로 고칠 수도 있다. 이를 실현할 수 있도록 하는 원리는 바로 되먹임(feedback)이다. 되먹임에 바탕을 둔 시스템은 모두 아래 세 가지 정보를 필요로 한다.
1. 바라는 상태가 무엇인가? (목표)
2. 현재 상태와 목표 상태의 차이는 무엇인가? (오류)
3. 현 상태와 목표 상태의 차이를 줄이려면 어떤 조치를 취해야 하는가? (반응)
- 비례 제어
컴퓨터 훈련시키기
뉴런 네트워크 – 퍼셉트론(Perceptron)
자기 조직화 시스템 – 훈련 신호가 그 시스템 내에서 자체적으로 만들어지는 시스템


9장 생각하는 기계의 진화

우리가 지능의 본질이 무엇인지 이해하기 전이라도 인공 지능을 창조할 수 있다고 믿는다. 지능의 창조는 아마도 자세히 이해할 수 없는 복잡한 일련의 상호 작용을 통해 지능이 출현하도록 여건을 마련해 주면 되는 것 같다. 즉 그 과정은 기계를 공학적으로 만드는 것보다는 케이크를 굽거나 정원을 가꾸는 일에 좀 더 가까울 듯하다. 인공 지능을 공학적으로 만들기보다는 지능이 출현할 올바른 조건들을 마련하면 된다. 이 시대의 가장 위대한 기술상의 성취는 공학의 한계를 뛰어 넘는 도구의 발명, 즉 이해 가능한 것 이상을 창조하게 해 주는 도구의 발명이라고 해도 좋으리라.
뇌 – 약 1012개의 뉴런이 있고, 각 뉴런은 평균적으로 105개의 이웃 뉴런과 연결
뇌의 기능은 어느 부위를 어떤 특정 기능에 적합하게 만들도록 시냅스 연결의 강도를 다양하게 변화시키는 일종의 자기 조절 과정을 통해 학습되었는지도 모른다. 뇌는 매우 복잡할 뿐만 아니라, 공학적인 기계와 구조적인 면에서 아주 다르다는 사실이다. 그렇다고 해서 뇌와 같은 기능을 가진 기계를 만들 수 없다는 뜻은 아니고, 다만 지능을 부분으로 나누어 구조적으로 설계된 기계처럼 분석한다고 해서 그것을 파악할 수는 없다는 의미다.
공학에서 복잡성을 다루는 한 가지 방식은 전체를 구성 부분으로 나누기다. 독립적으로 나뉜 각 부분을 이해하고 나면 그 부분들 사이의 상호 작용을 이해할 수 있다. 각 부분을 이해하는 방법은 공학적인 절차를 재귀적으로 적용하여 각 부분을 그 하위 부분으로 계속 나누면 된다. 전자식 컴퓨터와 모든 소프트웨어의 설계는 이러한 과정을 어디까지 추구할 수 있는지에 관한 살아 있는 증거다. 각 부분의 기능을 세밀하게 정하고 구현하기만 하면, 또한 부분들 사이의 상호 작용을 잘 제어하고 예측할 수만 있으면 ‘나누어 정복하기’ 시스템은 아무 탈 없이 작동된다.
모듈성이 갖는 문제점 – 공학적인 설계 과정의 약점
진화의 시뮬레이션
생각하는 기계로 진화시키기 – 계층 구조적 설계가 갖는 부담스러운 복잡성을 버리고 컴퓨터의 조합 능력으로 옮겨가기다. 본질적으로 시뮬레이션을 통한 진화는 설계 방법을 경우의 수로 갖는 검색 공간에서의 휴리스틱 탐색법의 일종이다.
인간의 뇌는 두 가지 메커니즘을 다 활용한다. 뇌는 진화의 산물이자 학습의 산물이다. 진화는 넓은 밑그림을 그리고, 개체들은 주변 환경과의 상호 작용을 통해 발달하며 그 그림을 완성한다. 사실 진화가 설계한 것은 뇌 자체라기보다는 뇌를 만들어 낸 과정이라고 보는 편이 더 타당하다. 설계도라기 보다는 조립법이라는 뜻이다. 그래서 동시에 작동하는 여러 단계의 창발적 과정이 존재한다. 진화 과정은 뇌를 성장시키는 설계도를 마련하는 한편, 발달 과정은 뇌의 신경 회로 배열을 구성하기 위해 주변 환경과 상호 작용한다. 발달 과정에는 내부에서 자체적으로 시작되는 형태 형성과정, 즉 발생 과정(morphogenesis process)과 외부와의 관계를 통해 시작되는 학습 과정의 두 가지가 있다. 발생을 촉진하는 추진력이 신경 세포들을 올바른 형태로 자라게 하며, 학습 과정이 형태들 사이의 연결을 정교하게 한다. 뇌 학습의 최종 단계는 문화적인 과정, 즉 다른 여러 개인들이 수많은 세대를 거듭하면서 전해 온 지식을 전승받는 과정이다.
볼드윈 효과 (1896년, 진화생물학자) 진화를 발달과 결합시킬 때 진화는 더 빨리 일어난다. 발달 과정에서의 적응 능력 향상이 불완전한 진화의 결점을 고쳐 나갈 수 있기 때문이다. 진화와 학습 사이의 상호 상승 작용이다. 복잡한 행동 방식을 발달시키는 데 드는 시간을 급격히 줄이는 또 하나의 효과는 바로 교육이다. 학습의 일부는 단순한 모방과 명시적인 교육을 통해 진행된다. 인간에게는 생각을 전달하는 아주 멋진 메커니즘인 언어가 있기 때문에, 생물학적 진화 속도를 훨씬 능가하는 속도로 수많은 세대를 통해 유용한 지식과 행동 방식을 축적할 수 있었다. 인간 지능의 ‘설계도’는 인간의 유전자만큼이나 인간의 문화에 달려있다.
하지만 알고 있는 모든 지식을 총동원하여 추진한다고 해서 고도의 인공 지능을 단번에 진화시킬 수 있다고 보지는 않는다. 단계적으로 일련의 진화 과정이 일어나는 대강의 개요는 다음과 같다. 예를 들어 처음에 곤충 정도의 지능을 갖는 기계를 설계할 때에는 그 정도 지능의 습득에 도움이 될 단순한 환경을 마련하여 진화를 시작한다. 그 다음에 발전 메커니즘상 곤충에 가까운 신경 구조를 발달시키는 경향이 있는 초기 집단을 찾아서 진화를 이루어 나간다. 시뮬레이션된 환경을 지속적으로 풍부하게 제공함으로써, 최종적으로 곤충 지능을 개구리, 쥐 등의 지능으로 진화시켜 나간다.
언어를 이해할 수 있는 기계를 진화시키는 데 성공하려면 인간의 문화를 이용하여 진화를 촉진시킬 수 있다. 그 기계의 인공 지능 설계도에 인간의 문화를 주입하여 만든 기계는 완전한 인공 지능이라기보다는 오히려 인공 지능의 지원을 받는 인간의 지능이라 할 수 있을 듯하다.
나는 의식은 정상적인 물리 법칙이 발현된 결과이자 복잡한 계산의 표출이 아닐까 하고 생각한다. 그러나 이런 생각을 한다고 해서 내가 결코 의식의 신비와 경이를 얕잡아 보는 것은 아니며, 오히려 그 반대다. 뉴런의 신호와 사고의 감각 사이의 틈이 너무 커서 인간의 이성이 그 틈을 메우기에는 역부족이지 싶다. ‘뇌는 기계다’라고 내가 말할 때, 그것은 정신에 대한 모욕이 아니라 기계의 잠재적 능력을 인정한다는 뜻이다. 인간의 정신이 우리가 예상하는 정도에 비해 덜 위대하다고 믿는 것이 아니라, 기계가 우리의 예상보다 훨씬 더 위대할지 모른다고 믿을 뿐이다.