본문 바로가기

LLM을 학습시킨다는 건

2026.11.0614분 읽기
LLM을 학습시킨다는 건

회의에서 이런 말을 자주 듣는다.

챗봇에 우리 교환 규정 학습시켜 놨어요.

고객 문의 데이터로 GPT 학습시키면 되지 않아요?

Claude가 저를 학습해서 이제 제 말투로 써 줘요.

셋 다 "학습"이라고 했지만 가리키는 건 전부 다르다. 그리고 셋 중 엄밀한 의미의 학습은 아마 하나도 없다.

우리가 API나 채팅 앱으로 쓰는 LLM은 쓰는 동안 아무것도 배우지 않는다. 여기까지는 맞다. 그런데 "그러니 학습은 의미가 없다"로 넘어가면 반만 맞다. 학습이라는 말이 적어도 네 가지 뜻으로 쓰이고 있어서다. 이 글에서는 그걸 하나씩 떼어 본다. 예시는 이번에도 신발 쇼핑몰이다.

학습은 가중치가 바뀌는 일이다

LLM이 하는 일을 한 줄로 줄이면 다음 토큰 맞히기다. 토큰은 모델이 글을 쪼개 읽는 단위인데, 여기서는 단어 조각 정도로 생각하면 된다.

"교환은 상품 수령 후 7일 ___"

  이내   72%
  안에   18%
  까지    6%
  ...

(확률은 설명을 위한 예시다.)

이 확률을 계산하는 게 가중치(Weight)다. 모델 안에 든 수십억 개의 숫자로, 입력이 들어오면 이 숫자들로 곱하고 더해서 다음 토큰의 확률을 낸다. 처음에는 가중치가 아무렇게나 정해져 있어서 엉뚱한 토큰을 고른다.

학습(Training)은 이 숫자를 고치는 과정이다. 인터넷의 글, 책, 코드에서 문장을 가져와 뒷부분을 가리고 맞히게 한다. 틀리면 틀린 만큼 가중치를 조금 고친다. 이걸 수조 개의 토큰에 대해 반복하면 다음 토큰을 잘 맞히는 가중치가 남는다. 이 단계를 사전 학습(Pre-training)이라고 한다.

사전 학습만 끝난 모델은 질문에 대답하지 않고 그냥 이어 쓴다. "운동화 사이즈 교환 되나요?" 뒤에 "반품은요? 배송비는 누가 내나요?"를 붙이는 식이다. 그래서 사람이 쓴 질문과 좋은 대답 예시로 한 번 더 학습시키고(Instruction Tuning), 사람이 더 낫다고 고른 대답을 따르도록 다듬는다(RLHF). 사전 학습 다음에 하는 이런 학습을 묶어서 사후 학습(Post-training)이라고 부른다. 우리가 쓰는 Claude와 GPT는 여기까지 마친 모델이다.

어느 단계든 하는 일은 같다. 가중치를 고친다. 그러니 기술적으로 학습이란 가중치가 바뀌는 일이다. 가중치가 그대로면 아무리 많은 걸 보여 줘도 학습한 게 아니다.

LLM의 일생은 두 단계로 나뉜다.

[학습]  데이터 → 가중치 수정 → 가중치 수정 → ... → 가중치 고정 (모델 완성)
[추론]  입력 → 고정된 가중치로 계산 → 출력

학습(Training)은 모델을 만드는 회사가 한다. 수천 대의 GPU로 몇 달씩 돌린다. 우리가 Claude나 GPT에 질문을 보내는 건 두 번째 단계, 추론(Inference)이다. 추론할 때 가중치는 읽기만 한다. 질문을 백만 번 보내도 가중치는 한 자리도 바뀌지 않는다.

생각해 보면 당연하다. 모델 하나를 전 세계 사용자가 같이 쓴다. 내 대화로 가중치가 바뀐다면 옆 사람이 쓰는 모델도 바뀐다. 누군가 "환불은 언제나 전액이다"를 만 번 가르치면 모두의 챗봇이 그렇게 답하게 된다.

"학습시켰어요"의 정체

그럼 "챗봇에 교환 규정 학습시켜 놨어요"는 무슨 일을 한 걸까. 대개 이 중 하나다.

  • 시스템 프롬프트에 교환 규정을 붙여 넣었다.
  • ChatGPT의 GPTs나 Claude의 프로젝트에 규정 PDF를 올렸다.
  • 규정 문서를 벡터 DB에 넣고 RAG로 찾아 넣게 했다.
  • 메모리 기능이 지난 대화 내용을 기억하게 했다.

넷 다 가중치는 건드리지 않는다. 모델 앞에 놓이는 글, 컨텍스트를 바꿨을 뿐이다. 확인하는 방법도 간단하다. 올린 파일을 지우면 챗봇은 바로 규정을 모른다. 정말 가중치에 배웠다면 파일을 지워도 기억해야 한다.

"Claude가 내 말투를 학습했다"도 마찬가지다. 메모리 기능이 "이 사용자는 짧은 문장을 좋아함" 같은 메모를 적어 두고, 대화를 시작할 때마다 그 메모를 컨텍스트에 넣는다. 배운 게 아니라 메모를 읽고 있다.

말이 틀렸다고 탓할 일은 아니다. 학습처럼 보이게 만든 장치고, 대부분의 경우 이쪽이 진짜 학습보다 낫다. 이유는 뒤에서 본다.

그런데 컨텍스트 안에서는 배운다

여기서 하나가 헷갈린다. 연구자들도 가중치가 안 바뀌는 상황에 "학습"이라는 말을 쓴다.

쇼핑몰에 쌓이는 리뷰 중 불만 리뷰만 골라 상담팀에 넘기고 싶다고 하자. 예전 머신러닝이라면 "불만", "불만 아님" 정답을 단 리뷰 수만 개를 모아 분류 모델을 학습시켜야 했다. LLM은 예시 몇 개면 된다.

import anthropic

client = anthropic.Anthropic()

prompt = """리뷰가 불만이면 1, 아니면 0으로만 답해.

리뷰: 배송 빠르고 사이즈 딱 맞아요
답: 0

리뷰: 밑창이 2주 만에 떨어졌어요
답: 1

리뷰: 환불 안 하고 그냥 쓰려고요, 너무 편해요
답: 0

리뷰: 두 번 신고 버렸습니다
답:"""

response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=5,
    messages=[{"role": "user", "content": prompt}],
)

print(response.content[0].text)
# 1

모델은 예시 세 개를 보고 1과 0으로만 답하면 된다는 것, "환불"이라는 단어가 있어도 불만이 아닐 수 있다는 것을 알아챈다. 가중치는 그대로인데 행동이 바뀌었다. 2020년 GPT-3 논문은 이걸 인컨텍스트 러닝(In-context Learning)이라고 불렀다. 예시를 몇 개 보여 주는 방식은 퓨샷(Few-shot)이라고 한다.

다만 이 학습은 호출이 끝나면 사라진다. 다음 호출에서 예시를 빼면 모델은 다시 처음 보는 사람이 된다. 시험장에 들고 들어간 오픈북 같은 것이다. 책을 펴 놓고 있는 동안은 잘 풀지만, 책을 덮으면 남는 게 없다.

이름은 러닝이지만, 우리가 바라는 "한 번 가르치면 계속 아는" 학습은 아니다.

가중치를 바꾸는 학습도 할 수는 있다

그럼 우리는 가중치를 영영 못 건드릴까. 그렇지 않다. 이미 만들어진 모델을 우리 데이터로 조금 더 학습시킬 수 있다. 이걸 파인튜닝(Fine-tuning)이라고 한다.

앞에서 본 Instruction Tuning이 사실 파인튜닝이다. 이어 쓰기만 하던 모델에 "질문과 좋은 대답" 예시를 더 학습시켜서 대답하는 모델로 만들었다. 같은 일을 우리 데이터로 한 번 더 하는 셈이다.

데이터는 보통 이런 모양이다. 상담원이 실제로 보낸 답장을 모아서 만든다.

{"messages": [{"role": "user", "content": "270 신었는데 작아요. 275로 바꿀 수 있나요?"}, {"role": "assistant", "content": "불편을 드려 죄송합니다. 275 사이즈로 교환 접수해 드릴게요. 내일 기사님이 회수하러 방문합니다."}]}
{"messages": [{"role": "user", "content": "세일 상품도 교환 되나요?"}, {"role": "assistant", "content": "아쉽게도 세일 상품은 교환이 어려워요. 대신 수령 후 7일 안에는 반품하실 수 있습니다."}]}

이런 예시를 수백, 수천 개 넣고 돌리면 가중치가 실제로 바뀐 새 모델이 나온다. 이건 엄밀한 의미의 학습이다. 데이터 파일을 지워도 모델은 배운 걸 기억한다.

두 가지는 알아 두자.

원래 모델이 바뀌는 게 아니라 사본이 생긴다. 파인튜닝한 모델은 우리만 쓰는 별도의 모델이다. 앞에서 말한 "모두의 챗봇이 바뀌는" 문제는 이렇게 피한다.

아무 모델이나 되지는 않는다. OpenAI처럼 파인튜닝 API를 열어 둔 곳이 있고, Llama나 Qwen 같은 오픈 웨이트(Open-weight) 모델은 가중치 파일을 직접 받아서 학습시킬 수 있다. 가중치를 공개하지 않고 파인튜닝도 열어 두지 않은 모델은, 아무리 원해도 우리가 가중치를 건드릴 방법이 없다.

수십억 개의 가중치를 전부 다시 학습시키려면 GPU가 많이 든다. 그래서 요즘은 원래 가중치는 얼려 두고, 옆에 작은 가중치를 덧붙여 그것만 학습시키는 방법을 많이 쓴다. 2021년 Microsoft가 발표한 LoRA가 대표적이다. 논문에서는 GPT-3 크기의 모델에서 학습할 파라미터 수를 1만 분의 1로 줄였다. 개인 GPU 한 장으로 오픈 웨이트 모델을 파인튜닝하는 사람이 많아진 게 이 덕분이다.

교환 규정은 파인튜닝하지 않는다

할 수 있다니 해 보고 싶어진다. 교환 규정 문서로 모델을 파인튜닝하면, 규정을 매번 컨텍스트에 넣지 않아도 되지 않을까?

잘 안 된다. 이유는 세 가지다.

지식은 생각보다 잘 안 들어간다. 2023년 Microsoft 연구진의 「Fine-Tuning or Retrieval?」은 모델에 새 사실을 넣는 두 방법을 비교했다. 문서로 파인튜닝한 쪽보다 RAG로 문서를 찾아 넣은 쪽이 꾸준히 더 잘 맞혔다. 파인튜닝으로 넣으려면 같은 사실을 여러 표현으로 바꿔 가며 많이 보여 줘야 했다.

넣다 보면 지어내는 버릇이 는다. 2024년 Google 연구진의 「Does Fine-Tuning LLMs on New Knowledge Encourage Hallucinations?」에서는 모델이 원래 몰랐던 사실로 파인튜닝하면 배우는 속도가 느렸고, 그 사실을 배워 갈수록 환각이 늘었다. 모르는 걸 자신 있게 말하는 연습을 시킨 셈이다.

규정은 바뀐다. 다음 달 교환 기한이 7일에서 14일로 늘면 데이터를 다시 만들고 다시 학습시켜야 한다. 그 사이 모델은 옛 규정을 당당하게 말한다. 컨텍스트에 넣는 방식이면 문서 한 줄만 고치면 끝이다. 모델이 어떤 규정을 보고 답했는지 컨텍스트를 열어서 확인할 수도 있다. 가중치 안에 들어간 지식은 열어 볼 방법이 없다.

그럼 파인튜닝은 언제 쓸까. 무엇을 아느냐보다 어떻게 하느냐를 바꾸고 싶을 때다.

바꾸고 싶은 것방법
교환 규정, 재고, 주문 상태 같은 사실컨텍스트 (RAG, 도구)
상담원 특유의 말투, 답장 형식프롬프트로 안 되면 파인튜닝
하루 수십만 건 리뷰 분류를 싸게작은 모델 파인튜닝

실무에서는 마지막 줄이 가장 흔하다. 큰 모델에 퓨샷 예시를 넣어 분류하면 잘 되지만 비싸다. 큰 모델이 단 정답으로 작은 모델을 파인튜닝하면, 그 일 하나만큼은 비슷하게 해내면서 훨씬 싸고 빨라진다. 이걸 증류(Distillation)라고 부른다.

어느 쪽이든 프롬프트로 충분히 해 보고, 평가로 숫자를 확인한 다음에 할 일이다. 프롬프트로 안 되던 게 파인튜닝으로 풀리는 경우는 생각보다 드물다.

내 대화가 학습에 쓰인다는 말

학습이라는 말이 쓰이는 곳이 하나 더 있다.

회사 코드를 ChatGPT에 붙여 넣으면 학습돼서 다른 사람한테 나온대요.

이건 앞의 경우들과 또 다르다. 지금 쓰는 모델이 내 대화로 배운다는 뜻이 아니다. 모델 회사가 대화를 모아 두었다가 다음 모델을 학습시킬 때 데이터로 쓸 수 있다는 뜻이다.

그러니 오늘 붙여 넣은 코드가 오늘 옆 사람의 답에 나오지는 않는다. 가중치는 고정이니까. 하지만 다음 버전 모델의 학습 데이터에 섞일 수는 있다. 걱정한다면 이쪽을 걱정하는 게 맞다.

이건 기술보다 정책과 설정의 문제다. Anthropic은 2025년 가을부터 개인 요금제(Free, Pro, Max) 사용자가 대화를 모델 학습에 쓸지 직접 고르게 했고, API와 기업용 플랜 데이터는 학습에 쓰지 않는다고 밝힌다. OpenAI도 API로 보낸 데이터는 기본적으로 학습에 쓰지 않는다. 정책은 바뀌니, 회사 데이터를 다룬다면 지금 쓰는 앱의 설정을 직접 확인하자.

네 가지 학습

지금까지 나온 걸 표로 모으면 이렇다.

흔히 하는 말실제로 일어나는 일가중치누가 하나
"모델을 학습시켰다"사전 학습, 사후 학습바뀜모델 회사
"우리 데이터로 학습시켰다"파인튜닝바뀜 (사본)우리
"규정 학습시켜 놨어요"컨텍스트에 넣기, 인컨텍스트 러닝그대로우리
"내 대화가 학습된대"다음 모델의 학습 데이터다음 모델에서 바뀜모델 회사

우리가 매일 쓰는 LLM은 쓰는 동안 배우지 않는다. 처음 생각이 맞다. 다만 "학습은 의미가 없다"는 조금 고쳐야 한다. 우리가 할 수 있는 진짜 학습이 있고(파인튜닝), 학습이 아닌데 학습처럼 보이는 것이 있고(컨텍스트), 내가 하지 않았는데 일어나는 학습이 있다(다음 모델).

학습을 "경험으로 다음 행동이 바뀌는 것"으로 넓게 보면, 배우는 건 모델이 아니라 모델 바깥이다. 상담원이 고친 답장이 예시로 쌓이고, 실패한 문의가 골든셋에 들어가고, Claude Code가 "커밋 메시지는 영어로"라는 메모를 남긴다. 가중치는 그대로인데 챗봇은 지난주보다 나아졌다. 이 학습은 전부 글자로 남아 있어서 사람이 읽고, 고치고, 지울 수 있다. 가중치 안에 들어간 학습으로는 할 수 없는 일이다.

다음에 누가 "학습시켰어요"라고 하면 하나만 물어보자. 가중치가 바뀌었나요, 컨텍스트에 넣었나요? 규정이 바뀌는 날 해야 할 일이 그 대답에 따라 완전히 달라진다.

참고 자료

Zero's Blog

소프트웨어를 만들며 배우고 인생을 살면서 느끼는 것들을 기록해요.

© 2026 Yeongsu Han (zero). All rights reserved.