이 장은 이 수업의 마지막 이론 장이다. 새로 배우는 손계산은 다음 토큰 확률과 temperature 두 가지뿐이고, 나머지는 지금까지 12주 동안 손으로 계산해 온 것들이 LLM 안에서 어떻게 재사용되는지 확인하는 일이다. 다음 주부터는 프로젝트 워크숍(13주)과 발표(14주)다.
14.1 LLM의 목표는 단 하나: 다음 토큰 예측
14.1.1 빈칸 하나 맞히기
다음 문장의 빈칸에 무엇이 올지 맞혀 보자.
“나는 어제 학교에 ___”
“갔다”가 가장 그럴듯하고, “왔다”도 가능하다. “고양이”는 문법적으로 이상하다. 여러분의 머릿속에서 방금 일어난 일 — 문맥을 보고 다음 단어의 그럴듯함에 점수를 매기는 것 — 이것이 ChatGPT 같은 거대 언어모델(LLM)이 하는 일의 전부다. 수천억 개의 파라미터, 수조 개의 학습 토큰, 그 모든 규모가 향하는 목표는 단 하나, 이 빈칸 맞히기다.
정의: 언어모델 (Language Model)
문맥(지금까지의 토큰들)이 주어졌을 때, 다음 토큰의 확률분포를 출력하는 모델.
\[P(\text{다음 토큰} \mid \text{문맥})\]
이 확률분포에서 토큰을 하나 뽑아 문맥에 붙이고, 다시 다음 토큰을 예측하는 일을 반복하면 문장이 생성된다. LLM(Large Language Model)은 이것을 아주 큰 규모로 하는 언어모델이다.
14.1.2 이것은 여러분이 아는 문제다
“다음 토큰 예측”이라는 말을 이 수업의 언어로 번역하면 이렇게 된다:
클래스가 어휘 전체인 다중 분류 문제.
Ch03에서 3개 클래스 분류를 다뤘다. 출력층에 노드 3개를 두고, Softmax로 확률로 바꾸고, 교차 엔트로피로 손실을 계산했다. LLM은 클래스 수가 3개가 아니라 어휘 크기(수만 개) 일 뿐, 구조가 똑같다:
Ch03의 3-클래스 분류
LLM의 다음 토큰 예측
입력
특성 벡터
문맥 (토큰열)
출력층 노드 수
3개
어휘 크기 (예: GPT-3는 50,257개)
확률 변환
Softmax (Ch03)
Softmax (같은 함수)
손실 함수
교차 엔트로피 (Ch03)
교차 엔트로피 (같은 함수)
정답
클래스 라벨
실제로 다음에 온 토큰
정답 토큰의 확률을 \(\hat{y}_{\text{정답}}\)이라 하면 손실은 Ch03 그대로 \(\mathcal{L} = -\log(\hat{y}_{\text{정답}})\)이다.
여러분은 이미 LLM의 손실 함수를 3주차에 손으로 계산했다. 문맥을 벡터로 바꾸는 내부(임베딩은 Ch10, 어텐션은 Ch11)도 이미 배웠으니, LLM에서 여러분이 계산할 수 없는 부분은 사실상 없다 — 크기가 클 뿐이다.
import pandas as pdimport numpy as nptokens = ['갔다', '왔다', '있다', '먹었다', '고양이']z = [2.0, 1.0, 0.5, -0.5, -1.5]exp_z = [np.exp(zi) for zi in z]sum_exp =sum(exp_z)probs = [e / sum_exp for e in exp_z]rows = []for t, zi, e, p inzip(tokens, z, exp_z, probs): rows.append({'토큰': t,'로짓 $z_k$': zi,'$e^{z_k}$': f'{e:.4f}','확률 $\\hat{y}_k$': f'{p:.4f}','확률 (%)': f'{p*100:.1f}%', })rows.append({'토큰': '**합계**','로짓 $z_k$': '','$e^{z_k}$': f'{sum_exp:.4f}','확률 $\\hat{y}_k$': f'{sum(probs):.4f}','확률 (%)': '100.0%',})pd.DataFrame(rows).to_html(index=False, border=0, escape=False)
표 14.1: 다음 토큰 확률 손계산 — 문맥: ‘나는 어제 학교에’
토큰
로짓 \(z_k\)
\(e^{z_k}\)
확률 \(\\hat{y}_k\)
확률 (%)
갔다
2.0
7.3891
0.5871
58.7%
왔다
1.0
2.7183
0.2160
21.6%
있다
0.5
1.6487
0.1310
13.1%
먹었다
-0.5
0.6065
0.0482
4.8%
고양이
-1.5
0.2231
0.0177
1.8%
합계
12.5857
1.0000
100.0%
“갔다”가 58.7%로 가장 그럴듯하고, “고양이”는 1.8%다. 학습 데이터에서 실제 다음 토큰이 “갔다”였다면, 손실은 Ch03 그대로 \(\mathcal{L} = -\log(0.5871) = 0.5326\). 실제 LLM의 학습은 이 계산을 수조 개의 빈칸에 대해 반복하며 경사하강법(Ch03~04)으로 손실을 줄이는 것이다.
14.3 Temperature: 확률분포의 뾰족함을 조절하는 손잡이
14.3.1 정의
ChatGPT API의 설정 화면에서 보게 될 temperature는 새로운 수학이 아니라, 방금 쓴 Softmax에 나누기 하나를 추가한 것이다.
확률분포에서 실제 토큰을 고르는 방식도 두 갈래다. 그리디(greedy) 디코딩은 매번 확률 1등 토큰만 택한다 — 같은 입력에 항상 같은 출력이 나오지만 뻔하고 반복적인 문장이 되기 쉽다. 샘플링은 확률분포대로 주사위를 던져 뽑는다 — “갔다”가 58.7%면 100번 중 59번쯤 “갔다”가 나오고 나머지는 다른 토큰이 나온다. ChatGPT가 같은 질문에 매번 조금씩 다른 답을 내놓는 이유가 바로 이 샘플링이고, temperature는 그 주사위의 모양을 조절하는 손잡이다.
인터랙티브 — Temperature 손잡이를 직접 돌려 보세요
로짓 5개는 위 손계산과 같은 값으로 고정되어 있어요. T 슬라이더를 움직이면 Softmax 확률 막대가 실시간으로 변합니다. T를 0.1까지 내리면 어떤 일이 생기는지, 3까지 올리면 균등분포(점선, 20%)에 얼마나 가까워지는지 확인해 보세요.
시도해 보세요: T = 0.1에서 “갔다”가 사실상 100%가 되는 것 — 이것이 그리디 디코딩과 같아지는 극한입니다. 반대로 T = 3에서도 다섯 막대가 완전히 같아지지는 않는 이유(로짓 순서는 보존됨)를 표의 \(z\) 값으로 설명해 보세요.
14.4 사전학습: 우리가 7주차에 한 것의 규모 확장
14.4.1 원리는 이미 배웠다
Ch08에서 전이학습을 배웠다: 대규모 데이터로 사전학습된 모델을 가져와 내 작업에 맞게 파인튜닝한다. HW2에서 여러분이 직접 했다 — ImageNet으로 사전학습된 모델의 분류기를 교체하고, 직접 찍은 사진 수백 장으로 동결 학습을 했다.
LLM은 정확히 같은 원리이고, 규모만 다르다:
HW2 (7~8주차, 이미지)
LLM (사전학습)
사전학습 데이터
ImageNet 약 100만 장
인터넷 규모 텍스트 (수조 토큰)
파라미터 수
수천만 개 (ResNet-50 약 2,500만)
수천억 개 (GPT-3: 1,750억)
사전학습 주체
남이 해줌 (공개 모델)
남이 해줌 (수만 대의 GPU)
내가 하는 일
분류기 교체 + 동결 + 파인튜닝
프롬프트 작성, (필요시) 파인튜닝
왜 되는가
저수준 특성은 공통 (Ch08)
언어의 일반 패턴은 공통 (같은 원리)
14.4.2 라벨이 필요 없는 이유: 자기지도
HW2에서 가장 손이 많이 간 일은 라벨링이었다. 그런데 다음 토큰 예측에는 라벨링이 필요 없다. 텍스트 자체가 문제지이자 정답지이기 때문이다 — “나는 어제 학교에 갔다”라는 문장 하나에서 “나는 어제 학교에 → ?”라는 문제와 “갔다”라는 정답이 공짜로 나온다. 데이터가 스스로 정답을 제공하는 이런 방식을 자기지도학습(self-supervised learning)이라 부른다. 라벨링 비용이 사라졌기 때문에 인터넷의 텍스트 전체를 학습 데이터로 쓸 수 있었고, 이것이 “L(Large)”을 가능하게 한 열쇠다.
14.4.3 1주차에 예고한 그림이 완성되었다
Ch01에서 딥러닝이 각광받는 이유 중 하나로 사전학습 생태계를 소개했다 — “방대한 데이터로 미리 학습된 모형을 가져와 재활용할 수 있는 생태계.” 그때는 예고였지만, 이제 그 그림의 전부를 여러분이 직접 확인했다: Ch08에서 이미지로(HW2), 그리고 오늘 언어에서. 하나의 사전학습 모델이 요약·번역·분류 등 여러 작업의 기반이 되는 이런 모델을 기초 모델(foundation model)이라고도 부른다. 1주차의 예고가 12주차에 회수된 셈이다.
14.5 규모가 만든 놀라움과 남은 문제
14.5.1 창발: 시키지 않은 일을 하기 시작했다
모델과 데이터를 계속 키우자 이상한 일이 일어났다. 다음 토큰 예측만 시켰을 뿐인데, 어느 규모를 넘어서자 번역, 요약, 간단한 추론 같은 능력이 “배운 적 없이” 나타난 것이다. 작은 모델에서는 전혀 안 되던 일이 규모를 키우면 갑자기 되기 시작하는 이 현상을 창발(emergence)이라 부른다. 왜 이런 일이 일어나는지에 대한 완전한 설명은 아직 없다 — 다만 인터넷 텍스트에는 번역문, 요약문, 풀이 과정이 포함되어 있으므로, “다음 토큰을 잘 맞히려면” 그런 패턴까지 내재화해야 했다는 것이 직관적인 설명이다. 이 수업에서는 창발을 개념 수준에서만 다룬다.
14.5.2 정렬: 다음 토큰 예측만으로는 조수가 되지 않는다
인터넷 텍스트를 잘 흉내 내는 모델이 곧 유용하고 안전한 조수인 것은 아니다. 인터넷에는 틀린 정보, 유해한 내용, 질문에 질문으로 답하는 글도 가득하기 때문이다. 그래서 사전학습이 끝난 모델에는 추가 조정이 들어간다. 먼저 “지시 → 좋은 응답” 형태의 고품질 예시들로 파인튜닝하는 지시 튜닝(instruction tuning)을 거치고, 이어서 모델이 내놓은 여러 응답에 사람이 선호 순위를 매기면 그 선호를 반영해 모델을 미세조정하는 RLHF(인간 피드백 기반 강화학습)를 적용한다. 원리는 여전히 Ch08의 파인튜닝 — 사전학습된 가중치를 출발점으로 삼아 원하는 방향으로 조금 움직이는 것 — 이고, 다른 점은 “정답 라벨” 대신 “사람의 선호”가 학습 신호가 된다는 것이다. 이 과정을 통틀어 정렬(alignment)이라 부른다. 수식과 알고리즘 상세는 이 수업의 범위 밖이다.
14.6 프롬프팅: 원리에서 나온 사용법
14.6.1 프롬프트는 마법 주문이 아니다
LLM의 출력은 \(P(\text{다음 토큰} \mid \text{문맥})\) — 문맥에 조건부인 확률분포다. 프롬프트를 바꾼다는 것은 이 조건부의 조건을 바꾸는 것이고, 조건이 바뀌면 확률분포 전체가 바뀐다. “나는 어제 학교에”와 “품질관리 보고서: 나는 어제 학교에”는 서로 다른 분포를 만든다. 프롬프트 엔지니어링이 효과가 있는 이유는 마법이 아니라, 확률질량을 내가 원하는 출력 쪽으로 옮기는 조건 설계이기 때문이다.
좋은 프롬프트의 조건들은 전부 이 원리에서 나온다:
기법
원리와의 연결
구체적 문맥 제공
조건이 구체적일수록 분포가 원하는 답 주변으로 좁아진다 (temperature를 낮춘 것과 비슷한 효과를 조건 쪽에서 만드는 것)
예시 제공 (few-shot)
LLM은 패턴 완성 기계다 — “입력→출력” 예시 몇 개를 보여주면, 같은 패턴을 잇는 토큰열의 확률이 올라간다
역할·형식 지정
“너는 품질 엔지니어다”, “표로 답하라”는 그런 문서에서 나올 법한 토큰들로 조건을 옮긴다
14.6.2 실례: 같은 과업, 다른 프롬프트
과업: 설비 점검 일지에서 이상 징후를 뽑아 정리하기.
나쁜 프롬프트:
이 일지 요약해줘.
[점검 일지 원문 ...]
좋은 프롬프트:
너는 제조 설비 예방보전 담당 엔지니어다.
아래 점검 일지에서 이상 징후만 골라 다음 형식의 표로 정리하라.
형식: | 설비 | 징후 | 심각도(상/중/하) | 권장 조치 |
예시: | 3번 컨베이어 | 베어링 소음 증가 | 중 | 주말 정비 시 교체 |
주의: 일지에 없는 내용을 추측해서 채우지 말 것.
[점검 일지 원문 ...]
나쁜 프롬프트의 “요약”이라는 조건 아래에서는 온갖 종류의 요약문이 다 그럴듯하다 — 분포가 넓게 퍼져 있고, 어떤 것이 나올지는 운이다. 좋은 프롬프트는 역할(엔지니어의 문서), 형식(표), 예시(패턴), 금지 조건 (추측 금지)으로 조건을 겹겹이 좁혀, 원하는 출력의 확률질량을 최대로 끌어올린다. HW3에서 여러분이 직접 하게 될 일이 바로 이 조건 설계다.
14.7 API로 쓰기
챗 화면 바깥에서 LLM을 업무 시스템에 붙이려면 API를 쓴다. 어떤 회사의 API든 구조는 거의 같다 — 메시지 목록을 보내고, 이어질 토큰들을 받는다.
읽어야 할 것은 세 가지다.
system / user 메시지: system은 지속되는 역할·규칙(프롬프팅의 “역할 지정”이 들어가는 자리), user는 매번의 요청이다. 모델 입장에서는 둘 다 합쳐져 하나의 문맥 — 조건부 확률의 조건 — 이 된다.
temperature: 이 장에서 손으로 계산한 바로 그 파라미터다. API 문서의 “0에 가까우면 일관된 출력, 높으면 다양한 출력”이라는 설명을 여러분은 이제 수식으로 이해한다.
토큰 단위 과금: 입력과 출력 모두 토큰 수로 요금이 매겨진다. 토큰이 무엇인지는 Ch10에서 배웠다 — 단어보다 잘게 쪼개진 조각이므로, 특히 한국어는 눈에 보이는 글자 수보다 토큰 수가 많아지기 쉽다. 긴 문서를 통째로 넣는 설계는 그대로 비용이 된다.
14.8 한계: 환각은 버그가 아니라 본성
14.8.1 그럴듯함과 사실은 다르다
LLM은 지금까지 본 것처럼 확률적으로 다음 토큰을 생성하는 기계다. 학습 목표 어디에도 “사실만 말하라”는 없었다 — 목표는 언제나 “그럴듯한 다음 토큰”이었다. 그래서 존재하지 않는 사건(“조선왕조실록에 기록된 세종대왕의 맥북 던짐 사건”)을 물어도, 실록 문체로 아주 그럴듯한 이야기를 지어낸다. 이렇게 사실이 아닌 내용을 유창하게 생성하는 현상을 환각(hallucination)이라 부르는데, 이것은 고쳐야 할 버그라기보다 확률적 생성 모델의 본성이다. 그럴듯함의 확률분포에서 뽑은 문장이 우연히 사실과 일치할 수는 있어도, 일치가 보장되는 메커니즘은 어디에도 없다. 따라서 출력의 사실 여부를 검증할 책임은 언제나 사용자에게 있다.
14.8.2 산업 응용에서의 함의
산업공학도가 LLM을 업무에 쓸 때 이 본성은 설계 조건이 된다. 설비 제원 조회, 안전 규정 안내, 고객 응대처럼 틀린 답의 비용이 큰 업무에 LLM의 출력을 검증 없이 그대로 흘려보내면 안 된다. 실무에서는 LLM을 “초안 생성기”로 두고 사람이 최종 확인하는 절차를 넣거나, 근거 문서를 함께 제공하고 그 안에서만 답하게 조건을 좁히는(앞 절의 프롬프트 원리 그대로) 방식으로 위험을 관리한다. 어느 업무에 어느 수준의 검증 절차를 붙일 것인가 — 이것은 Ch09에서 정밀도와 재현율의 균형을 문제가 결정했던 것과 같은, 전형적인 산업공학의 설계 문제다. 아울러 프롬프트에 넣은 내용은 외부 서버로 전송되므로, 사내 기밀을 입력하는 것 자체가 유출 경로가 될 수 있다는 점도 기억해 두자.
HW3 예고 — 프롬프트 개선만으로 성능 끌어올리기 (개인 과제)
동일한 과업을 정해 놓고, 모델도 설정도 바꾸지 않은 채 프롬프트 개선만으로 결과 품질을 끌어올리는 과제다. 이 장에서 배운 원리 (구체적 문맥, few-shot 예시, 역할·형식 지정, 금지 조건)를 실제로 적용해 보는 것이 목표다.
제출물:
프롬프트 변천사: 최초 프롬프트 원문 → 각 수정 버전 (무엇을, 왜 바꿨는지)
버전별 결과 비교·해석: 각 버전의 출력을 나란히 놓고, 어떤 수정이 어떤 변화를 만들었는지 이 장의 원리(조건부 분포)로 해석
성능이 오르지 않은 수정도 기록하라 — 팀 프로젝트 때와 같은 원칙이다. 왜 안 됐는지 아는 실패는 감점 사유가 아니다.
14.9 수업 전체의 회수
12주 전, 여러분은 퍼셉트론의 가중합을 손으로 계산하는 것에서 시작했다. 이 수업에서 손으로 계산해 본 것들이 LLM 안에서 각각 어디에 있는지 한 표로 정리하자.
손으로 계산한 것
어디서
LLM 안에서의 자리
가중합과 활성화 (퍼셉트론)
Ch02
모든 층의 기본 연산 — 어텐션의 “가중합”도 같은 것
Softmax, 교차 엔트로피
Ch03
LLM의 출력층과 손실 함수 (이 장에서 재계산했다)
경사하강법, 역전파
Ch03~04
수천억 파라미터도 정확히 같은 방법으로 학습된다
전이학습: 사전학습 + 파인튜닝, 동결
Ch08
사전학습 LLM + 지시 튜닝·RLHF — 같은 원리의 규모 확장
임베딩 (단어를 벡터로)
Ch10
토큰이 모델에 들어가는 첫 관문
어텐션 (문맥을 섞는 가중합)
Ch11
문맥을 반영한 내부 표현을 만드는 핵심 연산
다음 토큰 확률, temperature
Ch12
생성의 마지막 한 걸음 — 오늘 손으로 계산했다
이 표에 LLM을 이해하는 데 필요한 부품이 모두 있다. 빠진 것은 규모뿐이다 — 노드 5개가 수천억 개가 되었을 뿐, 새로운 종류의 수학은 등장하지 않았다.
LLM은 새로운 마법이 아니라, 여러분이 손으로 계산해 본 것들의 규모 확장이다.
깊이 계약 확인
문제집과 시험은 다음 토큰 확률 계산과 temperature가 Softmax에 미치는 영향 계산까지만 다룬다. RLHF의 수식, 스케일링 법칙의 수식, LLM 아키텍처 상세(Transformer 내부는 Ch11에서 이미 끝났다)는 모두 범위 밖이며, 창발·정렬은 개념을 설명할 수 있으면 충분하다.