AI 성능 한계 - 인간이 AI보다 잘하는게 뭔데?
이런 주제에 대한 답으로, 많은 사람들이 '창의력'을 머리에 떠올리겠지만, 경험상, (99%의 보통사람들에 비해) 창의적인 작업은 사람보다 AI가 잘한다. 이런 말을 하려는게 아니다. 공학적 관점에서 들여다보려는 노력이다.
개요
몇 달 전부터 주니어 프로그래머들에게 LLM 에이전트를 활용한 개발을 시켰다. “이젠 때가 된 것 같다”는 판단에서였다.
주요 반응은 대략 두 가지였다.
- 긍정: 편하고 좋다.
- 불안/우울: “내가 지금까지 배운 게 쓸모 없어지는 것 같다.”
내가 그들에게 “AI가 너희보다 코딩을 잘한다”고 종종 타박한 영향도 있겠지만, 두 번째 반응은 꽤 충격이었다. 단순 코딩을 훨씬 쉽게 만드는 도구라서 ‘축복’에 가깝다고 생각했는데, 정작 일부는 학습 동기 자체가 꺾이는 방향으로 받아들이고 있었다.
나는 한동안 주니어들이 low-level 코딩 이해를 아예 포기할까 봐, “AI가 만든 코드를 이해해라”라고 주문하고 가끔 체크도 했다. 하지만 조만간 LLM Agent가 정말로 그들보다 코딩을 더 잘하게 될 가능성은 높다.
그간 내가 LLM 모델들을 이용해 저수준에서 구현해 본 것은 대략 다음과 같다.
- 단순 LLM Agent 구현 (Chat)
- LLM Tool (MCP Tool) 구현
- Agent 오케스트레이션 도구 구현
low-level에서 직접 접근해보니 확연히 보이는 문제점들이 있었고, 자연스럽게 해결/우회 방안을 고민할 수밖에 없었다. 이렇게 얻게 된 지식을 바탕으로, “그렇다면 인간이 더 우수한 점은 무엇인가?”, 그리고 “자기계발 방향은 어디로 잡는 게 합리적인가?”를 공학적 관점에서 정리해 보려 한다.
---
사람이 AI보다 나은 것
현재 수준의 LLM(및 에이전트)과 비교할 때, 사람이 확연히 우위인 영역들이 있다.
1) 사고의 폭 (문맥·기억의 폭)
이 글을 읽는데 가장 중요한 용어는 **컨텍스트 윈도우** 인데, **컨텍스트 윈도우(Context Window)**는, LLM이 “지금 이 순간” 참고할 수 있는 입력 텍스트의 범위(대화 이력, 시스템/개발자 지시, 첨부 문서, 코드 일부 등)를 뜻한다. - LLM은 이 범위 안에 들어온 정보만을 바탕으로 다음 출력을 만든다. - 범위 밖의 정보는, 모델이 학습으로 이미 내재화한 일반 지식이 아니라면 사실상 **그 순간에는 없는 것**처럼 취급된다. - 그래서 에이전트/툴링에서 말하는 메모리(요약, 회수(RAG), 상태 저장 등)는 결국 “컨텍스트 윈도우에 무엇을 어떤 형태로 다시 올려놓을지”를 다루는 문제에 가깝다.
- LLM은 컨텍스트 윈도우(Context Window)가 명확히 제한되어 있다.
- 작게는 수천 토큰, 크게는 수만~수십만 토큰 수준이다.
- 일반적인 배경지식(상식·문서 패턴·코딩 관용구)은 LLM이 방대할 수 있다.
- 하지만 현재 사안에 특화된 기억(프로젝트의 역사, 팀 합의, 숨은 제약, 어제 회의에서 나온 결정 등)은 사람이 훨씬 많이 갖고 있고, 사고 과정에 더 넓게 반영한다.
- 비유하자면, AI는 “뇌 전체가 소뇌로 구성된 느낌”에 가깝다.
- 고급 지식까지 일종의 머슬메모리처럼 즉시 꺼내지만,
- 장기적이고 일관된 ‘상황 모델’을 넓게 유지하는 데는 약하다.
- 이런 특성 때문에 컨텍스트 윈도우를 넘어서는 기존 콘텐츠(문서/코드/설계)의 수정·보완 능력은 종종 형편없다.
- 이 한계는 “토큰 수를 10배, 100배로 늘리면 해결” 같은 단순 문제는 아니다. 핵심은 무엇을 유지하고, 무엇을 버리고, 무엇을 요약해 ‘상태(state)’로 들고 갈지에 있다.
2) 사고의 속도 (표현 속도 vs 사고 속도)
- “어떤 사안에 대해 생각을 마치고, 표현하기 직전까지 도달한 상태”를 ‘사고를 마친 상태’라고 정의해 보자.
- 겉보기에는 AI가 빠르게 보이지만, 실제 사고 속도 자체는 인간이 여전히 빠른 경우가 많다.
- 다만 인간은 그것을 타이핑하거나 문장으로 표현하는 속도가 기계를 따라가기 어렵다.
- 물론 “LLM은 첫 토큰이 나오자마자 결론에 도달한 것 아니냐?”고 반문할 수 있다.
- 하지만 그 시점의 LLM 내부 상태는 그 직후 다른 컨텍스트에서 그대로 재사용 가능한 ‘지식 상태’로 남지 않는다는 한계가 있다.
- 반면 사람이 머릿속에 만든 상태는 이후에도 남아, 다른 문제에 전이(transfer)되거나 재구성되어 사용될 수 있다.
- 인간의 직관적 사고는 생각보다 뛰어나다.
- 간단한 예로 어떤 장면을 봤을 때를 생각해 보자. 우리는 이미지를 보자마자 중요/비중요를 대략 분리하고, 특징을 빠르게 기호화해 저장한다.
- 다시 떠올릴 때는 그 기호를 기반으로 ‘머릿속 프레젠테이션’까지 만들어낸다.
- 특히 문자를 인식하고 의미로 바로 연결하는 능력은 인간 고유의 강점이며, 종합적 사고와 병렬로 처리된다.
- LLM이 빠른 건 주로 표현(출력) 속도다. 반면 인간의 강점은 상황을 구조화하고, 목표를 재정의하고, 우선순위를 바꾸는 속도에 있다.
- 실무에서는 “누가 코드를 더 빨리 쓰느냐”보다, 무엇을 왜 만들지를 빠르게 정하는 사람이 더 큰 레버리지를 가진다.
3) 학습 (사용자 관점에서의 ‘지속적 학습’ 부재)
- AI는 (사용자 입장에서) 지속적으로 학습하지 못한다.
- 정확히 말하면, 우리가 일상적으로 사용하는 LLM은 대부분 고정된 파라미터를 가진 채로 서비스된다.
- 사람은 방금 전, 몇 시간 전, 어제의 실수를 비교적 안정적으로 ‘학습’하고 재발을 줄인다.
- 반면 LLM은 모델 업데이트가 없는 한, 같은 유형의 실수를 다시 할 수 있다.
- 컨텍스트에 “주의사항”을 항상 넣어두는 방식으로 완화할 수는 있지만,
- 주의사항이 누적될수록 컨텍스트를 잠식하고,
- 결국 “주의사항만 가득한 프롬프트”가 되어 생산성이 떨어질 수 있다.
- 기업 단위에서 가이드라인/체크리스트/도구화로 이를 보완할 수는 있지만, 한계는 분명하다.
4) 단순 반복 작업 (아이러니한 취약점)
- 의외로 AI는 ‘정말 단순한 작업’을 꾸준히 잘하지 못하는 경우가 있다.
- “99% 확률로 오류 없이 동작한다”는 말은, 100번 반복하면 어딘가에서는 대부분 오류가 난다”는 뜻이기도 하다.
- refine 에이전트를 추가하거나 프롬프트를 정교화해 품질을 끌어올릴 수는 있다.
- 하지만 많은 경우 더 쉽고 정확한 방법은 애초에 자동화/검증 체계를 코드로 구성하는 것이다.
- 당장 보이는 예로, 이 문서를 AI에 refine 시켜봤더니 앞쪽과 뒤쪽의 품질이 달라지고 있다. 그래서 아마 한 번 더 손보게 될 것이다.
총평
- 위의 많은 한계는 컨텍스트(기억·상태) 제약에서 비롯된다.
- 하드웨어와 설계가 발전해 컨텍스트 윈도우가 커지더라도,
- “무한히 길게 넣는다”가 아니라
- “상태를 어떻게 유지·요약·검증할 것인가”가 핵심이기 때문에
- 단기간에 완전히 극복되기는 쉽지 않다.
- 따라서 ‘컨텍스트 이해’를 다루는 패러다임이 근본적으로 바뀌지 않는 한, 프로그래머의 역할은 코딩 그 자체보다 문제를 정의하고, 제약을 파악하고, 품질을 유지하는 쪽으로 이동할 가능성이 높다.
- 프로그래머가 ‘필요 없어지는’ 방향이라기보다는, 같은 성과를 내는 데 필요한 인원이 줄어드는 방향에 더 가깝다.
--
* 근래에는 AI = LLM처럼 받아들여지는데, 나는 원래 Agent 구조 전공자로서 AI의 한 분야가 이 전체를 대변하는 이 등식이 개인적으로는 아쉽지만, 이 문서에서는 독자의 이해를 우선해 AI를 LLM(및 그 기반 에이전트) 라고 치환하여 사용하였다.
근데 이것도 시간 문제이긴 합니다...