통계 실험실 차트
넘스탯 로고

넘스탯

DATA ANALYTICS & INSIGHTS

확률에서 LLM까지 – 데이터 사이언스 전문 교육 플랫폼

학습 메뉴
도움말

텍스트 생성 실습

문자 단위 RNN 언어 모델 — "다음 글자 맞히기"가 글쓰기가 되는 과정을 브라우저 실제 학습으로

원하는 개념·랩·가이드를 검색해보세요

Ctrl K
딥러닝 실습실로RNN 상세 이론

무작위 글자 뭉치가 몇백 스텝 만에 단어를 만들기 시작하는 순간을 직접 목격합니다

언어 모델의 정체는 생각보다 단순합니다. "지금까지의 글을 보고, 다음에 올 글자 하나의 확률을 계산하는 함수"입니다. 이 실습에서는 몇 KB짜리 작은 말뭉치로 문자 단위 RNN을 브라우저에서 처음부터 학습시킵니다. 학습 초반의 완전한 무작위 출력이 철자 패턴을 거쳐 단어 꼴을 갖춰 가는 과정을 중간 샘플로 계속 확인할 수 있습니다. ChatGPT는 이보다 수십억 배 크고 구조도 다르지만, "다음 조각을 확률로 예측한다"는 뿌리는 이 작은 모델과 같습니다.
이 페이지에서 배우고 나면
  • 언어 모델을 "다음 문자의 확률분포를 출력하는 함수"로 정의하고, 손실 곡선과 중간 샘플을 근거로 이 정의를 설명할 수 있습니다.
  • 온도 슬라이더를 조작하기 전에 출력이 어떻게 달라질지 예측하고, 실제 생성 결과로 그 예측을 검증할 수 있습니다.
  • "AI가 언어를 이해해서 문장을 쓴다"는 통념에 대해, 학습 중간 샘플의 변화를 증거로 실제 일어나는 일(통계적 패턴 습득)과 구분해 설명할 수 있습니다.
1. 말뭉치(코퍼스) 선택
1,317자
문자 25종
무작위 예측 손실 = ln(25) ≈ 3.22
문자당 평균 등장 52.7회
이 실습을 위해 직접 작성한 사실 서술 문장들입니다 (저작권 문제 없음). 매 스텝은 "25지선다 다음 문자 맞히기"입니다 — 문자 종류가 많고 등장 횟수가 적을수록 같은 모델에게 더 어려운 과제가 됩니다.
the sun rises in the east and sets in the west. water is made of hydrogen and oxygen. the moon goes around the earth once a month. birds can fly and fish can swim in the sea. a triangle has three sides and three corners. the heart pumps blood around the body. plants need light and water to grow well
2. 학습 — 다음 문자 맞히기를 3,000번 연습

Elman RNN(tanh) · 은닉 64 · BPTT 25 · Adam(학습률 0.003) · 기울기 클리핑 ±5

3. 생성 실험 — 온도와 프롬프트
먼저 위에서 학습을 완료하면 활성화됩니다.
온도 T = 0.8
직접 해보기 — 실습 과제
  1. 탄생의 순간 관찰하기: 영어 말뭉치로 학습을 시작하고, 타임라인에서 학습 전 → 300 → 750 → 3,000스텝 샘플을 비교하세요. 완전 무작위 → 자주 쓰이는 글자 위주 → "the", "and" 같은 단어 꼴 순으로 변합니다. 철자법을 알려준 적이 없는데도 규칙처럼 보이는 것이 통계가 쌓이며 저절로 나타납니다 — "AI는 문법 규칙을 먼저 배운 뒤 쓴다"는 통념과 반대 순서입니다.
  2. 온도 다이얼의 정체: 학습 완료 후 온도를 0.2 → 1.0 → 2.0으로 바꾸며 같은 프롬프트로 각각 생성해 보세요. 바꾸기 전에 결과를 먼저 예측해 적어두면 더 좋습니다. 낮은 온도는 안전하지만 같은 문구를 반복하기 쉽고, 높은 온도는 철자 자체가 무너집니다. 온도는 "창의성"이 아니라 확률분포의 뾰족함을 조절하는 다이얼이며, 모델의 지식은 한 글자도 변하지 않습니다 (top-5 확률 막대가 뾰족해지고 평평해지는 것을 확인하세요).
  3. 문자 25종 vs 213종 — 난이도의 정체: 영어와 한국 속담을 각각 학습시키고 손실 곡선 두 개를 비교하세요. 시작점부터 다릅니다 — 무작위 예측의 손실이 ln(문자 종수)이기 때문입니다(차트의 점선). 난이도를 결정한 것은 언어의 우열이 아니라 선택지 수와 문자당 학습 기회입니다. 대형 모델의 한국어 성능 격차도 주로 데이터·토크나이저 문제로 논의됩니다.
  4. 암기인가, 일반화인가: 한국 속담 모델에서 "가는 말이"를 프롬프트로 생성해 보세요. 생성 결과에서 노란 강조(코퍼스에 8자 이상 그대로 존재)가 얼마나 되는지 보세요. 작은 말뭉치에서 손실이 아주 낮아진 모델은 사실상 암기 상태입니다 — 손실이 낮다고 항상 "더 잘 배운" 것이 아닙니다. 영어 모델과 강조 비율을 비교해 보세요.
  5. 미리 써 둔 문장은 없다: top-5 확률 패널을 보면서 같은 프롬프트로 생성을 여러 번 반복하세요. 매 글자마다 확률 추첨이 새로 일어나 중간부터 다른 길로 갈라집니다. 모델에게는 완성된 문장 계획이 없습니다 — ChatGPT의 답이 타자 치듯 흘러나오는 것은 연출이 아니라 실제 작동 방식(한 번에 한 토큰)입니다.
개념 정리
온도 샘플링

p_i = exp(z_i / T) / Σ_j exp(z_j / T)

T→0이면 가장 확률 높은 문자만 고르는 것(argmax)에 수렴하고, T=1이면 모델이 학습한 분포 그대로이며, T가 커질수록 균등분포에 가까워집니다. "높은 온도의 오류"란 모델이 낮은 확률을 준 문자가 더 자주 뽑힌다는 뜻입니다 — 모델 자체는 그대로이고 뽑는 방식만 바뀝니다. 아주 낮은 온도에서는 반복 루프에 빠지기 쉬워 "보수적 = 항상 좋음"도 아닙니다.

손실 = 놀라움의 크기

문자당 손실(교차 엔트로피)은 "정답 글자에 준 확률의 −log"입니다. 무작위로 찍으면 ln(문자 종수)이고, 정답에 확률 1을 주면 0입니다. 다만 작은 말뭉치에서 손실이 0에 가까워지는 것은 암기(과적합)의 신호일 수 있습니다 — 위 실습 과제 4에서 직접 확인했듯이, 낮은 손실이 곧 좋은 일반화는 아닙니다.

심화: 한글과 문자 단위 모델링

한글은 완성형 음절이 이론상 11,172개 가능하며, 이 실습의 속담 말뭉치에는 그중 213종이 등장합니다. 실제 한국어 문자 모델링에서는 음절을 자모(초성·중성·종성)로 분해해 기호 수를 수십 개 수준으로 줄이는 기법이 쓰입니다 — 같은 데이터로 선택지 수를 줄이면 학습이 쉬워지는 원리를 이 실습의 과제 3에서 이미 확인한 셈입니다. 현대 LLM들은 문자 대신 서브워드 토큰(BPE 등)을 사용해 이 균형을 잡습니다.

다음: RNN의 약점이 어텐션을 낳다

RNN은 문장을 한 줄로 읽으며 앞부분을 조금씩 잊습니다. 생성에서는 애교지만 번역에서는 치명적입니다 — 한국어 문장 끝의 동사를 잊으면 영어 문장을 시작조차 할 수 없으니까요. 다음 실습에서 모델이 이 문제를 "어텐션"으로 어떻게 푸는지 직접 확인하세요.

더 깊이 학습하기
  • Karpathy (2015): "The Unreasonable Effectiveness of Recurrent Neural Networks" — 문자 단위 RNN 텍스트 생성을 대중화한 블로그와 min-char-rnn 코드. 이 실습의 원형입니다.
  • Elman (1990), Cognitive Science: "Finding Structure in Time" — 이 실습이 쓰는 단순 순환 구조의 원류
  • Bengio, Ducharme, Vincent & Jauvin (2003), JMLR: "A Neural Probabilistic Language Model" — 신경망 언어 모델의 고전
  • Hochreiter & Schmidhuber (1997), Neural Computation: "Long Short-Term Memory" — 긴 의존성을 위한 게이트 구조 (이 실습의 다음 단계)