Heim > Artikel > Technologie-Peripheriegeräte > Welcher Algorithmus zur Optimierung menschlicher Präferenzen ist besser? Folgen Sie dem Meister, um DPO, IPO und KTO zu verstehen
Obwohl Methoden, die menschliche Etiketten zur relativen Qualität von modellgenerierten Inhalten sammeln und unbeaufsichtigte große Sprachmodelle verfeinern, um diese Präferenzen durch verstärkendes Lernen aus menschlichem Feedback (RLHF) zu erfüllen, der Entwicklung von Konversations-KI einen enormen Schub verliehen haben . Da RLHF jedoch ein komplexer und oft instabiler Prozess ist, ist die Forschung zur direkten Nutzung von Optimierungsfunktionen zur Abstimmung menschlicher Präferenzen mit Modellergebnissen heutzutage ein heißes Thema.
Dieser Artikel ist ein Blog über das Umarmen von Gesichtern, der die Leistung von drei heutzutage gängigen Algorithmen zur Optimierung menschlicher Präferenzen vergleicht. Die Autoren führten umfangreiche Experimente durch, um drei praktikable Methoden zur Optimierung von Sprachmodellen ohne Verstärkungslernen (oder Präferenzoptimierung) unter Verwendung verschiedener Modelle und verschiedener Hyperparameter zu evaluieren. Die drei Optimierungsmethoden sind:
Die fünf Autoren dieses Artikels .
Zu lang zum LesenIn diesem Blog bewertet der Autor drei hervorragende LLM-Ausrichtungsalgorithmen, nämlich: Direct Preference Optimization (DPO), Identity Preference Optimization (IPO) und Taversky Optimization Optimization (KTO), und es wurden Experimente an zwei hochwertigen LLMs von durchgeführt 7b Parametergröße. Diese LLMs wurden überwacht, fein abgestimmt, aber nicht an menschliche Vorlieben angepasst. Die Autoren stellten fest, dass es zwar möglich war, den Algorithmus mit der besten Leistung zu finden, einige wichtige Hyperparameter jedoch angepasst werden mussten, um die besten Ergebnisse zu erzielen.
Ausrichtung ohne Verstärkungslernen
Schematische Darstellung des DPO-Prinzips (https://arxiv.org/abs/2305.18290)
Direkte Präferenzoptimierung (DPO) ist zu einer wichtigen Sprache geworden Modell (LLM) ist ein vielversprechender Ansatz, der menschliche oder künstliche Intelligenzpräferenzen kombiniert. Im Gegensatz zu herkömmlichen Ausrichtungsmethoden, die auf Verstärkungslernen basieren, definiert DPO die Ausrichtungsformel in eine einfache Verlustfunktion um, die direkt auf den Präferenzdatensatz {(x, y_w, y_l)} optimiert werden kann, wobei x eine Eingabeaufforderung und y_w , y_l sind die bevorzugten bzw. nicht bevorzugten Antworten.
Beispiel für einen Datensatz zur Anpassung menschlicher Präferenzen
DPOs einfache und benutzerfreundliche Funktionen machen es beliebt und wurden erfolgreich beim Training von Modellen wie dem von Intel vorgeschlagenen Zephyr-Modell und NeuralChat eingesetzt . Der Erfolg von DPO hat Forscher dazu inspiriert, neue Verlustfunktionen zu untersuchen, die sich in die folgenden zwei Hauptrichtungen zusammenfassen lassen:
Robustheit: Ein Nachteil von DPO besteht darin, dass es sich schnell an menschlichen Präferenzdatensätzen verschlechtert und zu einer Überanpassung führt. Um dies zu vermeiden, führten Forscher von Google DeepMind die Identity Preference Optimization (IPO) ein, die dem DPO-Verlust einen Regularisierer hinzufügt und eine Konvergenz des Modells ohne den Einsatz von Techniken wie „Early Stopp“ ermöglicht.
Zuordnung zu paarweisen Präferenzdaten: Wie die meisten Alignment-Methoden benötigt DPO einen paarweisen Präferenzdatensatz
, um besser kennzeichnen zu können, welches Modell auf eine Reihe von Kriterien (z. B. Nützlichkeit oder Schädlichkeit) reagiert. In der Praxis ist die Erstellung dieser Daten ein zeitaufwändiges und kostspieliges Unterfangen. ContextualAI hat kürzlich eine interessante Alternative namens Kahneman-Taversky Optimization (KTO) vorgeschlagen, die vollständig auf Beispielen basiert, die als „gut“ oder „schlecht“ gekennzeichnet sind (wie die in der Chat-Benutzeroberfläche angezeigten Symbole? oder ?), um den Verlust zu definieren Funktion. Diese Tags sind einfacher zu erhalten und man kann sagen, dass KTO eine vielversprechende Methode ist, um Chat-Modelle, die in Produktionsumgebungen laufen, kontinuierlich zu aktualisieren.与此同时,需要注意这些方法都有相应的超参数,其中最重要的是 β ,这是一个控制对使用模型的偏好程度的权重。随着这些方法已经可以通过第三方库(如 huggingface TRL)来使用,接下来自然而然的问题是「在这些方法和超参数中,哪个组合能产生最好的聊天模型?」
本文旨在通过对这三种方法进行实验分析来回答这个问题,并且还要对关键超参数逐个分析,例如 β 和训练步数,最后通过 MT-Bench 评估所得模型的性能。MT-Bench 是衡量聊天模型功能的常见基准。
源代码地址:https://github.com/huggingface/alignment-handbook
使用链接
以下是相关资料的获取地址:
执行超参数扫描的代码和配置文件:https://github.com/huggingface/alignment-handbook/tree/main/recipes/pref_align_scan
本文使用的数据集和模型的集合:https://huggingface.co/collections/alignment-handbook/dpo-vs-kto-vs-ipo-65a69c5f03548d61dbe29ef8
实验设置
在进行对齐实验时,需要考虑两个主要因素:需要优化的模型和数据集。为了获得更多数据,作者考虑了两个模型,OpenHermes-2.5-Mistral-7B 和 Zephyr-7B-β-sft,以及两个对齐数据集:Intel 的 orca_dpo_paries 数据集和 ultrafeedback-binarized(https://huggingface.co/datasets/HuggingFaceH4/ultrafeedback_binarized)数据集。
orca_dpo_paries 数据集地址:https://huggingface.co/datasets/Intel/orca_dpo_pairs
ultrafeedback-binarized 数据集地址:https://huggingface.co/datasets/HuggingFaceH4/ultrafeedback_binarized
在第一个实验中,作者使用了 OpenHermes-2.5-Mistral-7B,因为它是不使用任何对齐方法的条件下,最好的 7B 级聊天模型之一。然后,本文使用了 Intel 的 orca_dpo_paries 数据集,该数据集包含 13k 个 prompt,其中被选择的响应结果由 GPT-4 生成,不需要的响应由 Llama Chat 13b 生成。这也是 NeuralChat 和 NeuralHermes-2.5-Mistral-7B 使用的数据集。
由于 KTO 本身不需要成对的偏好数据,作者直接将 GPT-4 生成的响应归类为「好」标签,将 Llama Chat 13b 的响应视为「坏」标签。虽然 GPT-4 的响应可能比 Llama Chat 13b 普遍更受欢迎,但在某些情况下,Llama-Chat-13b 可能会产生更好的响应,但作者认为这只是小概率事件,可以忽略不计。
第二个实验基于 ultrafeedback-binarized 数据集,在 Zephyr-7b-β-sft 模型上进行了偏好比对。ultrafeedback-binarized 数据集包含 66k 个 prompt 以及成对的偏好与拒绝的响应。该数据集之前被用于训练原始 Zephyr 模型,该模型当时在许多自动化基准测试和人工评估方面是 7B 类模型中最好的。
实验配置
对齐手册提供了一种配置单个实验的简单方法,这些参数可以在 run_dpo.py 中配置。
作者在 Zephyr 上的实验配置也基本类似。
聊天模板由基本聊天模型中自动推断,OpenHermes-2.5 使用 ChatML,Zephyr 使用 H4。如果用户想使用自己的聊天格式,分词库现在已经启用了使用 jinja 格式字符串的用户定义聊天模板:
# Example of the Zephyr chat template"{% for message in messages %}\n {% if message ['role'] == 'user' %}\n {{ '<|user|>\n' + message ['content'] + eos_token }}\n {% elif message ['role'] == 'system' %}\n {{ '<|system|>\n' + message ['content'] + eos_token }}\n {% elif message ['role'] == 'assistant' %}\n {{ '<|assistant|>\n' + message ['content'] + eos_token }}\n {% endif %}\n {% if loop.last and add_generation_prompt %}\n {{ '<|assistant|>' }}\n {% endif %}\n {% endfor %}"
如下可以将对话格式化:
# <|system|># You are a friendly chatbot who always responds in the style of a pirate.</s># <|user|># How many helicopters can a human eat in one sitting?</s># <|assistant|># Ah, me hearty matey! But yer question be a puzzler! A human cannot eat a helicopter in one sitting, as helicopters are not edible. They be made of metal, plastic, and other materials, not food!
遍历超参数
实验中,作者逐次调整 β 值,分别在 0.01、0.1、0.2、…、0.9 时,对 DPO、IPO 和 KTO 三种方法进行实验。之所以包括 0.01,是因为作者观察到一些对齐算法对这个参数特别敏感。所有实验都只训练了一个 epoch。期间其他超参数保持不变,包括随机种子。
然后,作者使用上面定义的基本配置在 hugging face 的模型上逐个进行实验。
# Define an array containing the base configs we wish to fine tuneconfigs=("zephyr" "openhermes")# Define an array of loss typesloss_types=("sigmoid" "kto_pair" "ipo")# Define an array of beta valuesbetas=("0.01" "0.1" "0.2" "0.3" "0.4" "0.5" "0.6" "0.7" "0.8" "0.9")# Outer loop for loss typesfor config in "${configs [@]}"; dofor loss_type in "${loss_types [@]}"; do# Inner loop for beta valuesfor beta in "${betas [@]}"; do# Determine the job name and model revision based on loss typejob_name="$config_${loss_type}_beta_${beta}"model_revision="${loss_type}-${beta}"# Submit the jobsbatch --job-name=${job_name} recipes/launch.slurm dpo pref_align_scan config_$config deepspeed_zero3 \\"--beta=${beta} --loss_type=${loss_type} --output_dir=data/$config-7b-align-scan-${loss_type}-beta-${beta} --hub_model_revision=${model_revision}"donedonedone
实验结果
저자는 다중 회전 대화 벤치마크인 MT Bench를 사용하여 모든 모델을 평가했습니다. 벤치마크에서는 GPT-4를 사용하여 쓰기, 역할극, 추론, 수학, 코딩, 추출, STEM, 인문학 등 8가지 범주에서 모델 성능을 판단합니다. 일부 불완전한 부분이 있지만 MT Bench는 여전히 대화형 LLM을 평가하는 좋은 방법입니다.
Zephyr-7b-β-SFT
다양한 β 값에서 MT Bench의 Zephyr 모델 점수.
Zephyr 모델의 경우 저자는 β 값이 0.01일 때 최고의 모델 성능이 달성되는 것을 관찰했습니다. 이 결론은 테스트된 세 가지 알고리즘 모두에서 일관되며 흥미로운 후속 실험은 0.0-0.2 범위에서 보다 세밀한 스캔을 수행하는 것입니다. DPO가 가장 높은 MT 벤치 점수를 달성하는 반면 KTO(쌍별)는 하나의 하이퍼매개변수 사례를 제외한 모든 설정에서 더 나은 결과를 얻는 것으로 나타났습니다. IPO는 더 강력한 이론적 보장에도 불구하고 한 가지 경우를 제외하고 모두 기본 모델보다 더 나쁜 것으로 보입니다.
MT Bench 각 카테고리의 Zephyr 모델에 대한 각 알고리즘의 최상의 결과입니다. 이러한 모델의 강점과 약점은 MT 벤치에서 평가한 다양한 범주에서 각 알고리즘의 최상의 결과를 세분화하여 확인할 수 있습니다. 보시다시피, 추론, 코딩, 수학 문제에는 아직 개선의 여지가 많습니다.
OpenHermes-7b-2.5이 모델의 각 알고리즘의 관찰 결과는 OpenHermes, 즉 DPO>KTO>IPO와 일치하지만 β의 최적 가치 지점은 다릅니다. DPO, KTO 및 IPO에 대한 최적의 β 선택은 각각 0.6, 0.3 및 0.01입니다.
OpenHermes 모델의 다양한 β에 대한 MT Bench 점수. OpenHermes-7b-2.5는 확실히 더 강력한 기본 모델로, 인간 선호도 조정 후 MT 벤치 점수가 0.3만 향상되었습니다.
MT Bench 각 카테고리의 OpenHermes 모델에 대한 세 가지 알고리즘의 최상의 결과입니다.
요약이 블로그 게시물에서 저자는 기본 설정 정렬을 수행할 때 올바른 하이퍼
매개변수를 선택하는 것이 중요함을 강조했습니다. DPO는 쌍별 우선순위 설정에서 KTO를 능가하는 것으로 실험적으로 입증되었지만, 더 강력한 이론적 보장에도 불구하고 IPO의 성과는 좋지 않은 것으로 보입니다. 이 실험 결과는 재현 가능하며 코드와 구성 파일은 이제 정렬 매뉴얼에서 찾을 수 있습니다. 또한 가장 성능이 좋은 모델과 데이터 세트를 볼 수도 있습니다.
미래 전망저자는 계속해서 새로운 인간 선호 정렬 알고리즘을 탐구하고 그 성능을 평가할 것입니다. 적어도 현재로서는 DPO가 가장 강력하고 성능이 뛰어난 대규모 언어 모델 정렬 알고리즘입니다. DPO와 IPO 모두 쌍별 선호도 데이터가 필요하고 KTO는 긍정 및 부정 레이블이 포함된 모든 데이터 세트에 적용될 수 있기 때문에 KTO도 유망합니다.
원본 링크: https://huggingface.co/blog/pref-tuning?continueFlag=480af4490eaf8a2f4544fe3658589730Das obige ist der detaillierte Inhalt vonWelcher Algorithmus zur Optimierung menschlicher Präferenzen ist besser? Folgen Sie dem Meister, um DPO, IPO und KTO zu verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!