Programs with Common Sense – John McCarthy

by seunglee

얼마 전 민스키 교수의 글을 소개했는데요, 내친김에 상식추론(Commonsense Reasoning)을 조금 더 깊이 파보기로 했습니다. 관련 역사를 거슬러 오르다 보니 존 매카시(John McCarthy) 교수의 Programs with Common Sense에까지 이르렀습니다. 무려 50년이나 전인 1959년에 출판된 논문입니다.

매카시 교수는 “Advice Taker”라는 가상의 프로그램을 상정하여 그가 생각하는, 상식이 있는 프로그램의 특징을 설명합니다. “상식을 갖춘 프로그램”이라… 도대체 어떤 걸까요?

프로그램이 상식이 있다는 건 기존 지식과 새롭게 습득하는 사실로부터 프로그램 스스로 다양한 결론을 도출해낼 수 있는 능력이 있음을 뜻합니다. “Programs with Common Sense”라는 제목을 봤을 때 처음 떠오른 이미지와는 조금 다르죠? 오늘날에는 상식이라는 말보다는 추론 엔진(inference engine, reasoning)이라고 부르는 것입니다. 지금은 상식이라고 하면 말 그대로 상식적인 지식 그 자체를 얘기할 때가 많죠.

1959년에 출판된 논문이라는 점을 다시 한 번 기억해주세요. 저자가 말하는 당시의 궁극적인 목표는 사람처럼 효과적으로 경험에서 배울 수 있는 프로그램을 만드는 것이었다고 하니까요. (물론, 이 목표는 아직도 달성되지 않았지만…)

글의 앞부분에서는 매카시 교수가 생각하는 인공지능 프로그램이 갖춰야 할 능력을 설명합니다. 기계가 뭔가를 배우려면 먼저 그것을 표현, 즉 알아들을 수 있어야 합니다. 그게 가능해지면 이제부터는 우리가 직접 뭔가를 가르칠 수 있겠죠. 여기서 가르친다는 것은 형식 언어(formal language)를 써서 정보를 입력한다는 얘기입니다.

사람을 가르치는 것과 소프트웨어를 만드는 것의 차이가 뭘까요? 프로그래밍은 기계가 무엇을 해야 할지를 하나하나 입력해야 하지만 사람을 가르칠 때는 그런 세세한 지시보다 선언적인 방식을 취한다는 게 큰 차이점입니다. “내가 올 때까지 여기서 기다려.”라고 하지, “내가 여기에 있는지 확인하고 없으면 1초 동안 아무것도 하지 않는 것을 계속 반복해.”라고 하지는 않잖아요?

아무튼 여기서 선언적 프로그래밍(declarative programming)의 개념이 등장합니다. 특히 뒷부분에서는 지금 우리가 로직 프로그래밍(logic programming)이라고 부르는 기법에 대한 얘기가 주를 이룹니다. 모르시는 분들을 위해 간단한 예를 들면,

“내가 지금 공항에 가야 하는데, 현재는 집 책상 옆에 있고, 차는 차고에 있다. 나는 차고까지 걸어갈 수 있고, 공항까지 차를 운전해 갈 수 있다.”

이런 상황과 목표, 지식이 주어졌을 때, 기계가 어떻게 스스로 다음 행동을 결정해서 목표를 이루게 할 것이냐 라는 거죠. 인공지능에서 계획(planning)이라고 부르는 분야입니다. 논문에서 이런 기법을 설명하는데, 특별한 용어는 없고 그냥 heuristic rule이라고만 쓰고 있네요.

그리고 이 부분에서 리스트(list)라는 단어가 언급되는데, 참 일반적인 단어지만 평범하게 들리지가 않습니다. 저자가 바로 Lisp 프로그래밍 언어를 만든 존 매카시 교수이기 때문이죠. 이런 연구 아이디어와 그 밖의 모든 게 연결되어 Lisp라는 언어가 탄생한 거겠죠? 참고로, Lisp은 이 논문보다 한 해 앞선 1958년에 태어났답니다. 자세한 내용은 History of Lisp을 읽어보세요.

형식 언어와 논리를 써서 기계가 스스로 지식을 추론/학습한다는 아이디어를 제시한 것이 이 논문의 가장 큰 의의가 아닌가 싶습니다. 지금에 와서 보면 여러 한계가 눈에 보이지만, 단순하게는 “나는 운전할 수 있다”가 진실이더라도 “지금 술을 마셨다”는 상황이 주어지면 처음 명제는 거짓이 되는 문제가 있겠습니다만, 또 그런 것을 극복하는 방안, 이를테면 비단조추론(nonmonotonic reasoning) 같은 것이 나중에 도입되지요.

요즘은 통계적인 방식의 기계학습(machine learning: ML)이 대세를 이루고 있지만 이런 연역적이고 그 추론과정이 눈에 보이는 논리 기반의 접근방식도 여전히 무시할 수 없는 장점이 있는 것 같습니다. 특히 “스스로 이해하는 기계”라는 건 참 매력적인 개념 아닌가요?