LLM
앞 챕터들에서 우리가 다루는 시스템(프로젝트 구조·데이터·서버)이 무엇인지 봤습니다. 이제부터는 그 위에서 Claude Code 로 실제 개발을 합니다. 그 전에, 우리가 부리는 Claude 를 실제로 움직이는 것, 곧 LLM 이 무엇인지부터 짚습니다. 이어지는 프롬프팅·스킬·에이전트·훅이 왜 필요한지가 전부 여기서 갈리기 때문입니다.
1. LLM이란?
LLM(Large Language Model, 거대 언어 모델) 은 방대한 양의 글을 학습해, 이전 텍스트에 이어 가장 그럴듯한 다음 텍스트를 골라 한 조각씩 이어 쓰는 프로그램입니다. Claude·GPT·Gemini 가 모두 LLM 입니다.
여기서 중요한 점은, 검색처럼 "정답을 어딘가에서 찾아 오는" 것이 아니라는 것입니다. LLM 은 "이 문맥 다음에는 이 텍스트가 올 확률이 높다"를 계산해 이어 붙일 뿐입니다. 이 단순한 원리가 놀라운 결과를 내지만, 동시에 아래의 약점도 여기서 전부 나옵니다.
LLM 이란, 이전 문맥에 이어 확률적으로 다음 텍스트를 이어 쓰는 예측기.
2. 모델의 원리
LLM 이 "확률로 다음 텍스트를 고른다"고 했는데, 그 속을 들여다보면 결국 수식(공식) 하나입니다. 학창 시절 배운 일차식 y = ax + b 를 떠올리면 됩니다. 입력 x 와 정답 y 를 여러 쌍 주면, 학습을 통해 그 데이터를 가장 잘 맞추는 a·b 를 찾아내는데, 수학에서 이 a·b 를 계수 라고 합니다. 다항식은 차수(제곱) 에 따라 계수 개수가 정해지고, 차수가 오르면 더 복잡한 곡선이 되어 더 다양한 입력에 대해 정확한 출력을 낼 수 있습니다.
지금까지 '계수'라고 부른 이 값들을, 머신러닝에서는 파라미터(parameter) 라고 부릅니다. 흔히 "GPT 는 파라미터가 몇천억 개"라고 할 때의 그 숫자가 바로 이 계수입니다.
| 모델 | 수식 | 계수(파라미터) | 설명 |
|---|---|---|---|
| 직선 | y = ax + b | a, b | 점들을 가장 잘 지나는 직선을 찾아, 새 x 로 y 를 예측합니다 |
| 곡선 | y = ax² + bx + c | a, b, c | 직선으로는 안 되는 굽은 패턴까지 곡선으로 예측합니다 |
| 3차 곡선 | y = ax³ + bx² + cx + d | a, b, c, d | 더 복잡하게 굽은 패턴까지 예측합니다 |
| LLM | y = f(x) | 수천억 개 | 사실상 수천 제곱에 이르는 거대한 식으로, 방대한 글을 학습해 다음 텍스트를 예측합니다 |
x 와 y 는 이렇게 이해하면 됩니다.
위 그림처럼 x 축을 '시간', y 축을 '주가'라 두면, 이전 주가(점)를 보고 추세선을 그어 다음 시점(x)의 주가(y)를 예측하는 식입니다. 다만 주가는 오르락내리락하기 때문에 직선(1차)으로는 정확히 예측하기 어렵습니다. 차수를 높여 더 복잡한 곡선을 쓸수록 이런 오르내림까지 더 정확히 예측할 수 있습니다. LLM 은 이 자리에 x = 입력 텍스트, y = 출력 텍스트(확률적으로 다음에 올 텍스트)를 넣은 셈입니다.
이 단순한 원리에서 LLM 의 성격이 전부 따라 나옵니다.
| 성질 | 설명 |
|---|---|
| 정답이 아닌 '그럴듯한 값' | 늘 가장 그럴듯한 y 를 낼 뿐, 정답을 보증하지는 않음. LLM 의 답도 검증된 사실이 아님 |
| 인간을 닮음 | 학습 목표가 '인간이 도출한 답'이라, 자연스러워지는 만큼 인간처럼 그럴듯하게 틀리기도 함 |
| 실수·환각 | 학습한 적 없는 입력에도 반드시 y 를 냄 → 모르는 것까지 그럴듯하게 지어냄 |
| 블랙박스 | 학습으로 정해진 수천억 개 숫자는 결과값만 볼 수 있을 뿐, 왜 그 값이 됐는지는 알 수 없음 |
정리하면, LLM 은 정답 기계가 아니라 인간의 학습 방식을 모방해, 인간이 답을 도출하는 과정을 매우 정교하게 흉내 내도록 학습된, 내부를 완전히 이해할 수 없는 거대한 확률 수식입니다.
3. 계층 구조
§2 에서 LLM 을 '수천억 개 파라미터를 가진 거대한 수식'이라고 했습니다. 그 파라미터(a·b·c)가 실제로 어디에, 어떻게 놓여 있는지 봅니다. 신경망의 기본 단위는 노드(node) 하나입니다.
노드가 하는 계산은 §2 의 식과 닮았습니다. 다만 §2 에서는 입력이 x 하나였던 반면, 실제 노드는 여러 입력을 동시에 받습니다. 위 그림의 x₁·x₂·x₃ 는 x 의 제곱이 아니라 서로 다른 입력(변수) 입니다. 노드는 이 값들에 각 선의 숫자(파라미터 a·b·c)를 곱해 더한 뒤(가중합), 그 결과에 간단한 변환(예: 음수는 0으로 바꾸기)을 한 번 더 거쳐 다음 층으로 내보냅니다. 입력이 여럿일 뿐 계산 자체는 §2 의 직선(y = ax + b)처럼 단순하고, 파라미터는 노드로 들어오는 '선'마다 하나씩 붙습니다.
입력이 여러 개라는 건 곧 차원이 늘어난다는 뜻입니다. 실제 모델의 입력은 변수가 아주 많아서, 2개만 돼도 그래프는 3차원이 되고, 수천 개면 아예 그래프로 나타낼 수 없습니다. §2 에서 입력 하나(x)로 2차원 그래프를 그린 것은 '파라미터가 많아질수록 데이터를 더 잘 맞춘다'는 원리를 눈에 보이게 하려는 단순화였습니다.
이제 이 노드를 옆으로 여러 개, 다시 앞뒤로 여러 줄 쌓아 봅니다. 그러면 아래처럼 여러 층(layer) 으로 이뤄진 신경망이 됩니다. 이렇게 층을 깊게 쌓아 학습하는 방식을 딥러닝(deep learning, 깊은 학습) 이라고 합니다.
- 입력층: 우리가 넣은 텍스트가 들어가는 자리.
- 은닉층: 그 사이에서 계산이 겹겹이 일어나는 여러 층. 여기가 '깊은' 부분입니다.
- 출력층: 다음 텍스트가 나오는 자리.
신경망은 이 '가중합 + 변환'을 여러 층 쌓아 복잡함을 얻습니다. 이때 파라미터 개수는 곧 선(연결)의 개수입니다. LLM 이 말하는 '수천억 개'가 바로 이 선의 숫자이고, 앞서 말한 '학습'은 이 선의 숫자들을 데이터에 맞게 조금씩 맞춰 가는 일입니다.
다만 층을 깊게 쌓는 데에는 대가도 있습니다. 정보가 여러 층을 통과하다 보면 원래 내용이 조금씩 변형·손실될 수 있습니다. 그래서 실제 모델은 원래 값을 다음 층으로 곧바로 전달하는 '지름길' 연결을 함께 두어 이 손실을 완화합니다(자세한 구조는 아래 Transformer 참고).
층 사이에서 문맥의 어느 부분에 집중할지를 실제로 정하는 구조(Transformer)는 이 강의에서 다루지 않습니다. 엔지니어 세션 Transformer에서 자세히 다룹니다.
4. 컨텍스트 창
앞 절에서 본 계층 구조를 다시 봅니다. 입력층에 한 번에 넣을 수 있는 텍스트의 양은 정해져 있는데(위 그림의 주황 표시), 이 상한이 바로 컨텍스트 창(context window), 곧 LLM 이 한 번에 읽고 참고할 수 있는 분량의 한계입니다. 대화가 길어지거나 파일을 한꺼번에 너무 많이 넣어 이 창을 넘으면 앞부분이 잘려 나가고, 창을 넘지 않아도 입력이 너무 길면 각 부분을 꼼꼼히 살피기 어려워져, 특히 중간에 있는 내용을 놓치기 쉽습니다.
그래서 실무에서는 세 가지로 대응합니다.
- 필요한 자료만 골라서 넣습니다.
- 큰 작업은 작은 단위로 나눠서 시킵니다.
- 별개 작업은 별도 컨텍스트(에이전트)에 맡깁니다.
참고로 LLM 은 글자가 아니라 토큰(텍스트를 잘게 쪼갠 조각) 단위로 읽고 씁니다. 읽고 쓰는 토큰이 많을수록 느리고 비싸지므로, 필요한 만큼만 주는 것이 속도와 비용에도 유리합니다.
5. 환각
모델은 §2·§3·§4 에서 본 대로 거대한 수식입니다. 그리고 수식은 어떤 x 를 넣든 반드시 어떤 y 를 내놓습니다. y = ax + b 에 아무 값이나 넣어도 답이 나오는 것과 같습니다. 그래서 '모른다'는 결과 자체가 없습니다. 무엇을 넣든 학습으로 정해진 가중치(파라미터)에 따라 계산된 결과가 나올 뿐이라, 제대로 학습하지 못한 것에 대해서도 그럴듯한 답을 지어냅니다. 이것을 환각(hallucination) 이라고 합니다.
문제는 지어낸 답도 어조가 단정적이라는 점입니다. 그래서 LLM 의 결과는 "그럴듯한 예측"이지 "검증된 사실"이 아니며, 중요한 것일수록 인간이 확인하거나 자동 검증 장치로 걸러야 합니다.
Q. 그러면 LLM 을 못 믿는다는 뜻인가요?
A. 못 믿는 게 아니라, "확인 없이 그대로 반영하지 않는다"가 원칙입니다. 뒤에서 배울 훅이 바로 이 확인을 자동으로 걸어 주는 장치입니다.
6. 통제 도구
앞서 본 환각·컨텍스트 한계·비결정성은 사소한 특징이 아니라 분명한 약점입니다. 그리고 이 약점들은 모델을 더 크게·더 잘 학습시키는 것만으로는 완전히 사라지지 않습니다. 확률적으로 생성하는 방식과 정해진 컨텍스트 창에서 비롯한 성질이라, 학습 규모를 키워도 줄어들 뿐 0 이 되지는 않기 때문입니다. 그래서 학습과는 별개로, 이 약점을 최대한 통제하기 위한 도구가 필요합니다. 이 챕터의 나머지 강의가 각 약점을 하나씩 통제하는 방법입니다.
| LLM 의 약점 | 통제 방법 | 대응 도구 |
|---|---|---|
| 지시가 모호하면 결과가 크게 흔들림 | 명확한 지시 | Prompting |
| 같은 작업도 매번 결과 품질이 달라짐 | 반복 절차 고정 | Skills |
| 한 대화에 일이 쌓이면 컨텍스트 창 초과 | 작업 단위 분리 | Agents |
| 모르는 것도 자신 있게 지어냄 | 실수 자동 차단 | Hooks |
즉 프롬프팅·스킬·에이전트·훅은 별개의 기능이 아니라, 약점을 지닌 LLM 을 안정적으로 부리기 위한 네 가지 통제 장치입니다. 이 관점으로 다음 강의들을 보면 "왜 이런 게 있는지"가 또렷해집니다.
마무리
- 핵심 정리: LLM 은 문맥에 이어 확률적으로 다음 텍스트를 이어 쓰는 예측기이고, 그 속은 여러 층으로 쌓인 수천억 개 파라미터의 거대한 수식입니다. 이 원리에서 환각(그럴듯한 지어냄)·컨텍스트 한계(한 번에 보는 양)·비결정성(같은 질문에도 답이 조금씩 달라짐)이라는 약점이 나옵니다. 이어지는 프롬프팅·스킬·에이전트·훅이 이 약점을 통제하는 방법입니다.
- 주의 사항: LLM 의 답은 "확률적으로 그럴듯한 것"이지 "검증된 사실"이 아닙니다. 중요한 결과일수록 인간이 확인하거나 자동 검증을 겁니다.
- 다음 시간: 프롬프팅. 같은 LLM 이라도 어떻게 지시하느냐에 따라 결과가 달라지는데, 그 기본을 봅니다.