DPO(Direct Preference Optimization)와 SFT(Supervised Fine-Tuning)의 차이점

대규모 언어 모델(LLM)을 개발하거나 기존 모델을 개선할 때, 주로 사용되는 학습 방식은 SFT(Supervised Fine-Tuning)DPO(Direct Preference Optimization)이다. 이 두 방법은 학습 목표와 접근 방식에서 큰 차이가 있으며, 각각의 장점과 단점을 고려하여 상황에 맞게 선택해야 한다. 이 글에서는 두 방법의 특징과 차이를 설명하고, 어떤 상황에서 각각의 방법이 적합한지 알아본다.


 

SFT란 무엇인가?

SFT(Supervised Fine-Tuning)는 지도 학습 방식을 기반으로 모델을 미세 조정하는 방법이다. 주어진 입력(Prompt)에 대한 "정답" 또는 "모범 응답" 데이터를 학습하여 모델이 특정 작업에서 더 나은 성능을 발휘하도록 만든다. 이 과정에서 모델의 모든 파라미터를 업데이트하여 새로운 데이터 분포에 맞게 모델을 조정한다.

SFT의 주요 특징

  1. 데이터 형식

    • Prompt와 그에 대한 단일 응답(정답)이 포함된 데이터가 필요하다.
    • 예시:
      {
        "prompt": "이순신 장군이 7년간 이룬 전과는 무엇인가요?",
        "response": "이순신 장군은 7년간 23전 23승의 전무후무한 기적을 이뤄냈습니다."
      }
  2. 학습 방식

    • Cross-Entropy Loss를 사용하여 모델 출력과 정답 간의 차이를 최소화한다.
    • 모델은 데이터를 기반으로 가장 가능성이 높은 응답을 생성하도록 학습된다.
  3. 장점

    • 특정 Task에서 강력한 성능 향상 가능.
    • 구조화된 데이터가 있는 경우 안정적이고 효율적으로 학습된다.
  4. 단점

    • 모델이 데이터에 과도하게 의존할 수 있다.
    • 데이터가 부족하거나 편향된 경우 성능에 제한이 있다.

 

DPO란 무엇인가?

DPO(Direct Preference Optimization)는 모델이 사용자 선호도를 학습하여 "더 나은" 응답을 생성하도록 만드는 학습 방법이다. 단순히 정답을 학습하는 것이 아니라, 응답 간의 상대적인 비교를 통해 선호도를 반영한다. 이 과정은 사용자 피드백을 기반으로 이루어지며, 모델이 사용자가 선호하는 방향으로 최적화되도록 한다.

DPO의 주요 특징

  1. 데이터 형식

    • Prompt와 두 개 이상의 응답, 그리고 각 응답에 대한 선호도 정보가 포함된 데이터가 필요하다.
    • 예시:
      {
        "prompt": "이순신 장군이 7년간 이룬 전과는 무엇인가요?",
        "response_1": "이순신 장군은 7년간 23전 23승의 전무후무한 기적을 이뤄냈습니다.",
        "response_2": "이순신 장군은 7년간 15승 8패의 성적을 거두었습니다.",
        "preference": 0
      }
      위 데이터에서 preference0인 경우, response_1이 더 선호된다는 의미이다.
  2. 학습 방식

    • 응답 간의 선호도 차이를 계산하여, 좋은 응답이 더 높은 점수를 얻도록 학습한다.
    • 주로 Log-Sigmoid Loss 또는 Ranking Loss를 사용한다.
  3. 장점

    • 사용자 피드백을 반영하여 더 자연스럽고 선호도 높은 응답을 생성한다.
    • 모델이 특정 데이터 분포에 갇히지 않고 더 유연하게 동작한다.
  4. 단점

    • 선호 데이터를 생성하는 데 비용이 많이 들 수 있다.
    • SFT보다 데이터 준비 과정이 복잡하다.

 

SFT와 DPO의 차이점

특징 SFT DPO
학습 목적 정답 학습 사용자 선호 학습
데이터 형식 Prompt-Response 데이터 Prompt-Response + 선호도 비교 데이터
손실 함수 Cross-Entropy Loss Log-Sigmoid Loss (Ranking Loss)
출력 성격 데이터 의존적 사용자 중심적
적용 사례 새로운 Task 학습 대화 품질 개선, 사용자 피드백 반영

 

SFT와 DPO를 결합하면 어떨까?

SFT와 DPO는 서로 배타적인 방법이 아니며, 결합하여 사용할 수 있다. 일반적으로 SFT로 모델의 기본 능력을 학습시킨 후, DPO를 사용하여 사용자 선호도를 반영한 미세 조정을 수행하는 방식이 효과적이다.

  1. SFT의 역할

    • 모델이 기본적인 데이터 분포를 학습하고, 특정 Task에서 안정적으로 동작하도록 만든다.
  2. DPO의 역할

    • 사용자 피드백을 반영하여 모델이 더 나은 응답을 생성하도록 조정한다.

이러한 조합은 특히 대화형 AI개인화된 서비스를 제공하는 모델에서 큰 효과를 발휘한다.


 

SFT와 DPO는 언제 사용해야 할까?

  • SFT가 적합한 상황

    • 새로운 Task에 대해 모델을 처음 학습시키는 경우
    • 구조화된 데이터가 충분히 있는 경우
  • DPO가 적합한 상황

    • 사용자 피드백을 통해 모델을 개선하고 싶은 경우
    • 여러 가능한 응답 중 더 선호되는 응답을 선택해야 하는 경우

 

결론

SFT와 DPO는 모델 학습에서 각각 다른 목적과 접근 방식을 가지고 있다. SFT는 기본 성능 개선에, DPO는 사용자 중심의 응답 최적화에 적합하다. 두 방법의 특징을 잘 이해하고, 상황에 맞게 선택하거나 결합함으로써 더욱 효과적인 모델을 개발할 수 있다. 특히, 사용자 경험이 중요한 애플리케이션에서는 SFT와 DPO를 결합한 전략이 필수적일 수 있다.