f-PO: Generalizing Preference Optimization with f-divergence Minimization

Jiaqi Han, Mingjian Jiang, Yuxuan Song, Stefano Ermon, Minkai Xu
10/29/2024
cs.CLcs.LG

Official code: MinkaiXu/fPO (14 stars, MIT, last commit 2025-04-02).

Abstract

Preference optimization has made significant progress recently, with numerous methods developed to align language models with human preferences. This paper introduces $f$-divergence Preference Optimization ($f$-PO), a novel framework that generalizes and extends existing approaches. $f$-PO minimizes $f$-divergences between the optimized policy and the optimal policy, encompassing a broad family of alignment methods using various divergences. Our approach unifies previous algorithms like DPO and EXO, while offering new variants through different choices of $f$-divergences. We provide theoretical analysis of $f$-PO's properties and conduct extensive experiments on state-of-the-art language models using benchmark datasets. Results demonstrate $f$-PO's effectiveness across various tasks, achieving superior performance compared to existing methods on popular benchmarks such as AlpacaEval 2, Arena-Hard, MT-Bench, and Open LLM Leaderboard v2. Additionally, we present ablation studies exploring the impact of different $f$-divergences, offering insights into the trade-offs between regularization and performance in offline preference optimization. Our work contributes both practical algorithms and theoretical understanding to the field of language model alignment. Code is available at https://github.com/MinkaiXu/fPO.

View on arXivView PDF

Code Implementations(1)

MinkaiXu/fPOOfficial100%
MIT

f-PO: Generalizing Preference Optimization with f-divergence Minimization

140Shell, PythonOct 26, 20241 years agoMIT

Similar Papers

Cite this paper

@article{han2024fpo,
  title  = {f-PO: Generalizing Preference Optimization with f-divergence Minimization},
  author = {Jiaqi Han and Mingjian Jiang and Yuxuan Song and Stefano Ermon and Minkai Xu},
  year   = {2024},
  eprint = {2410.21662},
  archivePrefix = {arXiv},
  url    = {http://arxiv.org/abs/2410.21662v2}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/2410.21662.svg)](https://codeofpaper.com/paper/2410.21662)

Discussion