안녕하세요 오늘 소개해드릴 논문은 지난 Upstage에서 공개한 모델 Solar의 학습 기법인 DPO입니다. 최근 지도학습 기법으로 떠오르고 있는 DPO인데요. 요즘 LLM Fine-tunning에 많이 쓰이고 있는 방법입니다. 사실 강화학습 분야가 되게 어렵다는 것도 알고 있지만 생각보다 보다 보면 흥미로운 내용이 많았던 거 같습니다. 제일 유명한 PPO 거의 진한 곰탕급으로 우려진 방법론인데요.
PPO의 핵심 아이디어는 손실 함수에 특정 제약을 추가하여, 새로운 정책이 이전 정책으로부터 너무 멀어지지 않도록 하는 것입니다. 이를 통해 학습 과정에서 발생할 수 있는 큰 정책 변동을 방지하고, 안정적인 학습을 유도합니다.RLHF와 연관해서 데이터를 통해 반영을 할 수도 있는 메커니즘이라고 볼 수 있습니다.
LLama2를 활용한 DPO Fine tunning
DPO 같은 경우에는 RLHF의 아이디어에서 착안한 방법입니다. RLHF란? 인간의 피드백을 기반으로 하는 강화 학습 방법입니다. 이 방법은 기존의 강화 학습이 환경으로부터 얻는 보상 신호만을 사용하여 학습하는 것과 달리, 인간의 평가, 지시, 또는 선호 등의 형태로 제공되는 피드백을 추가적인 학습 신호로 활용합니다.
기존의 Pre-trained 하는 Corpus data로는 필요하지만 Language 모델에 맞는 데이터가 아닐 수도 있기 때문에, 인간의 선호도에 맞는 좋은 샘플인지 나쁜 샘플인지 구분할 수 있는 인간의 선호도가 반영된 Preference Data를 통해서 Langauge 모델을 개선하겠다. Streerablility를 얻기 위해서는 RLHF가 대표적인 방법이다.
Abstract
대규모 비지도 언어 모델을 인간의 선호도와 일치하도록 미세 조정하는 새로운 방법을 제안합니다. 기존의 강화 학습에서 인간 피드백(RLHF) 접근 방식은 복잡하고 불안정할 수 있는데, 이는 인간의 선호를 반영하는 보상 모델을 만들고, 이를 기반으로 언어 모델을 미세 조정하는 과정을 포함합니다. 이 논문에서 소개된 직접 선호 최적화(DPO) 방법은 이 과정을 단순화하여, 보상 모델을 재매개변수화함으로써 최적의 정책을 직접 추출할 수 있게 합니다. 이는 단순한 분류 손실을 사용하여 표준 RLHF 문제를 해결하며, 미세 조정 과정을 더 안정적이고 계산적으로 효율적으로 만듭니다. 실험 결과는 DPO가 기존 방법들과 비교하여 인간의 선호도와의 일치성, 감정 제어, 요약 및 대화 응답 품질 면에서 우수하거나 개선된 성능을 보여줍니다. DPO의 주요 장점은 그 구현과 훈련의 단순성에 있으며, 이는 언어 모델을 미세 조정하는 새로운 방법론으로서의 가능성을 시사합니다.
위논문에서는 기존의 RLHF 강화학습 방법이 Reward 모델을 통해 기존의 정책 PPO 기반의 학습을 DPO라는 방법론을 통해 제시하고 있다. 인간의 preference data를 reward 모델을 통해 정책을 부여해서 강화학습을 진행하는 방법론대신 바로 LLM에 지도학습으로 Preference data를 줘서 학습시키자라는 방법론 같다. 결국은 내 생각에도 Reward 모델도 어느 정도의 성능이 나오느냐? 에 따라 강화학습에 대한 정책반영에 충분한 영향을 끼칠 수 있을 거라고 생각이 들긴 한다. 여러 LLM을 써보면서 문맥을 이해를 못 하고 그냥 답변만 하는데 과연 LLM으로 RLAIF와 같은 방법론이 맞는 걸까?처럼 생각을 한 적이 있었다.
Introduce
이 논문에서는 명시적인 보상 모델링이나 강화 학습 없이 언어 모델을 인간의 선호에 따라 직접 최적화하는 방법을 보여줍니다. 우리는 직접 선호 최적화(DPO)라는 알고리즘을 제안하는데, 이는 기존 RLHF 알고리즘과 동일한 목표(보상 최대화와 KL-발산 제약)를 암시적으로 최적화하지만 구현하기 쉽고 훈련하기 직관적입니다. 직관적으로, DPO 업데이트는 선호하는 반응에 비해 선호하지 않는 반응의 상대적 로그 확률을 증가시키지만, 모델 퇴화를 방지하는 동적인 예제별 중요도 가중치를 포함합니다. 기존 알고리즘과 마찬가지로, DPO는 주어진 보상 함수가 경험적 선호 데이터와 얼마나 잘 일치하는지를 측정하는 이론적 선호 모델(예: Bradley-Terry 모델; [5])에 의존합니다. 그러나 기존 방법이 선호 모델을 사용하여 보상 모델을 훈련시키는 선호 손실을 정의하고 그 다음에 학습된 보상 모델을 최적화하는 정책을 훈련하는 반면, DPO는 선호 손실을 정책의 함수로 직접 정의하기 위해 변수 변환을 사용합니다. 모델 반응에 대한 인간 선호의 데이터셋이 주어지면, DPO는 따라서 간단한 이진 교차 엔트로피 목표를 사용하여 정책을 최적화할 수 있으며, 선호 데이터에 적합한 암시적 보상 함수에 대한 최적 정책을 생성할 수 있습니다.
(brandley-Terry 같은 경우는 두개를 놓고 비교를 하는 방법론인데 랭킹 산정에 관련된 모델로 1952년에 나온 모델이다.
RLHF는 Brandley-Terry의 확률모형 기반으로 Reword model을 학습을 통해 강화학습을 적용하고, DPO 또한 Bradley Terry 확률 모형 기반으로 리워드 모델의 식을 Reparametrize 해서 Policy에 대한 식으로 바꿔서 학습을 시킨다. 안 좋은 답변에 대해서는 relative log probablility를 증가시키고, 각 샘플마다 Importance weight를 곱한 값으로 optimze 하는 방법이라 할 수 있다. 결국 리워드 모델을 수식에 의해서 지도학습 방향으로 바꿨다.라고 생각하면 될 것 같다.
Related Work
Self-supervised language models 규모가 커짐에 따라 일부 작업을 Zero-Shot이나 Few-shot로 수행하는 법을 배웁니다. 그러나, 이러한 모델의 하류 작업 성능과 사용자 의도와의 일치는 지시사항과 인간이 작성한 완성본의 데이터셋에 미세 조정함으로써 상당히 향상될 수 있습니다 이러한 'instruction-tunning' 절차는 LLMs가 지시사항-튜닝 세트 외부의 지시사항을 일반화하고 일반적으로 사용성을 향상하게 합니다. 지시사항 튜닝의 성공에도 불구하고, 반응 품질에 대한 상대적 인간 판단은 전문가 시연을 수집하는 것보다 종종 더 쉬우며, 따라서 후속 작업들은 인간의 선호도 데이터셋을 사용하여 LLMs를 미세 조정하여 번역 요약, 스토리텔링, 지시사항 따르기 등의 숙련도를 향상했습니다. 이러한 방법들은 먼저 Bradley-Terry 모델과 같은 선호 모델 아래에서 선호도 데이터셋과 호환되는 신경망 보상 함수를 최적화한 다음, 강화 학습 알고리즘을 사용하여 주어진 보상을 최대화하기 위해 언어 모델을 미세 조정합니다. 일반적으로 사용되는 알고리즘에는 REINFORCE, 근접 정책 최적화(PPO), 또는 변형이 포함됩니다. 밀접하게 관련된 연구 분야는 인간의 피드백을 받아 지시사항을 따르도록 미세 조정된 LLMs를 사용하여 안전성이나 무해함과 같은 특정 속성에 대한 추가적인 합성 선호도 데이터를 생성하는 것입니다. 이러한 방법들은 두 가지 연구 분야의 융합을 대표합니다: 다양한 목표를 위해 언어 모델을 강화 학습으로 훈련시키는 연구와 인간의 선호로부터 학습하는 일반적인 방법에 대한 연구입니다. 상대적 인간 선호를 사용하는 것의 매력에도 불구하고, 강화 학습을 사용하여 대규모 언어 모델을 미세 조정하는 것은 여전히 주요한 실용적 도전입니다. 이 작업은 RL 없이 상대적 선호를 최적화하는 이론적으로 정당화된 접근 방법을 제공합니다.
언어의 맥락 외부에서, 선호로부터 정책을 학습하는 것은 밴딧 및 강화 학습 설정에서 연구되었으며, 여러 접근 방법이 제안되었습니다. 보상이 아닌 선호나 행동의 순위를 사용하는 콘텍스트 밴딧 학습은 컨텍스트 듀얼링 밴딧(CDB)으로 알려져 있습니다. 절대 보상이 없는 상황에서, CDB의 이론적 분석은 최적 정책의 개념을 다른 정책에 대해 예상 승률이 적어도 50%인 폰 노이만 승자로 대체합니다. 그러나, CDB 설정에서는 선호 라벨이 온라인으로 주어지는 반면, 인간의 선호로부터 학습하는 경우에는 일반적으로 고정된 배치의 오프라인 선호-주석이 달린 행동 쌍에서 학습합니다 마찬가지로, 선호 기반 RL(PbRL)은 보상이 아닌 알려지지 않은 '점수' 함수에 의해 생성된 이진 선호로부터 학습합니다. PbRL에 대한 다양한 알고리즘이 존재하지만, 일반적으로 먼저 잠재적인 점수 함수(즉, 보상 모델)를 명시적으로 추정한 다음 이를 최적화하는 과정을 포함합니다. 대신, 우리는 선호를 만족시키기 위해 정책을 직접 최적화하는 단일 단계 정책 학습 접근 방법을 제시합니다.
자연어처리 모델들이 Downstream task를 수행하기 위해서, 이전에는 task by task로 나누어 모델을 을 학습시키고 또 이후에는 ELMO, BERT와 같은 representation learning 모델을 통해 재현이 잘되는 모델에 학습을 시키자는 움직임과 그 후 많은 양의 Corpus를 통해서 학습을 시키고, 데이터를 추가해서 파인튜닝을 시키자였다면 요즘에는 N-shot 러닝과 같이 프롬프트를 통해 방대한 지식을 가지고 있는 언어모델에게 Instruction과 input을 같이 주는 Instruction-tunning이 일반적으로 사용되고 있다. 이 플로우는 알면 좋을 것 같다
STF, RM Tuning, Policy
Preliminaries
RLHF의 파이프라인을 검토합니다. 이것은 보통 세 단계를 포함합니다: 1) 감독된 미세 조정(SFT); 2) 선호 샘플링 및 보상 학습; 그리고 3) RL 최적화.
SFT: RLHF는 일반적으로 관심 있는 하류 작업(대화, 요약 등)에 대한 고품질 데이터로 사전 훈련된 LM을 감독 학습으로 미세 조정하여 시작하여, 모델 π_SFT를 얻습니다.
Reward Modelling Phase:: 두 번째 단계에서 SFT 모델은 프롬프트 x로 프롬프트되어 답변 쌍 (y1, y2) ∼ π_SFT(y | x)을 생성합니다. 이들은 인간 라벨러에게 제시되며, 그들은 yw ≻ yl | x로 표시된 한 답변에 대한 선호를 표현합니다. 여기서 yw와 yl은 각각 (y1, y2) 중 선호되고 선호되지 않는 완성을 나타냅니다. 선호는 우리가 접근할 수 없는 어떤 잠재적 보상 모델 r∗(y, x)에 의해 생성된 것으로 가정됩니다. 선호를 모델링하기 위해 사용되는 여러 접근 방법이 있으며, Bradley-Terry (BT) [5] 모델이 인기 있는 선택입니다(비록 여러 순위가 매겨진 답변에 접근할 수 있다면 더 일반적인 Plackett-Luce 순위 모델[30, 21]도 프레임워크와 호환됩니다). BT 모델은 인간 선호 분포 p∗를 다음과 같이 쓸 수 있다고 규정합니다:
비교의 정적 데이터셋 D에 접근할 수 있다고 가정할 때, 우리는 보상 모델 rϕ(x, y)를 매개변수화하고 최대 우도를 통해 매개변수를 추정할 수 있습니다. 문제를 이진 분류로 구성하면 다음과 같은 음의 로그 가능도 손실이 있습니다:
여기서 σ는 로지스틱 함수입니다. LMs의 맥락에서, 네트워크 rϕ(x, y)는 종종 SFT 모델 π_SFT(y | x)에서 초기화되며, 최종 변환기 층 위에 단일 스칼라 보상 값을 생성하는 선형 층이 추가됩니다 [49]. 보상 함수가 낮은 분산을 가지도록 하기 위해, 이전 작업들은 보상을 정규화하여 모든 x에 대해 Ex, y∼D [rϕ(x, y)] = 0이 되도록 합니다.
RL Fine-Tuning Phase: RL 단계 동안, 우리는 학습된 보상 함수를 사용하여 언어 모델에 피드백을 제공합니다. 특히, 우리는 다음 최적화 문제를 구성합니다:
여기서 β는 기본 참조 정책 π_ref, 즉 초기 SFT 모델 π_SFT에서의 편차를 제어하는 매개변수입니다. 실제로, 언어 모델 정책 πθ는 또한 π_SFT로 초기화됩니다. 추가된 제약 조건은 중요한데, 이는 모델이 보상 모델이 정확한 분포에서 너무 멀리 벗어나지 않도록 하고, 생성 다양성을 유지하며 단일 고보상 답변으로의 모드 붕괴를 방지하기 때문입니다. 언어 생성의 이산적인 성격 때문에, 이 목표는 미분 가능하지 않으며 일반적으로 강화 학습을 사용하여 최적화됩니다. 표준 접근 방법[49, 38, 1, 26]은 보상 함수 r(x, y) = rϕ(x, y) - β(log πθ(y | x) - log πref(y | x))를 구성하고 PPO를 사용하여 최대화하는 것입니다.
강화학습에는 많은 어려움이 따르기에 이를 Simplify 하려고 하고, DPO는 리워드모델의 parameterization을 선택함으로써 강화학습을 하지 않고 optimize를 하겠다. RLHF를 하기 위해 매우 복잡하다. 수식으로만 봐도 이해가 어렵다. 결국 위내용은 수식으로 RLHF 가 어떻게 되는지를 보여준다. 마지막 식을 참고하면 파이세타에 대하여 리워드는 높게 KL Divergence는 낮게 하는 게 목표이기 때문에 X를 파이세타에 넣어서 얻어낸 Y에 대해 리워드는 높고 KL Divergence는 낮게 하는 것이 object function이라 할 수 있다.
Direct Preference Optimization
DPO는 언어 모델의 미세 조정과 같은 대규모 문제에 강화 학습 알고리즘을 적용하는 데 있어서의 도전을 해결하기 위해 동기를 얻었습니다. 기존의 RLHF 방법과 달리, 보상을 학습한 다음 RL을 통해 최적화하는 대신, 우리의 접근 방식은 보상 모델의 특정 파라미터화를 활용하여 RL 훈련 루프 없이 최적 정책을 폐쇄 형태로 추출할 수 있게 합니다. 우리의 주요 통찰은 보상 함수에서 최적 정책으로의 분석적 매핑을 활용하여, 보상 함수에 대한 손실 함수를 정책에 대한 손실 함수로 변환하는 것입니다. 이 변수 변경 접근 방식은 명시적인 독립 보상 모델을 적합화하는 것을 피하면서도, Bradley-Terry 모델과 같은 인간 선호의 기존 모델을 최적화합니다. 본질적으로, 정책 네트워크는 언어 모델과 (암시적인) 보상을 모두 대표합니다.
DPO의 구현은 두 단계로 이루어집니다: 첫째, 인간의 선호를 라벨로 사용하여 선호 데이터셋을 구성하고, 둘째, 이 데이터셋을 사용하여 언어 모델을 최적화합니다. 이 과정은 기존의 선호 데이터셋을 재사용할 수 있는 장점이 있으며, 실제 참조 분포와의 분포 이동을 완화하기 위한 초기화 절차를 포함합니다. DPO는 이론적으로 일관성을 유지하며, 다양한 선호 모델링 접근 방식과 호환될 수 있는 유연성을 제공합니다.
RLHF와 DPO의 식을 살펴보면 DPO 에는 리워드모델에 관한식이 없다. 리워드 모델을 학습시키는 게게 Langauge 모델을 학습시키는 거와 같기 때문이다. 결국 πθ를 최적화하여, 주어진 참조 정책에 πref에 비해 인간의 선호를 더 잘 반영하기 위한 식이라 볼 수 있다.
예를 들어, 언어 모델을 최적화하는 경우 πref는 사람이 라벨링한 데이터셋에서 추출한 선호도나, 특정 작업에 대해 사전에 학습된 언어 모델의 출력을 기반으로 할 수 있습니다. 이를 통해 새로운 정책 πθ가 실제 인간의 선호도를 얼마나 잘 반영하는지, 그리고 기존의 참조 정책 πref에 비해 얼마나 개선되었는지를 평가할 수 있습니다.
Theoretical Analysis of DPO
DPO는 보상 모델을 명시적으로 적합화하고 RL을 수행하는 대신, 최대 우도 목표를 사용하여 직접 정책을 최적화하는 접근 방식입니다. 이는 보상 함수의 재매개변수화를 통해 이루어지며, 이 재매개변수화는 보상 모델의 클래스를 제한하지 않고 최적 정책을 정확하게 회복할 수 있습니다. 또한, DPO는 액터-크리틱 알고리즘의 불안정성을 해결하고, 보상 함수 최적화를 위한 새로운 방법을 제공합니다. DPO는 기대 보상 대비 KL 다이버전스에서 가장 높은 성능을 보이며, 요약 작업에서 PPO의 최고 성능을 초과하고, 샘플링 온도 변화에 대해 더 강건합니다.
Experiments
실험 섹션에서는 DPO(직접 선호 최적화)가 선호도에서 직접 정책을 훈련시킬 수 있는 능력을 실증적으로 평가합니다. 첫 번째로, 잘 제어된 텍스트 생성 설정에서 DPO가 보상을 최대화하고 참조 정책과의 KL-분산을 최소화하는 데 얼마나 효율적인지, PPO와 같은 일반적인 선호 학습 알고리즘과 비교하여 평가합니다. 다음으로, DPO의 성능을 더 큰 모델과 더 어려운 RLHF 작업(요약 및 대화 포함)에서 평가합니다. 거의 하이퍼파라미터 조정 없이도 DPO는 PPO와 같은 강력한 기준선과 비교하여 잘 또는 더 나은 성능을 보이는 경향이 있습니다.
- 작업: 세 가지 다른 개방형 텍스트 생성 작업(감정 생성, 요약, 단일 턴 대화)을 탐색합니다.
- 평가: 알고리즘의 효과를 분석하기 위해 두 가지 접근 방식을 사용합니다. 하나는 보상과 참조 정책과의 KL-분산의 프론티어를 평가하고, 다른 하나는 GPT-4를 사용하여 요약 품질과 대화 응답의 도움됨을 인간 평가의 대리로 사용하여 기준 정책과 비교한 승률로 알고리즘을 평가합니다.
기존 연구들은 언어 모델(LMs)이 기존 메트릭보다 더 나은 자동 평가자가 될 수 있음을 제안하지만, GPT-4를 평가에 사용하는 것을 정당화하기 위해 인간 연구를 수행합니다. GPT-4 판단은 인간과 강하게 상관되며, GPT-4와 인간 간의 합의는 일반적으로 인간 주석자 간 합의와 비슷하거나 더 높습니다.
Method: DPO 외에도, 인간의 선호도를 따르도록 언어 모델을 훈련시키기 위한 여러 기존 접근법을 평가합니다. 가장 간단하게, 요약 작업에서 GPT-J를 사용한 제로-샷 프롬프팅과 대화 작업에서 Pythia-2.8B를 사용한 2-샷 프롬프팅을 탐색합니다. 또한, SFT 모델과 선호된 완성 yw에 대해 감독 학습으로 미세 조정된 Preferred-FT 모델을 평가합니다. 이는 SFT 모델(제어된 감정 및 요약에서) 또는 일반적인 LM(단일 턴 대화에서)에서 선택된 완성에 대해 미세 조정됩니다. 또 다른 의사-감독 방법은 Unlikelihood로, yw에 할당된 확률을 최대화하고 yl에 할당된 확률을 최소화하는 정책을 단순히 최적화합니다. 'unlikelihood' 항에 선택적 계수 α ∈ [0, 1]을 사용합니다. 선호 데이터에서 학습한 보상 함수를 사용하는 PPO와 제어된 감정 설정에서 사용 가능한 지상 진실 보상 함수에서 학습하는 오라클인 PPO-GT도 고려합니다. 감정 실험에서는 PPO-GT의 두 가지 구현을 사용합니다. 하나는 선반에서 나온 버전이고 다른 하나는 보상을 정규화하고 성능을 개선하기 위해 하이퍼파라미터를 추가로 조정한 수정된 버전입니다. 마지막으로, 선호 데이터셋에서 학습한 보상 함수에 따라 가장 높은 점수를 받은 응답을 반환하는 Best of N 기준선을 고려합니다. 이 고성능 방법은 보상 모델의 품질을 PPO 최적화에서 분리하지만, 테스트 시간에 모든 쿼리에 대해 N개의 완성을 샘플링해야 하므로 중간 N에 대해서도 계산상 비현실적입니다.
GPT-4를 사용하여 요약품질 대화 응답의 도움 됨을 인간 평가의 대리로 사용하고 기준 정책과의 승률로 알고리즘을 평가한다는 점에서 GPT-4를 인간이상으로 보고 있다는 것으로 느꼈다.
Validating GPT-4 judgments with human judgments
인간 연구를 통해 GPT-4 판단의 신뢰성을 검증합니다. 이 연구는 TL;DR 요약 실험 결과와 두 가지 다른 GPT-4 프롬프트를 사용합니다. GPT-4 (S) 프롬프트는 간단히 어떤 요약이 게시물의 중요한 정보를 더 잘 요약하는지 묻습니다. GPT-4 (C) 프롬프트는 어떤 요약이 더 간결한지 묻습니다. 이 프롬프트를 평가하는 이유는 GPT-4가 인간보다 더 길고 반복적인 요약을 선호한다는 것을 발견했기 때문입니다. 세 가지 비교를 수행하여, 다양한 샘플 품질을 커버하기 위해 DPO(temp. 0.25), PPO(temp. 1.0), 그리고 중간 성능의 SFT(temp. 0.25) 방법을 PPO의 최적 온도와 비교합니다.
연구 결과는 GPT-4가 인간과 거의 같은 빈도로 합의하며, 이는 GPT-4가 인간 평가의 합리적인 대리자로 사용될 수 있음을 시사합니다. 특히, GPT-4 (C) 프롬프트는 인간의 승률을 더 대표적으로 제공하므로, 주요 결과에 이 프롬프트를 사용합니다.
Point:
- GPT-4와 인간의 합의: GPT-4는 인간과 거의 같은 빈도로 합의하며, GPT-4 (S)와 GPT-4 (C) 프롬프트 모두에서 인간과의 합의 비율이 높습니다.
- 프롬프트별 성능: GPT-4 (C) 프롬프트가 일반적으로 인간의 승률을 더 대표적으로 제공하며, GPT-4 (S) 프롬프트에 비해 더 긴, 반복적인 요약을 선호합니다.
- 비교 방법: DPO, PPO, 그리고 SFT 방법은 모두 PPO의 최적 온도와 비교되며, DPO는 특히 높은 온도(temp. 0.25)에서 인간 평가자들에 의해 더 선호됩니다.
이 연구는 GPT-4를 사용한 자동 평가가 인간 평가와 강한 상관관계를 가지며, 특히 요약 품질과 같은 주관적인 작업에 대한 평가에 있어서 유용한 도구가 될 수 있음을 보여줍니다. GPT-4 판단의 신뢰성과 함께, DPO가 실제 인간 선호도를 기반으로 한 텍스트 생성 작업에서 뛰어난 성능을 보이는 것을 확인할 수 있습니다.
결국 GPT-4가 좋다는 내용이다. 사실적으로 아직 GPT-4가 나온 지 몇 년이 되었지만 Claude가 이번에 벤치마크를 뛰어넘었다고 하지만, 사실 써봐야 아는 거기도 하고 GPT-4-vision 이 2022년에 학습이 완료되었다는 점을 생각해 본다면.. 지금 또 무엇인가 우리를 기다리고 있지 않을까 생각이 든다.
Discussion
DPO(직접 선호 최적화)는 강화 학습을 사용하지 않고도 선호도에 기반한 언어 모델 훈련을 가능하게 하는 새로운 접근 방식입니다. 이 방법은 언어 모델 정책과 보상 함수 사이의 연결을 통해, 간단한 교차 엔트로피 손실만을 사용하여 모델을 인간의 선호에 맞게 직접 최적화합니다. DPO는 기존 RLHF(인간 피드백으로부터의 강화 학습) 방법, 특히 PPO에 비해 하이퍼파라미터 조정이 거의 필요 없으면서도 유사하거나 더 나은 성능을 제공함으로써, 인간의 선호를 반영하는 언어 모델을 더 쉽게 훈련시킬 수 있는 길을 열어줍니다
향후 연구 방향
- 분포 밖 일반화: DPO가 명시적 보상 함수를 사용한 학습과 비교하여 어떻게 분포 밖으로 일반화되는지에 대한 더 깊은 연구가 필요합니다.
- 보상 과최적화: DPO 설정에서 보상 과최적화가 어떻게 나타나는지, 특히 성능 감소가 관찰되는 경우 이에 대한 연구가 중요합니다.
- 모델 스케일링: 현재 6B 파라미터 모델까지 평가되었지만, 더 큰 최신 모델로 DPO를 확장하는 것은 흥미로운 미래 연구 주제입니다.
- 평가 방법: GPT-4로 계산된 승률이 프롬프트에 따라 달라질 수 있으므로, 자동 시스템에서 고품질 판단을 얻는 최선의 방법을 찾는 것이 중요합니다.
- DPO의 응용: DPO는 언어 모델 훈련을 넘어 다른 모달리티에서의 생성 모델 훈련에도 응용될 수 있는 잠재력을 가지고 있습니다.
Code
1.Supervised Fine-Tuning (SFT) 단계: 모델을 선호도 레이블이 있는 데이터로 미세 조정합니다.
2. Perference Data : 선호도 데이터를 특정 형식의 사전으로 준비합니다. 이 데이터는 prompt, chosen, rejected 세 가지 키를 포함해야 합니다.
3.DPO 학습: SFT를 통해 미세 조정된 모델과 참조 모델을 사용하여 DPO 목표를 최적화합니다.
from transformers import AutoModelForCausalLM, TrainingArguments, Trainer
from datasets import load_dataset
from trl import DPOTrainer, LoraConfig, PeftConfig
# 데이터셋 로드 및 준비
def return_prompt_and_responses(samples):
return {
"prompt": ["Question: " + question + "\n\nAnswer: " for question in samples["question"]],
"chosen": samples["response_j"], # rated better than k
"rejected": samples["response_k"], # rated worse than j
}
dataset = load_dataset(
"lvwerra/stack-exchange-paired",
split="train",
data_dir="data/rl"
)
dataset = dataset.map(return_prompt_and_responses, batched=True)
# 모델 로드 및 DPO 학습 준비
model = AutoModelForCausalLM.from_pretrained("llama-model-path")
model_ref = AutoModelForCausalLM.from_pretrained("llama-model-path") # 참조 모델은 일반적으로 SFT를 통해 훈련된 모델의 복사본입니다.
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=4,
logging_dir='./logs',
)
dpo_trainer = DPOTrainer(
model=model,
model_ref=model_ref,
beta=0.1, # DPO 손실의 온도 하이퍼파라미터
train_dataset=dataset,
tokenizer=tokenizer,
args=training_args,
)
# DPO 학습 실행
dpo_trainer.train()
데이터셋은 Prompt, Chosen , reject로 구성이 되어있고, 위 허깅페이스에서 제공하는 코드처럼 형식을 맞춰서 변형해 주면 된다. Prompt + Chosen + inputid + attention mask tensor의 형으로 구성이 되어있을 것이다. 사실 그냥 간단하게 데이터셋 맞춰주고 돌리면 된다고 한다. 내용은 진짜 어려운 논문인데 생각보다 메서드가 어렵지가 않아서 사람들이 많이 쓰고 DPO 모델로 튜닝을 해서 리더보드에 올라가는 것 같다. 사실 읽으면서도 수식 때문에 어지러웠는데 다 이해는 못하였어도 왜 DPO를 쓰고, 어떻게 학습을 진행하는지 전체적인 큰 그림은 알게 된 것 같다.