Direct Preference Optimization (DPO)
Tìm hiểu cách Direct Preference Optimization (DPO) đơn giản hóa việc căn chỉnh AI. Khám phá cách phương pháp hiệu quả này thay thế RLHF để cải thiện độ an toàn và hiệu suất mô hình.
Direct Preference Optimization (DPO) là một kỹ thuật thuật toán ổn định và hiệu quả được sử dụng để tinh chỉnh các model trí tuệ nhân tạo, đảm bảo chúng phù hợp với mong muốn của con người, tiêu chuẩn an toàn và các nguyên tắc đạo đức. Không giống như các phương pháp truyền thống đòi hỏi các pipeline đa giai đoạn phức tạp để thu thập phản hồi của con người, DPO đơn giản hóa toán học quá trình căn chỉnh bằng cách xử lý việc học sở thích trực tiếp như một classification task in machine learning tiêu chuẩn. Bằng cách tối ưu hóa trực tiếp model dựa trên một tập dữ liệu về sở thích của con người—nơi các annotator chọn phản hồi "thắng" thay vì phản hồi "thua"—các nhà phát triển có thể cải thiện đáng kể tính hữu ích, trung thực và an toàn của các foundation models quy mô lớn và các generative AI systems hiện đại.
DPO đơn giản hóa việc căn chỉnh model như thế nào#
Sự đổi mới chính của Direct Preference Optimization nằm ở việc loại bỏ "kẻ trung gian" kiến trúc. Trước đây, việc căn chỉnh một Large Language Model (LLM) hoặc một Vision-Language Model liên quan đến một quy trình phức tạp được gọi là Reinforcement Learning from Human Feedback (RLHF). RLHF yêu cầu huấn luyện một reward model riêng biệt để xấp xỉ điểm số của con người, sau đó sử dụng một thuật toán học tăng cường dễ mất ổn định như Proximal Policy Optimization để cập nhật model chính.
DPO loại bỏ hoàn toàn về mặt toán học nhu cầu về reward model riêng biệt này. Thay vào đó, nó dựa vào một loss function đã suy ra nhằm làm tăng khả năng tạo ra các đầu ra "được ưa chuộng" đồng thời làm giảm khả năng tạo ra các đầu ra "bị từ chối". Nó sử dụng một reference model để giới hạn Kullback-Leibler divergence, đảm bảo model được cập nhật không lệch quá xa khỏi phân phối training data ban đầu của nó. Sự đơn giản hóa toán học này làm cho quá trình này hoạt động gần gũi hơn nhiều với supervised learning tiêu chuẩn, dẫn đến thời gian hội tụ nhanh hơn và mức sử dụng bộ nhớ thấp hơn trên GPU hardware. Điều này vốn dĩ làm giảm nguy cơ model collapse và loại bỏ việc hyperparameter tuning diện rộng.
Các ứng dụng trong thực tế#
Direct Preference Optimization đang định hình lại một cách cơ bản cách các hệ thống AI tương tác được xây dựng và triển khai trên nhiều ngành công nghiệp có rủi ro cao nhằm theo đuổi AI Safety vững chắc.
- Nâng cao các tác nhân hội thoại: Trong lĩnh vực chatbots và trợ lý ảo, DPO được sử dụng để giảm tính độc hại và căn chỉnh các phản hồi với các OpenAI safety best practices nghiêm ngặt và Anthropic research on AI alignment. Các annotator xem xét hai câu trả lời cho một prompt, đánh dấu câu trả lời lịch sự, mang tính sự thật là "đã chọn". Sau đó, DPO cập nhật trọng số model để ưu tiên phong cách hội thoại cụ thể này đồng thời phạt các hiện tượng ảo giác.
- Tinh chỉnh các Vision-Language Models: Khi image recognition phát triển, các model ngày càng được yêu cầu giải thích những gì chúng nhìn thấy cho các người vận hành là con người. Đối với các ứng dụng như trả lời câu hỏi trực quan, DPO cho phép các nhà nghiên cứu căn chỉnh đầu ra văn bản của model với các sở thích chi tiết của con người. Ví dụ, nếu người dùng yêu cầu hệ thống robot được cung cấp năng lượng bởi Ultralytics YOLO26 mô tả một đối tượng, DPO sẽ huấn luyện model ưu tiên các mô tả mang tính sự thật, súc tích hơn là các diễn giải mơ hồ, tuân thủ chặt chẽ các hướng dẫn AI Ethics nghiêm ngặt.
DPO trong thực tiễn#
Việc triển khai DPO đòi hỏi dữ liệu theo cặp chất lượng cao. Các workflow hiện đại tận dụng các công cụ toàn diện như Ultralytics Platform để quản lý liền mạch các tập dữ liệu này, đảm bảo rằng quá trình data annotation mang lại các ví dụ "thắng" và "thua" rõ ràng. Bạn có thể khám phá nghiên cứu nền tảng đằng sau điều này trong bài báo Direct Preference Optimization: Your Language Model is Secretly a Reward Model hoặc đọc về Alignment and Human Preferences từ Stanford HAI.
Đoạn mã Python sau đây minh họa cấu trúc dữ liệu nền tảng cần thiết cho việc tính toán loss theo phong cách DPO bằng cách sử dụng các hàm được tìm thấy trong PyTorch API reference.
import torch
import torch.nn.functional as F
def dpo_loss(chosen_logps, rejected_logps, beta=0.1):
# DPO maximizes the margin between chosen and rejected log probabilities
logits = beta * (chosen_logps - rejected_logps)
# The loss minimizes the negative log sigmoid of this margin
return -F.logsigmoid(logits).mean()
print(f"DPO Loss: {dpo_loss(torch.tensor([-0.5]), torch.tensor([-2.5])):.4f}")





