하나의 언어 모델을 보상 모델로도 활용하는 DPO (Direct Preference Optimization)

jihyelee·2024년 3월 30일
1

up-to-date-ai

목록 보기
1/9

RLHF (Reinforcement Learning from Human Feedback)

  • 일반적인 RLHF 학습방법
      1. 지도학습 방식의 파인튜닝 (supervised fine-tuning)
      1. 선호하는 정답을 가진 데이터를 지정
      1. 선호 데이터를 기반으로 보상 모델을 학습
      1. 강화학습을 기반으로 한 최적화 단계
      • KL-divergence 제약을 바탕으로 보상이 최대화되도록 학습
  • RLHF의 단점
    • 별도의 보상모델을 학습하는 과정 필요 (여러 개의 언어모델 학습)
    • 학습을 위해선 언어모델(LM Policy)로부터 반복적으로 샘플링을 해야 해 연산 비용 증가

DPO (Direct Preference Optimization)

  • DPO의 학습 방법
      1. 지도학습 방식의 파인튜닝 (supervised fine-tuning)
      1. 선호하는 정답을 가진 데이터를 지정
      1. 선호 데이터를 기반으로 직접 최적화 진행
  • DPO의 장점
    • 별도의 보상모델을 학습할 필요 없이 언어모델을 직접 최적화
  • DPO loss로 살펴보는 직관적 해석
    • r은 내재적으로 정의된 보상을 의미
    • DPO loss는 선호되는 응답인 y_w의 확률을 높이고, 선호되지 않는 응답인 y_l의 확률을 낮춤
    • 데이터 예시들은 내재적 보상 모델의 예측의 틀린 정도에 따라 가중치 부여
      • 보상 예측이 틀린다면 더 높은 가중치를 부여
      • 해당 가중치가 없을 경우 언어모델의 성능이 떨어짐 (중요한 계수)
      • KL-diversity 제약의 중요성을 설명해준다고 해석할 수도 있음
      • 해당 가중치는 beta의 크기에 따라 스케일링됨

HuggingFace에서 DPO 구현하기

TRL에 있는 DPOTrainer 활용

  • 해당 Trainer를 사용하기 위해서는, 특정한 방식의 데이터 형식이 필요
    • prompt: 텍스트 생성을 위한 추론 시 모델에게 주어지는 맥락 프롬프트
    • chosen: 프롬프트에 적절한 선호되는 응답
    • rejected: 프롬프트에 적절하지 않은, 선호되지 않는 응답
dpo_trainer = DPOTrainer(
    model,                 # 파인튜닝 시 사용하는 기본 모델
    model_ref,             # 일반적으로 기본 모델의 복사본
    beta=0.1,              # DPO loss의 하이퍼파라미터
    train_dataset=dataset, # DPO 데이터셋
    tokenizer=tokenizer,   # 토크나이저
    args=training_args,    # 배치사이즈, 학습률 등
)
  • 하이퍼파라미터 beta
    • 일반적으로 0.1-0.5 사이 범위
    • 참조 모델(reference model)에 얼마나 주의를 기울일 것인가
      • 참조 모델이란, DPO를 진행하기 전 SFT(supervised fine-tuning) 단계를 거친 기존 모델이라고 생각할 수 있음
    • beta가 작을수록 참조 모델을 더욱 무시한다고 보면 됨

HuggingFace 블로그 링크: https://huggingface.co/blog/dpo-trl
DPO 논문 링크: https://arxiv.org/pdf/2305.18290.pdf

profile
Graduate student at Seoul National University, majoring in Artificial Intelligence (NLP). Currently AI Researcher at LG CNS AI Lab

4개의 댓글

comment-user-thumbnail
2024년 5월 14일

그렇다면 model_ref 말고 model은 SFT를 거치지 않는걸까요?

1개의 답글