DPO 란 무엇인가요? (개념)

한 줄 요약: DPO 는 RLHF 의 복잡한 과정을 단순화하여, 인간의 선호도를 LLM 에 직접적으로 학습시키는 보다 가볍고 안정적인 얼라인먼트 (Alignment) 기법입니다.

상세 설명:
거대 언어 모델 (LLM) 을 우리가 원하는 방향 (유용하고, 정직하며, 무해하게) 으로 미세조정하는 것을 ‘얼라인먼트’라고 합니다. 기존에는 RLHF(Reinforcement Learning from Human Feedback) 라는 강화학습 기반의 방법이 주로 사용되었습니다.

하지만 RLHF 는 과정이 복잡하고 비용이 많이 든다는 단점이 있었습니다. DPO 는 이러한 RLHF 의 단점을 해결하기 위해 등장했으며, 별도의 보상 모델 없이 인간의 선호도 데이터를 가지고 LLM 을 직접 최적화하는 방식입니다.


B) DPO 가 왜 필요한가요? (등장 배경: RLHF 의 한계)

면접관이 “DPO 가 왜 나왔나요?” 라고 물으면 RLHF 의 문제점을 먼저 언급하는 것이 좋습니다.

RLHF 의 문제점 (3 단계의 복잡성):

  • SFT (Supervised Fine-Tuning): 우선 좋은 답변들로 모델을 1 차 학습시킵니다.
  • 보상 모델 (Reward Model) 학습: 사람이 여러 답변 중 더 선호하는 답변 (Chosen) 과 덜 선호하는 답변 (Rejected) 을 고르면, 이 데이터를 가지고 “어떤 답변이 좋은 답변인지” 점수를 매기는 별도의 ‘보상 모델’을 만듭니다.
  • 강화학습 (PPO): 이 보상 모델을 심판처럼 사용하여, LLM 이 더 높은 점수 (보상) 를 받는 답변을 생성하도록 강화학습 (주로 PPO 알고리즘 사용) 을 진행합니다.

이 과정은 매우 복잡하고, 여러 모델을 학습시켜야 하므로 컴퓨팅 자원이 많이 들며, 강화학습 과정이 불안정하여 튜닝이 어렵다는 큰 단점이 있었습니다.


C) DPO 는 어떻게 작동하나요? (핵심 원리)

DPO 는 RLHF 의 복잡한 2, 3 단계를 하나로 합친 것입니다.

DPO 의 핵심 아이디어:
“결국 우리가 원하는 것은 ‘선호하는 답변 (Chosen)’이 나올 확률은 높이고, ‘선호하지 않는 답변 (Rejected)’이 나올 확률은 낮추는 것이다. 그렇다면 굳이 보상 모델을 만들 필요 없이, 이 목표를 직접 달성하도록 모델을 학습시키면 되지 않을까?”

작동 방식:

  • 데이터 준비: RLHF 와 동일하게, 하나의 프롬프트에 대해 사람이 더 선호한 답변 (Chosen)덜 선호한 답변 (Rejected) 으로 구성된 데이터셋을 준비합니다.
  • 직접 최적화: DPO 는 이 데이터셋을 가지고 하나의 손실 함수 (Loss Function) 를 사용해 LLM 을 직접 학습시킵니다.
    • 이 손실 함수는 ‘선호된 답변 (Chosen)’의 생성 확률은 높이고, ‘비선호된 답변 (Rejected)’의 생성 확률은 낮추는 방향 으로 모델의 파라미터를 업데이트합니다.
    • 동시에, 기존 SFT 모델의 지식에서 너무 벗어나지 않도록 규제 (Regularization) 하는 역할도 함께 수행합니다.

이 덕분에 별도의 보상 모델 학습이나 복잡한 강화학습 파이프라인 없이, 선호도 데이터를 가지고 분류 문제 풀듯이 간단하게 모델을 미세조정할 수 있습니다.


D) DPO 의 장점과 단점

구분설명
장점1. 단순성과 효율성: RLHF 의 3 단계 과정을 1 단계 (SFT 후 DPO) 로 크게 단축하여 구현이 쉽고 빠릅니다.
2. 안정성: 하이퍼파라미터 튜닝이 까다로운 강화학습 (PPO) 을 사용하지 않아 학습 과정이 훨씬 안정적입니다.
3. 비용 절감: 여러 모델을 학습시킬 필요가 없어 컴퓨팅 자원과 시간이 절약됩니다.
4. 높은 성능: RLHF 와 비슷하거나 더 나은 성능을 보이는 경우가 많다고 알려져 있습니다.
단점1. 고품질 데이터 의존성: DPO 의 성능은 전적으로 ‘선호/비선호’ 데이터셋의 품질에 달려있습니다. 데이터에 편향이 있거나 품질이 낮으면 모델 성능이 크게 저하됩니다.
2. 탐험 (Exploration) 의 한계: RLHF 의 강화학습은 새로운 답변을 ‘탐험’하며 더 나은 결과를 찾을 가능성이 있지만, DPO 는 주어진 데이터 내에서 최적화하므로 데이터에 없는 창의적인 답변을 학습하기는 어렵습니다.

E) 수식을 통한 DPO 설명

DPO 가 하려는 것은 아주 간단합니다.

(우리가 훈련시킬 LLM 이) ‘선호 답변 (Chosen, )’을 생성할 확률은 높이고, ‘비선호 답변 (Rejected, )’을 생성할 확률은 낮추고 싶다.

이것을 수식으로 표현하면 다음과 같습니다.

  • : 우리가 던진 질문 (프롬프트)
  • : 더 좋은 답변 (Winner)
  • : 더 나쁜 답변 (Loser)
  • : 우리 모델 () 이 특정 답변을 생성할 확률

E.1) DPO 의 천재적인 발상: “보상 모델”을 “확률의 비율”로 대체하기

기존 RLHF 는 이 목표를 달성하기 위해 ‘보상 모델 (Reward Model)’  을 만들었습니다. 그리고  이 되도록 학습시켰죠.

DPO 는 “어차피 보상 모델이 할 일은 두 답변의 좋고 나쁨을 구별하는 것뿐인데, 굳이 별도 모델을 만들어야 할까?” 라는 질문에서 시작합니다.

DPO 는 보상  을 다음과 같이 간접적으로, 우리 모델의 확률을 이용해 정의합니다.

이 수식이 DPO 의 심장입니다. 하나씩 뜯어보죠.

  • : DPO 가 생각하는 암시적 (implicit) 보상 점수.
  • 현재 훈련 중인 우리 모델이 답변 y 를 내놓을 확률.
  • SFT 만 마친 참조 (reference) 모델이 답변 y 를 내놓을 확률. (우리의 ‘기준점’ 또는 ‘출발선’이 되는 모델)
  • log ( … ): 확률 값의 비율을 다루기 쉽게 로그를 씌운 것입니다.
  • : 얼마나 보상을 강하게 적용할지 조절하는 상수 (하이퍼파라미터).

E.1.1) 이 수식의 의미 (매우 중요!)

이 수식이 말하는 바는 이렇습니다.

“어떤 답변 (y) 에 대한 보상 점수는, 기존 모델 () 에 비해 우리 새 모델 () 이 얼마나 더 그럴듯하다고 생각하는가로 측정하자!”

  • 만약 가  보다 y 를 더 유력하다고 생각하면 (), 로그 안의 값이 1 보다 커져서 보상 점수는 양수 (+) 가 됩니다.
  • 반대로 가  보다 덜 유력하다고 생각하면 (), **보상 점수는 음수 ()**가 됩니다.

즉, 별도의 보상 모델 없이 우리 모델과 기준점 모델의 확률 차이 만으로 ‘보상’을 계산해낸 것입니다.


E.2) 최종 단계: DPO 손실 함수 (Loss Function)

이제 DPO 는 이 암시적 보상 점수를 이용해 최종 목표를 달성합니다.

목표: 

 (선호 답변의 보상이 비선호 답변의 보상보다 커야 한다)

이 목표를 달성하기 위해 아래와 같은 간단한 분류 (Classification) 문제 스타일의 손실 함수를 사용합니다.

이것도 하나씩 뜯어보면 아주 쉽습니다.

  • 두 답변의 보상 점수 차이. 우리는 이 값이 최대한 커지길 원합니다.
  • 시그모이드 (Sigmoid) 함수. 어떤 값이든 0 과 1 사이의 값으로 바꿔줍니다. 보상 차이가 클수록 1 에 가까워지고, 작거나 음수이면 0 에 가까워집니다.
  • 로그 손실 함수. 분류 문제에서 정답을 맞혔을 때 손실을 0 으로, 틀렸을 때 손실을 무한대로 만드는 역할을 합니다.
    • 우리의 목표 (보상 차이가 큼) 가 달성되면, 시그모이드 값은 1 에 가까워지고, -log(1) 은 0 이 되어 손실 (Loss) 이 0 에 가까워집니다.
    • 반대로 목표가 실패하면 (보상 차이가 작거나 음수), 시그모이드 값은 0 에 가까워지고, -log(0) 은 무한대가 되어 엄청난 페널티 (Loss) 를 받게 됩니다.

결국 모델은 이 Loss_DPO 를 최소화하는 과정에서, 자연스럽게 선호 답변 () 에 대한 확률은 높이고, 비선호 답변 () 에 대한 확률은 낮추도록 스스로를 업데이트하게 됩니다.


E.3) 면접용 한 줄 요약

“DPO 는 어떻게 작동하나요?” 라는 질문에 수식을 곁들여 답한다면:

“DPO 는 별도의 보상 모델 대신, 현재 모델과 기준 모델의 로그 확률 비율을 ‘암시적 보상’으로 정의합니다. 그리고 ‘선호 답변의 암시적 보상’과 ‘비선호 답변의 암시적 보상’ 간의 차이를 최대화하는 방향으로, 간단한 로지스틱 회귀와 유사한 손실 함수를 사용해 모델을 직접 최적화합니다. 이 과정에서 복잡한 강화학습 없이도 RLHF 와 동일한 목표를 효율적으로 달성할 수 있습니다.”


F) 면접 예상 질문 & 모범 답변

Q1. “DPO 에 대해 아는 대로 설명해주세요. RLHF 와 비교해서 설명해주시면 더 좋습니다.”

A: “네, DPO(Direct Preference Optimization) 는 LLM 을 인간의 선호도에 맞게 조정하는 얼라인먼트 기법 중 하나입니다. 기존의 RLHF 는 SFT, 보상 모델 학습, 강화학습이라는 3 단계의 복잡한 파이프라인을 거쳐야 해서 비용과 시간이 많이 들고 학습이 불안정하다는 단점이 있었습니다. DPO 는 이러한 문제를 해결하기 위해, 별도의 보상 모델 없이 ‘선호/비선호’ 쌍으로 이루어진 데이터셋을 사용하여 LLM 을 직접 최적화하는 방식입니다. 이를 통해 RLHF 보다 훨씬 단순하고 안정적이며 효율적으로 비슷한 수준의 얼라인먼트 성능을 달성할 수 있습니다.”

Q2. “DPO 의 가장 큰 장점은 무엇이라고 생각하시나요?”

A: “DPO 의 가장 큰 장점은 단순성과 안정성이라고 생각합니다. 복잡한 강화학습 파이프라인을 하나의 손실 함수 기반의 학습으로 대체함으로써, 적은 컴퓨팅 자원으로도 안정적인 학습이 가능해졌습니다. 이는 대규모 팀이 아니더라도 고품질의 LLM 얼라인먼트를 시도할 수 있게 만들어, 기술의 접근성을 높였다는 점에서 큰 의미가 있다고 봅니다.”

Q3. “만약 DPO 를 실제 프로젝트에 적용한다면, 어떤 점을 가장 중요하게 고려해야 할까요?”

A: “데이터의 품질과 다양성을 가장 중요하게 고려해야 합니다. DPO 는 전적으로 선호도 데이터셋에 기반하여 학습하므로, 데이터의 품질이 곧 모델의 성능으로 직결됩니다. 따라서 편향되지 않고, 다양한 시나리오를 포괄하는 고품질의 ‘선호/비선호’ 데이터를 구축하는 데 가장 많은 노력을 기울일 것입니다. 가비지 인, 가비지 아웃 (Garbage In, Garbage Out) 원칙이 가장 뚜렷하게 나타나는 부분이기 때문입니다.”

Q4. (심화) “DPO 가 RLHF 를 완전히 대체할 수 있다고 보시나요?”

A: “현재 많은 오픈소스 모델들이 DPO 를 채택하고 있고 그 효율성이 입증되었기 때문에, 상당 부분 대체하고 있다고 생각합니다. 하지만 ‘완전한 대체’는 아직 시기상조일 수 있습니다. 예를 들어, 매우 복잡하고 미묘한 작업을 위해서는 정교하게 튜닝된 RLHF 의 탐험적 능력이 더 유리할 수도 있습니다. DPO 는 주어진 데이터 내에서의 최적화에 강점이 있기 때문입니다. 현재는 DPO 의 단점을 보완한 IPO, KTO 같은 새로운 기법들도 등장하고 있어, 상황과 목적에 따라 최적의 얼라인먼트 기법을 선택하는 트레이드오프 관계가 계속될 것으로 예상합니다.”