Selaraskan LLM dengan Direct Preference Optimization
Supervised fine-tuning bekerja baik ketika Anda dapat menyediakan respons target untuk setiap prompt. Pendekatan ini menjadi kurang alami ketika sinyalnya bersifat komparatif: satu jawaban lebih disukai daripada jawaban lain, tetapi keduanya bukan target sempurna untuk disalin. Direct Preference Optimization (DPO) mengubah pasangan preferensi tersebut menjadi objektif pelatihan untuk model bahasa tanpa memerlukan reward model yang dilatih terpisah atau tahap reinforcement learning secara online.
Kesederhanaan ini membuat DPO menarik untuk gaya respons, kepatuhan terhadap instruksi, dan tugas lain ketika penilaian berpasangan lebih mudah dikumpulkan daripada completion ideal. Metode ini tetap memiliki batasan penting. Perilakunya bergantung pada data preferensi, kebijakan referensi yang tetap, dan kekuatan regularisasi yang mengendalikan seberapa agresif kebijakan hasil tuning menjauh dari referensi tersebut.
Artikel ini membangun model mental praktis untuk DPO, membahas objektifnya, dan menunjukkan pemeriksaan yang penting sebelum menganggap training loss yang lebih rendah berarti model yang lebih baik.
Mulai dari satu pasangan preferensi
Misalkan sebuah asisten menerima prompt berikut:
Give a concise explanation of an HTTP 429 response.Seorang penilai membandingkan dua completion:
chosen:
HTTP 429 means the server is rate-limiting the client because too many
requests arrived in a given period. Respect Retry-After when it is present.
rejected:
HTTP 429 is a network error. Restart the request until it succeeds.Item data ini memiliki tiga bagian:
x = prompt
y+ = chosen response
y- = rejected responseSinyal utamanya bukan bahwa y+ memiliki skor absolut 9 dari 10. Sinyalnya hanya bahwa y+ lebih disukai daripada y- untuk prompt x berdasarkan kebijakan anotasi.
Aturan pelatihan yang naif mungkin menaikkan probabilitas y+ dan menurunkan probabilitas y-. Arah itu berguna, tetapi menyisakan pertanyaan penting: seberapa jauh model harus bergerak? Data preferensi bisa sempit atau berisik, dan pembaruan tanpa batas dapat merusak perilaku berguna yang sudah dimiliki model dasar.
DPO mengatasinya dengan membandingkan kebijakan yang dapat dilatih dengan kebijakan referensi.
Kebijakan referensi menjadi jangkar
Misalkan model yang dilatih adalah pi_theta dan model referensi yang tetap adalah pi_ref. Dalam konfigurasi umum, keduanya dimulai dari checkpoint yang sama. Referensi tetap dibekukan sementara pi_theta diperbarui.
Untuk setiap respons y terhadap prompt x, perhatikan log-ratio berikut:
log pi_theta(y | x) - log pi_ref(y | x)Nilai ini mengukur bagaimana kebijakan yang dilatih menggeser probabilitas respons relatif terhadap referensi.
Nilai positif berarti kebijakan yang dilatih memberi respons tersebut probabilitas lebih besar daripada referensi. Nilai negatif berarti lebih kecil. DPO membandingkan pergeseran itu untuk respons yang dipilih dan ditolak:
chosen shift = log pi_theta(y+ | x) - log pi_ref(y+ | x)
rejected shift = log pi_theta(y- | x) - log pi_ref(y- | x)
margin = chosen shift - rejected shiftPelatihan mendorong margin ini naik. Kebijakan mendapat dorongan untuk bergerak menuju respons yang dipilih relatif terhadap pergerakannya menuju respons yang ditolak.
Pandangan relatif ini merupakan inti DPO. DPO tidak sekadar menanyakan apakah completion yang dipilih memiliki probabilitas tinggi. DPO menanyakan apakah model yang dilatih lebih kuat mengutamakannya daripada model referensi, dibandingkan dengan completion yang ditolak.
Hitung probabilitas respons dengan benar
Model bahasa kausal menetapkan probabilitas completion sebagai hasil kali probabilitas next-token. Untuk respons yang berisi token y1 ... yT:
pi(y | x) = product_t pi(yt | x, y1, ..., y(t-1))Hasil kali banyak probabilitas kecil tidak nyaman secara numerik, sehingga implementasi menggunakan log probability:
log pi(y | x) = sum_t log pi(yt | x, y1, ..., y(t-1))Hanya token respons yang termasuk dalam skor completion ini. Token prompt menyediakan konteks conditioning tetapi tidak boleh ikut menyumbang pada skor perbandingan respons dipilih-versus-ditolak.
Untuk contoh kecil, bayangkan empat sequence log probability berikut:
chosen rejected
trainable policy -4.2 -6.0
reference policy -4.8 -5.4Pergeserannya adalah:
chosen shift = -4.2 - (-4.8) = 0.6
rejected shift = -6.0 - (-5.4) = -0.6
margin = 0.6 - (-0.6) = 1.2Kebijakan yang dilatih telah bergerak ke arah relatif yang diinginkan: dukungan terhadap completion yang dipilih meningkat dan dukungan terhadap completion yang ditolak menurun dibandingkan dengan referensi.
Nilai persisnya disederhanakan, tetapi aritmetikanya sesuai dengan besaran yang digunakan objektif DPO.
DPO loss mengubah margin menjadi objektif berpasangan
Untuk satu pasangan preferensi, DPO loss standar dapat ditulis sebagai:
L = -log sigmoid(beta * margin)dengan:
margin =
[log pi_theta(y+ | x) - log pi_ref(y+ | x)]
- [log pi_theta(y- | x) - log pi_ref(y- | x)]sigmoid mengubah margin yang telah diskalakan menjadi nilai antara nol dan satu. Jika respons yang dipilih memiliki margin relatif positif yang besar, loss menjadi kecil. Jika respons yang ditolak memiliki margin relatif lebih kuat, loss membesar dan gradient mendorong kebijakan ke arah sebaliknya.
Parameter beta mengendalikan skala perbandingan ini. Dalam formulasi preferensi dengan regularisasi KL yang menjadi dasar DPO, parameter ini berkaitan dengan kekuatan batasan kebijakan referensi. Dampak praktisnya harus dinilai bersama optimizer, data, model, dan hasil evaluasi, bukan dianggap sebagai tombol kualitas yang berdiri sendiri.
Ada detail berguna lain dalam persamaan tersebut: log probability referensi bersifat konstan selama pelatihan DPO. Jika dataset preferensi dan checkpoint referensi tetap, nilai-nilai itu dapat dihitung sebelumnya. Apakah langkah tersebut sepadan bergantung pada penyimpanan, biaya preprocessing, dan stack pelatihan.
DPO berbeda dari supervised fine-tuning
DPO mudah disalahartikan sebagai fine-tuning biasa karena keduanya dapat menggunakan arsitektur model bahasa dan optimizer berbasis gradient yang sama. Namun, sinyal pelatihannya berbeda.
Pada supervised fine-tuning, respons yang dipilih diperlakukan sebagai sequence target:
prompt -> chosen responseObjektifnya menaikkan likelihood token-token respons tersebut. Respons yang ditolak bahkan mungkin tidak muncul dalam loss.
Pada DPO, pasangan respons sangat penting:
prompt -> chosen response versus rejected responseObjektif menggunakan hubungan probabilitas antara kedua respons dan membandingkan hubungan pada kebijakan yang dilatih dengan hubungan pada kebijakan referensi.
Perbedaan ini penting ketika menyusun data. Jika setiap respons yang ditolak jelas rusak, pelatihan preferensi mungkin hanya mengajari model menghindari cacat sepele. Pasangan yang lebih sulit dan berbeda pada perilaku yang benar-benar Anda pedulikan memberi perbandingan yang lebih informatif, selama penilai dapat menilainya secara konsisten.
DPO juga tidak menggantikan supervised fine-tuning dalam setiap pipeline. Jika Anda memiliki demonstrasi berkualitas tinggi dan perlu membuat model mempelajari format respons atau pola tugas, supervised fine-tuning dapat menjadi alat langsung yang lebih sederhana. Preference optimization menjadi sangat relevan ketika sinyal yang diinginkan memang bersifat komparatif.
Bangun data preferensi berdasarkan perilaku yang dituju
Objektif tidak dapat memulihkan informasi yang tidak dinyatakan oleh dataset. Karena itu, konstruksi pasangan layak mendapat perhatian sebesar perhatian terhadap optimizer.
Pertimbangkan asisten coding yang ditujukan untuk memberi bantuan debugging secara ringkas. Pasangan yang berguna dapat mempertahankan isi faktual kurang lebih sama sambil mengubah perilaku yang dievaluasi:
prompt: Diagnose this null-pointer failure from the stack trace.
chosen: identifies the likely null access, points to the relevant frame,
and suggests one focused check
rejected: gives the same likely cause but adds several unrelated fixes and
a long generic explanationPasangan itu membawa sinyal yang lebih jelas tentang keringkasan dibandingkan pasangan yang respons ditolaknya sekaligus salah secara faktual, kasar, bertele-tele, dan formatnya rusak. Ketika banyak atribut berubah bersamaan, sinyal optimisasi tidak dapat memberi tahu atribut mana yang mendorong preferensi.
Pemeriksaan dataset yang berguna meliputi:
- pastikan setiap pasangan memiliki prompt dan konteks relevan yang sama persis;
- tetapkan kriteria penilai sebelum mengumpulkan penilaian dalam jumlah besar;
- periksa ketidaksepakatan alih-alih diam-diam memaksa pasangan ambigu menjadi satu label;
- hapus artefak template yang membocorkan sumber masing-masing respons;
- pisahkan prompt evaluasi dari pasangan pelatihan;
- periksa slice penting, seperti prompt panjang, permintaan dengan banyak kode, atau kasus sensitif terhadap keselamatan, alih-alih hanya mengandalkan skor agregat.
Label berpasangan bukan kebenaran objektif. Label tersebut mengodekan preferensi berdasarkan rubrik dan populasi penilai tertentu. Model dapat mengoptimalkan sinyal itu sambil tetap salah fakta atau gagal pada situasi yang tidak ada dalam dataset.
Perhatikan efek panjang respons
Sequence log probability adalah penjumlahan atas token respons. Karena itu, completion yang lebih panjang mengakumulasi lebih banyak suku log-probability. Struktur chosen-versus-rejected dan rasio referensi pada DPO membuat perilakunya lebih bernuansa daripada sekadar menyukai teks pendek, tetapi panjang respons tetap dapat berinteraksi dengan objektif dan komposisi dataset.
Misalnya, jika penilai secara konsisten memilih jawaban rinci dibandingkan jawaban ringkas, kebijakan hasil tuning dapat bergeser ke output yang lebih panjang karena itulah preferensi yang dinyatakan. Kebalikannya dapat terjadi ketika jawaban ringkas mendominasi sisi chosen. Ini merupakan sifat data sekaligus sifat optimisasi.
Jangan menyimpulkan kualitas respons hanya dari panjangnya. Lacak panjang output bersama preference win rate, ketepatan tugas, perilaku refusal, dan metrik khusus domain. Jika panjang berubah tajam setelah tuning, periksa contoh sebelum memutuskan apakah perubahan tersebut bermanfaat atau merugikan.
Evaluasi di luar objektif pelatihan
DPO loss yang menurun memastikan model semakin cocok dengan perbandingan preferensi yang digunakan untuk optimisasi. Hal itu tidak membuktikan bahwa asisten yang di-deploy menjadi lebih baik.
Evaluasi praktis sebaiknya menguji setidaknya tiga lapisan perilaku.
Pertama, ukur preferensi target pada prompt held-out. Untuk kualitas subjektif, evaluasi berpasangan secara blinded dapat mengikuti bentuk sinyal pelatihan. Acak urutan penyajian agar evaluator tidak bias terhadap sisi tertentu.
Kedua, ukur kemampuan yang harus tetap utuh. Jika tujuan tuning adalah tone, uji juga akurasi faktual, kepatuhan instruksi, structured output, ketepatan kode, atau kemampuan relevan lainnya. Preference tuning dapat menukar satu perilaku dengan perilaku lain.
Ketiga, periksa dampak operasional. Model hasil tuning mungkin menghasilkan respons lebih panjang, lebih banyak refusal, atau distribusi token yang berbeda. Pergeseran tersebut dapat mengubah latency dan biaya inference meskipun arsitektur model tetap sama.
Evaluasi juga perlu membandingkan baseline yang berguna. Run DPO yang mengungguli model referensi tetapi tidak mengungguli supervised fine-tuning sederhana mungkin tidak membenarkan tambahan kompleksitas data dan pelatihan.
Kesalahan implementasi yang umum
Beberapa kesalahan dapat membuat pipeline DPO tampak masuk akal padahal mengoptimalkan besaran yang salah.
Memberi skor token prompt sebagai token respons
Probabilitas respons bersyarat harus memberi skor pada completion sambil menggunakan prompt sebagai conditioning. Memasukkan likelihood token prompt ke skor respons dapat menyisipkan perbedaan yang tidak relevan, terutama ketika formatting atau masking berbeda antara batch chosen dan rejected.
Tanpa sengaja menggunakan referensi yang ikut bergerak
Objektif standar mengasumsikan kebijakan referensi yang tetap. Jika parameter referensi diperbarui bersama kebijakan yang dilatih, log-ratio tidak lagi merepresentasikan pergerakan terhadap jangkar yang stabil.
Mencampur konvensi tokenisasi
Skor chosen, rejected, dan reference harus menggunakan tokenisasi serta formatting prompt yang kompatibel. Perbedaan chat template yang tersembunyi dapat mengubah probabilitas sequence karena alasan yang tidak berkaitan dengan preferensi.
Menganggap respons yang disukai sebagai jaminan faktual
Penilai dapat menyukai teks yang lancar tetapi salah. DPO memperkuat sinyal preferensi; DPO tidak memverifikasi klaim secara independen. Tugas dengan jawaban objektif tetap memerlukan pemeriksaan ketepatan.
Membaca training accuracy sebagai kualitas deployment
Proporsi margin positif yang tinggi pada data training dapat berasal dari menghafal pasangan preferensi yang sempit. Prompt held-out dan evaluasi khusus perilaku diperlukan untuk menguji generalisasi.
Kapan DPO cocok digunakan
DPO merupakan kandidat kuat ketika Anda sudah memiliki model referensi yang mumpuni, dapat mengumpulkan pasangan chosen-versus-rejected yang bermakna, dan menginginkan prosedur optimisasi offline tanpa tahap pelatihan reward model terpisah dan loop online policy optimization.
Contoh umum mencakup tuning tone respons, kepatuhan format, kriteria helpfulness, atau preferensi jawaban khusus domain ketika evaluator lebih andal membandingkan dua kandidat daripada menulis jawaban ideal dari nol.
Metode yang lebih sederhana bisa lebih tepat pada kasus lain. Gunakan supervised fine-tuning ketika completion target berkualitas tinggi secara langsung menyatakan perilaku yang diinginkan. Gunakan aturan deterministik atau validator ketika persyaratannya mekanis, seperti JSON valid atau schema yang ketat. Jika sistem harus beradaptasi dari data interaksi baru selama optimisasi, dataset DPO offline mungkin tidak menyediakan feedback loop yang dibutuhkan aplikasi.
Pemilihannya bukan soal memilih metode alignment yang paling canggih. Tujuannya adalah mencocokkan sinyal optimisasi dengan bukti yang dapat Anda kumpulkan dan perilaku yang dapat Anda evaluasi.
Gunakan pandangan relatif terhadap referensi
Cara paling berguna untuk memahami Direct Preference Optimization adalah sebagai perbandingan atas perbandingan. Pasangan preferensi menyatakan bahwa satu respons harus berada di atas respons lain. Model referensi menunjukkan seberapa kuat kebijakan awal sudah memisahkan pasangan tersebut. DPO memperbarui kebijakan yang dilatih agar margin preferensi relatifnya bergerak ke arah yang diinginkan sambil tetap terikat pada formulasi kebijakan referensi.
Untuk implementasi pertama, mulai dengan set preferensi kecil yang ditinjau dengan cermat. Verifikasi response masking dan sequence log probability secara manual pada beberapa contoh, pastikan referensi tetap dibekukan, dan lacak perilaku held-out di luar DPO loss. Setelah bagian-bagian itu dapat dipercaya, memperbesar dataset dan training run menjadi keputusan engineering yang jauh lebih dapat dipertanggungjawabkan.