이 세대의 가장 독창적인 사상가 중 한 명인 Joscha Bach 와의 최근 대화에서 그는 모바일 동시성이 인공 일반 지능 과 상충된다는 놀라운 주장을 했습니다. 이러한 맥락에서 모바일 동시성은 에이전트(계산 프로세스라고도 함)가 서로를 발견할 수 있을 때 발견되는 일종의 동시성을 의미하며, 이는 통신 토폴로지(누가 누구와 대화하는지 아는)가 진화하고 있는 것입니다. 이 모델은 컴퓨팅 요소가 마더보드의 구성 요소처럼 함께 납땜되는 모델과 매우 다릅니다. 모바일 동시성은 처음 만난 사람들이 서로의 웹사이트, 이메일 주소, 전화번호를 배우는 인터넷이나 전화 네트워크와 더 유사합니다. Joscha의 주장은 뇌는 단지 가소성일 뿐이라는 것입니다. 즉, 뉴런 사이의 연결은 학습 중에만 변하고 일반적인 계산 중에는 변하지 않는다는 것입니다.
그의 세대의 가장 독창적인 사상가 중 한 명인 Joscha Bach는 모바일 동시성이 인공 일반 지능 과 상충된다는 놀라운 주장을 했습니다.
이 명제에 대한 나의 반응은 마음이 뇌의 하드웨어에서 실행되는 논리적 계산 모델에 호스팅되지 않는다고 가정한다는 것입니다. 결국 JVM( Java Virtual Machine )은 실행되는 하드웨어와는 매우 다른 계산 모델입니다. Haskell 의 계산 모델은 일반적으로 호스팅되는 영광스러운 Haskell 컴파일러( GHC )가 하드웨어에 구현된 모델보다 계산 아이디어에 훨씬 더 극적인 변형을 가한 것입니다. 왜 마음이 이렇게 정리되지 않을까요? 조샤(Joscha)의 그래픽 비유를 사용하면 왜 마음이 뇌의 하드웨어에 호스팅되는 식민지화 계산 모델로 발생하지 않을까요? 그렇다면, rho-calculus의 구현인 rholang은 우선 Intel 및 AMD 칩에서 호스팅되며, 이들의 계산 모델은 rho-calculus에서 캡처한 모델과 매우 다릅니다.
특히, rho-calculus는 모바일 동시 계산을 직접 지원합니다. 로-미적분학에서 실행되는 프로세스 사회 간의 통신 토폴로지는 역동적입니다. 이 사회에서 누가 누구인지 알고 누구와 대화할 수 있는지는 계산 과정에서 변합니다. 로-미적분학에 대한 이러한 사고방식은 로-미적분학과 같은 모델이 인간 뇌의 하드웨어, 실제로는 어떤 뇌라도 그 자체로 호스팅되고 식민지화되었을 수 있다고 가정할 수 있는 매우 타당한 이유가 있다는 나의 주장을 예고합니다. 마음 이론.
이러한 주장을 펼치기 위해 저는 모든 개발자는 물론이고 모든 컴퓨터 과학자가 구별하지 못하는 몇 가지 차이점을 제시하고 싶습니다. 나는 코드, 데이터, 계산을 구별합니다. 임의의 코드는 계산 모델이 표현되거나 호스팅되는 일부 데이터 구조 유형의 인스턴스인 일부 데이터로 처리될 수 있습니다. 예를 들어, 잘 구성된 Haskell 프로그램의 문법과 같이 문맥 자유 문법을 통해 표현된 용어 언어로 Haskell 과 같은 Turing-complete 계산 모델을 호스팅할 수 있습니다. 그러나 우리는 문맥 자유 문법이 Turing-complete가 아니라는 것을 알고 있습니다. 어떻게 이럴 수있어? Turing-complete 모델보다 표현력이 떨어지는 것이 어떻게 Turing-complete 계산을 나타낼 수 있습니까?
이는 구문론과 의미론의 차이의 핵심을 보여줍니다. 언어라는 용어의 문법은 계산의 역동성 , 즉 코드의 의미 가 아닌 프로그램의 구문을 표현합니다. 대신, 계산의 역동성은 (구문에 따라 작동하는) 규칙과 특정 구문 부분, 즉 적용하려는 계산을 나타내는 일부 코드의 상호 작용에 의해 발생합니다. 람다 미적분학(하스켈의 기반이 되는 계산 모델)에서 계산의 핵심은 베타 감소라는 규칙입니다. 이 규칙은 코드에서 발생하는 변수를 데이터로 대체하는 행위를 통해 데이터에 대한 함수의 작동을 나타냅니다. 그것이 작동하는 데이터는 데이터에 함수를 적용하는 것을 구문적으로 표현한 것이지만, 데이터에 함수를 적용하는 것에 해당하는 계산은 아닙니다. 해당 계산은 베타 감소가 구문에 대해 작동하여 이를 새로운 구문으로 변환할 때 발생합니다. 이러한 구별은 Turing-complete보다 덜 표현적인 모델(예: context-free Grammar)이 Turing-complete 계산을 호스팅할 수 있는 방법입니다.
Turing-complete 모델보다 표현력이 떨어지는 것이 어떻게 Turing-complete 계산을 나타낼 수 있습니까? 이는 구문과 의미론 사이의 구별의 핵심을 잘라냅니다. 언어라는 용어의 문법은 계산의 역학, 즉 코드의 의미론이 아니라 프로그램의 구문을 표현합니다.
요점을 자세히 설명하지는 않지만 Java와 JVM에서도 동일한 구별이 발생합니다. JVM의 계산 역학은 코드 표현과 함께 가상 머신의 레지스터 조합에서 작동하는 규칙을 통해 발생합니다. Java 코드 조각을 응시하는 Java 프로그래머는 계산을 보고 있는 것이 아닙니다. 그것과는 거리가 멀다. Java 프로그램의 구문은 코드가 실행될 때 JVM 레지스터의 상태에 따라 발생할 수 있는 다양한 계산의 전체 범위를 보여주는 창입니다. 이 두 가지 평가 형식, 즉 람다 미적분학의 베타 감소와 JVM의 전환 사이의 차이점은 매우 중요하므로 이에 대해 다시 다루겠습니다.
하지만 현재로서는 코드와 계산의 차이를 생각하는 한 가지 방법은 물리학과의 비유를 통해서입니다. 전통적으로 물리 법칙은 물리적 상태의 표현(프로그램의 구문으로 생각), 시간에 따라 상태가 어떻게 변하는지 말하는 운동 법칙(구문에 적용되는 규칙으로 생각)의 세 가지를 통해 표현됩니다. ; 및 초기 조건(이를 실행하려는 특정 코드 조각으로 생각하십시오). 이런 관점에서 물리학은 우리의 관찰을 바탕으로 물리적 세계가 진화하는 방식에 특정한 방식으로 대응하는 실행을 하는 특수 목적 프로그래밍 언어로 간주됩니다. 물리학은 프로그램을 실행하고 운동 법칙을 통해 도달하는 상태로의 일부 초기 상태의 진화가 우리의 관찰과 일치하는지 확인할 수 있기 때문에 테스트 가능합니다. 특히 우리가 초기 상태와 일치하는 구성으로 물리적 세계를 볼 때, 우리의 운동 법칙이 말하는 것과 일치하는 진화 과정을 거치고, 우리의 운동 법칙이 말하는 상태에 도달하는가? 그래야 하나? 물리학이 이러한 형태를 갖고 있다는 사실이 이를 코드로 효과적으로 표현할 수 있는 이유입니다.
물리학적 비유는 람다 미적분학, π-미적분학 또는 로 미적분학 같은 계산 모델을 JVM의 전환과 같은 모델에 비해 뚜렷하게 표현합니다. Java 코드를 살펴볼 때 해당 코드가 어떻게 작동하는지 이해하는 데 필요한 모든 정보가 없습니다. JVM의 상태에 따라 동일한 Java 코드 조각이 매우 다르게 동작할 수 있습니다. 대조적으로, 위에서 언급한 계산 계산은 형태와 기능을 결합합니다. 당신이 표현에서 보는 것은 당신이 얻는 것입니다. 물리학의 관점에서 과학자로서 리버스 엔지니어링해야 할 유일한 것은 운동 법칙, 즉 계산 규칙입니다. 여러 가지 숨겨진 상태를 추측할 필요가 없습니다.
코드와 계산의 차이를 살펴보면 코드와 데이터의 차이는 다소 미묘하기는 하지만 상대적으로 직관적입니다. 컴퓨터 프로그램의 데이터도 구문일 뿐입니다. 이런 의미에서 이는 단지 구문일 뿐인 코드와 다르지 않습니다. 모든 Lisp 프로그래머는 코드가 데이터이고 데이터가 코드라는 생각을 이해합니다. Java도 Java 코드를 Java 객체로 조작할 수 있는 일종의 메타프로그래밍을 지원합니다. 문제는 코드와 데이터 사이에 실제 구분선이 존재하는가입니다.
대답은 '예'입니다. 데이터는 매우 구체적인 속성을 가진 코드입니다. 예를 들어, 코드는 항상 종료될 때까지 실행됩니다. 모든 코드가 이 작업을 수행하는 것은 아닙니다. 사실, Entscheidungs 문제 에 대한 Turing의 유명한 해결 방법은 일반적으로 특정 표현 품질, 즉 Turing-completeness를 즐기는 언어에 대해 프로그램이 언제 중단될지 알 수 없음을 보여줍니다. 그러나 표현력이 떨어지는 언어도 있으며, 튜링 완전 언어는 전체 언어보다 표현력이 떨어지는 적절한 하위 언어 또는 단편을 즐깁니다. 데이터는 구문과 관련된 계산이 중단된다는 것을 증명할 수 있는 구문에 상주합니다. 마찬가지로 데이터는 계산이 유한한 분기만 가능하다는 것을 증명할 수 있는 구문에 있습니다.
프로그래머는 이런 데이터에 대해 생각하지 않고, 데이터를 보면 알 뿐입니다. 그러나 기본 제공 데이터 유형이 제공되지 않는 람다 계산과 같은 계산 모델에서는 모든 것, 심지어 계산 숫자나 부울 값(참 및 거짓)과 같은 것까지 코드로 표현됩니다. 데이터를 구성하는 코드와 범용 프로그램을 구성하는 코드를 선택하는 것은 코드가 위에서 논의한 종류의 속성을 갖는 경우를 감지할 수 있는 것과 관련이 있습니다. 일반적으로 이와 같은 속성을 감지할 수 있는 시스템 유형이 있습니다. 다시 말하지만, 이는 미묘한 문제이지만 다행스럽게도 모든 미묘함을 이해할 필요는 없으며 데이터와 코드 사이의 구분선이 어디에 있는지 정확히 이해할 필요도 없습니다.
요약하자면, 코드와 데이터는 모두 하나의 규칙 또는 여러 규칙이 작동하는 상태를 나타내는 구문일 뿐입니다. 데이터는 코드보다 덜 표현적인 구문 조각으로 표현되므로 코드가 항상 즐길 수 없는 명확하거나 유한한 특성을 제공합니다. 계산은 일부 규칙이 상태 표현과 상호 작용할 때 발생하는 진화 과정입니다. 자, 이 모든 것이 AI나 마음, 심지어 로 미적분학과 무슨 관련이 있습니까?
로-미적분학(rho-calculus)은 계산과 코드 간의 차이를 구문적으로 표현합니다. 여기에는 연산을 실행할 수 있도록 코드 조각으로 패키징하여 새로운 코드로 변환하는 연산이 있습니다. 또한 코드 조각을 다시 계산으로 바꾸는 작업도 있습니다. 우와, 그건 다음 단계의 똥이라고 말할 수도 있겠네요. 그러나 우리가 언급한 것처럼 Lisp 프로그래머와 Java 프로그래머는 오랫동안 이런 종류의 메타프로그래밍을 수행해 왔습니다. 그들은해야만한다. 그 이유는 규모와 관련이 있습니다. 자동화된 지원 없이 인간 팀이 수백만 줄의 코드가 포함된 코드베이스를 관리하는 것은 불가능합니다. 그들은 컴퓨터 프로그램을 사용하여 컴퓨터 프로그램을 작성합니다. 그들은 컴퓨터 프로그램을 사용하여 컴퓨터 프로그램 배포를 구축합니다. 메타프로그래밍은 오늘날 세계에서 필수입니다.
스미스의 주장은 자기 성찰, 즉 마음이 자신의 과정을 살펴보는 능력이 지능의 핵심 특징이라는 것입니다. 어떤 사람들에게는 이것이 지능의 결정적인 특징이기도 합니다.
하지만 아직 AI 초기였던 80년대에 Brian Cantwell Smith 라는 연구원이 나와 AI 및 AI 관련 분야의 다른 많은 사람들에게 공감을 불러일으키는 관찰을 했습니다. 스미스의 주장은 자기 성찰, 즉 마음 자신의 과정을 살펴보는 마음의 능력이 지능의 핵심 특징이라는 것입니다. 어떤 사람들에게는 이것이 지능의 결정적인 특징이기도 합니다. 계산 반영이라고 부르는 자기 성찰에 대한 아이디어를 구체적으로 만들기 위해 Smith는 로 미적분학의 연산자와 동일한 연산자를 갖는 3-Lisp라는 프로그래밍 언어를 설계했습니다. 특히 3-Lisp에는 계산을 코드로 구체화하는 구문과 코드를 실행 중인 계산에 다시 반영하는 구문이 있습니다.
이제 오늘날 개발자들이 직면하고 있는 규모의 문제와 우리의 반성적이고 성찰적인 능력을 추론하는 존재로 모델링하는 문제 사이에 연관성이 있다고 의심할 만한 타당한 이유가 있습니다. 특히, 우리 자신의 추론을 표현하는 복잡성을 관리하는 것은 계산적 반영이 있으면 다루기 쉬워집니다. 우리는 더 나은 추론을 얻기 위해 우리 자신의 추론 표현에 모든 알고리즘 트릭을 적용할 수 있습니다. 이 관찰은 진화생물학자들이 마음 이론이라고 부르는 맥락에서 증폭됩니다.
특히, 자기성찰은 다른 사람, 특히 자신과 같은 종의 구성원의 행동을 계산적으로 모델링할 수 있게 됨으로써 얻을 수 있는 진화적 이점에서 비롯됩니다. Alice가 Barbara의 행동을 모델링하는 능력을 개발하고 Barbara가 Alice와 매우 유사하다면(동일한 종, 동일한 부족, 심지어 동일한 대가족 구조에서도) Alice는 Alice의 행동을 모델링할 수 있는 능력에 매우 가깝습니다. 그리고 Barbara가 Alice와 상호 작용할 때 Alice가 Barbara의 행동을 모델링해야 하는 경우 Alice는 Alice의 행동 모델링에 직접 관여합니다. 앨리스가 자신의 가족 단위나 부족의 행동을 모델링할 수 있는 규모로 확장하면 상황이 정말 흥미로워집니다. 이에 대한 자세한 내용은 곧 설명하겠지만 지금은 계산 반영에 관한 내용이 해당 단어의 두 가지 의미에서 추론을 대규모로 개선하는 것과 관련이 있음을 알 수 있습니다. (복잡성 척도) 추론을 자체에 적용하여 추론을 개선하고 (사회적 척도) ) 다수의 추론 에이전트에 대한 추론을 개선합니다.
실제로 계산 반영과 지능에서의 역할 및 프로그래밍 언어 설계에 대한 Smith의 아이디어는 구체화와 반영을 원시적인 계산 연산자로 간주하는 로 미적분학(rho-calculus) 설계에 영감을 주었습니다. 그러나 3-Lisp와 rho-calculus의 일부 회사인 경우 3-Lisp는 확실히 순차적입니다. 상호작용하고 조정하면서 독립적으로 실행되는 자율적인 계산 프로세스의 사회를 합리적으로 표현할 수 있는 방법이 없습니다. 그러나 마음 이론의 맥락에서 보면 이것이 바로 추론가가 해야 할 일입니다. 그들은 독립적으로 행동하는 동시에 의사소통하고 조정하는 자율적 주체로 구성된 사회적 맥락에 대한 명시적인 모델이 필요합니다.
Smith가 계산적 반영에 대한 아이디어를 개발하고 있던 것과 거의 동시에 Marvin Minsky는 그의 유명한 Society of Mind 논문을 개발하고 있었습니다. 민스키의 제안에 대한 나의 견해는 마음이란 미국 의회나 다른 심의 기관과 같다는 것입니다. 이는 다양한 자원(예: 과세 기반 자금 지원)을 놓고 경쟁하는 다수의 독립 에이전트로 구성됩니다. 우리가 의식적인 결정이라고 생각하는 것은 종종 의식적인 경험보다 훨씬 낮은 수준에서 진행되는 독립적이고 자율적인 행위자들 사이에서 오랜 숙고 과정의 결과와 비슷합니다. 그러나 심의 과정은 구속력 있는 투표로 이어지며, 구속력 있는 투표는 의식적인 결정으로 경험됩니다.
대부분의 계산을 의식적 추론 외부에 두는 이 관점은 마음이 본질적으로, 실제로 정의상 반영적이라는 관점과 어떻게 조화될 수 있습니까? 로 미적분학은 이 질문에 대한 답을 염두에 두고 설계되었습니다.
로-미적분학(rho-calculus)에 따르면 계산 에이전트는 6가지 형태로 제공됩니다.
이 구문 중 세 개가 기호 x를 어떻게 사용하는지 확인하세요. 그 중 두 개는 x를 에이전트 간 통신 채널인 것처럼 사용하고, 한 개는 x를 코드 조각에 대한 참조인 것처럼 사용합니다. 로 미적분학의 비밀 중 하나는 채널이 코드 조각에 대한 참조라는 것입니다. 익숙해지는 데 약간의 시간이 걸리지만 시간이 지나면 옵니다.
앨리스의 사회적 맥락에 대한 외부 관찰자로서 우리는 앨리스의 행동을 각 개인의 행동의 병행 구성으로 기록할 수 있습니다. P1인 기호 | P2 | ... | Pn 여기서 Pi는 Alice의 사회적 맥락에서 i번째 개인의 모델입니다. 이제 Alice의 행동 모델은 자신의 행동에 대한 추론을 표현하기 위해 병렬 구성의 표현이 필요합니다. @( P1 | P2 | … | Pn ) 기호입니다.
로-미적분학에 대한 이 정도의 정보로 무장하면 우리는 앨리스에 대한 이야기로 돌아가 그녀의 사회적, 성찰적 지능 발달이 직면한 모든 어려움에 대한 간결한 표현을 찾을 수 있습니다. 앨리스의 사회적 맥락에 대한 외부 관찰자로서 우리는 앨리스의 행동을 각 개인의 행동의 병행 구성으로 기록할 수 있습니다. 기호에서는 P1 | P2 | ... | Pn, 여기서 Pi는 Alice의 사회적 맥락에서 i번째 개인의 모델입니다. 이제 Alice의 행동 모델은 자신의 행동에 대한 추론을 표현하기 위해 병렬 구성의 표현이 필요합니다. @( P1 | P2 | … | Pn ) 기호입니다. Alice가 액세스할 수 있는 위치에 이 데이터를 두기 위해 그녀는 채널 x!( P1 | P2 | … | Pn )에 모델을 배치하고, 이를 검색해야 할 때 다음을 실행합니다.
for( y <- x )Alice그녀의 동료에 대해 생각하기( y ) | x!( P1 | P2 | … | Pn )
람다 미적분학의 베타 감소와 정신 면에서 매우 유사한 로 미적분학의 주요 계산 규칙은 이와 같은 표현식이 다음과 같이 진화한다는 것입니다.
AliceThinkingAboutHerColleagues( @( P1 | P2 | … | Pn ) )
따라서 이제 동료에 대한 Alice의 생각은 Alice가 사용할 수 있는 그들의 행동을 명시적으로 표현합니다. 이를 통해 그녀는 P1 | P2 | ... | @( P1 | P2 | ... | Pn )에 대한 작업을 통한 Pn입니다. Alice | Alice | P1 | P2 | ... | Pn. Alice는 자신의 시뮬레이션과 관찰 결과를 비교할 수 있습니다. 실제로, 우리가 모델링할 수 있는 것은 무엇이든 Alice가 실행하고 데이터로 구체화하고 코드와 시뮬레이션을 그녀가 관찰한 사회적 맥락의 실제 행동과 비교할 수도 있습니다. 여기에는 Alice 자신의 행동이 포함됩니다.
조금 빨리 지나갔을 수도 있지만 생각해 보세요. 이는 Alice가 자신의 사회적 맥락과 자신을 동시에 모델링하는 데 필요한 가장 작은 작업 집합입니다. 특히 스레드는 Alice 자신의 행동이 스레드를 데이터로 구체화하고 처리 과정이 해당 데이터와 상호 작용할 때 Alice가 '의식적으로 사용할 수 있게' 됩니다. 이 주장은 로 미적분학의 설계 심의에 들어간 것의 일부입니다. 이는 계산 반영에 대한 스미스의 주장과 정신 이론을 갖춘 유기체에 대한 진화 생물학의 설명에 적합한 정신 사회에 대한 민스키의 주장을 조화시키는 가장 작은 계산 모델입니다. 더 작은 것은 상황의 핵심 구성 요소를 놓치는 것입니다.
이 주장은 로-미적분학 같은 계산 모델이 앨리스의 뇌에 있는 하드웨어에서 구매를 찾는 것이 그럴듯한 이유입니다. 그녀는 자신의 사회적 맥락에 따른 행동을 모델로 삼기 위해 경쟁하고 있는 같은 종의 다른 구성원들과 경쟁하기 위해 이 모델의 모든 요소가 필요합니다. 이것이 바로 Joscha의 입장과는 정반대로 모바일 동시성이 인공 일반 지능의 핵심이라고 주장하는 이유입니다.
정확하고 기민한 편집 논평을 해주신 Ralph Benko에게 깊은 감사를 드립니다!