어떤 인간 선호도 최적화 알고리즘이 더 낫습니까? DPO, IPO 및 KTO를 이해하려면 마스터를 따르십시오.

PHPz
풀어 주다: 2024-08-05 21:19:22
원래의
727명이 탐색했습니다.

모델 생성 콘텐츠의 상대적 품질에 대한 인간 레이블을 수집하고 인간 피드백(RLHF)을 통한 강화 학습을 통해 이러한 선호도에 맞게 감독되지 않은 대규모 언어 모델을 미세 조정하는 방법이 대화형 AI 개발에 큰 도움을 주었지만 . 그러나 RLHF는 복잡하고 종종 불안정한 프로세스이기 때문에 인간의 선호도를 모델 결과와 일치시키기 위해 최적화 기능을 직접 사용하는 연구가 요즘 뜨거운 이슈가 되고 있습니다.

이 글은 포옹 얼굴에 관한 블로그로 요즘 흔히 사용되는 세 가지 인간 선호도 최적화 알고리즘의 성능을 비교합니다. 저자는 다양한 모델과 다양한 하이퍼 매개변수를 사용하여 강화 학습(또는 선호도 조정) 없이 언어 모델을 조정하는 세 가지 가능한 방법을 평가하기 위한 광범위한 실험을 수행했습니다. 세 가지 최적화 방법은 다음과 같습니다.

    직접 선호 최적화(DPO)(https://huggingface.co/papers/2305.18290)
  • 신원 선호 최적화(IPO)(https://huggingface.co/papers/ 2310.12036)
  • Kahneman-Taversky Optimization (KTO) (https://github.com/ContextualAI/HALOs)

어떤 인간 선호도 최적화 알고리즘이 더 낫습니까? DPO, IPO 및 KTO를 이해하려면 마스터를 따르십시오.

이 기사의 5명의 저자

읽기엔 너무 길다

이 블로그에서 저자는 DPO(직접 선호 최적화), IPO(신원 선호 최적화) 및 KTO(Taversky Optimization Optimization)라는 세 가지 우수한 LLM 정렬 알고리즘을 평가하고 다음 두 가지 고품질 LLM에서 실험을 수행했습니다. 7b 매개변수 크기. 이러한 LLM은 미세 조정 감독을 받았지만 인간의 선호도에 맞게 조정되지는 않았습니다. 저자는 가장 잘 수행되는 알고리즘을 찾는 것이 가능하지만 최상의 결과를 얻으려면 일부 주요 하이퍼 매개변수를 조정해야 한다는 사실을 발견했습니다.

강화 학습 없는 정렬

어떤 인간 선호도 최적화 알고리즘이 더 낫습니까? DPO, IPO 및 KTO를 이해하려면 마스터를 따르십시오. DPO 원리의 개략도 (https://arxiv.org/abs/2305.18290)

직접 선호 최적화(DPO)가 주요 언어가 되었습니다 모델(LLM)은 인간 또는 인공 지능 선호도를 결합하는 유망한 접근 방식입니다. 강화 학습을 기반으로 한 기존 정렬 방법과 달리 DPO는 정렬 공식을 간단한 손실 함수로 재정의합니다. 이는 선호도 데이터 세트 {(x, y_w, y_l)}에서 직접 최적화될 수 있습니다. 여기서 x는 프롬프트이고, y_w, y_l은 다음과 같습니다. 선호하는 응답과 선호하지 않는 응답을 각각 표시합니다.

어떤 인간 선호도 최적화 알고리즘이 더 낫습니까? DPO, IPO 및 KTO를 이해하려면 마스터를 따르십시오.인간 선호도 조정 데이터 세트의 예

DPO는 간단하고 사용하기 쉬운 기능으로 인기를 얻었으며 Intel이 제안한 Zephyr 모델 및 NeuralChat과 같은 모델의 훈련에 성공적으로 사용되었습니다. . DPO의 성공은 연구자들이 새로운 손실 함수를 연구하도록 영감을 주었으며 이는 다음 두 가지 주요 방향으로 요약될 수 있습니다.

견고함: DPO의 한 가지 단점은 인간 선호 데이터 세트에서 빠르게 저하된다는 것입니다. 과적합됩니다. 이를 방지하기 위해 Google DeepMind의 연구원들은 DPO 손실에 정규화 장치를 추가하고 "조기 중지"와 같은 기술을 사용하지 않고도 모델이 수렴할 수 있도록 하는 IPO(ID 선호 최적화)를 도입했습니다.

  • 쌍별 선호도 데이터에 할당: 대부분의 정렬 방법과 마찬가지로 DPO에는 일련의 기준(예: 유용성 또는 유해성)을 기반으로 응답하는 모델에 더 나은 레이블을 지정할 수 있도록 쌍별 선호도 데이터 세트가 필요합니다

    . 실제로 이러한 데이터를 생성하는 것은 시간과 비용이 많이 드는 노력입니다. ContextualAI는 최근 KTO(Kahneman-Taversky Optimization)라는 흥미로운 대안을 제안했습니다. 이는 손실을 정의하기 위해 "좋음" 또는 "나쁨"(예: 채팅 UI에 표시되는 아이콘? 또는 ?)으로 표시된 샘플을 기반으로 합니다. 기능. 이러한 태그는 얻기가 더 쉽고, 생산 환경에서 실행되는 채팅 모델을 지속적으로 업데이트하는 유망한 방법이라고 할 수 있습니다.

与此同时,需要注意这些方法都有相应的超参数,其中最重要的是 β ,这是一个控制对使用模型的偏好程度的权重。随着这些方法已经可以通过第三方库(如 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 中配置。

어떤 인간 선호도 최적화 알고리즘이 더 낫습니까? DPO, IPO 및 KTO를 이해하려면 마스터를 따르십시오.

作者在 Zephyr 上的实验配置也基本类似。

聊天模板由基本聊天模型中自动推断,OpenHermes-2.5 使用 ChatML,Zephyr 使用 H4。如果用户想使用自己的聊天格式,分词库现在已经启用了使用 jinja 格式字符串的用户定义聊天模板:

# Example of the Zephyr chat template"{% for message in messages %}\n {% if message [&#39;role&#39;] == &#39;user&#39; %}\n {{ &#39;<|user|>\n&#39; + message [&#39;content&#39;] + eos_token }}\n {% elif message [&#39;role&#39;] == &#39;system&#39; %}\n {{ &#39;<|system|>\n&#39; + message [&#39;content&#39;] + eos_token }}\n {% elif message [&#39;role&#39;] == &#39;assistant&#39; %}\n {{ &#39;<|assistant|>\n&#39;  + message [&#39;content&#39;] + eos_token }}\n {% endif %}\n {% if loop.last and add_generation_prompt %}\n {{ &#39;<|assistant|>&#39; }}\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
로그인 후 복사

实验结果

The authors evaluated all models using MT Bench, a multi-turn dialogue benchmark. The benchmark uses GPT-4 to judge model performance in eight different categories: writing, role-playing, reasoning, math, coding, extraction, STEM, and humanities. Although it has some imperfections, MT Bench is still a good way to evaluate conversational LLM.

Zephyr-7b-β-SFT

어떤 인간 선호도 최적화 알고리즘이 더 낫습니까? DPO, IPO 및 KTO를 이해하려면 마스터를 따르십시오.

Scores of the Zephyr model on MT Bench under different β values.

For the Zephyr model, the authors observed that the best model performance was achieved when the β value was 0.01. This conclusion is consistent across all three algorithms tested, and an interesting follow-up experiment would be to perform a more fine-grained scan in the 0.0-0.2 range. While DPO achieves the highest MT Bench scores, we find that KTO (pairwise) achieves better results in all settings except one hyperparameter case. IPOs, despite their stronger theoretical guarantees, appear to be worse than the base model in all but one case.

어떤 인간 선호도 최적화 알고리즘이 더 낫습니까? DPO, IPO 및 KTO를 이해하려면 마스터를 따르십시오.

MT Bench The best results of each algorithm on the Zephyr model in each category. The strengths and weaknesses of these models can be determined by breaking down the best results of each algorithm in various categories evaluated by MT bench. As can be seen, there is still a lot of room for improvement in reasoning, coding, and math questions.

OpenHermes-7b-2.5

Although the observed results of each algorithm on this model are consistent with OpenHermes, that is, DPO>KTO>IPO, the optimal value points of β are different. The optimal β choices for DPO, KTO, and IPO are 0.6, 0.3, and 0.01, respectively.

어떤 인간 선호도 최적화 알고리즘이 더 낫습니까? DPO, IPO 및 KTO를 이해하려면 마스터를 따르십시오.

MT Bench scores for different β on the OpenHermes model. OpenHermes-7b-2.5 is clearly a stronger base model, with only a 0.3 improvement in MT Bench score after human preference adjustment.

어떤 인간 선호도 최적화 알고리즘이 더 낫습니까? DPO, IPO 및 KTO를 이해하려면 마스터를 따르십시오.

MT Bench The best results of the three algorithms on the OpenHermes model in each category.

Summary

In this blog post, the author highlighted the importance of choosing the right hyper

parameters

when performing preference alignment. DPO is experimentally proven to outperform KTO in pairwise preference settings, although the performance of IPO appears to be poor despite stronger theoretical guarantees. These experimental results are reproducible, and the code and configuration files can now be found in the alignment manual. You can also see the best-performing models and data sets.

Future Outlook

The author will continue to explore new human preference alignment algorithms and evaluate their performance. At least for now, DPO is the most robust and best-performing large language model alignment algorithm. KTO is also promising because both DPO and IPO require pairwise preference data, and KTO can be applied to any data set containing positive and negative labels.

Original link: https://huggingface.co/blog/pref-tuning?continueFlag=480af4490eaf8a2f4544fe3658589730

위 내용은 어떤 인간 선호도 최적화 알고리즘이 더 낫습니까? DPO, IPO 및 KTO를 이해하려면 마스터를 따르십시오.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:jiqizhixin.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!