Chapter Content

Calculating...

아, 여러분, 있잖아요, 그... 오늘은 자연에 대해서 좀 얘기해볼까 해요. 흠, 뭐라고 해야 할까... '자연은 건축가다' 뭐 이런 제목으로다가.

근데 있잖아요, 진짜 '세련됨'이라는 게 뭘까, 한번 생각해보면... 결국 자연만큼 어려운 문제를 잘 해결하는 예시가 없는 것 같아요. 자연이 만들어낸 해결책들을 보면 진짜... 유기물이든 무기물이든, 어쨌든 엄청나게 어려운 자연적인 난관들을 척척 풀어내잖아요. 예를 들어서 강 같은 거, 단순히 물을 전달하는 것뿐만 아니라 침식도 막고, 영양분도 옮기고, 서식지도 만들고, 심지어 홍수 조절까지 해내잖아요. 산도 마찬가지고. 물도 잡아주고, 생물 다양성도 유지해주고, 기후 조절, 탄소 포집까지... 와, 진짜 대단하지 않아요?

사람도 그렇죠. 하늘 나는 새를 보면 우리도 날고 싶고, 물속에서 미끄러지듯 헤엄치는 돌고래나 물 위에 둥둥 떠 있는 오리를 보면, 우리도 그렇게 하고 싶어지잖아요. 솔직히 우리 몸은 자연 환경에서 다른 동물들에 비해서 생존하기가 쉽지 않죠. 따뜻하게 해주는 털도 없고, 우리 몸을 보호해줄 발톱도 없고, 먹이를 쓰러뜨릴 만한 큰 이빨도 없잖아요. 하지만, 뭐랄까... 서로 협력해서 아이디어를 도구로 만들어내는 능력은 진짜 뛰어나다고 생각해요.

자연을 관찰하고 모방하는 능력은 인간의 본성이기도 하고요. 물고기 지느러미를 보면 표면적과 추진력 사이의 관계를 딱 알 수 있잖아요. 그걸 그냥 지나치지 않고, 우리 스스로 지느러미를 만들죠. 강물의 흐름을 보면서 물을 분배하고 홍수를 조절하는 시스템을 만들고, 산을 보면서 에너지 소비를 줄이고 외부 환경으로부터 우리를 보호해줄 높은 건물을 짓잖아요. 조경이나 건축 기술도 결국에는 자연, 특히 비버 댐 같은 거에서 영감을 얻는 거고요. 옷이나 섬유도 동물의 털처럼 따뜻하고 방수 기능이 있도록 만들려고 노력하잖아요.

인간은 항상 자연에서 해결책을 찾고 그걸 모방해서 생존에 필요한 물건들을 만들어왔어요. 근데, 있잖아요, 인간이 만든 것들은 자연의 해결책만큼 세련되지는 못한 것 같아요. 자동차가 치타보다 빠르냐고요? '빠르다'라는 걸 어떻게 정의하느냐에 따라 다르겠죠. 평평한 길에서 직선으로 달리는 것만 따지면 자동차가 빠르죠. 하지만 그런 환경은 사람이 억지로 만든 거잖아요. 자동차가 대부분의 자연 환경에서는 움직이지 못하니까요. 정글에서는 못 다니고, 사막에서는 타이어가 빠지고. 타이어를 바꾸고 더 좋은 장치를 달면 되지만, 그래도 자연이 만든 것만큼은 못 움직여요.

치타는 코너도 자유자재로 돌고, 급회전도 하고, 빠르게 가속하고, 다양한 환경 변화에도 균형을 유지할 수 있잖아요. 거의 모든 면에서 자동차보다 훨씬 뛰어나죠. 다른 인간이 만든 것들도 마찬가지예요. 겉으로는 세련돼 보여도 자연이 만든 것에 비하면 부족하죠. 자동차가 '빠르다'고 인정받으려면 길이 필요하고, 비행기가 '효율적'이라고 인정받으려면 탁 트인 하늘과 직선 경로가 필요하고, 약이 '표적 치료'라고 불리려면 부작용에 대한 무지가 필요하잖아요. 자연의 세련됨은 인간이 만든 것을 훨씬 뛰어넘는다고 생각해요.

물론, 우리가 만든 해결책에 많은 부품을 더해왔죠. 다리, 여객기, 마이크로칩... 하지만 여전히 결정론적이잖아요. 정해진 규칙과 설계에 따라서만 작동하죠. 자동차 엔진 내부를 보면 아무리 복잡해도 정해진 대로 움직이잖아요. 물론 오류 때문에 예측 불가능성이 생길 수도 있지만, 그건 외부 요인 때문이고요. 시스템 자체는 예측 가능한 방식으로 작동하죠.

사실 인간의 발전은 우리가 가진 제한적인 건축 능력을 세상에 맞추는 데 더 집중되어 있었다고 생각해요. 인간이 만든 것과 자연이 만든 것을 솔직하게 비교해보면, 우리가 진정한 세련됨을 만들어낸 건 아니라는 걸 알 수 있죠. 도시, 시장, AI 같은 몇 가지를 제외하면, 우리 솔루션은 복잡성의 특징을 거의 가지고 있지 않아요. 그래서 진짜 어려운 문제를 해결하지 못하는 거죠. 인간의 창조물은 우리가 만들어 놓은 좁은 세상 안에서만 세련된 것으로 여겨지는 것 같아요.

사람들이 로켓 엔진을 보고 '복잡하다'고 하는 건, 이전까지 우리가 만들었던 것들을 기준으로 생각하기 때문이죠. 현대 로켓 엔진에는 옛날 화약 로켓보다 훨씬 많은 부품과 연결이 있잖아요. 하지만 인간이 만든 로켓과 오징어 추진 시스템을 비교해보면 어때요? 둘 다 유체를 이용해서 추진력을 얻는 장치이지만, 오징어는 로켓 공학자가 꿈꿀 수도 없는 능력을 가지고 있잖아요. 속도와 방향을 정밀하게 제어할 수 있고, 짧은 시간에 빠르게 움직일 수도 있고, 에너지를 많이 소비하지 않고 오랫동안 이동할 수도 있고. 신경계를 통해서 주변 환경을 감지하고 추진력을 실시간으로 조절할 수도 있고, 심지어 추진 시스템 구조가 재생되고 유지되잖아요.

로켓이 '더 낫다'고 할 수 있는 건, 아주 좁게 정의된 단 한 가지 능력 때문이죠. 로켓은 연료와 부품이 소모되잖아요. 물론 오징어가 달에 갈 수는 없지만, 그건 오징어가 진화한 목적이 아니니까요. 만약 오징어가 달에 가는 게 목적이었다면, 우리 로켓보다 훨씬 효율적이었을 거예요.

자연의 해결책을 보면 인간이 만든 것만큼 복잡하지 않다는 것을 알 수 있어요. 왜냐하면 자연의 해결책에 있는 수많은 디테일들이 복잡성에 의해서 '매끄럽게' 처리되기 때문이죠. 로켓 엔진은 복잡한 물체가 아니에요. 엔진에 아무리 많은 부품을 추가해도, 입력(연료, 항법 명령)이 출력(추진력, 공기역학적 안정성)으로 결정적으로 연결된다면 복잡해지지 않아요. 복잡함이란, 뭐랄까… 보이는 것보다 훨씬 더 심오한 거죠. 복잡하게 보이는 건 사실 단순한 거예요. 내부 작동 방식을 알 수 있으니까요. 복잡한 것과 복잡하게 보이는 것은 다르다는 거죠.

인간이 발명한 것들은 진정한 세련됨의 예가 될 수 없어요. 왜냐하면 모든 것에는 원인이 있고, 결과가 나오는 과정이 눈에 보이잖아요. 뭔가 잘못되면 디버깅도 할 수 있고요. 내부 작동 방식에 대한 멋진 다이어그램이나 수학 공식도 만들 수 있잖아요. 그건 세련됨이 아니라 명백한 단순함이죠. 복잡성은 디버깅할 수 없어요.

그럼 자연은 어떻게 그렇게 뛰어난 수준의 세련됨을 만들어낼 수 있을까요? 인간이 만들 수 있는 것보다 훨씬 많은 부품과 연결을 가진 솔루션을 어떻게 만들어낼까요? 자연은 어떻게 적응력이 뛰어난 치타와 능력이 뛰어난 오징어를 만들어낼까요?

힌트는 이미 나와 있어요. 도시와 AI가 어떻게 디자인 없이 만들어졌는지, 인간이 만든 것에서도 복잡성의 특징이 어떻게 나타나는지 봤잖아요. 우리가 시스템 외부로 나가서 스스로 진화하도록 내버려두기만 하면 돼요. 결국 자연은 처음부터 그런 방식으로 해왔던 거죠.

자연의 비법은 바로 '자연 선택'이에요. 자연 선택은 세 가지 주요 요소로 구성되어 있죠. 변이, 반복, 선택. 변이는 개체군 내에서 개체들이 가지는 신체적, 행동적 특징의 차이를 의미해요. 반복은 개체군 내의 변이들이 환경적 스트레스에 노출되는 과정을 여러 세대에 걸쳐서 반복하는 것이고요. 선택은 환경에 의해서 특정 특징이 유리하거나 불리하게 작용하는 방식, 즉 시간이 지남에 따라 특징의 빈도가 변하는 것을 의미하죠.

자연 선택에서의 변이는 다양한 원인에서 비롯돼요. 유전학적으로는 돌연변이, 재조합, 유전자 흐름, 유전적 부동 같은 것들이 변이를 일으키죠. 서식지, 기후, 먹이 가용성, 그 외 생태학적 요인들도 행동, 형태, 생리 등에 변화를 가져올 수 있고요. 짝짓기 시스템, 사회 계층, 의사소통 방법, 다양한 집단 역학도 행동과 특징을 형성하죠. 그리고 후성 유전 메커니즘, 즉 중요한 발달 시기에 겪는 환경적 요인도 지속적인 영향을 미칠 수 있어요. 변이는 정말 다양한 원인에서 비롯된다고 할 수 있죠.

하지만 다양한 변이를 가지는 것만으로는 충분하지 않아요. 가치 없는 변이, 즉 생존과 관련된 다양한 문제를 제대로 해결하지 못하는 변이를 걸러내기 위해서는 많은 반복이 필요해요. 자연에서의 반복은 세대를 통해서 가능해지죠. 개체군은 시간이 지남에 따라 자손을 계속해서 생산해내야 하니까요. 영원히 사는 개체는 없잖아요. 생명의 한계 때문에, 하나의 개체는 자신의 혈통을 잇기 위해서 자손을 낳아야 하는 거죠.

변이와 반복은 많은 선택지를 만들고, 많은 시도를 가능하게 해주죠. 하지만 자연의 비법에는 또 다른 중요한 요소가 있어요. 바로 '선택'이죠. 무엇이 '좋은' 것인지에 대한 기준이 있어야 해요. 이는 생존하기 위해서 충족해야 하는 일련의 기준인 '선택 압력'을 통해서 나타나죠. 새로운 세대가 환경에 덜 적합한 변화를 보이면 생존 가능성이 낮아지고, 반대의 경우에는 생존 가능성이 높아지겠죠.

자연의 레시피에서 가장 중요한 것은 외부에서 작용한다는 거예요. 자연이 만들어내는 솔루션에는 내부 디테일이 의도적으로 조합되지 않아요. 자연의 지속적인 반복적 변화와 융합 과정을 통해 필요한 것이 자동으로 나타나죠.

어떤 사람들은 DNA가 자동 솔루션 제작이라는 개념에 위배된다고 주장할 수도 있어요. 결국 DNA는 모든 생물의 성장, 발달, 기능, 번식에 사용되는 유전적 지침이라고 말하잖아요. DNA는 생명에 필요한 유기물 형성에 필요한 단백질 조립 코드를 저장하고요. 하지만 DNA 자체도 자연 선택의 결과물이에요. 자연 선택이 어떤 과정의 시작이 아니라 분자 구조가 생명 유지를 위해 필요한 정보를 복제하고 보존하는 데 더 뛰어나기 때문에 만들어진 거죠. 오늘날 우리가 보는 DNA는 긴 과정 중의 한순간일 뿐이에요.

게다가 DNA 자체도 인간이 정한 기준, 즉 편리한 정의일 뿐이에요. DNA가 현실이 아니라는 뜻은 아니에요. 단지 우리가 DNA의 고립된 구조에 큰 의미를 부여하기로 선택했을 뿐이죠. 하지만 DNA 구조는 그 역할을 가능하게 만드는 주변의 물리적 맥락 없이는 아무 의미가 없어요. 복잡성에는 근본 원인이 없다는 걸 다시 한번 강조하는 거죠.

자연 선택은 외부에서 작용하는 것이 진정한 세련됨에 도달하는 방법이라는 것을 보여줘요. 자연 선택은 사물이 어떻게 작동하는지에 대한 내부 지식 없이 물질과 정보의 혼란이 생존에 필요한 형태로 자연스럽게 구성되도록 하죠. 이런 방식으로 어려운 문제에 대한 해결책이 만들어지는 거예요.

지적 설계 같은 주장이 실패하는 이유도 바로 여기에 있어요. 반증 불가능해서만이 아니라, 복잡성이 설계될 것이라는 전제로 시작하기 때문이죠. 초자연적인 존재가 설계했다는 믿음조차도 복잡성이 작동하는 방식에 맞지 않아요. 신에 대한 믿음에 반하는 것이 아니라 복잡성에 대한 부적절한 프레임에 반대하는 것이죠. 많은 과학자들도 똑같은 잘못을 저지르고 있고요. 자연은 설계하지 않아요. 그 이유는 설계는 결정론적인 환경에서만 작동하기 때문이에요. 복잡성은 그렇지 않고요. 신이 있다면, 우주를 결정론적으로 설계하지 않았을 거예요. 자연이 자동으로 수렴할 수 있도록 고차원적인 외부 프로세스를 만들었을 텐데, 그게 훨씬 더 아름다운 방식이죠.

자연은 항상 우리의 뮤즈였어요. 우리는 항상 자연에서 영감을 얻고 자연의 해결책을 모방하려고 노력했죠. 하지만 여기에는 훨씬 더 중요한 메시지가 있어요. 자연은 유연하고 역동적인 솔루션, 즉 진정으로 어려운 문제를 해결하는 솔루션을 만들기 위해서는 변이, 반복, 선택이라는 외부 프로세스만이 유일한 방법이라는 것을 보여줘요. 우리가 만들고 싶어하는 시스템 외부로 나가야 한다는 거죠. 내부에서 무언가가 어떻게 작동하는지 알아내는 데에는 인지적 한계가 있다는 것을 인정해야 하고요. 복잡한 시스템에서 인과관계가 없다는 것은 단순히 어려움이나 모호함의 문제가 아니에요. 문제 해결 방식을 완전히 바꿔버리는 극명한 변화인 거죠.

자연 선택은 생물학적인 맥락에서 이야기되지만, 생물학에만 국한된 것은 아니에요. 자연 선택은 복잡성이 달성되고 진화하는 보편적인 과정이에요. 시스템이 무엇이든, 인간이 만든 시스템에서 볼 수 있는 단순한 복잡성을 넘어서는 무언가를 달성하려면, 엄청난 수준의 변이, 반복, 선택을 활용해서 진정으로 세련된 것을 만들어내야 하는 거죠.

자연 선택은 자연의 시행착오 방식이에요. 자연은 논리적으로 해답을 찾아가지 않아요. 추론만으로는 어려운 문제에 대한 답을 찾을 수 없어요. 복잡한 가능성 공간 안에서 발생하는 트레이드오프를 예측할 수 없기 때문이죠. 복잡한 상황 안에서 수많은 특징들이 어떻게 상호작용하는지 분석적으로 평가할 방법은 없어요.

3체 문제에서 시작되는 혼돈의 패턴 때문에, 사물이 어떻게 기능하는지 정확하게 아는 것은 불가능하고, 이 불확실성은 시스템의 부품 수가 늘어날수록 기하급수적으로 증가해요. 올바른 물질 구성을 얻는 유일한 방법은 내부 디테일과 분리된 외부에서 작용하는 거예요.

자연의 비법은 디테일을 특정한 배열로 맞추는 것이 아니라 올바른 출력을 계산하는 배열에 자동으로 도달하는 것이죠. 자연은 계산과 같아요. 자연은 가장 어려운 문제에 대한 답을 계산하는 솔루션을 만들고, 인간이 만든 기계와는 완전히 다른 방식으로 그렇게 하죠. 자연을 계산으로 보는 것은 전통적인 과학적 접근 방식보다 자연을 이해하는 데 훨씬 더 정직한 방법이라고 생각해요. 또한 창발성이 무엇인지 이해하는 데에도 좋은 출발점이 될 수 있고요.

자연을 생물학적 렌즈로만 볼 필요는 없어요. 계산이라는 렌즈로도 볼 수 있죠. 자연의 모든 시스템은 입출력과 그 사이의 과정이 있기 때문에 계산을 해요. 산은 바람과 비를 입력으로 받아서 기후 조절과 탄소 포집이라는 출력을 만들어내는 구조이고, 비버는 포식자, 먹이, 영토, 온도 변화, 가뭄, 기생충 등을 입력으로 받아서 생존을 가능하게 하는 출력, 즉 갉아먹기, 먹이 저장, 집짓기를 만들어내죠.

이건 억지스러운 비유가 아니에요. 계산은 인간이 만든 기계에만 속하는 것이 아니에요. 우리는 보통 계산을 수행, 데이터 처리, 알고리즘 실행 등을 통해서 결과를 만들어내는 것으로 생각하죠. 하지만 실제로 계산은 알고리즘이나 논리 게이트에 의존하지 않아요. 계산은 하나 이상의 연산을 통해서 입력 정보를 출력 정보로 변환하는 것이죠. 연산은 시스템이나 프로세스 내에서 결과를 달성하기 위해 수행되는 활동일 뿐이에요. 활동은 움직이는 것일 필요도 없어요. 가만히 서 있는 것과 주변의 움직임과의 관계로도 활동이 수행될 수 있죠. 활동의 상대적인 개념은 산과 강바닥 같은 것도 계산을 한다는 것을 의미해요. 활동의 흐름 속에서 무기물과 유기물 모두 물질, 에너지, 정보를 새로운 것으로 변환시키죠.

결국 계산은 절차, 규칙 또는 일련의 단계를 따르는 것이 아니라 정보의 변환에 관한 것이에요. 이 더 나은 정의를 통해서 계산을 훨씬 더 엄격하게 정의하고, 계산이 자연에 가져다주는 보편적인 속성을 알 수 있어요. 가장 중요한 속성은 절차가 아니라 추상화에 관한 것이죠.

예전에 제가 '추상화를 통한 발전은 보편적인 진리다'라고 말했었죠. 즉, 시간이 지남에 따라 어려운 문제를 해결하는 모든 프로세스는 내부 디테일을 높은 수준의 구성 요소로 추상화해야 한다는 뜻이에요. 이건 무생물뿐만 아니라 인간과 인간이 만든 것에도 마찬가지로 적용돼요. 산이나 비버가 물리적 추상화로 구성되어 있다고 생각하는 것은 이상하게 보일 수도 있지만, 계산적인 관점에서 보면 정확히 그렇다고 할 수 있어요. 산과 비버는 결정론적인 단계를 거쳐서 출력을 만들어내는 개체가 아니에요. 바람과 비를 기후 조절로, 영토를 집짓기로 변환하는 알고리즘이 있는 것도 아니고요. 자연의 솔루션은 진화를 통해서 배열된 물질의 집합체이고, 단순한 인과 관계 없이 입력을 출력으로 변환하죠.

이것이 물리적 추상화를 복잡한 것들의 주요 컴퓨팅 구성 요소로 만드는 이유에요. 논리 게이트나 알고리즘이 아니라 물리적 추상화가 복잡한 것들의 주요 컴퓨팅 구성 요소가 되는 것이죠. 자연에서의 계산은 추상화가 하는 모든 것을 해야 해요. 즉, 많은 가능한 입력을 몇 개의 필요한 출력으로 매핑해야 하는 거죠. 물리적 추상화만이 산, 강, 치타, 비버가 만들어내는 것을 만들어낼 수 있는 거죠.

산은 멀리서 보면 단순해 보이지만, 실제로는 복잡한 구조물이에요. 다양한 지각력의 부산물인 기울어지고 접히고 단층이 생긴 층이 있고, 다양한 지질 과정과 시대를 나타내는 다양한 암석 유형이 포함되어 있거든요. 산은 정적인 물체가 아니에요. 지각판 경계 근처에 위치해 있어서 섭입, 열곡, 대륙 충돌과 같은 복잡한 상호 작용이 많이 일어나기도 하고요. 또한 다양한 형태의 물리적, 화학적, 생물학적 활동을 겪으면서 암석을 분해하고 산과 주변 경관을 재형성해서, 어려운 문제를 해결하는 독특한 구조를 만들어내죠.

자연을 보면 엄청난 규모의 계산을 보고 있는 것과 같아요. 전통적인 컴퓨팅에서 볼 수 있는 계산이 아니라 복잡한 물체만이 수행할 수 있는 계산이죠. 문제를 해결하기 위해서 정보를 압축하는 물리적 추상화의 존재를 기반으로 하는 계산인 거죠.

자연의 변이, 반복, 선택 레시피는 자연이 문제에 대한 답을 계산하는 방법이 아니라 답을 계산하는 물리적 솔루션을 찾는 방법이에요. 이것이 내부 프로세스와 외부 프로세스의 차이점이죠. 자연 선택은 문제 해결에 필요한 내부 요소에 전혀 관여하지 않는 외부 프로세스에요. 물론 의식적인 의미에서 관여하지 않는다는 것은 아니에요. 자연의 레시피가 결국에는 자연이 만들어내는 물체 내부의 디테일과 연결되어 있지 않다는 의미일 뿐이죠.

내부 프로세스는 필요한 출력을 생성하기 위해 실제 계산을 수행하는 프로세스에요. 대부분의 인간이 만든 물체에서 내부 계산은 의도적으로 설정되어 있어요. 역사 속에서 우리가 만들어온 거의 모든 것들은 계산이 일어나게 하기 위해서 디자인을 통해서 연결되는 조각들을 발견하는 데만 사용되었죠. 복잡한 것들의 경우에는 물체가 기능할 때까지 발견 프로세스가 사용돼요. 전통적인 엔지니어링에서는 디자인을 사용해서 컴퓨팅 구성을 만들어야 하지만(예: 소총 부품 간의 상호 작용으로 총알 발사 계산), 복잡성에서는 컴퓨팅 구성이 발견을 통해서 자동으로 나타나죠. 자연 선택의 경우에는 솔루션이 발견될 때쯤에는 이미 조립되어 있어서 야생에서 계산하는 데 필요한 모든 요소가 갖춰져 있죠.

딥러닝에서도 동일한 외부 프로세스를 봤잖아요. 딥러닝은 출력을 계산하기 위해서 특정 내부 디테일을 엔지니어링하는 것이 아니라 변이, 반복, 선택이라는 외부 프로세스를 구현하는 발판을 프로그래밍하는 것이죠. 수많은 데이터, 수백만 번의 반복, 최적화 기준에 대한 선택을 통해서 딥러닝은 기본적으로 자연 선택을 좁은 범위로 재구성한 것이나 다름없어요. 이것이 딥러닝이 엔지니어가 넣지 않은 내부 계산을 실현할 수 있는 이유죠. 딥러닝은 진정으로 복잡한 솔루션처럼 정보를 압축하는 창발적인 추상화 덕분에 작동하는 것이고요. 딥러닝은 시스템 외부로 나가서 필요한 컴퓨팅 구조가 자동으로 나타날 때까지 저절로 진화하도록 하는 구축 방식 덕분에 가능한 거죠.

딥러닝 같은 기술을 통해서 인간은 자연스럽게 어려운 문제를 해결하는 것을 이해하기 시작했어요. 하지만 단순히 서로 다른 문제를 해결하는 뚜렷한 프로세스를 이해하는 것만으로는 충분하지 않아요. 복잡성이 어떻게 작동하는지 이해하고 창발성의 신비를 벗기려면, 어려운 문제에서 '어려움'이 어디서 나오는지도 알아야 해요. 에휴, 말이 너무 길어졌네. 오늘은 여기까지 할까요? 다음에 또 다른 이야기로 찾아올게요!

Go Back Print Chapter