4장. ChatGPT는 무엇을 하고 있는가

화면의 문장과 안쪽의 계산

ChatGPT에게 질문을 던지면 화면에는 답변이 문장처럼 흘러나옵니다. 그래서 우리는 자연스럽게 그 안쪽에 어떤 사람이 앉아 있는 것처럼 느낍니다. 누군가가 질문을 읽고, 생각하고, 문장을 골라서 적어주는 장면을 상상하게 됩니다. 그러나 카파시는 이 익숙한 느낌을 잠시 내려놓고, 입력창 뒤에서 실제로 벌어지는 일을 훨씬 낮은 층위에서 보라고 말합니다. 사용자의 문장이 들어오면 그것은 먼저 작은 조각으로 잘리고, 모델은 지금까지 놓인 조각들을 보고 다음에 올 조각을 하나 고릅니다. 그 조각이 붙으면 다시 같은 일이 반복됩니다. 긴 답변도 한 번에 완성된 생각으로 튀어나오지 않습니다. 다음 조각을 예측하고 붙이는 과정이 매우 빠르게 이어진 결과입니다 (링크). 이 말을 처음 들으면 조금 허무할 수 있습니다. 우리가 방금 읽은 친절한 설명이 사실은 거대한 자동완성이라는 뜻처럼 들리기 때문입니다. 하지만 바로 그 지점에서 LLM을 이해하는 첫 번째 문이 열립니다.

용어 메모

LLM: Large Language Model의 줄임말입니다. 많은 글을 학습해 다음에 올 말을 예측하는 큰 언어 모델입니다.

토큰: 모델이 문장을 한 번에 통째로 읽지 못하므로 잘라서 보는 작은 글자 조각입니다.

다음 토큰 예측: 지금까지의 글 뒤에 어떤 조각이 올지 맞히는 훈련 목표입니다.

처음 이 설명을 접할 때 학생들이 가장 자주 하는 반응은 두 가지입니다. 하나는 “그렇다면 ChatGPT는 정말 생각하지 않는 건가요?”라는 질문이고, 다른 하나는 “그런데 왜 이렇게 똑똑해 보이나요?”라는 질문입니다. 두 질문은 모두 중요합니다. 다음 토큰을 예측한다는 설명은 모델을 단순한 계산 절차로 내려놓지만, 그 절차가 아무 의미 없는 장난이라는 뜻은 아닙니다. 다음 말을 잘 맞히려면 앞 문장의 문법만 보는 것으로는 부족합니다. 질문의 의도, 글의 장르, 생물학 용어의 쓰임, 코드의 구조, 논문 초록의 전개까지 어느 정도 배워야 합니다. 그래서 낮은 층위의 목표는 단순해 보여도, 그 목표를 거대한 규모로 훈련하면 높은 층위의 행동이 나타납니다. 과학에서는 이런 일이 낯설지 않습니다. DNA 염기 네 종류만으로도 세포와 몸의 복잡한 현상이 만들어지듯, 단순한 구성 요소가 층층이 쌓이면 놀라운 복잡성이 생길 수 있습니다. 다만 LLM의 복잡성은 생명의 복잡성과 같은 것은 아니며, 그 차이를 기억해야 합니다.

다음 조각을 고르는 모델

여기서 중요한 것은 “자동완성”이라는 말이 이 도구를 깎아내리는 표현이 아니라는 점입니다. 스마트폰 키보드가 다음 단어를 추천하는 자동완성도 같은 방향의 작은 예입니다. 다만 LLM은 그 일을 상상하기 어려울 만큼 큰 규모에서, 훨씬 복잡한 문맥 위에서, 수많은 패턴을 배운 신경망으로 수행합니다. 신경망이라는 말이 어렵게 느껴지면, 처음에는 수많은 작은 계산 단위가 층층이 연결된 거대한 계산 사슬을 떠올리면 됩니다. 각 단위는 들어온 숫자를 조금 바꾸어 다음 단위로 넘기는 단순한 일을 합니다. 한두 개만 있으면 별일을 못하지만, 그런 단위가 아주 많이 쌓이고 학습을 통해 연결의 세기가 조정되면 복잡한 패턴을 표현할 수 있습니다. 이것은 생물학적 신경세포를 그대로 흉내 낸 뇌가 아닙니다. 이름은 비슷하지만, 여기서의 신경망은 입력된 토큰의 줄을 다음 토큰의 확률로 바꾸는 수학적 장치에 가깝습니다. 모델은 바로 앞 단어 하나만 보지 않습니다. 입력창 안의 긴 대화와 자료를 토큰의 긴 줄로 함께 받아들입니다. 그 줄 안에는 사용자의 질문, 이전 답변, 보이지 않는 시스템 메시지(system message), 도구 사용 결과, 붙여넣은 수업 자료나 짧은 초록이 함께 들어갈 수 있습니다. 모델은 그 전체를 보고 다음 토큰의 확률을 계산합니다. 여러 후보 중 어떤 토큰이 나올지 확률적으로 선택하고, 그렇게 선택된 토큰이 다음 선택의 조건이 됩니다. 그래서 같은 질문을 두 번 던져도 답이 조금씩 달라질 수 있습니다. 이것은 모델이 변덕스럽기 때문이라기보다, 확률분포에서 토큰을 샘플링하는 방식으로 문장이 만들어지기 때문입니다.

용어 메모

신경망: 많은 계산 단위가 층층이 연결되어 입력을 출력으로 바꾸는 수학적 구조입니다.

확률분포: 여러 후보가 각각 얼마나 나올 법한지 숫자로 나누어 둔 것입니다.

샘플링: 가장 그럴듯한 후보들 중에서 실제로 하나를 뽑는 과정입니다.

확률분포도 처음에는 어렵게 들리지만, 아주 단순한 예에서 출발할 수 있습니다. 동전을 던지면 앞면과 뒷면에 각각 0.5의 확률을 줄 수 있습니다. LLM의 다음 토큰 선택은 동전 두 면보다 훨씬 큽니다. 모델은 수만 개, 때로는 10만 개가 넘는 후보 토큰마다 “다음에 올 법한 정도”를 매깁니다. 어떤 후보는 매우 높고, 어떤 후보는 거의 0에 가깝습니다. 가장 높은 후보가 자주 선택되지만, 설정에 따라 두 번째나 세 번째로 그럴듯한 후보가 뽑힐 수도 있습니다. 그래서 같은 질문을 다시 던졌을 때 문장이 조금 달라지고, 그 작은 차이가 뒤쪽 문장의 방향을 바꿀 수 있습니다. 이 차이를 알면 “모델이 왜 매번 똑같이 답하지 않는가”라는 질문이 조금 덜 신비롭게 느껴집니다.

작은 문장을 떠올려봅시다. “오늘 생명과학 수업에서 세포를”이라고 쓰면, 다음에는 “관찰했다”, “배웠다”, “염색했다” 같은 말이 이어질 가능성이 높습니다. 반대로 “삼겹살을”이나 “비행기를” 같은 말이 바로 이어질 가능성은 낮습니다. 사람은 이 차이를 상식과 문맥으로 느낍니다. LLM은 그 차이를 후보 토큰들의 확률로 계산합니다. 물론 실제 모델은 이렇게 단순한 세 단어만 놓고 고르지 않습니다. 앞뒤 문장, 질문의 목적, 사용자가 붙여넣은 자료, 이전 대화까지 긴 토큰열을 함께 봅니다. 처음에는 여기까지만 이해해도 충분합니다. 모델은 “정답 문장”을 창고에서 꺼내는 것이 아니라, 지금까지의 문맥에서 다음 조각으로 가장 그럴듯한 것들을 고르고 이어 붙입니다.

대학교 1학년 학생에게 이 설명이 필요한 이유는 분명합니다. ChatGPT의 답변은 사람의 설명처럼 보이지만, 그 내부는 사람의 사고와 다릅니다. 사람은 질문을 읽고 잠시 멈추어 계획을 세우고, 머릿속에서 여러 개념을 붙잡고, 때로는 잘 모르면 검색을 합니다. LLM은 기본적으로 입력된 토큰열과 이미 학습된 매개변수를 거쳐 다음 토큰을 예측합니다. 물론 오늘날의 ChatGPT는 검색, 코드 실행, 이미지 이해, 파일 읽기 같은 도구와 결합되어 훨씬 복잡하게 작동합니다. 그래도 가장 바닥에는 “지금까지의 토큰 다음에 무엇이 올 법한가”라는 일이 있습니다. 이 바닥을 알면 답변을 다르게 읽게 됩니다. 모델이 자신 있게 말한다고 해서 실제로 어딘가의 데이터베이스에서 값을 꺼내온 것은 아닐 수 있습니다. 모델이 “제가 보기에는”이라고 말한다고 해서 사람처럼 자기 의견을 가진 것도 아닙니다. 화면에 나타난 문장은 모델이 학습한 패턴과 현재 문맥이 만난 자리에서 생성된 결과입니다.

용어 메모

매개변수(parameter): 모델 안에 저장된 수많은 숫자입니다. 학습을 거치며 조금씩 조정됩니다.

문맥(context): 모델이 지금 답변을 만들 때 눈앞에 놓고 참고하는 입력 자료입니다.

시스템 메시지(system message): 사용자에게는 보이지 않지만 모델의 말투와 규칙을 정하는 지시문입니다.

베이스 모델과 어시스턴트

카파시는 이 과정을 설명할 때 베이스 모델(base model)과 어시스턴트(assistant)를 구분합니다. 베이스 모델은 인터넷 문서의 흐름을 흉내 내는 토큰 시뮬레이터에 가깝습니다. “2 더하기 2는?”이라고 물으면 반드시 “4입니다”라고 친절하게 답하는 것이 아니라, 인터넷 어딘가에 있을 법한 문장을 이어가려 합니다. 때로는 답을 하기도 하고, 때로는 철학적 문장으로 흘러가기도 하고, 때로는 질문과 답변이 섞인 웹페이지처럼 이어가기도 합니다. 우리가 익숙한 ChatGPT는 여기에 대화 데이터와 추가 훈련이 얹힌 어시스턴트입니다. 그래서 질문에 답하고, 사용자의 의도를 따라가고, 위험한 요청을 거절하고, 모르는 내용은 조심스럽게 말하도록 훈련됩니다. 하지만 어시스턴트가 되었다고 해서 바닥의 원리가 사라지는 것은 아닙니다. 여전히 대화도 토큰열이고, 답변도 다음 토큰 예측의 반복입니다.

용어 메모

베이스 모델(base model): 질문에 친절히 답하도록 길들여지기 전, 글의 흐름을 이어 쓰는 능력을 먼저 배운 모델입니다.

어시스턴트(assistant): 사용자의 질문에 도움이 되는 답변을 하도록 추가 훈련된 모델의 사용 형태입니다.

추가 훈련: 이미 배운 모델을 특정 행동 방식에 맞게 더 가르치는 단계입니다.

의생명과학 공부에서는 이 구분이 특히 중요합니다. “이 유전자의 기능을 설명해줘”라는 질문에 모델이 답할 때, 그 답은 논문 데이터베이스에서 해당 유전자의 최신 기능 주석(annotation)을 정확히 조회한 결과가 아닐 수 있습니다. 모델은 훈련 데이터에서 자주 본 유전자와 경로와 질병의 문맥을 바탕으로 그럴듯한 설명을 만들 수 있습니다. BRCA1, TP53, EGFR처럼 많이 등장하는 이름에 대해서는 꽤 안정적으로 말할 수 있지만, 드문 유전자나 새로 보고된 변이에 대해서는 흐릿한 기억에 기대기 쉽습니다. 따라서 ChatGPT를 사용할 때 우리는 두 층위를 나누어야 합니다. 하나는 설명의 초안을 얻는 층위입니다. 다른 하나는 그 설명이 실제 근거와 맞는지 확인하는 층위입니다. 모델이 무엇을 하고 있는지 안다는 것은 이 두 층위를 섞지 않는다는 뜻입니다. 학생이 AI를 잘 쓴다는 말은 더 멋진 프롬프트(prompt)를 외운다는 뜻이 아니라, 생성된 문장을 원리와 한계 속에서 읽을 수 있다는 뜻입니다.

용어 메모

기능 주석(annotation): 유전자나 단백질에 대해 알려진 기능, 위치, 관련 질병 같은 설명을 붙여 둔 정보입니다.

프롬프트(prompt): 사용자가 모델에게 주는 질문이나 지시문입니다.

이 장면을 실험실에 비유하면 조금 더 선명해집니다. 현미경 사진을 본다고 해서 세포의 모든 생화학적 상태를 직접 보는 것은 아닙니다. 우리는 염색된 신호와 해상도와 노출 조건을 통해 세포의 일부를 읽습니다. 수업 실험에서 얻은 숫자도 마찬가지입니다. 세포 수, 흡광도, 반응 시간 같은 값은 그냥 하늘에서 떨어진 숫자가 아니라, 어떤 기구로 어떤 조건에서 어떻게 잰 결과입니다. ChatGPT의 답변도 비슷합니다. 답변은 모델 내부의 모든 것을 투명하게 보여주는 창이 아니라, 특정 입력과 학습된 매개변수가 만들어낸 관측값입니다. 그래서 좋은 사용자는 답변을 그대로 믿기보다, 그 답변이 어떤 조건에서 나왔는지 생각합니다. 어떤 자료를 넣었는지, 검색을 했는지, 코드 실행을 했는지, 모델이 기억에만 의존했는지 살핍니다. 이 태도가 있어야 LLM을 공부와 연구의 도구로 안전하게 사용할 수 있습니다.

답변을 실험처럼 읽기

이 관점에서 보면 ChatGPT의 대화창은 단순한 질문 상자가 아닙니다. 사용자가 입력한 문장만 들어가는 곳도 아닙니다. 실제 서비스에서는 보이지 않는 지시문이 앞에 붙고, 이전 대화가 이어지고, 사용자가 올린 파일의 일부가 들어가고, 검색이나 코드 실행 결과가 다시 대화 안으로 들어올 수 있습니다. 카파시는 사용자가 보고 있는 말풍선 뒤에, 모델이 읽는 더 긴 토큰열이 존재한다는 점을 계속 강조합니다 (링크). 우리가 “이 질문에 답했다”고 느끼는 순간에도, 모델 입장에서는 “이 긴 토큰열 다음에 어떤 토큰이 올 가능성이 높은가”를 계산하고 있는 것입니다. 이 차이를 이해하면 프롬프트를 쓰는 태도도 달라집니다. 질문을 짧고 멋있게 던지는 것보다, 모델이 읽어야 할 조건과 자료와 원하는 답변의 형태를 차분히 제공하는 편이 더 중요해집니다. 사람에게도 “그 논문 좀 봐줘”라고만 말하면 애매하지만, “이 논문의 연구 질문, 데이터, 통계 방법, 결론의 강도를 따로 봐줘”라고 말하면 훨씬 좋은 대화를 할 수 있습니다. LLM도 마찬가지로, 좋은 답변은 좋은 문맥에서 시작합니다.

또 하나 눈여겨볼 점은 모델이 문장을 만들 때마다 세계를 다시 계산하는 것이 아니라는 사실입니다. 모델은 이미 학습을 마친 매개변수를 들고 있고, 대화가 들어오면 그 매개변수를 사용해 다음 토큰의 확률을 계산합니다. 이때 매개변수는 모델이 지금까지 읽은 텍스트의 압축된 흔적입니다. 대학생이 한 학기 동안 생물학을 공부하고 시험장에서 기억을 꺼내 쓰는 것과 비슷해 보이지만, 완전히 같지는 않습니다. 사람은 “내가 어디까지 아는가”를 어느 정도 느끼고, 모르면 책을 찾아보거나 교수님에게 질문할 수 있습니다. LLM은 그런 자기 인식을 기본으로 갖고 있지 않습니다. 다만 후속훈련(post-training)과 도구 사용을 통해 모를 때 조심하는 행동, 검색을 요청하는 행동, 계산을 코드로 넘기는 행동을 배울 수 있습니다. 그래서 ChatGPT를 볼 때는 모델 자체의 능력과, 그 모델을 둘러싼 서비스의 장치를 함께 보아야 합니다. 같은 LLM이라도 어떤 시스템 메시지가 붙었는지, 어떤 도구(tool)가 허용되었는지, 어떤 안전 규칙이 걸려 있는지에 따라 사용 경험이 달라질 수 있습니다.

의생명과학 학생에게 이 점은 작은 세부사항이 아닙니다. 예를 들어 “이 실험 결과를 설명해줘”라고 물었을 때, 모델은 꽤 그럴듯한 해석을 만들어낼 수 있습니다. 그러나 모델이 실제 표를 보고 말한 것인지, 사용자가 적어준 몇 문장만 보고 추측한 것인지, 아니면 일반적으로 교과서에 자주 나오는 설명을 떠올린 것인지는 서로 다릅니다. 첫 번째 경우에는 눈앞의 자료가 근거가 되고, 두 번째 경우에는 제한된 정보 안에서의 추론이 되며, 세 번째 경우에는 모델의 흐릿한 사전지식이 주로 작동합니다. 겉으로는 세 경우 모두 자연스러운 한국어 문장으로 보일 수 있습니다. 하지만 과학적으로는 전혀 다른 신뢰도를 가집니다. 그러므로 답변을 평가할 때는 문장의 매끄러움보다 생성 조건을 먼저 보아야 합니다. 어떤 입력을 주었고, 어떤 자료를 확인했고, 어떤 계산을 실행했는지 묻는 습관이 필요합니다. 이 습관은 AI 시대의 문해력입니다. 글을 읽는 능력만이 아니라, 글이 어떤 기계적 과정에서 나왔는지 읽는 능력입니다.

고등학교를 갓 졸업한 학생에게 LLM은 처음에는 마술처럼 보일 수 있습니다. 질문을 넣으면 몇 초 뒤에 설명이 나오고, 영어 문단도 풀어주고, 코드도 만들어주기 때문입니다. 그런데 과학 공부는 마술을 해체하는 일에 가깝습니다. 현상이 놀랍다고 해서 그대로 숭배하지 않고, 원리를 낮은 층위로 내려가 살펴봅니다. LLM도 그렇게 보아야 합니다. 다음 토큰 예측이라는 설명은 이 도구를 시시하게 만들기 위한 말이 아닙니다. 오히려 그 단순한 목표가 거대한 데이터와 모델 규모와 훈련 방법을 만나면 얼마나 풍부한 행동을 만들 수 있는지 보여주는 말입니다. 생명도 DNA, RNA, 단백질, 세포, 조직, 환경이 여러 층에서 만나 나타나는 복잡한 현상입니다. LLM 역시 토큰, 매개변수, 데이터, 문맥, 후속훈련, 도구가 겹쳐 만들어지는 복잡한 현상입니다. 낮은 원리를 안다고 해서 높은 수준의 유용성이 사라지는 것은 아닙니다. 다만 우리는 그 유용성을 더 정확한 자리에서 이해하게 됩니다.

작은 실험으로 익히기

이 장의 관점을 실제 대화에 적용해보면, ChatGPT 답변은 하나의 결과물이라기보다 하나의 실험 결과처럼 보이기 시작합니다. 같은 질문이라도 입력한 자료, 지시의 구체성, 모델 설정, 도구 사용 여부에 따라 답이 달라집니다. 실험에서 조건이 바뀌면 결과가 바뀌듯, LLM에서도 문맥이 바뀌면 생성되는 문장이 달라집니다. 그래서 좋은 사용자는 답변 하나를 보고 바로 결론으로 가지 않습니다. “이 답은 어떤 조건에서 나왔는가”를 먼저 묻습니다. 내가 충분한 자료를 주었는지, 모델이 최신 정보를 확인했는지, 계산이 필요한 일을 말로 처리하지는 않았는지, 답변 안의 확실성과 추측이 구분되어 있는지 살핍니다. 이렇게 읽으면 LLM은 더 이상 신탁처럼 보이지 않습니다. 강력하지만 조건에 민감한 도구로 보입니다. 과학을 공부하는 학생에게는 바로 이 시선이 필요합니다.

처음에는 이 시선이 AI의 매력을 줄이는 것처럼 느껴질 수 있습니다. 모델이 사람처럼 생각하는 것이 아니라고 말하면, 방금 전까지 느꼈던 놀라움이 조금 사라지는 듯합니다. 그러나 실제로는 반대입니다. 원리를 알고 나면 놀라움은 더 깊어집니다. 단순한 다음 토큰 예측이 어떻게 번역, 요약, 코드 작성, 개념 설명, 대화, 계획 세우기처럼 다양한 행동으로 이어질 수 있는지 묻게 되기 때문입니다. 생명과학에서도 ATP 합성효소의 회전, DNA 복제의 효소 반응, 신경세포의 전기적 신호를 알게 되면 생명이 덜 신비로워지는 것이 아니라 더 정교하게 놀라워집니다. LLM도 마찬가지입니다. 원리를 안다는 것은 감탄을 버리는 일이 아니라, 감탄을 더 정확하게 만드는 일입니다. 학생은 AI를 막연히 신기해하는 단계에서 벗어나, 왜 신기한지 설명할 수 있는 단계로 가야 합니다. 그때부터 AI는 유행이 아니라 공부의 대상이 됩니다.

이런 공부의 첫 연습은 아주 작게 시작할 수 있습니다. 같은 질문을 두 번 던져보고 답이 어떻게 달라지는지 비교해보는 것입니다. 이번에는 아무 자료 없이 묻고, 다음에는 짧은 초록이나 수업 자료를 넣고 묻고, 그다음에는 “모르는 것은 모른다고 말하라”는 조건을 붙여 묻는 식입니다. 그러면 모델이 하나의 고정된 지식 창고처럼 답하는 것이 아니라, 주어진 문맥과 지시에 따라 다른 방식으로 문장을 만든다는 사실이 눈에 보입니다. 또 답변의 문체와 구조도 바뀝니다. 어떤 답은 자신감 있게 넓은 설명을 하고, 어떤 답은 주어진 자료 안에서 조심스럽게 움직입니다. 학생은 이 차이를 관찰하면서 LLM의 작동 방식을 몸으로 익힐 수 있습니다. 이때 중요한 것은 모델을 시험해 망신 주는 것이 아닙니다. 과학 실험에서 조건을 바꾸어 현상을 이해하듯, 프롬프트와 문맥을 바꾸어 생성의 조건을 이해하는 것입니다. 그렇게 보면 ChatGPT와의 대화도 작은 실험실이 됩니다. 그리고 그 실험실에서 가장 중요한 장비는 사용자의 질문입니다.

이 연습을 반복하다 보면, 학생은 답변을 읽는 속도도 달라집니다. 처음에는 내용만 봅니다. 시간이 지나면 답변의 근거, 조건, 생략된 가정이 보이기 시작합니다. 모델이 “일반적으로”라고 말할 때 정말 일반적인지, “최근 연구에서는”이라고 말할 때 실제로 최신 자료를 본 것인지, “가능성이 있습니다”라고 말할 때 어느 정도의 불확실성을 뜻하는지 묻게 됩니다. 이런 질문은 까다롭게 굴기 위한 것이 아닙니다. 과학적 문장을 읽는 기본 자세입니다. LLM은 그 자세를 매일 연습하게 해줍니다. 답변이 빨리 나오기 때문에, 우리는 더 자주 확인하고 더 자주 고칠 수 있습니다. 그러므로 ChatGPT가 무엇을 하고 있는지 이해한다는 것은 내부 구조를 암기하는 일에서 끝나지 않습니다. 생성된 문장을 과학적으로 읽는 눈을 기르는 일로 이어집니다.

처음에는 이런 읽기가 느리게 느껴질 수 있습니다. 친구들은 AI 답변을 그대로 받아 빠르게 과제를 끝내는 것처럼 보이는데, 나는 왜 자꾸 근거를 찾고 조건을 따지는지 답답할 수도 있습니다. 그러나 과학 공부에서 느린 확인은 낭비가 아닙니다. 오히려 나중에 더 큰 오류를 막아주는 시간입니다. 모델이 무엇을 하고 있는지 아는 학생은 답변을 버리는 법도 배우고, 필요한 부분만 가져오는 법도 배우며, 부족한 자료를 다시 넣어 더 나은 답을 얻는 법도 배웁니다. 이것이 ChatGPT를 단순한 답변기가 아니라 공부 도구로 바꾸는 차이입니다.