* 이 글은 AI 전문 뉴스레터 '튜링 포스트 코리아'에 기고한 글의 일부입니다. AI 기술, 스타트업, 산업과 사회에 대한 이야기에 관심이 있으시면 '튜링 포스트 코리아' 구독해 주세요.
작년 중순 이후, 지금까지도 계속해서, 거침없이 ‘Super Intelligence (초지능)’, 그리고 ‘생각하는 컴퓨터’, 궁극적으로 AGI를 향해 박차를 가하는 수많은 아이디어, 그리고 스타트업들의 경쟁을 눈 앞에서 보고 있는데요.
튜링 포스트 코리아의 여러 글에서 말씀드렸다시피, AGI가 무엇인지 정의 자체도 아직 명확히 합의된 바 없고, 다소 형이상학적으로 흐르기 쉬운 AGI에 대한 논의보다 구체적으로 오늘날의 AI로 무엇을 할 수 있고 어떻게 써야 하는지에 대해 이야기하는게 훨씬 더 영양가 있다고 생각하는 입장이기는 합니다…
…만, 역시 AGI에 관심을 가진 분들도 많으시고, 실질적으로 AGI에 한 발 한 발 다가가기 위한 의미있는 연구가 점점 많이 등장하는 현 시점이니, 그에 관한 글도 계속해서 쓰게 되네요. ^.^;
금주 FOD에서는, 작년 말 오픈AI에서 발표한 o3를 통해서 비교적 널리 알려졌다고 할 수 있는, ‘프로그램 합성 (Program Synthesis; 편의상 이 글에서는 Program Synthesis로 표기하겠습니다)’이 AGI라는 그림을 맞추는데 필요한 하나의 퍼즐 조각이 될 수 있을지, 한 번 함께 생각할 기회를 가져볼까 합니다.
‘Program Synthesis’는 직접 코드를 모두 작성하지 않고도 원하는 결과나 의도를 설명하면 누군가가 자동으로 그에 맞는 프로그램을 만들어주는 기술이라고 할 수 있을 겁니다. 여기서 ‘결과나 의도’를 Program++, ‘누군가’를 Synthesizer - 사람이든 AI든요 - 라고 한다면 아래와 같은 개념도가 될 거구요.
아주 간단한 예시를 들어보면:
엑셀에서 "이 열의 모든 이메일 주소에서 도메인만 추출해줘" 라고 하면, 자동으로 필요한 함수를 만들어주는 것
"두 숫자를 입력받아서 최대공약수를 구하는 프로그램을 만들어줘" 라고 하면, AI가 알아서 적절한 알고리즘을 선택해서 코드를 작성해주는 것
등이 모두 Program Synthesis - 간단한 형태긴 해도 - 의 종류라고 할 수 있겠죠.
Program Synthesis가 최근 AI의 맥락에서 주목을 받은 건, 아무래도 2019년, Francois Chollet가 논문 ‘On the Measure of Intelligence’를 발표했을 때였다고 생각합니다. 이 논문의 내용과 의의에 대해서 아주 간단히 튜링 포스트 코리아의 FOD#57: '지능을 어떻게 측정할 것인가' - Francois Chollet의 ARC 프라이즈 에서
커버한 적도 있는데요:
어쨌든, Francois는 이 논문에서 사람과 같은 수준의 일반 지능을 평가하겠다는 목적으로 설계한 벤치마크, ARC (Abstraction and Reasoning Corpus)를 소개했습니다. Francois는 딥러닝만으로는 ‘추론’, ‘일반화’에 있어서 벽에 부딪힐 수 밖에 없다고 하면서, ‘Program Synthesis’가 진정한 지능 시스템을 만드는 핵심 단계가 될 거라고 주장했습니다. AI가 특정한 작업에 맞춤화된 작은 프로그램들을 작성하면서 다이나믹하게 해결책을 생성할 수 있게 하는 방법으로, Program Synthesis는 기존의 ‘정적 (Static)’인 작업 수행 패러다임에서 ‘적응성 (Adaptability)’, 그리고 ‘추론 (Reasoning)’ 쪽으로 그 무게 중심을 옮깁니다.
그리고 2025년 현재, ARC-AGI는 AGI를 목표로 하는 모델들을 평가하는 중요한 벤치마크 중 하나가 되었습니다. Francois는 최근 자신의 아이디어를 더 발전시켜서 Ndea라는 연구소를 설립했는데요, 이 조직을 통해서 딥러닝과 Program Synthesis를 어떻게 결합하면 좋을지 탐구해서 AGI를 발전시키는데 전념하겠다고 하네요. 아무래도 Francois는 이 두 가지 - 딥러닝과 Program Synthesis - 의 결합이 ‘AI가 추상적으로 추론하고, 최소한의 데이터로부터도 잘 학습해서, 이전보다 더 광범위한 문제들을 해결할 수 있게 하는 길’이 될 거라고 믿는 것 같습니다.
그럼 이제, Program Synthesis가 어디에서 왔는지, 그리고 어떻게 딥러닝과 결합할 수 있는지 한 번 살펴보죠.
거슬러 올라가면, Program Synthesis의 연원도 우리 모두가 애정하는 (^.^) 앨런 튜링에 가 닿습니다:
초기 아이디어
1945년, 앨런 튜링은 ‘자율적으로 프로그램을 생성할 수 있는 기계’를 구상했는데요. 그렇지만 공식적인 근원은 1957년 알론조 처치 (Alonzo Church)가 수학적인 요구사항 (Mathematical Requirements)로부터 회로를 합성하는 아이디어를 제안하면서 시작되었다는게 중론인 듯 합니다. 이걸 지금은 ‘Church 문제’라고 부릅니다.
공식적인 토대의 확립 (1960년대 ~ 1980년대)
이 Program Synthesis 분야는 Büchi와 Landweber (1969)의 ‘오토마타 이론’ 접근법, 그리고 Manna와 Waldinger (1980년경)의 연구 등에 힘입어서 더 강력한 이론적인 기반을 얻게 되었는데요. 이 시기에는 주로 논리적 추론과 연역적 기법에 기반해서 프로그램을 합성할 수 있게 해 주는 형식적 방법론을 개발하는 데 초점을 맞췄습니다.
실용적인 진화 (1990년대 ~ 2010년대)
이 시기에는 Program Synthesis를 더 실용적 관점에서 접근했는데요. 프로그래머가 ‘자동으로 채워질 수 있도록 남겨진 빈 칸이 있는 프로그램 일부를 제공해서 시스템이 완성’하도록 하는 스케칭 (2006년 Armando Solar-Lezama의 SKETCH 시스템으로 도입)이라든가, 사용자가 제공한 입출력 예시들을 보고 패턴을 학습해서 데이터 변환을 자동화하는 예시 기반 프로그래밍(Programming by Example; PBE) (2010년대 Sumit Gulwani가 개발한 엑셀의 Flash Fill과 같은 도구로 대중화됨) 등을 포함합니다.
현대적인 부활 (2010년대 ~ 2020년대)
21세기에는, 특히 ‘형식 검증 커뮤니티’ 내에서 Program Synthesis에 대한 관심이 다시 부활했는데요. 이런 흐름이 ‘논리적 명세 (Logical Specifications)’와 ‘문법적 제약(Grammatical Constraints)’을 결합해서 합성 과정을 가이드하는 SyGuS(Syntax-guided Synthesis)과 같은 발전으로 이어졌습니다.
오랜 시간 Program Synthesis와 머신러닝, 즉 AI는 각자 독립적인 발전 경로를 걸어왔지만, 이제 이 두 주제 간의 협업과 교류 활동이 탄력을 받고 있는 걸 볼 수 있습니다. 이런 적극적인 통합이 가능하게 된, 그리고 유망하다고 믿게 된 몇 가지 요인이 있는데요:
거대해진 컴퓨팅 파워
GPU의 발전을 떼놓을 수 없죠. Program Synthesis와 머신러닝 알고리즘의 복잡성을 처리할 수 있는 충분한, 그리고 계속해서 강력해지는 컴퓨팅 자원을 확보하는 건, 연구자들이 더 정교하게 기술을 탐구하고 더 큰 문제들을 다루는데 핵심적 요인입니다.
거대한 데이터셋을 사용할 수 있게 됨
빅데이터의 부상, 그리고 온라인 코드 리포지토리의 확산, 이 두 가지 요소가 바로 Program Synthesis에 적용할 수 있는 머신로닝 모델을 훈련시키기 위한 원천이 됩니다. 이런 데이터셋을 활용해서 검색 과정을 가이드하고, 예시로부터 패턴을 학습하고, 새로운 상황이 닥치더라도 적응할 수 있는 접근 방식을 발전시키는 원동력이 되었습니다.
다양한 아이디어의 교차 발전
머신러닝 분야로 전환한 소프트웨어 개발자들이, 자신들의 전문 지식과 열정을 Program Synthesis를 포함한 다양한 분야에 적용하기 좋은 환경이 되었습니다.
하나의 예시로, 2023년 MIT에서 ‘Introduction to Program Synthesis’라는 강좌를 개설했는데, 이 강좌를 ‘프로그래밍 언어, 형식 방법론, 그리고 AI가 만나는 새로운 분야’라고 소개하고 있습니다.
Francois는 오랫동안 Program Synthesis가 AGI를 달성하기 위한 중요한 단계이자 요소라고 주장해 왔는데요. Francois의 2020년 NeurIPS Talk에서도 딥러닝만의 접근법으로부터 오는 한계 - 거대한 데이터셋에 대한 의존성, 추론과 일반화의 어려움 - 때문에, AI가 추상적인 추론을 통해서 해결책을 생성할 수 있게 하려면 ‘Program Synthesis’가 핵심적인 요소가 될 수 있고, 딥러닝과 Program Synthesis를 결합하면 더 적응력있게, 새로운 문제에 잘 대응하는 확장 가능한 시스템을 만들 수 있다고 주장합니다.
Francois는 특히 그의 논문 ‘On the Measure of Intellgience’에서 ‘지능이라는 과정 (Process of Intelligence)’ - 해결책을 생성하는 체계로서의 과정이죠 - 과 특정 문제에 대한 해결책 그 자체인 ‘출력 (Output)’을 구분해야 한다고 강조했죠. 그러면서, Program Synthesis를 ‘AI가 특정한 작업에 특화된, 작은 프로그램을 만드는 방법’이고, 이게 바로 ‘지능을 평가하는 이상적인 방법’이라고 주장했습니다. 반복해서 말씀드리지만, 이런 접근방식이 기존의 ‘정적 (Static)’인 작업 수행 패러다임에서 ‘적응성 (Adaptability)’, 그리고 ‘추론 (Reasoning)’ 쪽으로 그 무게 중심을 옮기게 되는 관점의 전환을 만들어 냅니다.
물론, Program Synthesis는 딥러닝의 대체재가 아닌 보완을 해 주는 도구입니다. 딥러닝 모델이 검색 공간 (Search Space)을 좁히고 대규모 패턴 인식을 처리하면서 Program Synthesis를 가이드하는 역할을 하고, Program Synthesis는 추론, 그리고 추상화 작업을 해 줍니다. 이런 하이브리드 접근 방식은 현재 AI가 다루지 못하는 - 또는 다루기 힘들어하는 - 문제들을 해결할 수 있는 방법을 만들어낼 수 있습니다.
서두에 말씀드린 대로, 이런 비전을 더 잘 추구하기 위해서 Francois Chollet와 Mike Knoop이 새로운 AI 연구소 Ndea를 설립한 겁니다. 바로 ‘추상화가 지능의 핵심’이라고 하는, Francois의 믿음에 뿌리를 둔 Ndea는, 유연한 추론과 일반화 (Generalization)를 잘 하기 위해서 기호 조작 (Symbolic Manipulation), 코드 생성 등을 활용해서 딥러닝만의 한계를 극복하는 적응형 AI 시스템을 개발하는 것을 그 목표로 하고 있습니다.
AGI라는 건 어떤 한 가지 방법이나 생각만으로 달성할 수 있는게 아닌 만큼, 앞으로 튜링 포스트 코리아에서는 Ndea의 움직임을 주시해 볼 생각입니다. Ndea의 새로운 소식과 결과물을 가지고 구독자 분과 공유할 날이 곧 오기를 바래 봅니다.