더그 레너트는 컴퓨터에 1억개 이상의 일상적인 정보를 입력시켜 '상식을 가진 컴퓨터'를 만드는데 열중하고 있다.
컴퓨터 학자인 더그 레너트(Doug Lenat)는 컴퓨터에게 일상적인 모든 것을 가르치려는 계획을 세웠다. 그의 친구들은 아무도 그의 목표가 성공하리라고 생각하지 않았다. 지금까지 컴퓨터는 네살 정도 어린애의 지식도 갖지 못했다는 것을 생각해 볼 때 성인 정도의 지식을 갖게 한다는 것은 엄청난 일이다.
전문가시스템의 한계
대부분의 분야에서 컴퓨터는 매우 우둔한 물건이다. 극히 제한된 분야에서(예를 들면 원주율을 계산한다든지 장기의 가능한 모든 수를 기억한다든지) 컴퓨터는 매우 뛰어난 것처럼 보인다. 그러나 컴퓨터를 이러한 분야 밖으로 끌어내면 전혀 무용지물이 되고 만다. 예를 들어 '나무란 무엇인가' '어머니와 갓난아이는 누가 더 키가 큰가'라는 질문들을 해보면 컴퓨터는 정확한 답을 못하고 만다.
이러한 문제를 해결하는 방법 가운데 하나는 '전문가시스템'(expert system)이다. 컴퓨터에게 정확하게 무엇을 하라고 지시하는 일반적인 프로그램과는 달리 전문가시스템은 지식을 스스로 발견한다. 예를 들어 자동차를 수리하는 전문가 시스템은 '시동이 걸리지 않고 온도가 20℃ 이하이면 배터리를 체크하라'와 같은 몇백개의 조건문으로 되어 있다. 몇개의 맞는 조건을 체크한 후에 컴퓨터는 정확한 해결책을 적용한다. 뛰어난 전문가 시스템은 수천개의 조건을 고려하여 인간 전문가가 내는 결과와 같은 정확한 해결책을 낸다.
레너트는 이렇게 말한다. "전문가 시스템은 단지 지식의 허상을 가졌을 뿐이다. 전문가시스템은 기대하지 않았던 상황에 부딪치게 되면 확실히 틀린 답을 낼 것이다."
틀리지 않기 위해서는, 우리 모두가 당연히 여기는, 광범위한 일상의 지식이 필요하다. 그래서 레너트와 그의 팀은Cyc(encyclopedia에서 따온 말)라는 프로그램에 1억개 정도의 일상적인 정보를 입력하려 하고 있다. 아직 이것은 시작에 불과하다. 레너트는 몇년이내에 Cyc가 스스로 책 신문 잡지들을 읽고 사람과 그것들에 관해서 토론할 수 있을 정도로 영어실력이 향상될 것이며, 결국 Cyc는 다른 컴퓨터에게 자신이 가지고 있는 일반적인 데이터 베이스를 특정한 전문 분야에 사용할 수 있도록 하는 지식의 원천이 될 것이라고 주장한다.
Cyc의 구조
지식을 모으는 것은 그다지 어렵지 않다. 어려운 점은 기계가 그 지식을 잘 사용할 수 있도록 지식을 표현하는 것이었다. 여러 조각의 지식들을 정확한 형태로 컴퓨터에 주의깊게 주입해야 한다.
이런 식의 주입방식은 레너트와, 실생활의 불규칙성을 다루는데 뛰어난 구하(R.V.Guha)에 의해 개발된 프로그래밍 언어를 통해 실행되어졌다. CycL(Cyc-Lists 에서 따온 말)이라 불리는 이 언어는 구조라는 개념에 기초를 두고 있다. 이 구조들은 특별한 사물이나 개념에 대해 Cyc가 무엇을 알아야 하는지를 말해주는 사실과 규칙들의 집합이다. 어떤 한 사람을 설명하는 구조는 그의 직업은 무엇이고 어디에 살고 나이는 어떻고 하는 것을 Cyc에게 일러준다.
컴퓨터 스크린 상에서 이런 구조들은 사실을 적어놓은 서류와 같이 보인다. 어떤 특별한 것에 대한 구조를 만들기 위해서는 Cyc 지식 입력장치는 어떤 종류의 정보가 프로그램에 더 유용한 것인지를 결정해야 한다. 그런 후에 필요한 정보들의 목록이 출력되고 여기에 해당되는 값들이 채워진다. 예를 들어 먹는 것에 대한 구조는 위 보기와 같을 것이다.
지식입력장치는 Cyc가 입력되는 값들의 의미를 모두 알고 있다고 생각한다. 그래서 Cyc는 '배가 고프다' '동물' 등에 관해서 이미 만들어진 다른 구조를 가지고 있어야 한다.
구조에 의해 설명된 어떤 것은 다른 것으로부터 특징을 얻어 올 수도 있다. 음식을 씹는 것은 몸의 기능중의 한 예이기 때문에 Cyc는 저절로 씹는 것이 사람이나 동물이 행하는 행동의 하나라는 것을 안다. 이와 비슷하게 Cyc는 영수와 철수가 이웃이라는 것을 알고 영수가 관악구에 사는 것을 안다면 철수의 집도 관악구에 있다는 사실을 알 것이다.
Cyc가 여러 개의 구조들을 한꺼번에 처리하는 능력이있기에 사물들 간의 관계를 훨씬 더 쉽게 찾아낼 수 있다. 만약 Cyc의 한 구조가 제2차 세계대전이 1939년에서 1945년 사이에 발생했다는 것을 말해주고, 다른 것은 1943년에 참전국 사이에 전투가 있었다는 것을 말해준다면 컴퓨터는 전투가 대전의 일부라는 결론을 얻을 것이다.
Cyc 프로그램의 일부는 논리적인 사고를 하도록 되어 있다. '철수는 뛰어난 낚시꾼 아니면 굉장한 거짓말장이다'라는 말을 듣는다면 Cyc는 철수가 이 두가지 성질중의 하나를 가지고 있다는 것을 알 것이다. Cyc는 철수에 대한 자료를 검사하여 판단을 내릴 것이다.
실세계를 다루는 대부분의 인공지능 프로그램처럼 Cyc는 예외가 있을지도 모르지만 항상 옳다고 생각되는 기본적인 논리를 가지고 있다. 그래서 프로그래머는 Cyc에게 말 사람 코끼리 쥐 등이 새끼를 낳는다고 일일이 가르쳐 줄 필요가 없이 그냥 포유류는 새끼를 낳는다고 하면 된다. 만약 오리너구리가 포유류라는 것을 안다면 Cyc는 위의 내용을 적용할 것이다. 이때는 누군가가 오리너구리는 알을 낳는다는 것을 Cyc에게 말해 주어야 한다. 여기서 Cyc의 추리는 정확하지 않은 것처럼 보인다. 그러나 사실은 사람들도 이런 식으로 추리한다.
너의 차는 어디에 있느냐고 묻는다면 차를 놓아둔 곳에 있다고 말할 것이다. 이것은 극히 드문 예인 차를 도난당했을 경우를 무시한 것이다. 우리가 이렇게 하는 것처럼 Cyc도 불필요한 시간을 낭비하지 않도록 별로 관계없는 정보를 무시하는 방법을 알아야 한다. Cyc는 불필요한 것은 피하는 방법을 가지고 있다. 예를 들어 가장 관련 있는 구조부터 시작하고 이 구조와 가장 공통된 구조로 가지를 쳐 나가는 방법을 안다. 만약 무료 고속도로에 대해서 묻는다면 Cyc는 무료 고속도로의 구조에서부터 시작하여 길 차 등의 구조를 참조하면서 기찻길이나 낙타의 구조에까지 도달하기 전에 답을 찾아낼 것이다.
처리속도를 높이기 위해 Cyc는 어떤 형태의 문제에 대해 수십가지의 다른 추리방법으로 접근한다. 복잡한 문제에 대해 답을 얻기 위해 Cyc는 수천개의 법칙을 적용해 본다. 정보가 불완전하거나 확실치 않으면 가장 정확한 답을 얻어 빈칸을 채우고 타당성을 검사한다. 어떤 사람이 투표를 했고 그의 어머니가 45세라면 Cyc는 그 사람이 21세나 22세쯤 되었을 것이라고 추측할 것이다. 왜냐하면 투표는 21세부터 할 수 있고 22세보다 많으면 어머니의 나이가 45세보다 많을 것이기 때문이다.
혼자 생각하는 컴퓨터
Cyc를 이 정도의 수준까지 끌어 올리기 위해서 무수한 노력이 들었다. 프로젝트의 처음 1년 동안에는 레너트와 그의 팀은 거의 키보드 가까이에 가지 않았다. "자동차나 바퀴, 심지어는 운동이 무엇인지도 모르는데 왜 트럭이 무엇인지를 가르치려고 Cyc를 괴롭히겠습니까." 그의 팀은 이런 기본적인 것을 정의하는 것부터 시작해야만 했다. "우리는 기본적인 목록을 결정하기 위하여 넉달동안 많은 책을 조사했다. 우리가 실체적인 사물로 생각했던 사람이나 탁자 역시 시작과 끝이 있고 존재기간이 있다는 것을 알아냈을 때 우리는 스스로의 통찰력에 대해 감탄하게 됐다. 우리는 일부러 그렇게 생각하고 있는 것은 아니다"라고 레너트는 말한다.
처음 1년 동안 많은 다른 추상적인 표현들이 Cyc에 프로그램되었다. 예를 들어 시간은 50가지 형태의 다른 두 사건 사이의 관계에 의해서 설명되었다. 기본적인 개념의 정보를 증가시키기 위해 때때로 임의의 문장을 선택해서 컴퓨터가 알 필요가 있는 모든 것을 이해하도록 했다. 한 문장이 있을 때 Cyc가 그 문장을 이해하기 위해서는 많은 것을 알아야 했다.
레너트가 처음 적용한 문장인 '나폴레옹이 1821년에 죽자 웰링톤은 슬픔에 잠겼다'라는 문장을 Cyc에게 이해시키는데 두달이 걸렸다. 문장이 어떻게 구성되는가를 설명하기 전에 생명 죽음 사람의 감정 등 많은 것을 가르쳐야 했다.
이것은 결코 끝날 수 없는 작업처럼 보였다. 이 작업을 끝냈을 때 Cyc는 실세계를 이해할 수 있는 최초의 컴퓨터가 될 것이다. 몇년 전부터 레너트의 팀은 실세계를 구성하는 수백만 비트의 지식을 Cyc에 쏟아부었다. 지금은 Cyc에 저장된 자료가 다른 자료의 입력을 훨씬 쉽게 만들고 있다. 예를 들어 치타가 무엇인지를 Cyc에게 가르치려면 사자나 호랑이에 대해 알고 있는 것을 조금 바꾸면 된다. 지금은 약 2백만 개의 자료가 저장되어 있다. 1억개까지는 아직 먼 것 같다. 그러나 레너트는 속도가 점점 증가하여 4년후면 충분히 나머지를 모두 입력시킬 수 있을 것이라고 생각한다.
Cyc에 정보를 입력하기 위해서 다양한 종류의 신문과 잡지를 읽고 Cyc가 알아야 할 필요가 있는 것을 찾는다. 새로운 것을 가르친 후에는 제대로 되었는지 보기 위해 질문을 한다. 어떤 사람이 자가용으로 출근했다면 퇴근할 때는 무엇을 타고 집에 갈 것이냐고 물었을 때 Cyc가 '배로 갈 것이다'라고 대답한다면 무언가 잘못된 것이다.
Cyc는 어떤 점을 분명히 하기 위해서 자기 스스로 질문을 할 수도 있다. 밤에는 혼자 남아서 생각을 한다. 즉 자료를 살펴보면서 흥미로운 분석을 한다. 이런 분석은 아침에 사람들에 의해 검사되어서 결점이 고쳐진다. 지금까지 Cyc는 많은 연상을 했다. 어떤 분석은 왜곡된 것처럼 보이지만 그 뜻은 Cyc가 배웠던 내용과 비슷하다. 그러나 가끔 실수를 하기도 한다. Cyc가 대한민국과 한국은 비슷하다고 한다면 프로그래머는 그것이 비슷한 것이 아니라 같다는 것을 가르쳐 주어야 한다.
만약 Cyc가 쉬운 문장을 읽고 정리할 줄 알게 되면 지식을 습득하는 비율이 훨씬 증가할 것이다. 그러나 컴퓨터가 일상적인 언어를 이해하도록 하는 것은 매우 어려운 목표다. 레너트는 그것이 성공할 것이라고 생각하고 있다. 그 이유는 Cyc형태의 프로그램이 없이는 일상용어(자연언어)를 이해하도록 할 수 없을 것이기 때문이다.
자연언어 프로그램은 컴퓨터가 다양한 종류의 단어를 알고 있다는 가정아래 문법과 문장구조를 가르쳐서 문장의 뜻을 이해하도록 한다. Cyc의 자료를 이용한 자연언어 처리기는 레너트 밑에 있는 한 그룹의 프로그래머들에 의해 진행되고 있다. 이 처리기는 문장을 분석하여 가능한 모든 뜻을 찾은 다음 이들 뜻의 공통된 의미를 찾아 가장 맞는 뜻을 골라 낸다.
Cyc는 읽을 기회가 주어지기도 전에 실패할 뻔 했다. 가장 위험한 것은 서로 대립되는 지식, 즉 서로 뜻이 명확하지 않은 것이다. 이러한 뜻의 차이는 어느 정도 피할 수 없다. 여러 사람이 Cyc를 가르치기 때문에 같은 뜻을 다르게 설명할 수도 있다. 대부분의 모순은 밤에 하는 Cyc의 분석에 의해 발견될 수 있다. 비록 몇몇의 모순이 발견되지 않고 지나치게 될지라도 Cyc의 오류를 분석하는 능력이 프로그램의 폭주를 막을 것이다.
그러나 지식의 증가는 예방작용을 능가할 것이고 치명적인 오류가 입력될 것이라는 점을 레너트는 인정한다. 모든 시간을 오류의 수정에 쏟는다면 Cyc는 아무 일도 못할 것이다. 지금은 지식을 입력하는 사람들끼리 의견의 일치가 되어 있어서 아직은 희망적이다.
장래는 희망적이다
지금은 오류를 줄이는 것보다 Cyc를 완성하는 것이 일차적인 목표이다. 그가 이 일을 끝낸 후에도 풀어야 할 곤란한 인공지능 문제가 많이 있다고 전문가들은 말한다. 예를 들어 '태양계에서 목성이 가장 큰 별이다'라는 사실을 말하는 문장과 '해태는 한국 프로야구에서 가장 뛰어난 팀이다'라는 의견을 나타내는 문장을 구별할 줄 아는 것이 필요하다.
레너트의 친구이자 인공지능 분야의 개척자이며 MIT의 교수인 마빈 민스키(Marvin Minsky)는 Cyc의 지식 접근 방법에 대하여 약간 걱정을 하고 있다. "Cyc는 논리적인 구조를 가지고 있다. 레너트는 구조를 더 융통성 있게 만들려고 하고 있다. 그러나 지식을 나타내는 방법은 여전히 한개 밖에 없다. 그리고 한가지 표현법으로는 잘 처리할 수 없다. 미래의 시스템은 서로 연결된 두가지나 세가지의 서로 다른 표현법을 가질 것이다. 이것이 인간의 두뇌가 작용하는 방법이다"라고 민스키는 말한다.
'Cyc가 5년 이내에 영어를 읽게 될 것'이라고 한 레너트의 예언에 대해서는 모든 연구자들이 비현실적이라고 생각하고 있다. 민스키 역시 회의적이다. 그러나 그는 이것은 논쟁할 필요도 없다고 주장한다. 제대로 동작을 하기만 한다면 몇년이 걸렸냐는 것은 중요하지 않다.
사실 인공지능 연구자들은 Cyc가 실패할지라도 이것은 인공지능 분야에서 커다란 공헌을 할 것이라고 지적한다. "이것은 인공지능 분야에서 가장 모험적인 일이다. 그러나 또한 가장 흥미롭고 꿈같은 것중의 하나다. 이것이 작동되지 않는다면 우리는 왜 그런지를 찾을 것이고 그런 식으로 더 많은 것을 배우게 될 것이다"라고 Cyc팀에 참가했던 한 연구원은 말한다.
물론 레너트 자신은 흥미로운 실패를 할 생각이 없다. 그리고 Cyc가 우리가 생활하고 일하는 방법을 바꿀 것이라고 주장한다. 학교에서는 일대일로 학생을 가르치기 위해서 Cyc를 사용하고 소매상은 상품을 관리하기 위해 컴퓨터를 사용할 것이다. Cyc는 과학적인 발견을 하기도 하고 불행한 부부에 대해서 상담도 해 줄 것이다. Cyc가 발달함에 따라 그 내용이 전화선과 같은 것을 통해서 다른 컴퓨터에 전송되어 저장될 수도 있을 것이다. Cyc의 지능은 거대하고 어디에나 나타날 수 있는 전기처럼 전달될 것이라고 레너트는 주장한다.
다른 사람의 의심에 대해서 레너트는 그것은 인간의 두뇌만이 독창적이라는 잘못된 사고에 기인한다고 생각하고 있다. "사람의 지능을 신비화하는 것은 좋은 일이나 그것의 신비를 벗겨내는 것이 더욱더 훌륭한 일이다. 우리는 우리가 생각하는 것처럼 그렇게 이해하기 힘든 존재는 아니다"라고 레너트는 믿고 있다.