Day4

개굴이·어제

[TIL] NLP Task 설계와 LLM의 학습·생성 흐름

📅 2026.10.06

오늘은 NLP Task에 맞게 입력과 출력을 설계하는 방법, 그리고 언어 모델이 텍스트를 처리하고 생성하는 과정을 배웠다. 사전학습 모델을 활용하고 미세조정하는 이유도 함께 정리했다.


1. 자연어와 NLP Task

자연어는 한국어·영어처럼 사람들이 의사소통하며 자연스럽게 형성한 언어다. 중의성, 문맥 의존성, 표현의 다양성, 생략 등의 특징이 있다.

“배가 크다”는 여러 의미로 해석할 수 있고, “여기 춥네”는 상황에 따라 창문을 닫아 달라는 요청일 수도 있다.

NLP는 이런 언어의 구조와 의미를 분석·변환·생성하는 분야다. 컴퓨터 맥락에서는 명시적인 기호와 문법 규칙으로 정의한 형식 언어와 대비한다.

Task를 이해해야 하는 이유

같은 텍스트라도 목표에 따라 필요한 결과가 달라진다.

  • 감정 분석: 리뷰 → 긍정·중립·부정
  • 개체명 인식: 문장 → 사람·장소·기관 등의 이름과 종류
  • 번역: 원문 → 다른 언어의 문장
  • 요약: 긴 문서 → 핵심 내용을 담은 짧은 글
  • 질문 답변: 질문과 관련 문서 → 답변
  • 검색: 검색어 → 관련 문서 목록

Task를 알아야 데이터, 출력 형식, 학습 목표, 평가 기준을 정할 수 있다. Transformer나 LLM은 도구이고, Task는 그 도구가 해결해야 할 문제다.

NLU와 NLG

  • NLU: 언어의 의미와 의도를 파악하는 것
  • NLG: 전달할 내용을 자연어로 표현하는 것

“NLG는 NLU가 전제된다”는 말은 적절한 생성에 내용과 맥락의 파악이 중요하다는 뜻이다. 별도의 이해 모듈이 반드시 필요한 것은 아니며, 숫자 데이터를 문장으로 바꾸는 생성도 가능하다.

여러 NLP Task를 입력 → 출력 텍스트라는 생성 문제로 표현할 수 있다. 하지만 유창한 출력이 사실성이나 정확한 이해를 보장하지는 않는다. 원문 왜곡, 형식 위반, 오류 누적과 평가의 어려움도 고려해야 한다.


2. 텍스트 처리 파이프라인

모델에 텍스트를 넣을 때는 다음 흐름을 거친다.

텍스트 → 토큰화 → 토큰 ID → 임베딩 벡터 → 문맥 처리 → 출력

  • Tokenizing: 텍스트를 토큰으로 나눈다. 토큰은 단어뿐 아니라 서브워드·문자·바이트일 수도 있다.
  • Encoding: 모델이 사용할 표현으로 바꾼다. 토크나이저에서는 주로 토큰을 ID로 변환하는 것을 뜻한다.
  • Vectorization: 텍스트를 숫자 배열로 표현한다. TF-IDF와 학습된 임베딩 등이 있다.

토큰 ID는 식별 번호이고, 임베딩은 계산에 사용하는 벡터다. 번호가 가깝다고 의미가 가까운 것은 아니다. Transformer에서는 기본 임베딩을 이후 층들이 문맥에 맞게 갱신한다.

Inference와 Decoding

Inference는 학습된 모델에 새 입력을 넣어 결과를 얻는 과정이다. 일반적으로 파라미터를 바꾸지 않는다.

Decoding은 두 의미로 사용된다.

  1. 확률을 바탕으로 다음 토큰을 선택하는 과정
  2. 토큰 ID를 사람이 읽는 텍스트로 복원하는 과정

Greedy는 가장 높은 확률의 토큰을 선택하고, Sampling은 확률 분포에 따라 토큰을 뽑는다. tokenizer.decode()는 보통 두 번째 의미다.


3. 정답과 모델 출력 설계

모델을 설계할 때는 다음 순서로 생각할 수 있다.

Task 정의 → 정답 Y 설계 → 모델 출력 설계 → 손실 함수 설계 → 모델 설계

Classification과 Regression

  • Classification: 정해진 범주를 선택한다. 감정 분석은 부정·중립·긍정 중 하나를 예측한다.
  • Regression: 숫자의 크기와 차이가 의미 있는 값을 예측한다. 만족도 4.2점이나 예상 기온이 예시다.

분류의 정답이 긍정=2라고 해서 모델이 숫자 2를 직접 출력해야 하는 것은 아니다. 범주별 점수 3개를 출력한 뒤 확률로 변환하고, 가장 높은 범주를 선택할 수 있다.

즉, 정답 Y의 형태와 모델의 직접 출력 형태는 다를 수 있다.

Summarization이라면?

생성형 요약의 정답은 요약문의 토큰 ID 시퀀스다. 모델은 각 생성 위치에서 다음 토큰 후보 전체에 대한 점수를 출력한다.

원문 + 지금까지의 요약 → 다음 토큰 확률 → 토큰 선택 → 반복

각 단계는 토큰 분류처럼 볼 수 있지만, 전체 Task는 가변 길이 시퀀스 생성이다. 학습에는 보통 정답 토큰에 대한 교차 엔트로피를 사용한다.

반면 추출형 요약은 원문에서 중요한 문장을 고르므로, 문장별 선택 여부나 중요도 점수를 출력하도록 설계할 수 있다.


4. Next Token Prediction

GPT 같은 자기회귀 모델은 다음 토큰을 예측하는 과정을 반복해 문장을 생성한다.

문맥 벡터 → Logits → Softmax → 확률 분포 → 토큰 선택

  • Logits: 확률로 변환하기 전의 후보별 점수
  • Softmax: 점수들을 합이 1인 확률로 변환
  • 확률 분포: 어휘 사전의 각 토큰이 다음에 나올 확률

출력층의 계산은 다음처럼 표현할 수 있다.

p = softmax(Wh + b)

여기서 h는 모델이 계산한 문맥 표현이고, W와 b는 학습된 파라미터다. 어휘 크기가 V라면 한 단계의 출력 점수는 V개다.

학습에서는 정답 토큰의 확률을 높이도록 파라미터를 조정하고, 추론에서는 확률을 바탕으로 토큰을 선택한다.

Softmax는 확률을 계산하고, 디코딩은 출력 토큰을 선택한다.


5. LSTM과 Transformer

LSTM

LSTM은 Cell State와 Hidden State, 그리고 게이트를 사용해 이전 정보를 전달하는 RNN 구조다.

  • Forget Gate: 이전 기억을 얼마나 유지할지 결정
  • Input Gate: 새 정보 후보를 얼마나 반영할지 결정
  • Output Gate: 기억을 현재 출력 표현에 얼마나 드러낼지 결정

핵심은 다음 관계다.

새 기억 = 유지한 기존 기억 + 선택한 새 정보

게이트는 현재 입력과 이전 은닉 상태를 바탕으로 학습된다. 장기 의존성 학습을 돕지만 모든 정보를 무한히 기억하는 것은 아니다. 은닉 상태 자체가 토큰 확률은 아니며, 별도의 출력층에서 확률을 계산한다.

Transformer

Transformer는 Self-Attention으로 토큰 간 관계를 계산해 문맥 표현을 만드는 구조다.

순환 계산 없이 토큰 위치의 계산을 병렬화하기 유리해 대규모 학습에 도움이 됐다. 이후 BERT와 GPT 계열을 통해 사전학습 모델의 재사용, 미세조정, 프롬프트 기반 Task 수행이 확산됐다.

다만 사전학습과 문맥 기반 표현이 Transformer에서 처음 시작된 것은 아니다. 또한 학습을 병렬화할 수 있어도, 자기회귀 생성은 보통 토큰을 하나씩 만든다.


6. Pretrained Model과 Fine-tuning

Pretrained Model은 대량의 데이터로 미리 학습된 모델이다. 이미 학습한 언어 표현과 패턴을 새로운 Task에 활용한다.

  • BERT: 가려진 토큰 예측
  • GPT 계열: 다음 토큰 예측

이를 사용하면 처음부터 학습하는 것보다 Task 데이터, 시간, 연산 비용을 줄일 수 있다.

LLM에서는 사전학습을 마친 기본 모델을 Base Model이라고 부른다. 여기에 지시·대화 데이터로 추가 학습해 요청을 따르도록 조정할 수 있다.

Fine-tuning

사전학습 모델을 특정 Task나 분야의 데이터로 추가 학습해 전체 또는 일부 파라미터를 조정하는 과정이다.

예: 사전학습 모델 → 원문·정답 요약문으로 추가 학습 → 요약에 맞게 조정

특정 Task 성능, 전문 용어 적응, 출력 형식과 문체의 일관성을 개선할 수 있다. 다만 효과를 확인하려면 별도의 평가 데이터가 필요하다.

프롬프트는 입력 문맥을 바꾸고, 미세조정은 학습으로 파라미터를 바꾼다.


오늘의 정리

NLP 모델을 이해하려면 구조뿐 아니라 어떤 문제를 풀고, 무엇을 출력하며, 어떤 목표로 학습하는지 함께 봐야 한다.

Task 정의 → 데이터·정답 설계 → 표현 변환 → 모델 계산 → 출력·평가

생성 모델도 이 흐름 안에 있다. 다음 토큰 예측을 반복해 문장을 만들지만, 자연스러운 문장과 올바른 Task 수행은 구분해야 한다. 사전학습과 미세조정을 연결해 보니 모델이 무엇을 배우고 어떻게 활용되는지 더 명확해졌다.

0개의 댓글