Bootstrapping AI
윈도우는 C언어로 만들었다. 엑셀도 C언어로 만들었었다1. '프로그래밍 언어' 하면 가장 먼저 언급되는2 Python도 C언어로 만들었다3. 그럼 C언어는 어떤 언어로 만들었을까? C언어다. 좀 더 정확하게 말하면, '그냥 글'인 Python이나 C언어를 기계가 이해할 수 있도록 번역해주는 프로그램(이하 컴파일러)이 C언어로 만들어졌다.
부트스트래핑이라는 개념이 있다. C언어 컴파일러가 C언어로 만들어진 것처럼, 어떤 언어의 컴파일러를 그 언어로 작성하는 것을 말한다. 부트스트랩 컴파일러(첫 번째 컴파일러)를 다른 언어로 만들고, 그렇게 만들어진 컴파일러로 자기 자신의 컴파일러를 만드는 것이다. 최초의 컴퓨터를 설계할 때는 종이로 했지만, 지금은 컴퓨터 설계를 컴퓨터로 하는 것과 비슷하다고 할 수 있다.
최근들어 보이는 AI의 발전은, 이 모든 것이 부트스트랩 AI를 만드는 과정이 아닐까 하는 생각을 하게 한다.
이미 학습용 데이터를 만드는 데는 AI가 널리 쓰인다. 재미있는 것은, 이 때도 '부트스트래핑'하는 방법이 널리 사용된다는 것이다4. 처음에는 인간이 만든 데이터 조금을 사용하지만, 이후에는 LLM을 통해 생성된 데이터를 이용해 새로운 데이터를 만드는 것이다.
단지 학습용 데이터를 만드는 것 뿐 아니라 AI를 학습시킬 때도 AI가 쓰인다. 최근 애플이 발표한 논문5에서는 AI가 간단한 Python 코드를 작성하도록 지도학습 - 계속 시켜보면서 잘하면 상 주고 못하면 회초리 드는 방식 - 시키는데, 이때 다른 AI를 선생님 역할로 사용한다.
학습을 아무리 잘 시켜도 AI가 AI를 만드는 건 불가능한 것 아닐까? 최신 LLM은 코드만으로 만들어지는 게 아니고, 데이터 수집부터 시작해 학습용 데이터센터 예산을 승인받고 실행해야 하는데 이게 과연 가능한 일일까?
어쩔 땐 똑똑해 보이는 생성형 LLM은, 본질적으로 말하면 꽤 성능 좋은 문장 자동완성 프로그램에 가깝다. "주어진 입력의 뒤에 올 것으로 가장 그럴듯한 것은?"이라는 주관식 문제를 푸는 아무말 생성기에 논리 같은 것은 없다.
하지만 논리 없이도 "가장 그럴듯해 보이는 논리"는 만들 수 있다. '1234 x 5678'을 계산하는 데는 논리가 필요하기에6 해결할 수 없는 문제지만, '1234 x 5678'을 계산하는데 필요한 논리로 가장 '그럴듯한' 것은 잘 찾는다. 그러한 논리가 프로그래밍 언어와 같은 특정 형식으로 표현된다면, 그래서 그 '그럴듯한 논리'를 실행할 수 있다면? 그때도 AI가 만들어내는 '그럴듯한 대답'이 인간이 논리적으로 사고하는 것과 명확하게 구별될 수 있을까?
애플 머신러닝의 한 논문7에서 제시한 시스템은, 사람이 질문을 입력하면 AI는 입력된 질문을 해결하는 코드를 생성한다. 생성된 코드를 실행하면서 에러가 나면, AI는 에러메시지를 이용해 코드를 고치고 다시 실행한다. 코드가 잘 실행되면, AI는 결과를 사람이 알아보기 좋게 편집해 돌려준다. ChatGPT도 질문에 따라 코드를 생성하고 실행해 그 결과를 알려준다.
단순히 어떤 상황에 대한 '그럴듯하게 자동 완성된 코드'는, AI의 '논리적 생각 비슷한 무언가'가 되고 있는 것이다.
아마 이미 사내 시스템에 구축이 되어 있을, 예산안에 대한 결재라던가 타 부서 협조 요청이라던가 하는 것들을 AI에게 사용 가능한 API로 열어주면, 아마 많은 사람들처럼 '그럴듯하게' 일해서 '그럴듯하게' 해내지 않을까?
반세기 전, '인공지능'이라는 단어를 만든 존 매카시가 인공지능 연구를 위해 LISP을 만들고, 동료 과학자가 LISP 코드를 입력받으면 이를 실행하는 기능 - eval 함수 - 을 만들었다. '인터프리터'라는 것의 탄생이었다. 우리가 일상생활에서 쓰는 자연어는 아니지만, 프로그래밍 언어로 내가 원하는 걸 물으면 컴퓨터가 답을 해 주게 된 것이다.
오늘날의 컴퓨터는 이제, 자연어로 물으면 컴퓨터가 답을 해 주기 시작하는 단계에 들어섰다. 이젠 누구도 컴퓨터와 사람'처럼' 대화할 수 있을 날이 올 것을 의심하지 않는다. 단지 그 사람'처럼'이 얼마나 어색한지를 얘기할 뿐.
10년 전까지만 해도 "AI는 판단은 할 수 있지만 새로운걸 창조할 순 없어" 라는 생각에 갇혀 있던 세상은, 이안 굿펠로우8로 인해 그 생각이 깨진 후 무서운 속도로 발전했다.
제품이라고 하기엔 민망한, 차라리 유료 기술 시연에 더 가까운 ChatGPT는 이미 세상을 많이 바꾸어 버렸다. 누군가는 AI가 아직 뚜렷한 가치를 제공하지 못하고 있다고 주장하지만, 이미 대부분의 기업들은 AI를 도입했거나 도입할 예정일 뿐더러, AI 도입이 쓸데없을거란 우려를 가라앉히고 있다9.
적당히 멍청하지만, 조금만 알려 줘도 밤새 수십만 번 연습해 오고, 낮이든 밤이든 불평 한 마디 못하는 직원이 온다. 비슷하지만 조금 덜 멍청한, 배운 걸 밤새 열심히 수십번 연습해 오는, 열정 넘치는 성실한 인간 신입사원보다 훨씬 싸다. 그간 지식노동이라고 생각했던, 단순-반복 화이트칼라 작업들을, 계속 사람이 할 수 있을까? 어차피 둘 다 가끔 실수하는 것도, 뭘 시켰을때 종종 엉뚱한 걸 해오는 것도 비슷한데, 굳이 사람을 쓸 이유가 있을까?
- 현재 윈도우는 C/C++/Rust. 엑셀은 C++/C#. ^
- 몇 년 전까지만 해도 '프로그래밍 언어' 하면 C언어였다. ^
- 엄밀히 말하면 Python 인터프리터 중 가장 많이 쓰는 CPython 한정. ^
- Yizhong Wang, Yeganeh Kordi, Swaroop Mishra, Alisa Liu, Noah A. Smith, Daniel Khashabi, and Hannaneh Hajishirzi. 2023. "Self-Instruct: Aligning Language Models with Self-Generated Instructions." In Proceedings of the 61st Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), pages 13484-13508. https://doi.org/10.18653/v1/2023.acl-long.754. ^
- Sujan Dutta, Sayantan Mahinder, Raviteja Anantha, and Bortik Bandyopadhyay. 2024. "Applying RLAIF for Code Generation with API-usage in Lightweight LLMs." In Proceedings of the ACL Workshop. https://arxiv.org/abs/2406.20060. ^
- 기억력이 매우 좋아 구구단 대신 구구구구-구구구구단을 외웠다면 논리가 필요 없을지도. ^
- Xingyao Wang, Yangyi Chen, Lifan Yuan, Yizhe Zhang, Yunzhu Li, Hao Peng, and Heng Ji. 2024. "Executable Code Actions Elicit Better LLM Agents." In Proceedings of the 41st International Conference on Machine Learning, volume 235 of Proceedings of Machine Learning Research, pages 50208-50232, July. PMLR. https://proceedings.mlr.press/v235/wang24h.html. ^
- Ian Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, and Yoshua Bengio. 2014. "Generative Adversarial Nets." In Proceedings of the International Conference on Neural Information Processing Systems (NIPS 2014), pages 2672-2680. ^
- Bain & Company. 2024. "AI Survey: Four Themes Emerging." https://www.bain.com/insights/ai-survey-four-themes-emerging. ^