DPO-algoritme

forkortelse for Direct Preference Optimization

DPO-algoritme er en metode til at justere en sprogmodels præferencer direkte via parrede sammenligninger, uden at træne en separat belønningsmodel.

Kort fortalt

DPO gør det muligt at finjustere en LLM så dens svar matcher menneskelige præferencer, ved at bruge en enkel tabelfunktion i stedet for kompleks forstærkningslæring.

Kategori
træning
Niveau
øvet
Udtale
diː piː ˈoʊ

Betydninger

1
  1. 1

    En træningsalgoritme, der optimerer en sprogmodel direkte på baggrund af præferencepar (foretrukket/ikke-foretrukket) ved at maksimere log-sandsynligheden af den foretrukne respons relativt til den ikke-foretrukne, reguleret af en KL-divergens til referencemodellen.

    • Vi brugte DPO-algoritmen til at aligne vores 7B-model med menneskelige præferencer på et datasæt med 10.000 par.
    • DPO-algoritmen kræver ikke en separat belønningsmodel, hvilket reducerer træningsomkostningerne markant.

Hvornår bruges det

Bruges i alignment-fasen af LLM-træning, når man har et datasæt med foretrukne og ikke-foretrukne svar. Det er et populært alternativ til RLHF, da det er mere stabilt og lettere at implementere.

Formel

L_DPO = -E_{(x,y_w,y_l) ~ D} [ log σ( β ( log π_θ(y_w|x) - log π_θ(y_l|x) ) ) ]

Kodeeksempel

import torch
import torch.nn.functional as F

def dpo_loss(policy_logps, ref_logps, pref_idxs, beta=0.1):
    # policy_logps: log probabilities for preferred and dispreferred
    # ref_logps: same from reference model
    # pref_idxs: indices for preferred responses in batch
    policy_logps_pref = policy_logps[pref_idxs]
    policy_logps_dispref = policy_logps[~pref_idxs]
    ref_logps_pref = ref_logps[pref_idxs]
    ref_logps_dispref = ref_logps[~pref_idxs]
    
    log_ratio = (policy_logps_pref - ref_logps_pref) - (policy_logps_dispref - ref_logps_dispref)
    loss = -F.logsigmoid(beta * log_ratio).mean()
    return loss

Implementering af DPO-tabet i PyTorch. Input er log-sandsynligheder for foretrukne og ikke-foretrukne svar fra både policy og referencemodel.

Oprindelse

Præsenteret af Rafailov et al. i 2023 som 'Direct Preference Optimization', en forenkling af RLHF.

Afledte ord

2

Kilder

1