00:00:00

Share Your Feedback 🏝️

DPO | Token DPO**

DPO | Token DPO**

MinWoo(Daniel) Park | Tech Blog

Read more
Previous: Benchmark | Python Saga Next: Analyzing | Pythia

DPO | Token DPO**

  • Related Project: Private
  • Category: Paper Review
  • Date: 2024-04-23

Token-level Direct Preference Optimization

  • url: https://arxiv.org/abs/2404.11999
  • pdf: https://arxiv.org/pdf/2404.11999
  • html: https://arxiv.org/html/2404.11999v2
  • abstract: Driven by the surge in code generation using large language models (LLMs), numerous benchmarks have emerged to evaluate these LLMs capabilities. We conducted a large-scale human evaluation of HumanEval and MBPP, two popular benchmarks for Python code generation, analyzing their diversity and difficulty. Our findings unveil a critical bias towards a limited set of programming concepts, neglecting most of the other concepts entirely. Furthermore, we uncover a worrying prevalence of easy tasks, potentially inflating model performance estimations. To address these limitations, we propose a novel benchmark, PythonSaga, featuring 185 hand-crafted prompts on a balanced representation of 38 programming concepts across diverse difficulty levels.

[DPO 관련 수리적 논증 중요 색인마킹] Appendix 참고

[Token level DPO 색인마킹]


Contents

TL;DR


Token-level Direct Preference Optimization: 대규모 언어모델의 세밀한 정렬 최적화

  • 대규모 언어모델(Large Language Models, LLMs)을 휴먼의 선호도와 일치시키기 위한 새로운 접근 방법인 Token-level Direct Preference Optimization(TDPO) 소개
  • 기존 Direct Preference Optimization(DPO) 방법의 한계를 극복하고, 토큰 단위의 KL Divergence 제약을 통해 모델의 성능과 다양성을 균형있게 향상
  • 여러 텍스트 작업에 걸쳐 TDPO의 우수성 검증, 특히 제어된 감정 생성과 단일턴 대화 데이터셋에서 기존 방법들을 상회하는 결과 도출

1. 서론

1.1. 문제 인식

대규모 언어모델들은 다양한 자연어 처리 작업에서 우수한 성능을 보여주고 있지만, 이런 모델들이 휴먼의 의도와 가치를 반영하도록 조정하는 것은 여전히 중요한 연구 주제입니다. 기존의 DPO 방법은 문장 수준에서 KL Divergence을 이용해 모델 학습을 조정하지만, 이런 접근 방식은 발생하는 응답의 토큰별 특성을 고려하지 않아 효율성이 떨어진다는 문제점이 있습니다.

1.2. 선행 연구 및 한계

DPO는 대규모 언어모델을 훈련시키는 효과적인 방법으로서, 참조 LLM에 밀접하게 맞추기 위해 KL Divergence을 사용합니다. 그러나 이 방식은 응답 생성 시 토큰별로 발산을 관리하지 않아, 언어적 다양성 감소를 초래해 모델이 다양하고 효과적인 응답을 생성하는 능력이 저하될 수 있습니다.


2. 방법

2.1. Token-level Direct Preference Optimization (TDPO)

TDPO는 각 토큰에 대해 KL Divergence을 제어함으로써 모델의 성능과 생성 다양성 사이의 균형을 개선하고자 합니다. 이를 위해 다음과 같은 수학적 접근을 사용합니다.

2.1.1. Bellman 방정식과 토큰 수준 보상

TDPO는 각 토큰 생성에 대한 최적의 정책을 도출하기 위해 Bellman 방정식을 적용합니다. 이 방정식은 문장 수준의 보상과 토큰 수준 생성 사이의 연결을 정립합니다.

\[V(s_t) = \max_{a \in A} \left(R(s_t, a) + \gamma \sum_{s_{t+1} \in S} P(s_{t+1} | s_t, a) V(s_{t+1}) \right)\]

상기 식에서 \(V(s_t)\)는 상태 \(s_t\)에서의 가치 함수, \(R(s_t, a)\)는 행동 \(a\)를 취했을 때의 보상, \(\gamma\)는 할인율, \(P\)는 상태 전이 확률을 나타냅니다.

2.1.2. Bradley-Terry 모델과 토큰 수준 적용

Bradley-Terry 모델은 각 토큰 선택의 선호도를 평가하는 데 사용되며, 이는 토큰 수준에서의 KL Divergence 제약을 구현하는 데 중요한 역할을 합니다. 이 모델을 통해 각 토큰에 대한 선호도를 수학적으로 계산하고 최적화할 수 있습니다.

\[P(i > j) = \frac{\exp(\beta_i)}{\exp(\beta_i) + \exp(\beta_j)}\]

상기 식에서 \(P(i > j)\)는 토큰 \(i\)가 토큰 \(j\)보다 선호될 확률, \(\beta_i\)와 \(\beta_j\)는 해당 토큰의 선호도를 나타내는 파라미터입니다.

2.2. 실험 설계 및 결과

TDPO를 다양한 텍스트 작업에 적용하여 실험을 수행하였고, 특히 제어된 감정 생성 및 단일턴 대화 데이터셋에서 우수한 성능을 보여 주었습니다. 이런 결과는 TDPO가 기존 DPO 및 PPO 기반 RLHF 방법들과 비교하여 생성된 응답의 질을 향상시킬 수 있음을 입증합니다.


3. 결론

TDPO는 각 토큰별 KL Divergence을 효과적으로 조절하여 대규모 언어모델을 휴먼의 선호에 더욱 잘 맞추는 방법을 제공합니다. 이 접근 방식은 모델의 언어적 다양성과 정확성을 동시에 개선하는 데 기여할 수 있으며, 더욱 정교하고 세밀한 모델 튜닝 방법으로서의 잠재력을 가집니다.


[참고자료 1] TDPO 상세

1. 문제 정의 및 최적화 목표

1.1. 목표 함수 설정

TDPO는 각 토큰 생성 시점에 대해 최적화된 결정을 내리는 정책(policy)을 학습하는 것을 목표로 합니다. 이를 위해 각 토큰의 선택이 최종 문장의 선호도에 어떤 영향을 미치는지 고려해야 합니다. TDPO는 다음과 같은 목표 함수를 최대화하려고 합니다.

\[J( ext) = \mathbb{E}_{\pi_\theta} \left[ \sum_{t=0}^T \gamma^t R(s_t, a_t) \right]\]

상기 식에서 \(\theta\)는 정책 파라미터, \(\pi_\theta\)는 정책에 의해 정의된 행동 확률 분포, \(R(s_t, a_t)\)는 상태 \(s_t\)에서 행동 \(a_t\)를 취했을 때의 보상, \(\gamma\)는 할인율, \(T\)는 에피소드의 길이입니다.

1.2. KL Divergence 제약

토큰별 정책의 발산을 제어하기 위해, 각 토큰의 선택이 Baseline Model(참조 LLM)의 행동과 얼마나 차이나는지 측정하기 위해 KL Divergence을 사용합니다. 토큰 \(t\)에 대한 KL Divergence는 다음과 같이 정의됩니다.

\[D_{KL}(\pi_{\text{ref}} \| \pi_\theta)(s_t) = \sum_{a \in A} \pi_{\text{ref}}(a | s_t) \log \frac{\pi_{\text{ref}}(a | s_t)}{\pi_\theta(a | s_t)}\]

상기 식에서 \(\pi_{\text{ref}}\)는 참조 정책(e.g., pre-trained 모델의 정책)입니다. 이 발산을 제한하는 것은 정책이 참조 모델과 너무 멀어지지 않도록 하기 위함입니다.


2. Bellman 방정식과 토큰 수준 최적화

2.1. Bellman 방정식의 적용

각 토큰에 대한 최적의 선택을 결정하기 위해 Bellman 최적 방정식을 사용합니다. 이 방정식은 현재 상태에서 최적의 행동을 취했을 때 기대할 수 있는 미래 보상의 총합을 계산합니다.

\[V^*(s_t) = \max_{a_t} \left( R(s_t, a_t) + \gamma \sum_{s_{t+1}} P(s_{t+1} | s_t, a_t) V^*(s_{t+1}) \right)\]

상기 식에서 \(V^*(s_t)\)는 상태 \(s_t\)에서의 최적 가치 함수입니다.

2.2. Policy Gradient

Policy 그래디언트 방법을 사용하여 위 목표 함수 \(J( ext)\)를 최적화합니다. 이 방법은 목표 함수의 그래디언트를 계산하고, 이를 사용하여 정책 파라미터를 업데이트합니다.

\[\nabla_\theta J( ext) = \mathbb{E}_{\pi_\theta} \left[ \nabla_\theta \log \pi_\theta(a_t | s_t) (Q^\pi(s_t, a_t) - V^\pi(s_t)) \right]\]

상기 식에서 \(Q^\pi(s_t, a_t)\)는 행동 \(a_t\)를 취했을 때 기대할 수 있는 반환값, \(V^\pi(s_t)\)는 상태 \(s_t\)에서의 가치 함수입니다.


3. Bradley-Terry 모델과 토큰 선호도

3.1. 선호도 모델링

각 토큰의 선택이 상대적인 선호도에 기반하여 이루어지도록 Bradley-Terry 모델을 적용합니다. 이 모델은 선택된 토큰 간의 선호도를 확률적으로 모델링합니다.

\[P(i > j) = \frac{e^{\beta_i}}{e^{\beta_i} + e^{\beta_j}}\]

상기 식에서 \(\beta_i\), \(\beta_j\)는 각 토큰의 선호도를 나타내는 파라미터입니다.

Bradley-Terry 모델을 DPO에 적용함으로써, 토큰 수준에서 선호도를 정교하게 조정할 수 있습니다. 이 접근 방식은 사용자의 선호도를 더욱 정확하게 반영할 수 있기 때문에 결과적으로 모델의 성능을 향상시키는 데 기여할 수 있습니다.


[참고자료 2] Bradley-Terry 모델의 이해 및 DPO로의 확장

1. Bradley-Terry 모델의 기본 개념

Bradley-Terry 모델은 주어진 두 대상 간의 상대적인 선호도를 확률적으로 모델링하는 데 사용되는 방법입니다. 이 모델은 주로 순위 결정, 스포츠 경기 결과 예측, 그리고 제품 선택 선호도 조사 등 다양한 분야에서 활용됩니다.

1.1. 수학적 표현

Bradley-Terry 모델에서는 두 대상 \(i\)와 \(j\)의 선호도를 비교할 때 다음과 같은 확률 모델을 사용합니다.

\[P(i > j) = \frac{e^{\beta_i}}{e^{\beta_i} + e^{\beta_j}}\]

상기 식에서 \(\beta_i\)와 \(\beta_j\)는 각 대상의 선호도 파라미터입니다. 이 파라미터는 대상 \(i\)가 대상 \(j\)를 얼마나 선호하는지를 수치적으로 나타냅니다.

1.2. 모델의 의미

이 모델은 로지스틱 회귀와 유사한 형태를 가지고 있으며, \(i\)가 \(j\)보다 선호될 로그 오즈(log odds)를 선형적으로 모델링합니다. \(\beta\)값이 높을수록 해당 대상이 선호될 확률이 높아집니다.


2. Bradley-Terry 모델의 DPO로의 확장

Direct Preference Optimization(DPO)는 대규모 언어모델에서 선호도 기반 학습을 최적화하기 위해 개발된 방법입니다. DPO는 주로 텍스트 생성 태스크에서 사용자의 선호를 반영하여 모델의 출력을 조정합니다.

2.1. DPO의 기본 개념

DPO는 주어진 두 텍스트 사이의 선호도를 비교하여 모델을 훈련시키는 방식을 취합니다. 사용자는 두 텍스트 샘플 \(x\)와 \(y\) 중 선호하는 쪽을 선택하고, 이 정보를 기반으로 모델은 자신의 출력을 조정하게 됩니다.

2.2. Bradley-Terry 모델의 적용

DPO에서 Bradley-Terry 모델을 사용하여, 각 토큰 선택 시점에서의 선호도를 모델링할 수 있습니다. 이는 토큰별 선호도를 결정하는 데 필요한 확률적 틀을 제공합니다. 구체적으로, 각 토큰 \(a_t\)가 선택될 때의 선호도를 다음과 같이 표현할 수 있습니다.

\[P(a_t > a_t') = \frac{e^{\beta_{a_t}}}{e^{\beta_{a_t}} + e^{\beta_{a_t'}}}\]

상기 식에서 \(a_t\)와 \(a_t'\)는 각각 선택 가능한 토큰들입니다.

2.3. DPO에서의 최적화 목표

DPO의 최적화 과정에서는 이 선호도를 최대화하는 방향으로 모델의 파라미터를 조정합니다. 즉, 모델은 사용자가 더 선호하는 토큰을 선택할 확률을 높이는 방향으로 훈련됩니다. 이 과정은 전체 문장 생성의 질을 높이며, 사용자의 선호를 더 잘 반영하게 만듭니다.


3. DPO에서 Bradley-Terry 모델의 실제 활용

3.1. 훈련 과정의 구체화

DPO를 통해, 각 훈련 스텝에서 모델은 두 텍스트 샘플 사이의 선호도를 비교하고, Bradley-Terry 모델을 사용하여 각 토큰의 선호도를 계산합니다. 이를 통해 모델은 각 선택지에 대한 상대적인 선호도를 학습하고, 이 정보를 사용하여 더 나은 텍스트를 생성할 수 있습니다.

3.2. 선호도 정보의 활용

학습된 선호도 정보는 모델이 새로운 텍스트를 생성할 때 사용됩니다. 모델은 학습된 선호도에 따라 각 토큰을 선택하며, 이는 전체적으로 더 사용자에게 만족스러운 텍스트를 생성하도록 돕습니다.


[참고자료 3] KL Divergence(Kullback-Leibler Divergence) 제약

KL Divergence는 두 확률 분포 사이의 차이를 측정하는 방법으로, 주로 통계학과 정보 이론에서 사용됩니다. 본 논문에서는 토큰별 정책의 발산을 제어하기 위해 사용됩니다.

토큰 \(t\)에 대한 KL Divergence는 수학적으로 다음과 같이 정의됩니다.

\[D_{KL}(\pi_{\text{ref}} \| \pi_\theta)(s_t) = \sum_{a \in A} \pi_{\text{ref}}(a | s_t) \log \frac{\pi_{\text{ref}}(a | s_t)}{\pi_\theta(a | s_t)}\]
  • \(\pi_{\text{ref}}(a \\| s_t)\): 참조 정책이 상태 \(s_t\)에서 행동 \(a\)를 선택할 확률
  • \(\pi_\theta(a \\| s_t)\): 현재 정책이 상태 \(s_t\)에서 행동 \(a\)를 선택할 확률

KL Divergence는 두 확률 분포 \(P\)와 \(Q\) 사이의 차이를 측정하는데, 수식에서 \(P\)는 참조 분포(e.g., pre-trained 참조 모델의 정책)이고, \(Q\)는 현재의 분포(정책)입니다. KL Divergence의 정의는 다음과 같습니다.

\[D_{KL}(P \| Q) = \sum_{x \in X} P(x) \log \frac{P(x)}{Q(x)}\]

이 식은 \(P\)와 \(Q\)가 동일할 때 0이 되고, \(P\)와 \(Q\)가 다를수록 값이 커집니다. 이는 두 분포 사이의 ‘정보 차이’를 나타냅니다.


수학적 논증

KL Divergence의 수학적 의미를 더 자세히 살펴보기 위해 식을 다시 적어보면,

\[D_{KL}(\pi_{\text{ref}} \| \pi_\theta)(s_t) = \sum_{a \in A} \pi_{\text{ref}}(a | s_t) \log \frac{\pi_{\text{ref}}(a | s_t)}{\pi_\theta(a | s_t)}\]
  1. 로그 함수의 성질: 로그 함수는 두 확률 분포의 비율을 로그 스케일로 변환합니다. 이는 확률 값이 0에 가까울수록 큰 음수 값을 가지며, 1에 가까울수록 0에 가까워지는 성질을 가집니다.
  2. 기대값 계산: 참조 정책 \(\pi_{\text{ref}}(a \\| s_t)\)에 따라 가중치가 부여된 로그 비율의 합으로, 이는 현재 정책이 참조 정책과 얼마나 다른지를 나타냅니다.
  3. 확률의 총합: 모든 가능한 행동 \(a\)에 대해 합을 구함으로써, 현재 상태 \(s_t\)에서의 전체 행동 분포에 대한 발산을 계산합니다.

(Example)

두 개의 상태 \(s_1\), \(s_2\)와 두 개의 행동 \(a_1\), \(a_2\)가 있다고 가정하고,

  • 참조 정책 \(\pi_{\text{ref}}\):
    • $ \pi_{\text{ref}}(a_1 | s_1) = 0.7 $
    • $ \pi_{\text{ref}}(a_2 | s_1) = 0.3 $
    • $ \pi_{\text{ref}}(a_1 | s_2) = 0.4 $
    • $ \pi_{\text{ref}}(a_2 | s_2) = 0.6 $
  • 현재 정책 $ \pi_\theta $:
    • $ \pi_\theta(a_1 | s_1) = 0.6 $
    • $ \pi_\theta(a_2 | s_1) = 0.4 $
    • $ \pi_\theta(a_1 | s_2) = 0.5 $
    • $ \pi_\theta(a_2 | s_2) = 0.5 $

위 예시의 경우, \(s_1\)에서의 KL Divergence는 다음과 같이 계산됩니다.

\[D_{KL}(\pi_{\text{ref}} \\\| \pi_\theta)(s_1) = 0.7 \log \frac{0.7}{0.6} + 0.3 \log \frac{0.3}{0.4}\]

각 항을 계산하면

\[0.7 \log \frac{0.7}{0.6} = 0.7 \log 1.1667 \approx 0.7 \times 0.1549 \approx 0.1084\] \[0.3 \log \frac{0.3}{0.4} = 0.3 \log 0.75 \approx 0.3 \times (-0.1249) \approx -0.0375\]

따라서:

\[D_{KL}(\pi_{\text{ref}} \\| \pi_\theta)(s_1) \approx 0.1084 - 0.0375 = 0.0709\]

이렇게 계산된 KL Divergence 값은 현재 정책이 참조 정책과 얼마나 차이가 있는지를 나타내며, 이 값이 작을수록 두 정책이 유사함을 의미합니다.

LLM의 두 모델이 정책으로 작동할 때의 KL Divergence

다시 본론으로 돌아와서 LLM(대규모 언어모델)에서의 작동을 살펴보겠습니다.

LLM에서 두 가지 정책에 KL Divergence를 적용하면, 각 정책이 특정 행동을 선택할 확률을 비교하여 정책 간 차이를 평가할 수 있습니다. 수식에서는 두 정책 사이의 KL Divergence을 통해 그 차이를 측정하는 방법을 수학적 수식과 예시를 통해 설명합니다.

주어진 상태 \(s_t\)에서 두 모델의 정책 사이의 KL Divergence는 다음과 같이 정의됩니다.

\[D_{KL}(\pi_{\text{ref}} \| \pi_\theta)(s_t) = \sum_{a \in A} \pi_{\text{ref}}(a | s_t) \log \frac{\pi_{\text{ref}}(a | s_t)}{\pi_\theta(a | s_t)}\]

위 식에서

  • \(\pi_{\text{ref}}(a \| s_t)\): 참조 정책(모델 1)이 상태 \(s_t\)에서 행동 \(a\)를 선택할 확률
  • \(\pi_\theta(a \| s_t)\): 현재 정책(모델 2)이 상태 \(s_t\)에서 행동 \(a\)를 선택할 확률

KL Divergence는 참조 정책과 현재 정책 사이의 차이를 측정하고, 정책 간의 차이를 제어함으로써, 모델의 행동이 지나치게 달라지는 것을 방지하고 학습 과정의 안정성을 유지하며 모델의 성능을 향상시키는 동시에 불필요한 변화를 최소화하여 안정적인 학습에 기여할 수 있습니다.

Previous: Benchmark | Python Saga Next: Analyzing | Pythia

post contain ""

    No matching posts found containing ""