AI VIDEO BRIEFING

LLM 분류 미세조정 입문: 사전학습 GPT를 스팸 이메일 분류기로 바꾸는 실전 코딩 강의 6편

세바스찬 라슈카가 사전학습한 GPT 모델의 거대한 출력층을 두 개 노드로 교체하고 마지막 트랜스포머 블록만 학습시켜, 스팸과 정상 메시지를 가려내는 분류기로 미세조정하는 과정을 코드와 함께 단계별로 설명한다.

사전학습 GPT를 스팸 분류기로 바꾸기: 밑바닥부터 만드는 LLM 6편 영상 대표 이미지

핵심 메시지

  • 사전학습(pre-training)은 끝이 아니라 시작이며, 그 위에 분류 같은 실제 응용을 얹는 것이 미세조정이다.
  • 챗봇처럼 만능일 필요 없이 '스팸이냐 아니냐'만 예측하면 되는 업무에는 작은 LLM 분류기가 더 저렴하고 데이터 효율적이다.
  • 약 5만 개 어휘를 뱉던 거대한 출력층을 클래스 수(여기선 2개)만큼의 작은 출력층으로 교체하는 것이 핵심 구조 변경이다.
  • 인과적 어텐션 마스크 덕분에 마지막 토큰이 전체 문맥 정보를 담으므로, 분류는 마지막 토큰 위치만 보고 판단한다.
  • 전체를 다 학습시키기보다 마지막 블록·층만 미세조정해도 정확도는 비슷하고 학습 시간은 크게 절약된다.

쉽게 이해하기

이 영상은 '밑바닥부터 만드는 대규모 언어모델' 코딩 시리즈의 6편이다. 5편에서 GPT 모델을 사전학습했지만, 사전학습된 모델(기반 모델·파운데이션 모델)은 그 자체로 끝이 아니라 더 흥미로운 응용을 위한 토대일 뿐이다. 저자 세바스찬 라슈카는 이번 편에서 사용자의 지시를 따르게 만드는 '지시 미세조정'(7편) 대신, 더 단순한 '분류 미세조정'을 먼저 다룬다.

데이터셋은 UCI에서 가져온 SMS 스팸 모음으로, 5,572개의 문자 메시지가 정상(ham)과 스팸(spam)으로 라벨링돼 있다. 정상 메시지가 훨씬 많은 불균형 데이터라, 스팸 개수(747개)에 맞춰 정상 메시지를 줄여 균형 데이터셋을 만들고 라벨을 각각 0과 1로 바꾼다. 이후 학습·검증·테스트를 70/10/20으로 나눈다.

메시지 길이가 제각각이라 배치를 만들려면 길이를 맞춰야 한다. 그래서 가장 긴 시퀀스(120토큰)에 맞춰 문장 끝 토큰(50256)으로 패딩하고, tiktoken 토크나이저와 배치 크기 8로 데이터로더를 구성한다.

그다음 OpenAI의 사전학습 GPT-2(1억 2,400만 파라미터) 가중치를 불러온 뒤, 768→50,257이던 거대한 출력층을 768→2인 작은 출력층으로 교체한다. 모든 파라미터를 먼저 동결한 다음 마지막 트랜스포머 블록, 마지막 층 정규화, 새 출력층만 학습 가능하게 푼다. 분류 판단은 앞선 모든 토큰의 정보를 담은 마지막 토큰 위치만 사용한다.

평가는 정확도로 추적하며, 학습 전에는 무작위 추측 수준인 46~50%에서 시작한다. 손실은 교차 엔트로피를 쓰고 학습 루프는 5편과 거의 같다. 라슈카는 더 많은 층을 학습할수록 정확도가 오르지만 곧 수익 체감에 이른다는 점(훈련 정확도 76%→87.5%→90%, 학습 시간 2.5분→7분)을 보여주며, 작은 문제에는 마지막 층만 미세조정하는 편이 합리적이라고 설명한다.

주요 인사이트

  • 스팸 분류는 전통적으로 나이브 베이즈·로지스틱 회귀 같은 가볍고 빠른 모델로도 잘 풀리며, 이런 단순 모델은 성능 기준선(baseline)으로서 여전히 유용하다.
  • 불균형 데이터에서는 정확도만으로 평가하기 어렵지만, 라슈카는 강의 단순화를 위해 정상 메시지를 스팸 수에 맞춰 줄여 균형 데이터셋으로 만들었다.
  • 이진 분류라면 이론상 출력 노드 1개로 충분하지만, 코드를 4개 클래스 등 다른 과제에도 일반화하기 위해 클래스 수만큼(2개) 두었다.
  • 무작위 가중치로 처음부터 학습하기보다 사전학습 가중치를 재사용하는 편이 대체로 낫다. 트랜스포머 블록이 이미 특징 추출을 학습해 두었기 때문이다.
  • 검증셋을 반복해서 쓰면 편향이 생기므로, 최종 성능은 한 번도 쓰지 않은 테스트셋으로 측정해야 한다.

자주 묻는 질문

이 영상에서 다루는 미세조정은 어떤 종류인가요?

사전학습된 GPT 모델을 스팸/정상 이진 분류기로 바꾸는 '분류 미세조정'입니다. 사용자의 지시를 따르게 만드는 '지시 미세조정'은 다음 편(7편)에서 다룬다고 설명합니다.

왜 출력층을 5만여 개에서 2개로 줄이나요?

원래 GPT는 어휘 전체(약 50,257개 토큰)를 출력하지만, 스팸이냐 아니냐만 가리면 되므로 클래스 수인 2개 노드만 있으면 충분하기 때문입니다.

왜 마지막 토큰만 보고 분류하나요?

인과적 어텐션 마스크 때문에 각 토큰은 자기 이전 토큰들만 참조하는데, 마지막 토큰은 앞선 모든 토큰의 정보를 담고 있어 분류에 가장 효율적이기 때문입니다.

모델 전체를 학습시켜야 하나요?

아닙니다. 마지막 트랜스포머 블록과 출력층 정도만 학습해도 정확도는 비슷하고, 전체를 학습할 때보다 시간이 크게 줄어든다고 설명합니다.

원문과 출처

이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.

YouTube 원본 영상 보기 ↗

관련 AI 소식