인공지능이란 무엇인가 (마소 90. 5)

 
글 정철주/
지능을 갖춘 기계가 등장한다면?
90.9. 143p
 
90.9. 143p
인공지능이란 무엇인가
인공지능이란 무엇인가?
글/ 정철주
이시대를 살아가고 있는 사람이라면 아마도 인공 이라는 접두어를 앞에 달고 있는 수많은 과학기술들의 이름을 들어 보았을 것이다. 인공심장, 인공수정, 인공위성, 인공생명등 수없이 많은 기술들이 있겠지만 이 중 인공지능이라는 기술은 지금까지 그 내막이 거의 알려져 있지 않은 정신이라는 영역을 다루는 분야라는 점에서, 그리고 만약 이 기술이 완벽히 실현되었을때 생길 사회 전반에 걸친 파급효과가 엄청날것이라는 점에서 다른 분야에 비해 많은 관심을 얻고 있다. 국내 모기업의 TV 기업광고에서는 지능을 갖춘 컴퓨터 라는 귀절이 겁도 없이 등장하고 또 작년에 나온 국산자동차는 사이클론(CYbernetic Controlled LOnglife New Engine), 즉 인공두뇌에 의해 조절되는 엔진 이라는 거창한 이름의 엔진을 달고 나오기도 했다. 이 모두 생각하는 기계 라는 충격적인 언어를 통하여 관심을 끌기 위한 의도일 것이다.
인공지능 기술은 그 모습을 지구상에 나타내는 그 순간부터 많은 이들의 격렬한 논쟁의 대상이 되었다. 대부분의 사람들은 감정적, 종교적 이유로 기계는 생각할 수 없다 고 주장했고 사고라는 것은 인간의 머리 속에서만 행하여진다 고 믿고 있던 철학자들도 인공지능의 가능성을 부인했다. 이러한 반응은 세계 챔피언 수준의 체스 프로그램이 나온 후에도, 의사의 역할을 대신할 만한 뛰어난 전문가 시스템이 나온 후에도 계속되었다. 이런 부정적인 반응에도 불구하고 미국과 일본, 유럽의 각국은 막대한 자금을 투자하여 인공지능 연구에 몰두하고 있다. 인공지능을 연구하는 학자들은 돌조각에서 사고를 창출해 내려는 신 연금술사들인가? 아니면 이들은 범인들과는 다른 통찰력으로 인공지능 구현의 가능성을 알아차리고 자신의 신념에 의한 연구를 계속하고 있는 것일까?
이 글은 생각하는 기계 를 만들려는 도전적인 노력의 과거, 현재, 미래에 대해 대략적으로 이야기하고자 한다. 이 글에서는 기호처리 중심의 인공지능 기술을 중점적으로 이야기해 나가겠다. 사실 인공지능의 역사는 기호처리 인공지능(Symbolic AI)의 역사라고 해도 아무 하자가 없기 때문이다. 신경망 이론이 인공지능 구현의 새로운 접근방식으로서 인정받게 된 것은 그리 오래 전의 일이 아니다.
지능을 갖춘 기계가 등장한다면?
만약 지능을 갖춘 컴퓨터가 등장한다면 우리생활에 어떠한 변화가 일어날지 생각해 보자. 진부한 상상이긴 하지만 다음과 같은 상황을 생각해낼 수 있다. 독자 여러분이 공상과학 영화나 만화를 통해 많이 접해본 장면일 것이다.
아침에 일어난 성주는 잠자리에서 나와 식당으로 간다. 아무도 없는 식당에서 나 커피 한잔 이라고 말하자 식당에 있는 밥순이라는 이름의 로보트가 일어 나셨군요. 오늘 아침에 뭘로 드실거지요? 라고 말한다. 그러자 성주는 어제 먹었던 대로 라고 말한다. 잠시 후 밥순이는 따끈따끈한 아침식사를 차려놓는다.
이상은 단편적인 예지만 인공지능 기술이 실용화되었을 때라야 가능한 일이다. 밥순이는 성주의 말을 알아듣고 그에 적절한 대답을 할 줄 알며 지난 일을 기억할 줄도 안다. 공장에서 출고될때 수백가지의 요리법을 기억장치에 담고 나오지만 때로 성주의 시범을 보고 성주의 취향에만 맞는 요리법을 배우기도 한다. 성주의 방식대로 라면끓이는 법도 배우게 될 것이다. 위의 밥순이라는 로보트가 실제로 존재하기 위해서는 많은 인공지능기술을 필요로 한다. 말을 알아듣기 위해서는 음성인식과 자연언어처리 기술이 필요하고, 또 요리법을 보고 배우기 위해서는 영상인식과 학습능력의 구현을 필요로 하며 자유자재로 식당 안을 돌아다니기 위해서는 로보틱스 분야의 기술에 의존해야 한다.
또 다음과 같은 상황도 생각할 수 있겠다. 전산학을 공부하는 독자라면, 소프트웨어 공학이라는 분야에 대해서 들어 보았을 것이다. 필자는 지난 학기에 이에 관한 과목을 수강한 적이 있는데 약간 따분한 분야이긴 하지만 그 가치가 매우 높은 분야라는 생각이 들었다. 소프트웨어 공학에는 CASE(Computer Aided Software Engineering)라는 연구 분야가 있다. CASE 환경은 프로그래머가 사용자의 요구 분석으로부터 설계, 구현, 유지보수에 이르기까지 소프트웨어 개발 생명주기(Software Development Life Cycle)의 전 단계에서 더욱 효율적으로 작업할 수 있도록 여러 기능을 지원해 준다. 만약 인공지능이 실현된다면, 이러한 CASE를 능가하는 환상적인 환경을 기대할 수 있을 것이다. 단지 인간의 소프트웨어 개발을 지원하는 정도의 용도가 아니라 인간의 소프트웨어 개발을 대신하는 용도로의 컴퓨터 사용이 가능하다.
지금 이 연구는 이미 많은 곳에서 행해지고 있는데, 이렇게 컴퓨터 자신이 소프트웨어 개발의 모든 책임을 떠맡을 수 있도록 하는 연구를 자동프로그래밍(Automatic Programming)이라고 한다. 즉, 인간이 자연언어로서 프로그램의 기능이나 용도 따위를 컴퓨터에게 알려준다면 그 이후의 모든 작업은 컴퓨터가 알아서 처리하게 된다. 이는 개발의 효율성이나 생산성 측면에서 무척 바람직한 일이다. 컴퓨터 과학자들은 공상과학 소설에서나 나올 듯한 위의 상황들이 결코 불가능하지는 않으나 다만 실제로 이러한 기계가 나오기까지는 약간(?)의 시간이 소요될 뿐이라고 이야기한다. 그러나 현재 프로그래머나 가정부라는 직업을 가진 독자는 그다지 걱정하지 않아도 될 듯하다. 만약 밥순이라는 기계를 만들만한 기술이 이 세상에 존재하더라도 과연 이러한 기계가 생산될 지는 의문이다. 가정부를 한 명 고용하는 것이 비싼 기계를 들어놓는 것보다는 훨씬 경제적일 것이기 때문이다.
인공지능이란 무엇인가?
인공지능에 대한 이야기를 시작하기 전에 인공지능에 대한 정의가 선행되어야 하겠다. 그런데 인공지능을 한 마디로 정의하는 일이란 생각처럼 쉽지 않기 때문에 많은 학자들이 서로 다른 정의를 내리고 있다. 여기서는 대체로 많은 과학자들에 의해 인정되는 몇 가지 정의들을 들어 보도록 하겠다.
인공지능은 지능적인 컴퓨터 시스템, 즉 우리가 인간의 행위중 지능이 개입되어 있다고 생각되는 것들-언어구사, 배우는일, 추리, 문제해결 등-을 할 줄 아는 컴퓨터 시스템을 만드는일과 관련된 전산학의 한 분야이다. -파이겐바움(Feigenbaum)
인공지능은 계산 모형(computational model, 예를 들어 컴퓨터)을 통하여 인간의 정신능력을 연구하는 분야이다 -차니악(Charniak)
위에서 한 가지 덧붙일 점은 우리가 구현하고자 하는 생각하는 컴퓨터 는 유용해야 한다는 점이다. 예를 들어 쓸데없는 공상이나 할 줄 아는 컴퓨터는 인간 생활에 아무런 유익을 주지 못한다. 인공지능은 컴퓨터가 더욱 유용한 도구가 되도록 하기 위한 분야이기도 한 것이다. 사실 실용성이라는 문제는 무시할 수가 없다. 필자도 그 중의 한 사람이지만, 인공지능 연구에서 인간 수준의 지적능력을 가진 기계 를 기대하는 낭만적인 꿈을 가진 독자들은 실용성의 측면에서볼 때 잘못된 생각을 가지고 있다고 할 수도 있다. 엄청난 노력의 연구에 비해 돌아오는 유익이 보잘것 없다면 그 연구는 아마 행해지지 않는편이 더 나을지도 모른다. 초기의 인공지능 연구자들은 다방면의 문제를 해결할 수 있는 일반적인 방법을 얻고자 하였다. 자연언어처리, 학습, 추리, 문제해결, 영상인식 등 모든 목적에 공통적으로 적용될 수 있는 프로그램의 개발을 기대했던것이다. 이러한 노력은 기법 상의 향상이라는 다소 보잘것 없는 결과만을 낳았으며, 어느 하나의 용도에 있어서도 유용한 결과를 얻을 수가 없었다. 결국 1970년대에 이르러, 보다 특정한 용도로만 사용될 수 있는 프로그램의 개발에 몰두하게 되었으며 이러한 경향은 현재까지 이어지고 있다.
인공지능의 역사 희망과 기대감
1930년대와 1940년대는 그야말로 생각하는 기계에 대한 희망과 기대감이 가득한 시기였다. 수리논리학이나 계산(computation)에 대한 새로운 아이디어들, 사이버네틱스(인공두뇌학)나 정보이론등 인간의 사고과정에 대한 수많은 이론들이 고개를 들기 시작한 시기이기 때문이다. 이 중 수리논리학 분야의 발전은 인간의 추론능력에 대한 실마리를 안겨주는 듯 했다. 프레게(Frege), 화이트헤드(Whitehead), 러셀(Russell)등은 추론과정이 몇 가지의 틀로 정형화될 수 있다는 것을 보여주었던 것이다. 아직도 이 수리논리학 분야는 AI에 있어서 주요한 연구 대상이 되고 있다. 독자들중에는 수리논리학이라는 거창한 이름을 듣고 겁을 집어 먹은 분이 있을지 모르겠는데, 이는 우리나라 고등학교 수학과정 중 집합과 명제 라는 부분에서 다루는 주제를 확장한 학문 분야라고 생각하면 될 것이다. 수학자인 처치(Church)나 투링(Turing)등은 계산의 본질에 대한 연구를 통하여 계산 모델을 제시함으로써 수리논리학 분야에서 얻은 정형화된 논리추리 과정이라는 성과를 기계에 적용할 수 있다는 것을 시사하였다. 튜링의 경우는 튜링 머신(Turing Machine)이라는 만능기계의 모델을 제시하고, 이 기계가 지능적인 행동양식을 보여줄 수 있다고 주장함으로써 많은 이들의 관심을 집중시키기도 했다. 이외에 사이버네틱스라든가 뇌에 대한 이론, 정보이론 등의 등장은 생각하는 기계 에 대한 부푼 꿈을 한 층 더 부풀게 해주었다. 당시에는 인간의 뇌와 컴퓨터를 동일선 상에 놓고 연구하려는 태도가 팽배해 있었는데, 이는 뇌와 컴퓨터가 모두, 문제해결과 같은 지적인 동작을 행하는 장치였기 때문에 무언가 공통적인 요소를 가지고 있지 않겠는가라는 짐작 때문이었다.
연구의 본격적 시작
이와 같은 분위기 속에서 인공지능 연구의 본격적인 시작을 알리는 중요한 모인이 1956년 다트머스 대학에서 열린다. 당시 다트머스 대학의 젊은 수학교수였던 존 맥카시(John McCarthy, 현재는 스탠포드 대학교)는 기계의 사고 가능성에 대하여 논의하기 위하여 비슷한 관심을 가진 다른 학자들을 초청하였다. 비록 맥카시 교수의 기대와는 달리 뚜렷한 성과없이 막을 내리고 말았지만, 이 회의는 나중에 인공지능 연구의 활성화를 야기했다는 점에서 그 의의를 찾을 수 있다. 이 때 모임을 제안하는 글에서 최초로 인공지능(Artificial Intelligence : AI) 이라는 용어가 사용되었고, 이 용어는 현재까지 사용되고 있다. 이 모임은 맥카시 교수외에 하버드 대학교의 마빈 민스키(Marvin Minsky, 현재는 MIT),IBM의 나다니엘 로체스터(Nathaniel Rochester), 그리고 벨 연구소의 델 섀넌(Del Shannon)이 주축이 되어 록펠러 재단의 지원 아래 이루어졌으며, 이들 외에도 기호처리이론으로 유명한 앨런 뉴얼(Allen Newell)과 허버트 사이먼(Herbert Simon)등이 참가하였다. 이중 맥카시, 민스키, 뉴얼과 사이먼은 각기 현재 세계 인공지능 연구의 중심이 되고 있는 스탠포드 대학교, MIT, 카네기-멜톤 대학교의 인공지능연구소를 이끌고 있으며, 네 명 모두 전산학 분야의 노벨상이라고 할만 한 튜링상(Turing Award)을 수상하는 영광을 얻게 된다(허버트 사이먼은 노벨 경제학상을 수상하기도 한다).
앞서 이야기했듯이, 50~60년대에는 주로 일반적인 문제풀이 기법에 대한 연구가 이루어졌다. 모든 지능적인 행동을 해낼 수 있는 일반적인 모델을 찾으려는 연구는 어려울 수 밖에 없었으며, 뚜렸한 성과도 얻을 수 없었다. 인간이 어떻게 여러 가지의 지능적인 행동을 수행해 나가는지에 대한 이해도 없이 무작정 인간의 지능적인 행동을 흉내내는 기계를 만들자니 쉬운 일이 아니었을 게다.
침체의 늪
1960년대 말에 이르러서야 인공지능 과학자들은 일반적인 지능 프로그램을 만든다는 것이 어렵다는 것을 인식하고 하나의 특정한 용도에서만 지능적인 동작을 보여주는 프로그램을 만들기 시작하였다. 예를 들어 환자의 증상에 대한 정보를 입력받아 병명을 알려주는 프로그램이라든지, 테이블 위에 있는 블럭들을 이러저리 움직일 줄 아는 프로그램이라든지, 꽤 인상적인 프로그램들이 등장하기 시작했다. 이러한 프로그램들은 그 용도로만 사용될 수 있었으며, 다른 문제 분야(problem domain)에는 적용될 수 없는 성질의 것이었다. 아직도 꿈만 큰 과학자들은 인공지능 연구가 이런 식으로 변하는 것을 반가와하지 않았지만 결국 이러한 방법만이 인공지능 연구가 앞으로 나아갈 수 있도록 해주었다.
그러나 여전히 인공지능 프로그램들이 가진 기능은 실용화되기에는 너무 미약했으며, 60년대에 이은 1970년 초반의 침체 국면은 일반인으로부터 인공지능 연구에서는 아무 것도 기대할 수 없다고 하여 외면을 받기에까지 이르렀다. AI는 더 이상 중요한 연구대상이 되지 못한다는 영국의 라이트힐 보고서가 나온 것도 바로 이 때이다.
르네상스의 주인공. 전문가 시스템
침체되어 있던 인공지능 연구는 1970년대 말에 이르러서야 르네상스를 맞게 된다. 이 문예부흥의 주인공은 전문가 시스템(expert system)이라는 이름으로 등장한 프로그램으로서, 자신의 문제분야에 뛰어난 능력을 보여 주었다. 이러한 결과를 얻게 된 배경에는 바로 지능적인 프로그램을 만들기 위해서는 지식(Knowledge)이라는 것이 필수적이라는 것을 인식하게 되었다는 사실이다. 즉, 프로그램의 문제풀이 능력은 프로그램이 소유하고 있는 지식으로부터 오는 것이지, 단순히 프로그램이 채택하고 있는 문제표현 방법이나 추론 방식에 의한 것만은 아니라는 것이다. 다시 말하면, 컴퓨터의 프로그램이 지능적으로 일을 처리하기 위해서는 질이 좋은 특정한 지식을 다량으로 주입시켜 주어야 한다는 것이다(이러한 사실을 컴퓨터가 나오기 수세기 전부터 알아차린 이가 있었으니 그가 바로 Knowledge is power."라고 외쳐댔던 베이컨이다). 어쨌든 재활에 성공한 인공지능은 80년대 초에 발표된 일본의 신세대 컴퓨터 개발 계획이라는 자극과 더불어 활성화되고, 더 많은 사람들의 관심을 집중시키기에 이르렀다.
신경망 이론의 부활
80년대 인공지능계의 최대 사건은 신경망(neural nets)이론의 부활일 것이다. 사실 신경망 이론은 생각하는 기계 에 대한 논의가 시작된 연구초기부터 존재해 왔다. 1943년 맥 클러크와 피쓰에 의해 발표된 형식 뉴런이라든가, 1949년 헤부에 의한 학습모델, 그리고 로젠블라트(Rosenblatt)의 그 유명한 퍼셉트론(perceptron)등이 바로 인간의 신경회로망을 모델로 하여 지능적인 기계를 실현해 보려는 노력의 산물이었다. 그러나 이러한 시도중 가장 성공적이었던 퍼셉트론은 마빈 민스키와 세이무어 페이퍼트가 쓴 Perceptron : an introduction to computational geometry"라는 서적에서 강력한 비판을 받았으며, 결국 신경망 이론에 관심을 가지고 있던 인공지능 연구자들은 이 대부의 한마디 말에 영향받아 모든 다른 곳으로 발길을 돌리게 되어 버렸다. 이렇게 사라져 버린 신경망이론은 루멜하트(Rumelhart)를 위시한 몇 명의 끈질긴 연구의 산물인 Parallel Distributed Processing(병렬분산처리) 이라는 제목의 책을 통해 더욱 화려하게 부활한다. 신경망 이론은 인간의 사고가 두뇌작용의 산물이라면 이 두뇌의 구조를 분석하고 처리 메카니즘을 규명하여 이를 이용하면 생각하는 기계를 만들 수 있지 않겠느냐는 아이디어에서 출발한 이론이다.
신경망 이론은 기존의 인공지능에 비해 문제해결을 위한 접근방식에 있어 많은 차이점을 가지고 있다. 즉, 기존의 방식이 절차적인 순서에 의한 알고리즘을 통해 기호를 처리하여 문제를 해결하는 방법인 반면 신경망 이론은 인간의 두뇌 신경조직을 모델로 하여 단순한 기능을 하는 처리기(신경세포)들을 대규모로 상호 연결한 다음 연결강도를 조절하여 문제를 해결하는 방식이다(<그림 1>참조). 그래서 신경망 이론을 지지하는 자들을 연결주의자(connectionist)라 부르기도 한다. 이러한 신경망 이론의 탄생으로 인공지능 기술은 기호처리 인공지능(symbolic AI)과 연결주의(connectionism)로 양분되는 결과를 맞게 된다.
<그림 1>신경망 계산기법과 기존 방법의 비교
20세기 연구를 뒷받침한 과거의 노력들
지금까지는 20세기의 인공지능 연구만을 이야기했다. 그렇다면 20세기 이전에는 생각하는 기계를 만들려는 노력이 전혀 없었을까? 그렇지 않다. 이미19세기에 컴퓨터를 설계했던 천재 찰스 배비지(Charles Babbage)는 연구기금을 마련하기위해, 그의 해석기관(Analytical Engine)이 틱택토나 체스 게임을 할 수 있도록 제작될 수 있을것이라는 생각을 하고 연구기금을 모으기 위해 해석기관의 게임 버전을 만들려고도 했었다. 물론 당시 기술 상의 제약으로 해석기관이 실제로 만들어지지 못했기 때문에 이 최초의 인공지능 프로그램도 아이디어에 그치고 말았지만 배비지의 뛰어난 통찰력에는 놀라움을 금할 수가 없다.
인공지능의 여러 분야들
현재 인공지능에는 수많은 연구분야가 있다. 그 중 중요한 몇 가지를 골라 그 분야에 대한 대략적인 설명을 적어 보겠다. 아래의 분야들 외에도 음성인식(speech recognition), 지능적 컴퓨터 보조 교수(Intelligent Computer Aided Instruction, ICAI)등 많은 분야들이 있으나 여기서는 생략하겠다.
자연언어처리(Natural Language Processing;NLP)
사람들이 상호 간에 의사소통을 하기 위하여 사용하는 주요한 매객체가 바로 언어이다. 자연언어라는 말은 우리가 일상생활에서 사용하는 언어를 뜻하는 것으로서 인간이 컴퓨터와의 의사소통을 위하여 사용하는 언어인 프로그래밍 언어와 구분하기 위하여, 약간은 부자연스러운 자연 이라는 접두사를 가지게 되었다. 이 글의 앞부분에서도 자연언어처리에 관한 약간의 이야기가 나왔지만, 이 분야는 AI 연구의 초기 단계부터 주요한 연구 분야였으며, 꾸준히 관심을 모으고 있는 분야이기도 하다. 자연언어를 이해할 줄 알고 구사할 줄 아는 기계를 만드는 것, 이것이 자연언어처리 연구의 목표라고 할 수 있다. 아마 완벽하게 실현되기만 한다면 가장 극적인 효과를 기대할 수 있는 분야가 바로 이 분야라고 말할 수 있을 것이다. 요즘 떠드는 인간과 컴퓨터 간 인터페이스의 최종 목적지가 바로 이 자연언어를 통한 인터페이스가 되리라는 것은 의심할 나위가 없다.
그렇다면 자연언어처리가 어떤 식으로 이루어지는지 간단히 알아보자. 이는 컴파일러의 번역과정과 조금 유사하다. NLP 시스템은 주어진 문장을 미리 정의된 문법에 의거하여 구문해석(parsing), 의미해석(semantics interpretation), 문맥해석(contextual interpretation)등의 과정을 통하여 처리한다. 여기서 문맥해석이란 원 문장에서는 정확히 기술되지 않았던 여러 사실을 문맥을 통하여 알아내는 작업이다. 그것 좀 해줄래. 라는 문장에서 그것 이 의미하는 것이 무엇인지 알아내는 작업 따위를 포함한다. NLP 시스템이 컴파일러와 다른 점이라면 컴파일러가 원시 프로그램을 입력받아 그에 해당하는 기계어 코드를 출력하는 것에 비해 NLP 시스템은 자연언어로 씌어진 문장을 입력으로 하여 그 문장으로부터 얻은 잘 기술된 지식을 출력한다는 것이다. <그림 2>은 I ate the pizza. 라는 문장이 NLP로 처리되는 과정의 예이다.
<그림 2>자연 언어 처리의 예
이 분야에 있어 가장 큰 어려움 중의 하나로는 모호성(ambiguity, 중의성)을 들 수 있다. 본지 89년 4월호에서 10월호까지 연재된 이준희씨의 컴파일러 입문 강좌를 읽어 본 독자는 알겠으나, 하나의 문장이 두 개 이상의 파스 트리(parse tree)로 표현될 수 있을 때 이 문장을 모호하다고 한다( Flying planes can be dangerous."라는 문장을 파스 트리로 표현해 보면 모호성에 대해 쉽게 이해할 수 있을 것이다). 자연언어처리와 관계된 유명한 프로그램 중에 1960년대 중반 MIT의 와이젠바움(Weisenbaum)에 의해 개발된 ELIZA라는 프로그램이 있다. 이 프로그램은 NLP의 여러 이론들을 충분히 활용한 진정한 NLP프로그램은 아니지만 많은 독자들이 이 프로그램에 관심을 가지고 있을 것 같아 간단히 설명해 보고자 한다. <리스트 1>의 대화가 사용자와 ELIZA와의 대화 예이다. ELIZA는 로저스(Rogers)식 정신분석기(Rogerian psychoanalyst)의 역할을 하는 프로그램인데, 로저리안 정신분석가란 환자의 말을 되풀이하여 이야기해 줌으로써 사용자 스스로 자신의 문제를 발견하고 치료할 수 있도록 도와주는 사람이라는 것을 염두에 두기 바란다. 그런데 이 ELIZA라는 프로그램의 내부 메카니즘을 알아보면 의외로 간단하다. 중심단어(keyword)들을 담은 데이터베이스를 미리 준비하고 있다가 환자((사용자)가 입력한 문장에서 중심단어가 발견되면, 그 중심단어에 대해 준비된 대답을 출력하는 것 뿐이다. 만약 중심단어가 입력에서 발견되지 않을 때는 더 이야기해 주세요. 나 예, 그래서요. 같은 준비된 문장을 출력한다.<리스트 2>에 ELIZA의 데이터 베이스의 보기가 나와 있다.
<리스트 1> ELIZA와의 대화 예
User. ELIZA.
Men are all alike In what way?
They're always bugging us about something or other. Can you think of a specific example?
Well, my boyfriend made me come here. Your boyfriend made you come here.
He says I'm depressed much of the time I am sorry to hear you are depressed
It's true, I am unhappy. Do you think coming here will help you not to be unhappy?
I need some help; that much seems certain What would it mean to you if you got some help?
Perhaps I could learn to get along with my mother. Tell me more about your family
My mother takes care of me. Who else in your family takes care
of you?
My father. Your father
You are like my father in some ways. What resemblance do you see?
<리스트 2> ELIZA의 데이터베이스 예
Word Rank Pattern Outputs
alike 10 ?X In what way?
What resemblance do you see?
are 3 ?X are you?Y Would you prefer it if I weren't?Y?
3 ?X are ?Y What if they were not?Y?
always 5 ?X Can you think of a specific example?
When? Really, always?
What 2 ?X Whay do you ask?
Does that interest you?
자연언어처리와 깊은 관련을 갖고 있는 분야로서 기계번역(Machine Translation)이라는 응용분야가 있다. 한국어로 쓰여진 문장을 영어로 번역한다든지, 독일어로 쓰인 문장을 일어로 번역하는 프로그램을 만드는 것이 이 분야의 목표이다. 이미 상당한 수준의 번역 프로그램들이 나와 있고, 우리나라에서도 88년 KIST 시스템공학센터에서 일/한 번역시스템을 완성한 적이 있는데 이 시스템의 번역율은 90% 정도라고 한다.
전문가 시스템(Expert Systems)
전문가 시스템은 어떤 특정한 분야의 전문가처럼 추론하고 판단할 줄 아는 프로그램이다. 예를들어 의료진단 전문가 시스템이라면 환자의 증상이나 다른 관련된 사실들을 입력받아 환자의 병명을 알아내고 적절한 치료방법을 일러준다. 또 어떤 전문가 시스템은 전화교환기에 발생한 고장에 대한 메시지를 입력받아 고장원인을 분석하고 대처방안을 제시해 주기도 한다. 이와 같은 전문가 시스템분야는 인공지능의 분야들 중 가장 완성도가 높고 많이 실용화된 분야이기도 하다. 이미 수천개의 전문가 시스템이 개발되어 있고, 그 중 상당수는 인간 전문가를 대신하거나 보조하는 용도로 쓰여지고 있다. SRI인터내셔널에서 개발한 PROSPECTOR라는 지질학 전문가 시스템은 지표로부터의 정보를 분석하여 광맥을 찾아내는 전문가 시스템으로서, 1980년 미국 워싱턴주에서 지질학자들이 지난 60년간 시추를 거듭하고도 찾아내지 못했던 1억달러 가치의 몰리브덴 광맥을 찾아내는 개가를 올린 적도 있다.
전문가 시스템은 인간 전문가의 머리 속에 들어 있는 전문 지식을 사실(fact)과 규칙(rule)의 형태로 저장한 지식베이스((knowledge base)와 그 지식베이스의 내용을 토대로 문제해결에 필요한 지식을 담은 추로엔진(inference engine)으로 구성되어 있다. 이와 같이 지식베이스와 추론엔진으로 이루어지는 시스템을 지식기반 시스템(knowledge based system)이라고 부르는데, 전문가 시스템은 지식베이스 내에 전문지식을 가지고 있는 지식기반 시스템의 일례라고 볼 수 있다.<리스트 2>에는 전문가 시스템의 지식베이스 내에 들어 있는 내용들을 보기가 나와 있다. 전문가 시스템에 대해 좀 더 알고 싶으면 본지 88년 9월호부터 12월호까지 연재된 조동섭 교수의 전문가 시스템의 개발 기사를 참고하면 많은 도움이 될 것이다.
이러한 전문가 시스템을 구현하는 데에는 엄청난 노력이 필요하다. 그래서 전문가 시스템의 쉬운 구현을 위한 저작 도구(authoting tool)들이 개발되었는데 이는 우리가 데이터베이스 시스템을 구축하기 위하여 사용하는 디베이스 같은 도구들에 비교할 수 있다. 유명한 저작 도구의 예로서 ART, Nexpert, KEE 등을 들수 있는데, 국내에도 서울대학교 계산통계학과 AI 연구실에서 개발한 SAILOR 등이 있다.
기계학습(Machine Learning)
인간의 지능에서 발견할 수 있는 가장 중요한 능력 중의 하나가 학습능력이다. 따라서 필자는 인간의 지능을 갖춘 기계를 만들기 위해서는 기계 학습 분야에 대한 집중적인 연구가 뒤따라야 한다고 생각한다. 그렇지만 이 분야의 연구는 투자하는 노력에 비해 얻을 수 있는 직접적인 결과가 그다지 많지 않아 지금까지 뚜렷한 성과를 얻지 못하고 있다. 마빈 민스키같은 AI의 거목은 기계학습에 대해 이렇게 말한다.
생각하는 기계를 개발하려면 먼저 학습능력을 가진 컴퓨터를 만들어야 한다. 학습의 의미는 인간이 정신적으로 변화를 가져오고 문제해결의 방법을 찾아낸다는 것이다. 사람이 새로운 사실을 배울 때 자신을 재프로그램(reprogram)하는 것과 마찬가지로 컴퓨터도 자신의 프로그램을 보고서 그것을 어떻게 개선할 것인가를 판단한 다음에 수정할 수 있어야 한다. 그러나 오늘날의 컴퓨터 시스템은 똑같은 문제는 눈깜짝할 사이에 풀어내지만 새로운 문제에 대한 해결 능력은 너무 보잘것 없다.
학습이라는 것은 간단히 새로운 지식을 획득하는 것과 자신의 능력을 개선하는 일이라고 할 수 있다. 예를 들어 대한민국의 수도는 한국이다. 라는 단순지식을 획득하는 일부터 일반 상대성이론을 개념적으로 이해하게 되는 일까지 모든 종류의 자기조직(self-organization)을 포함한다. 학습도 그 성질에 따라 여러 가지로 분류되는데, 학습분야에서 연구되어 온 학습의 종류에는 다음과 같은 것들이 있다.
기계적 학습(learning by memorization)
컴퓨터가 완성된 형태의 지식을 제공하는 것을 의미한다. 이러한 종류의 학습은 부시는 미국 대통령이다. 와 같은 지식을 입력받아, 단순히 암기함으로써 이루어진다.
예를 통한 학습(learning by example)
수많은 예를 통해 일반화된(generalized)지식을 얻게 되는 식의 학습을 의미한다. 포커 게임에서, 여러 가지의 스트레이트(straight)의 예들을 보고 스트레이트가 어떠한 것인지 알게 되는 것이 이에 속한다.
조언에 의한 학습(learning by advice-taking)
다른 사람으로부터 조언을 들었을 때 우리가 그로부터 얻은 지식을 활용하기 위해서는 그 지식을 실제 행동을 위한 계획으로 바꾸어야 한다(이를 operationalizing이라고 한다). 바둑을 배울때 젖히면 늘려라 라는 격언을 들었다면 실제 바둑을 둘 때는 이 격언을 어떤 식으로 적용해야 하는가를 깨닫게 되는 따위의 일이 여기 속한다고 할 수 있다.
컴퓨터 비전(Computer Vision)
사실 사물을 보고 인식할 줄 아는 능력을 지능의 영역에 포함시킬 사람은 없을 것이다. 국민학교도 졸업하지 않는 사람일지라도 부모님의 얼굴을 알아보는 데는 아무런 어려움을 느끼지 못하며, 머리가 상당히 나쁜 사람도 영화관에서 자신의 시야를 가리고 있는 거대한 돌덩어리(?)와 영화화면을 구분해 내는 따위의 일은 아주 쉽게 해낸다. 그러나 8분의 1로 도막난 사진을 보고 이 사진이 무슨 사진인지 알아내려고 애써본 적이 있는 독자나 일본어의 히라가나를 외우려고 머리를 싸매본 적이 있는 독자라면 본 것을 인식하는 데에 어느정도 두뇌의 힘이 필요하다는 것을 알게 될 것이다.
인간의 정보획득은 대부분 시각을 통하여 이루어진다. 이 시각활동을 통하여 입력된 정보, 쉽게 말해 눈으로 본 것은 지적으로 분석한 후 인식되게 된다. 볼 수 있는 능력이 사람의 사고에 미치는 영향은 상당히 큰데 사람의 사고력은 경험의 시각적 표현이라고 주장하는 사람도 있을 정도이다. 컴퓨터 비젼의 목적은 컴퓨터에게 이러한 시각활동을 부여하여 외부세계 즉 보이는 세계와 연결하는 것이다. 여기서 시각활동은 외부의 물체를 보는 것만 의미하는 것이 아니고 본 것을 인식하는 작용도 포함한다. 컴퓨터 비젼 시스템은 크게 세 가지 작업으로 나눌 수 있다. 이에 앞서 컴퓨터 비젼에서 자주 나오는 이미지(image)라는 용어를 정의하기로 하자. 물체의 표면에서 반사되는 빛에 의하여 사람의 눈에 인식되는 2차원의 영상을 그 물체의 이미지라고 한다. 이미지는 보통 눈(입력장치)에 들어오는 빛의 농도(gray level)에 의하여 표현된다. 농도는 일반적으로 0과 1 사이의 수로 나타내는데, 0은 검정색, 1은 흰색, 0.x는 어중간한 회색을 나타낸다.
신호처리(signal processing)
TV카메라나 스캐너 등으로 입력된 입력 이미지(image)를 나중의 처리를 위해 더 나은 이미지로 바꾸는 작업이다. 예를 들어 입력 이미지에 잡음(noise)이 많이 끼었다면 이를 제거한다든가 나중의 처리가 더 효율적일 수 있도록 이미지를 변형하는 등의 작업이다. <그림 3>와 같은 변환작업을 예로 들 수 있다.
<그림 3>윤곽선 검출작업의 예
분류(Classification)
신호처리를 통해 넘어온 이미지를 미리 정해진 범주로 분류하는 작업이다. 알파벳 문자의 이미지를 입력받아 그것이 어떤 문자인지 알아내는 작업을 예로 들 수 있다. 알파벳 인식을 위해서는 인식 시스템이 미리 각 알파벳 문자의 특징에 대한 정보를 가지고 있어야 하며, 입력 알파벳이 무엇인지 알아내기 위해서는 입력된 이미지가 미리 정의된 알파벳의 특징과 어느 정도 맞아 떨어지느냐(fit)를 통계적 방법으로 계산하는 방법이 주로 쓰인다. 이 작업은 특별히 패턴인식(pattern recognition)이라 불리기도 한다.
이미지 이해(image understanding)
하나의 이미지가 주어질 때 이미지 이해 과정에서는 단순히 이미지만 인식하는 것이 아니라 그 이미지를 포함한 전체적인 영상을 이해하는 작업을 행한다. 예를 들어 하나의 영상을 보고 물체들의 원근을 판단한다든지 <그림 4>를 입력받아 BODY1이 BODY2를 떠받히고 있다는 사실을 인식하는 등의 작업이 이에 속한다.
<그림 4>이미지 이해(컴퓨터 비전)
로보틱스(Robotics)
로보틱스라는 말을 보고, 혹시 이 분야에서 로보트를 만드는 것이 아닌가 하는 생각을 하는 독자도 있을 것이다. 로보트를 만드는 데는 물론 기계공학이나 전자공학 같은 하드웨어 기술도 필요하겠지만 그에 못지 않게 중요한 것이 그 로보트를 움직이는 소프트웨어 기술이다. 로보틱스 분야는 이러한 소프트웨어적인 요소를 담당한다. 로보트에는 두 가지 타입이 있다. 하나는 정해진 위치에서 정해진 일만을 수행하는 산업용 조립로보트(assembly robot)이고 하나는 스타워즈에 나오는 C3PO같이 자유롭게 행동하는 자동 이동로보트(autonomous mobile robot)이다. 전자의 경우는 구현이 그다지 힘들지 않지만 후자의 경우는 자유도가 크다는 점에서 구현에 상당한 어려움이 따른다.
우리 인간은 어떤 물건을 잡는다든지 몸을 움직이는 데 있어 전혀 어려움을 느끼지 못한다. 하지만 로보트 팔이 하나의 물건을 집게 하는 데에는 상당한 어려움이 따른다. 팔이 어느 경로로 이동해야 하며, 물건을 잡기까지 관절의 움직임은 어떠해야 하는지, 또 움직이는 로보트가 장애물을 피해가기 위해서는 어떠한 경로로 움직여야 하는지 등을 모두 계산해야 하기 때문이다. 하나의 그럴듯한 로보트가 완성되기 위해서는 이동에 관련된 문제뿐만 아니라 컴퓨터 비젼, 음성인식, 만져서 느낄수 있는 능력 등의 문제가 모두 해결되어야 한다.
탐색 및 게임(Searching and Game-playing)
탐색 및 게임 을 이야기하기 전에 앞에서 자주 언급한 문제풀이(problem-solving)라는 말이 어떠한 것을 의미하는지 알아보자. 넓은 의미에서 볼때 문제풀이란 컴퓨터로 계산을 하여 그 해를 구하는 모든 방식에 적용될 수 있다. 그러나 여기서는 미준 방정식을 푼다든가, 행렬의 판별식을 구하는 따위의 단순한 계산적 문제들은 제외하기로 한다. 인공지능에서의 문제풀이는 단순한 계산이 아닌 시행착오적 방법에 의한 문제해결 방법을 의미하는 것이다. 즉, 문제풀이의 대상은 가능한 수많은 해들의 공간에서 하나의 해를 찾는 문제들이 된다. 그리고 이런 식으로 해를 찾는 과정이 바로 탐색(searching)의 과정인 것이다.
필자가 자주 하는 게임 중에 Nemesis와 Cosmos라는 바둑 프로그램이 있는데, 바둑을 좋아하는 독자들은 다 알고 있으리라 생각된다. 이 프로그램은 인간 또는 다른 프로그램을 상대로 바둑을 둘 줄 아는 프로그램인데 아직 수준은 형편없지만 가끔 놀라운 수로 대응해 오기도 한다. 바로 이러한 프로그램을 만드는 분야가 게임 분야이다(물론 아케이드 게임이나 어드벤쳐 게임은 이 분야의 대상이 아니다). 이러한 게임을 만드는 데에는 다음의 상대방 수를 예측하고 최선의 수를 찾기 위해 탐색기법을 사용한다. 아마도 오목이나 체스, 오델로 게임 프로그램을 직접 작성해 본 독자들은 이런 것도 인공지능에 속하는가 라고 의아해 할 지도 모르겠으나 이는 분명히 인공지능의 한 분야이다. 체스나 바둑같은 게임을 하기 위해서는 고도의 지능이 필요하다는 것은 두말할 필요가 없다. 이렇게 지능적인 게임을 할 수 있는 프로그램을 만들려는 노력은 AI 연구 초기부터 발견되는데, 아서 새뮤얼(Arther Samuel)이 바로 이 노력의 주인공이다. 1947년 체커(13개의 말을 가지고 하는 서양장기의 일종)라는 게임을 할 줄 아는 프로그램을 개발하기 시작한 새뮤얼은 실수를 통해 배우는 능력을 이 프로그램에 부여함으로써 급기야는 자신보다 더 체커 게임을 잘하는 프로그램으로 키워(?)놓는다.
이렇게 게임 분야가 좋은 연구대상이 되는 데에는 몇 가지 이유가 있다. 그것은 바로 그 프로그램의 성공여부를 쉽게 알 수 있다는 것이고, 또 많은 지식을 필요로 하지 않아 프로그래밍이 쉬우며, 무엇보다도 많은 사람의 흥미를 유발할 수 있다는 점이다. 지금이야 많은 게임 프로그램들이 나와 있어서 그렇지 않겠으나 게임 프로그램이 처음 등장했던 당시 일반인의 반응은 대단했다. 머리나쁜 사람들은 못한다는 체스 게임을 하는 프로그램이었으니 더욱 그러했을 것이다. 이제 세계 챔피언수준의 체스 프로그램까지 나오고 보니 이 분야에 대한 연구가 시들해져 버린 느낌이지만 아직 좋은 프로그램 거리가 남아 있다. 바로 바둑인데 이 바둑은 체스