LLM이 인간의 모든 지식을 담을 수 없다는 흥미로운 글을 읽었다. 인공지능이 인간의 지식을 다 표현할 수 있는가 아닌가는 상당히 오래된 주제이지만, 이 글의 열정적인 톤과 풍부한 사례는 무척 재미있었다. 예를들어 글에서는 performer (예를들어 피겨 스케이팅 선수) 의 perform 하는 기술은 글로 기술되지 않으며 글로 기술된다 하였다고 해도 그것이 그대로 그 퍼포먼스를 따라할 수 있단 이야기는 아니다라는 예시를 들었다.
하지만 글의 내용이 그것 뿐이었다면 이 글을 쓰지 않았을거다. 정말 흥미로운 주장은 모든 함수는 uncountably infinite 하지만 turing machine 은 countably infinite 하므로 기계가 모든 지식을 흡수할 수 없다는 것이었다.
조금 부연을 붙이자면 튜링 머신이란 기계가 하는 계산을 표현하는 방식. 기계가 수행하는 계산, 즉 프로그램의 갯수가 무한할 것임은 쉽게 상상할 수 있다. 문제는 countable (셀수 있다)이다. 어떤 나열이 countable 하다는 것은 각각에 자연수로 번호를 메길 수 있단 것이다. 사과가 세개가 있다면 첫번째 사과는 1, 두번째 사과는 2, 세번째 사과는 3이라고 번호를 메길 수 있다. 즉 세개의 사과는 셀 수 있다.
컴퓨터 프로그램은 countable 하다. 예를들어 컴퓨터에 A, B, C라는 세개의 명령만 존재한다고 하자. 그러면 프로그램에 명령어 A 만 저장되어 있는 경우를 1, B만 저장된 경우를 2, C는 3, AA 는 11, AB는 12 처럼 번호를 메길 수 있다. 따라서 컴퓨터 프로그램의 갯수는 무한하겠지만 모든 프로그램에 각 번호를 메겨 셀 수 있다.
반면 모든 함수의 수는 셀 수 없다. 이와 관련한 가장 간단한 접근은 실수(real number)를 생각해보는 것이다. 모든 실수에 순서대로 번호를 메길 수 있을까? 이에 대한 답은 Cantor’s diagonalization argument에 있다. 귀류법으로 접근하기 위해 모든 실수에 번호를 메겼다고 상상해보자.
1: 0.0000000000...
2: 0.1000000000...
3: 0.2000000000...
얼핏 생각하기엔 무한하지만 이렇게 세면 되는 것 같다.
Cantor의 접근 방법은 이 나열에 속하지 않는 실수 X 가 있다는 것을 보인다. 첫번째 숫자의 첫번째 자리는 0. 따라서 X의 첫번째 자리수를 0이 아닌수로 채운다. 예를들어 1을 더해 X=0.1… 이라고 하자. 그 뒤 두번째 숫자인 0.1000000… 과는 다르게 하기 위해 두번째 숫자의 두번째 자리수 0과는 다른 숫자를 구한다. 마찬가지로 1을 더해 X의 두번째 자리수를 1로 정하면 X=0.11…. 이 된다. 이를 계속해 X는 세번째 수와는 세번째 자리가 다르고, 네번째 숫와는 네번째 자리수가 다르게 한다. 이를 반복한다면 X는 나열된 어떤 수와도 다른 수가 된다.
uncoutnably infinite 한 함수의 집합은 countably infinite 보다 크다. 결국 모든 함수의 집합은 컴퓨터가 계산할 수 있는 모든 집합보다 크고 LLM은 모든 지식을 담지 못하는 한계가 있다.
(간단하게 적는다고 많은 빈칸을 남겼는데 튜링 머신과 함수에 대한 좀 더 정확한 글은 여기를 보기 바란다.)
인간이 모든 지식을 갖고 있을리 없고, 반드시 최고의 지능을 가진 컴퓨터만이 인류를 도울 수 있거나 인류를 멸망시킬 수 있는 것도 아닐 것이다. 이런 논의가 무슨 의미가 있는지도 모르겠단 생각도 든다. 하지만 지적인 재미가 있다.