지난 칼럼에서 성찰적 인공지능에 대해 논의한 데 이어 이번 칼럼에서는 인공지능에 있어서 성찰에 대한 연구에 대해 알아보고자 한다. 성찰을 다시 쉽게 말하면 대상에 대한 깊은 생각이거나 자신에 대한 깊은 생각인데, 이 글은 그 후자인 자신에 대한 생각이고 그것도 자신의 생각에 대한 깊은 생각이다.

사실 이러한 자신에 대한 생각으로서의 성찰은 인공지능에서는 인공지능 초기부터의 논의되어 왔으며 놀랍게도 인공지능이 기반하고 있는 컴퓨터 과학에서도 이미 보편적으로 사용되고 있는 기술이다. 이를 쉽게 설명하기 위해서 컴퓨터 프로그램에 대한 간단한 이해가 필요하다. 인공지능 프로그램을 포함해 모든 컴퓨터 프로그램은 단순히 명령어(Instruction)들의 모임이라고 할 수 있고 컴퓨터는 이러한 명령어를 실행하는 기계일 뿐이다. 이러한 명령은 대상을 필요로 한다. 가령 ‘A=A+1’이라는 명령은 A라는 변수에 1을 더해서 다시 1에 넣으라는 명령이고 이때 A나 1은 대상이라고 할 수 있다. 함수는 이러한 명령어들의 덩어리에 이름을 붙여 놓은 것이라고 할 수 있다. 곧 사용될 용어인 타입(Type)은 A가 변수라거나 정수를 가지고 있다거나 어떤 이름이 함수라는 것을 의미한다.

컴퓨터과학에서는 ‘타입 인트로스펙션(Type Introspection)’이라는 말이 사용되고 있으며 이 용어는 수행 중인 프로그램에서 변수나 함수들(Functions)의 타입(Type)이나 속성(Property)을 알아낼 수 있는 능력을 의미한다. 컴퓨터 과학에서 인트로스펙션과 ‘리플렉션(Reflection)’은 다른 의미로 사용된다. 리플렉션은 인트로스펙션을 넘어서 실행 중인 프로그램 자신의 구조와 행동을 조사하고(Examine), 인트로스펙트하고(Introsepct), 변경(Modify)할 수 있는 능력을 의미하며, 누구나 이름은 알고 있는 자바(Java), 파이선(Python), 고(Go)와 같은 컴퓨터 프로그램 언어들이 모두 이러한 능력을 가지고 있다. 또한 자기-수정 코드(Self-Modifying Code)라는 용어도 있어서 수행 중인 동안 자신의 명령어를 변경하는 코드를 의미하고, 컴퓨터에서 개발된 최초의 고급언어인 포트란(FORTRAN) 다음으로 만들어졌으며, 최초의 인공지능 언어인 LISP에서 이미 이러한 기능은 있었다. 필자가 25년도 넘은 과거에 처음으로 LISP이라는 프로그램 언어가 스스로 자신을 프로그램을 수정할 수 있다는 사실을 알고 놀라워했던 기억은 지금도 생생하기만 하다.

심지어 ‘메타프로그래밍(Metaprogramming)’이란 용어조차 있다. 이 용어는 프로그램을 자료로 다룰 수 있는 능력을 가진 컴퓨터 프로그램에서 사용되는 프로그램 기술이며 이것은 하나의 프로그램이 다른 그램을 읽고, 생성하고, 분석하고, 변형하며 심지어 수행 중인 자신조차도 변경할 수 있다는 것을 의미한다. 이것만으로 컴퓨터과학에서 성찰이라는 개념이 아주 실제적으로 사용되고 있다는 것을 알 수 있다.

인공지능에서 성찰에 대한 연구는 ‘인트로스펙션’이라는 용어로 지칭되고 있으며 인공지능이란 말은 처음 만든 존 맥카시는 사람들은 자신의 정신적 과정을 관찰하는 데 제한된 능력을 가지고 있지만 인간 수준의 인공지능은 성찰적 능력이 필요하다고 했다. 그리고 마빈 민스키는 인간의 이해는 필수적으로 세계의 모델을 실행하는 과정이라고 했다. 그의 논의에서 흥미로운 것은 세계에 대한 모델링뿐만 아니라 자신(행위자)도 포함한다는 것이다.

W는 세계, M은 세계에 존재하는 모델러, 세계의 모델은 W*로 지칭된다. W*는 세계를 이해하고 세계에 대한 질문에 대답하기 위해 사용된다. 세계의 행위자의 지식을 W*로 생각하고 M*는 세계 안에 있는 행위자 자신에 대한 성찰적 지식이다. 게다가 자신의 세계 지식에 관해 생각하고 대답하기 위해서 행위자는 자신의 세계에 대한 모델의 모델(W**)을 가져야 한다. M**는 자신의 자기-지식, 자신의 생각을 포함한 자신의 행동의 행위자 지식을 표시한다. 이러한 아이디어를 그의 유명한 책 <마음의 사회>(Society of Mind) 말미에 기술했다.

인공지능에서 성찰에 관련한 연구는 인공신경망과는 다른 이른바 ‘기호적 인공지능(Symbolic Artificial Intelligence)’이라는 분야에서 이루어졌다. 인공지능의 역사를 볼 때 인공신경망과 기호적 인공지능은 부침의 반대 역사를 가지고 서로 경쟁하면서 발전되어 왔다. 기호적 인공지능은 초기 인공지능 연구를 주도했지만 현재는 인공지능 프로그램의 모든 지식을 사람이 모두 기호로 입력해야 하는 기술로 인식되는 경향이 있다. 하지만 기호적 인공지능에는 인공신경망보다 더 다양한 학습이론이 개발되고 연구되어 왔다. 딥러닝의 열풍 속에서도 인공신경망과 기호 처리를 위한 연구는 꾸준히 진행되고 있다. 컴퓨터적인 ‘성찰’에 대해서는 초기 인공지능 연구를 주도했던 기호적 인공지능 분야에서 진지하게 진행되었고 이러한 경향은 현재까지도 이어지고 있다.