상세 컨텐츠

본문 제목

레이블이 없는 데이터를 활용한 사전 훈련

Developer/IT 도서

by cepiloth 2025. 11. 28. 16:04

본문

728x90
반응형

텍스트 생성 모델 평가하기


주요 내용: LM이 생성한 텍스트의 품질 평가 방법을 알아보고, LM을 사전 훈련하는 방법을 준비합니다. 사전 훈련(Pre-training)은 기본적인 언어 이해를 위한 첫 단계 훈련을 의미하며, 이후 미세 튜닝을 통해 구체적인 목적에 활용됩니다.

  1. 텍스트 생성 과정 복습: 이전에 구현한 GPT 모델을 사용하며, 입력 텍스트를 토크나이저를 사용해 토큰 ID로 변환합니다. 이 토큰 ID를 GPT 모델에 전달하면, 모델은 각 토큰마다 어휘 사전 크기(예: 5257개)만큼의 벡터(로짓)를 출력합니다. 이 로짓 중 가장 큰 값을 가진 토큰 ID를 선택하고, 다시 텍스트로 변환하여 다음 토큰을 생성합니다.

  1. 텍스트 품질 평가 (손실 계산): 모델이 생성한 텍스트의 품질은 크로스 엔트로피 손실(Cross-Entropy Loss)을 사용하여 평가됩니다. 이는 다중 분류 모델의 손실 계산 방식과 동일합니다.

  • 모델 출력 로짓을 소프트맥스 함수를 사용해 확률로 변환합니다.
  • 타깃 토큰에 해당되는 예측 확률을 추출합니다.
  • 이 확률에 로그를 씌우고, 각 토큰별 손실을 평균합니다.
  • 최종적으로 음의 평균 로그 확률을 계산하여 손실을 최소화하는 방향으로 훈련합니다.
  1. 훈련 데이터 준비
  • 모델이 훈련 데이터에만 너무 잘 맞는 과대적합(Overfitting)을 방지하기 위해 훈련 세트와 별도의 검증 세트를 준비합니다.
  • 훈련은 두 세트의 손실 점수 차이가 크게 벌어지지 않을 때까지만 진행하는 것이 좋습니다.
  • 데이터는 토크나이저를 거쳐 토큰 ID로 변환되고, 문맥 길이(시퀀스 길이, 예: 6개 또는 256개)만큼 잘라서 샘플을 만듭니다. GPT 모델의 기본 문맥 크기는 1024이지만, 컴퓨팅 자원 절약을 위해 256 등으로 줄여서 예제를 구성할 수 있습니다.

 

LLM 훈련하기


주요 내용: 모델 훈련 함수를 만들고 텍스트 데이터를 사용해 실제로 모델을 사전 훈련하는 방법을 알아봅니다.

파이토치 훈련 루프 (PyTorch Training Loop): 파이토치에서 모델 훈련은 개발자가 명시적으로 구현해야 하는 것이 특징입니다.

  1. 에포크 반복: 훈련 데이터를 모두 사용하는 단위인 에포크를 여러 번 반복합니다.
  1. 배치 순회: 각 에포크 내에서 데이터 로더를 통해 배치 데이터를 꺼내와 순회합니다.
  1. 그레디언트 초기화: 이전 라운드에서 계산된 그레디언트를 초기화합니다.
  1. 정방향 계산 및 손실 계산: 현재 배치 데이터를 사용하여 모델의 정방향 계산(Forward Pass)을 수행하고 손실을 계산합니다.
  1. 역전파 및 그레디언트 계산: 손실을 역전파(Backpropagation)하여 그레디언트를 계산합니다.
  1. 가중치 업데이트: 옵티마이저를 사용하여 모델의 가중치(Weight)를 업데이트합니다.
  1. 성능 확인: 훈련 중 과대적합 여부를 확인하기 위해 훈련 세트와 검증 세트의 손실을 출력합니다.
  1. 샘플 텍스트 생성: 한 에포크가 끝날 때마다 샘플 텍스트를 생성하여 모델 개선 정도를 시각적으로 확인합니다.

 

무작위성을 제어하기 위한 디코딩 전략


주요 내용: 단순히 가장 확률이 높은 토큰을 선택하는 그리디 디코딩 방식 대신, 더 그럴듯하고 자연스러운 텍스트를 생성하기 위해 확률적 요소를 가미하는 디코딩 전략을 알아봅니다.

  1. 온도 스케일링 (Temperature Scaling)

  • 온도 파라미터를 사용하여 모델 출력 로짓의 확률 분포를 조절하는 기법입니다. 이 개념은 열역학의 엔트로피에서 유래했습니다.
  • 원리: 모델이 출력한 로짓을 온도 값으로 나눈 후 소프트맥스 함수를 통과시켜 확률 분포를 조정합니다.
  • 온도가 높을수록: 엔트로피가 증가하여 **다양성(무작위성)**이 높아지고 확률값이 고르게 분포됩니다. 이는 더 창의적인 선택을 유도하지만, 너무 높으면 말이 안 되는 텍스트가 생성될 수 있습니다.
  • 온도가 낮을수록: 확률이 가장 큰 토큰에 집중되어 결정론적인 결과가 만들어집니다.

 

  1. 탑케이 샘플링 (Top-K Sampling)

  • 모델이 출력한 로짓 중 확률이 가장 높은 최상위 K개의 토큰만 후보로 선택합니다.
  • 선택되지 않은 나머지 토큰의 로짓은 음의 무한대 값으로 마스킹하여 Softmax 통과 시 확률이 0이 되게 합니다.
  • 남은 K개의 후보 중에서 확률에 기반하여 무작위로 하나를 선택합니다.
  • 이 방식은 이상한 토큰이 생성되는 것을 방지하면서 적절한 다양성을 유지할 수 있습니다.
  • 참고: 탑피 샘플링이나 빔 서치와 같은 다른 디코딩 전략도 있습니다.

 

가중치 저장/로드 및 사전 훈련된 가중치 로드


해당 절에서는 훈련된 모델의 가중치를 저장하고 로드하는 방법OpenAI의 사전 훈련된 GPT-2 모델의 가중치를 로드하는 방법을 다룹니다.

  • 사전 훈련된 가중치를 로드하는 과정은 클래스에 맞춰 수동으로 가중치를 로드해야 하기 때문에 번거로울 수 있으나, 이는 구현의 원리를 배우려는 목적 때문입니다.
  • 실제 미세 튜닝 작업 시에는 트랜스포머스 라이브러리나 케라스 NLP와 같은 고수준 라이브러리를 사용하여 모델 클래스 정의와 가중치 로드를 한 번에 간단하게 처리하는 것이 일반적입니다
728x90
반응형

관련글 더보기

댓글 영역