AI를 일반 소프트웨어처럼 이해할 때 생기는 오해를 풀고, 버그의 원인·진단·재현성·사양 충족·능력 예측 등에서 현대 AI가 기존 소프트웨어와 어떻게 다른지 설명하며, "나중에 패치하면 된다"가 통하지 않는 이유를 논한다.
(기술 독자를 위한 노트)1 | PDF로 읽기 | Substack | LessWrong
AI 시스템의 위험을 이해하는 문제에서, 대중은 최악의 종류의 지식을 갖고 있다. 틀렸지만 사실이라고 확신하는 지식 말이다.
40년에 걸친 끈질긴 설득 끝에, 소프트웨어 산업은 버그가 끔찍한 결과를 낳을 수 있다는 사실을 대중에게 납득시켰다. 이것은 훌륭하다! 사람들이 소프트웨어가 실제 세계의 피해로 이어질 수 있음을 이해하는 것은 좋다. 대중은 대체로 위험을 이해할 뿐 아니라, 버그는 고칠 수 있다는 점도 대체로 이해한다. 비용이 많이 들 수도, 어렵기도 하겠지만, 어쨌든 가능하다는 것이다.
문제는 이런 이해가, ChatGPT 같은 AI에 적용될 때 완전히 틀리다는 점이다. AI를 구동하는 소프트웨어는 여러분의 컴퓨터나 휴대폰을 구동하는 소프트웨어와는 매우 다르게 작동한다. 일반 소프트웨어의 버그에 대해 갖는 그럴듯하고 합리적인 가정들이, AI에 적용하려 하면 오히려 해롭고 오도하는 결과를 낳는다.
일반 소프트웨어의 가정을 AI 시스템에 억지로 적용하면 혼란을 빚고, 다음과 같은 말들이 튀어나온다:
“ChatGPT에 뭔가 문제가 생기면, 똑똑한 전문가가 잠깐 머리 싸매고 생각해서 빠진 세미콜론 같은 걸 찾아서 버그를 고치면 되는 거 아냐?”
또는
“한 사람이 AI가 하는 모든 일을 이해하긴 어렵더라도, 각각 작은 부분씩은 똑똑한 사람들이 나눠서 이해할 수 있지 않나?”
혹은
“지금 시스템들이 완벽하게 작동하지 않는다고 해도, 그게 문제는 아니지? 어차피 시간이 지나면 모든 버그를 잡아서, 옛 소프트웨어가 새 소프트웨어보다 더 안정적인 것처럼 AI도 점점 더 신뢰할 수 있게 될 텐데.”
현대 AI 시스템이 어떻게 작동하는지 이해한다면, 이런 말들은 모두 듣기 괴로울 정도로 틀렸다. 하지만 일반 소프트웨어에 익숙하다면, 충분히 그럴듯하다. 나는 이 분야에서 전문가와 초심자 사이에 다음과 같은 간극이 있다고 믿는다:
그 결과 양쪽 모두 좌절한다. 전문가들은 자신의 주장이 전혀 먹히지 않는다고 느끼고, 초심자들은 모든 주장에 명백한 허점이 있다고 느낀다. 실제로는, 전문가와 초심자는 AI 시스템이 어떻게 작동하는지에 대해 서로 다른, 말로 드러나지 않은 가정을 갖고 있다.
좀 더 구체적으로, 일반 소프트웨어에는 정확하지만 현대 AI에 적용하면 해롭도록 틀려지는 생각들을 몇 가지 들어 보자:
일반 소프트웨어에서 취약점은 소프트웨어를 이루는 코드 줄들의 실수로 인해 발생한다. 코드 줄은 수십만 줄에 달할 수 있지만, 코드는 공간을 많이 차지하지 않으므로 대략 50MB, 그러니까 작은 사진 앨범 한 묶음 정도의 데이터 크기다.
하지만 현대 AI 시스템에서는, 취약점이나 버그가 대개 AI를 학습시키는 데 사용한 데이터의 문제에서 비롯된다2. 현대 AI를 학습시키려면 수천 기가바이트의 데이터가 필요하고, 나쁜 행동은 단일한 나쁜 데이터 조각 하나 때문에 생기는 것이 아니라, 데이터셋의 상당 부분이 합쳐진 효과 때문에 생긴다. 데이터셋이 너무 크기 때문에, AI가 실제로 무엇을 학습했는지 전부 아는 사람은 아무도 없다. 인기 있는 데이터셋 FineWeb은 약 11.25조 단어로 이루어져 있는데3, 분당 250단어 속도로 읽는다 해도 읽는 데 8만 5천 년이 걸린다. LLM이 학습 중에 읽은 모든 것을 단 한 사람(혹은 사람들의 팀)이 전부 읽는 것은 불가능하다.
일반 소프트웨어에서는 버그가 있으면 똑똑한 사람들이 코드를 꼼꼼히 읽고 논리적으로 무엇이 버그의 원인인지 찾아낼 수 있다.
AI 시스템에서는 거의 모든 나쁜 행동이 학습에 사용된 데이터에서 비롯되지만2, 오작동하는 AI를 들여다보고 그 나쁜 행동을 일으킨 학습 데이터의 부분을 찾아내는 것은 사실상 불가능하다. 실제로는, 이런 시도를 하는 일 자체가 드물다. 연구자들은 보통 나쁜 행동을 상쇄하기 위해 더 많은 데이터로 다시 학습시키거나, 처음부터 다시 시작해서 나쁜 데이터를 걸러내도록 데이터를 선별하려 든다.
어떤 데이터 조각이 나쁜 행동을 유발했는지 논리적으로 연역해낼 수 없고, 그저 그럴듯한 추정을 할 수 있을 뿐이다. 예를 들어, 현대 AI는 수학 증명과 프로그래밍 과제들로 많이 학습하는데, 이런 데이터가 추론과 논리적 사고 과제에서 성능을 높이는 것처럼 보이기 때문이다. 만약 AI 시스템이 논리적 추론 실수를 한다면, 그 실수를 학습 데이터의 어떤 부분에 귀속시키는 것은 불가능하다. 우리가 가진 유일한 답은 다음 번에는 데이터를 더 쓰자는 것뿐이다.
이 점을 강조하고 싶다. 일반 소프트웨어에서는 실수를 정확히 집어내고, 그 실수에 이르는 사건의 흐름을 한 걸음씩 추적하여, 왜 그 실수가 일어났는지 논리적으로 이해할 수 있다. 반면 AI가 실수할 때는, 그 실수를 일으킨 과정의 단계들을 우리가 이해하지 못한다. AI를 만든 사람들조차 왜 그런 실수를 하는지 이해하지 못한다4. 이런 버그가 어디서 오는지 아는 사람은 아무도 없다. 가끔 왜 특이한 행동을 했는지에 대해 대략적인 아이디어 정도는 갖고 있다. 하지만 AI가 어떤 파국적 실패도 일으키지 않을 것이라고 보장할 수 있는 수준과는 아주, 아주 거리가 멀다.
일반 소프트웨어에서는 일단 버그를 찾으면 고칠 수 있다. 그리고 버그를 고쳤다면, 그 버그는 다시 나타나지 않는다5. 비슷한 문제를 일으키는 버그가 또 있을 수는 있지만, 그것은 당신이 고친 그 버그와는 다르다. 이는 시간이 좀 걸리더라도, 결국 버그의 수를 줄여 나갈 수 있고, 새로운 버그를 없앤다고 해서 예전 버그가 되살아나진 않는다고 안심할 수 있다는 뜻이다.
AI에서는 그렇지 않다. AI의 버그를 “고친다”는 것이 사실상 불가능하다. 왜냐하면 AI가 이상하게 행동해서 다시 학습시켰더니 더 이상 이상하게 행동하지 않는 것처럼 보여도, 그 이상한 행동이 사라졌는지 확신할 수 없고, 그저 당신이 시험한 프롬프트들에서는 나타나지 않을 뿐이기 때문이다. 당신이 시험에서 빠뜨린 어떤 프롬프트를 누군가가 찾아내면, 버그 같은 행동이 다시 튀어나올 수도 있다!
일반 소프트웨어에서는 같은 코드를 여러 번 실행하면 똑같이 동작한다. 같은 입력을 주면 같은 출력을 준다.
기술적으로 AI도 그렇다. 완전히 같은 프롬프트를 주면 완전히 같은 방식으로 응답한다. 하지만 실제로는, 이는 사실과 매우 거리가 있다6. 입력에 아주 작은 변화만 줘도 출력이 크게 달라질 수 있다. 문장 끝에 물음표를 하나 붙이거나, 문장을 대문자로 시작하는 것을 깜박하는 식의 사소한 변화만으로도 AI는 전혀 다른 답을 내놓을 수 있다.
게다가 대부분의 AI 회사는 같은 프롬프트에도 조금씩 다른 말을 하도록 응답 방식을 약간씩 바꾼다. 이는 AI가 덜 로봇 같고 더 자연스럽게 보이도록 돕는다.
일반 소프트웨어에서는 그렇다. 이해관계자들과 함께 어떤 소프트웨어의 요구사항을 논의하고, 그 요구사항을 충족하는 코드를 작성할 수 있다. 요구사항이 바뀔 수는 있지만, 근본적으로 특정 목적을 위해 코드를 작성하고 그 목적을 충실히 수행할 것이라고 자신할 수 있다.
AI 시스템에서는 이 말이 대체로 틀리다. 적어도 현대 AI 시스템의 창작자들은 AI가 보일 행동을 훨씬 덜 통제할 수 있다. 영어를 말하고 코드를 작성하는 것 같은 좁고 검증 가능한 사양을 충족하도록 만드는 방법은 이해하고 있지만, 새로 만든 AI가 어떤 특정 시험에서 특정 점수를 얻게 하거나, “사용자에게 범죄를 저지르라고 결코 말하지 않는다” 같은 전역적 행동을 보장하는 방법은 알지 못한다. 세계 최고의 AI 회사들도 사실상 “더 좋게”라는 하나의 레버만 갖고 있고, 그 레버를 당겨 AI를 더 좋게 만들 뿐이다. 그러나 아무도, AI가 격식 있는 이메일을 정확히 쓰도록 하거나 텍스트를 정확하게 요약하도록 확실히 만드는 방법을 정확히 알지 못한다.
이 말은, 학습을 마치기 전에는 AI가 무엇을 할 수 있을지 알 수 없다는 뜻이다. AI가 대중에게 공개된 지 몇 달이 지난 뒤에야, 트위터의 어떤 사람이 AI가 갖고 있는 능력 중 창작자들조차 몰랐던 것을 발견하는 일이 아주 흔하다. 지금까지 이런 능력은 대체로 재미있는 것들이었다. 예컨대 Geoguessr를 잘한다든지:

혹은 사진을 지브리 스튜디오 영화처럼 보이게 만든다든지:

하지만 이런 숨은 능력이 항상 긍정적일 이유는 없다. ChatGPT 어딘가에 위험한 능력이 숨어 있지만, 아직 그에 딱 맞는 프롬프트를 아무도 찾지 못했을 가능성은 충분하다.
특정 테스트 수트나 알려진 위협에 대해서는 AI의 안전성을 입증할 수 있을지 몰라도, AI 창작자들이 “이 AI는 주어질 수 있는 어떤 프롬프트에도 절대 악의적이거나 위험하게 행동하지 않는다”고 단정 지어 말하는 것은 불가능하다.
대부분의 사람들이 엉성하게 작성되었거나 버그가 많은 소프트웨어의 위험을 아는 것은 좋다. 그러나 일반 소프트웨어에 대한 이 힘들게 얻은 지식이 AI에 적용될 때 대중을 오도한다. “불가해한 부동소수점 배열”이라는 외침에도 불구하고, 현대 AI가 구조적으로 일반 소프트웨어와 다르다는 사실을 다수의 사람들이 안다고는 나는 생각하지 않는다.
AI 안전은 복잡하고 미묘한 논의다. 우리가 할 수 있는 최선은 같은 출발선에서 시작하게 만드는 것이고, 이는 동시대인들에게 모든 것이 잘못 돌아가기 시작하면 우리는 그냥 “버그를 패치”7할 수 없다는 사실을 분명히 전하는 것을 의미한다.
이 글을 읽고 처음으로 AI가 근본적으로 일반 소프트웨어와 다르다는 사실을 깨달았다면, 내게 알려 주고, 그 차이를 모를지도 모를 친구와 공유해 달라.
이미 일반 소프트웨어와 AI가 근본적으로 다르다는 것을 알고 있었다면, 가족과 비전공 친구들, 혹은 카페에서 만난 모르는 사람과 이야기해 보라. 두 가지가 다르다는 사실을 아는 사람이 얼마나 적은지 아마 놀랄 것이다.
전문가와 초심자 사이의 역학, 그리고 그 사이의 간극이 어떻게 생기는지에 관심이 있다면, 나는 전문가들이 겪는 체계적 편향(과 초심자들이 겪는 어려움)에 대해 더 쓴 글이 있다: 전문가는 쉬운 길을 간다.
이 글 초안을 검토해 준 Sam Cross와 Caleb에게 감사한다.
이 에세이를 둘러싼 논의:
이 글은 기술적 배경이 있는 이들과 없는 이들 사이의 간극을 메우려는 시도이므로, 곳곳에서 전문 용어를 꽤 느슨하게 사용할 것이다. 여기서 “AI”는 2025년 최전선 LLM을 가리킨다. 또한 “소프트웨어가 어떻게 작동하는지”에 대해 다소 퉁치는 진술을 할 텐데, 이런 주장들은 대체로 성립하지만, 분산 시스템, 병렬 코드, 소프트웨어 시스템과 인간 프로세스 간의 복잡한 상호작용에 적용하면 무너진다. 이 글이 전문가들이 초심자에게 공감하는 데 왜 어려움을 겪는지를 다루는 글인 만큼, 더 많은 전문 용어가 필요했다고 생각한다면 댓글에서 자유롭게 논쟁해 달라 (: ↩
RLHF 중에 사용되는 보상 모델에서도 문제가 비롯될 수 있다. 하지만 보상 모델도 결국 데이터로 학습된다. 프롬프트 인젝션에서도 문제가 생길 수 있지만, 그것들 역시 데이터 때문에 작동한다. ↩↩2
FineWeb은 15조 토큰이며, 토큰 하나는 약 0.75단어이므로 11.25조 단어다. ↩
Anthropic은 AI가 왜 그런 식으로 사고하는지 알아내기 위해 아주 훌륭한 연구를 하고 있지만, 최첨단조차도 이러한 AI에 대한 완전한 이해에는 이르지 못했다. 우리가 가진 이해도는 부분적이고 큰 공백이 많다. ↩
회귀를 막기 위한 테스트는 꼭 쓰고 있지? 그치?!↩
개인적으로, 비전공자와의 성의 있는 대화에서는 좀 더 공감이 필요하다고 생각한다. 소통은 경험적으로 어렵다. 겉으로는 쉬워 보이지만, 실제로는 자주 틀어지기 때문이다. ↩