成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

人類偏好優(yōu)化算法哪家強(qiáng)?跟著高手一文學(xué)懂DPO、IPO和KTO

人工智能 新聞
盡管收集人類對(duì)模型生成內(nèi)容的相對(duì)質(zhì)量的標(biāo)簽,并通過(guò)強(qiáng)化學(xué)習(xí)從人類反饋(RLHF)來(lái)微調(diào)無(wú)監(jiān)督大語(yǔ)言模型,使其符合這些偏好的方法極大地推動(dòng)了對(duì)話式人工智能的發(fā)展。

本文是 hugging face 上的一篇博客,針對(duì)時(shí)下常見的三種人類偏好優(yōu)化算法進(jìn)行了性能比較。作者進(jìn)行了大量的實(shí)驗(yàn),旨在通過(guò)不同的模型和不同的超參數(shù),對(duì)無(wú)需強(qiáng)化學(xué)習(xí)(或偏好調(diào)整)就能調(diào)整語(yǔ)言模型的三種可行方法進(jìn)行評(píng)估。這三種優(yōu)化方法是:

  • 直接偏好優(yōu)化 (Direct Preference Optimization, DPO)(https://huggingface.co/papers/2305.18290)
  • 身份偏好優(yōu)化 (Identity Preference Optimisation, IPO)(https://huggingface.co/papers/2310.12036)
  • Kahneman-Taversky 優(yōu)化(KTO)(https://github.com/ContextualAI/HALOs)

圖片

本文五位作者

太長(zhǎng)不看版

在這篇博客中,作者對(duì)三種優(yōu)秀的 LLM 對(duì)齊算法進(jìn)行了評(píng)估,分別是:直接偏好優(yōu)化(DPO)、身份偏好優(yōu)化(IPO)和 Taversky Optimisation 優(yōu)化(KTO),并且在兩個(gè)高質(zhì)量的 7b 參數(shù) 大小的 LLM 上進(jìn)行了實(shí)驗(yàn)。這些 LLM 經(jīng)過(guò)了有監(jiān)督微調(diào),但沒(méi)有進(jìn)行人類偏好調(diào)整。作者發(fā)現(xiàn),雖然確實(shí)能找到效果最好的算法,但要獲得最佳結(jié)果,必須對(duì)一些關(guān)鍵超參數(shù)進(jìn)行調(diào)整。

無(wú)強(qiáng)化學(xué)習(xí)的對(duì)齊

圖片

DPO 的原理示意圖 (https://arxiv.org/abs/2305.18290)


直接偏好優(yōu)化(DPO)已成為將大型語(yǔ)言模型(LLM)與人類或人工智能偏好相結(jié)合的一種很有前景的方案。與基于強(qiáng)化學(xué)習(xí)的傳統(tǒng)對(duì)齊方法不同,DPO 將對(duì)齊公式重新定義為一個(gè)簡(jiǎn)單的損失函數(shù),該函數(shù)可以直接在偏好數(shù)據(jù)集{(x,y_w,y_l)}上進(jìn)行優(yōu)化,其中 x 是 prompt,y_w,y_l 分別是偏好的和非偏好的響應(yīng)。


圖片

人類偏好調(diào)整數(shù)據(jù)集的示例

DPO 簡(jiǎn)單易用的特性使得它廣受歡迎,并已成功應(yīng)用于 Zephyr 模型和 Intel 提出的 NeuralChat 等模型的訓(xùn)練當(dāng)中。

DPO 的成功激發(fā)了研究人員對(duì)新的損失函數(shù)進(jìn)行研究,這些研究可以歸納為以下兩個(gè)主要方向:

  • 穩(wěn)健性:DPO 的一個(gè)缺點(diǎn)是它在人類偏好數(shù)據(jù)集上很快就會(huì)過(guò)擬合。為了避免這種情況,谷歌 DeepMind 的研究人員引入了身份偏好優(yōu)化(IPO),這種方法為 DPO 損失添加了一個(gè)正則,能夠在不使用「提前停止」等技巧的情況下讓模型收斂。
  • 對(duì)成對(duì)偏好數(shù)據(jù)進(jìn)行分配:與大多數(shù)比對(duì)方法一樣,DPO 需要一個(gè)成對(duì)偏好數(shù)據(jù)集圖片,能夠根據(jù)一組標(biāo)準(zhǔn)(如有益性或有害性),來(lái)標(biāo)記哪種模型響應(yīng)更好。在實(shí)踐過(guò)程中,創(chuàng)建這些數(shù)據(jù)是一項(xiàng)耗時(shí)且成本高昂的工作。ContextualAI 最近提出了一種有趣的替代方案,稱為 Kahneman-Taversky 優(yōu)化(KTO),它完全根據(jù)被標(biāo)記為「好」或「壞」的樣本(例如在聊天 UI 中看到的圖標(biāo)??或??)來(lái)定義損失函數(shù)。這些標(biāo)簽更容易獲得,可以說(shuō) KTO 是一種很有前景的方法,可以不斷更新在生產(chǎn)環(huán)境中運(yùn)行的聊天模型。

與此同時(shí),需要注意這些方法都有相應(yīng)的超參數(shù),其中最重要的是 β ,這是一個(gè)控制對(duì)使用模型的偏好程度的權(quán)重。隨著這些方法已經(jīng)可以通過(guò)第三方庫(kù)(如 huggingface TRL)來(lái)使用,接下來(lái)自然而然的問(wèn)題是「在這些方法和超參數(shù)中,哪個(gè)組合能產(chǎn)生最好的聊天模型?」

本文旨在通過(guò)對(duì)這三種方法進(jìn)行實(shí)驗(yàn)分析來(lái)回答這個(gè)問(wèn)題,并且還要對(duì)關(guān)鍵超參數(shù)逐個(gè)分析,例如 β 和訓(xùn)練步數(shù),最后通過(guò) MT-Bench 評(píng)估所得模型的性能。MT-Bench 是衡量聊天模型功能的常見基準(zhǔn)。

源代碼地址:https://github.com/huggingface/alignment-handbook

使用鏈接

以下是相關(guān)資料的獲取地址:

  • 執(zhí)行超參數(shù)掃描的代碼和配置文件:https://github.com/huggingface/alignment-handbook/tree/main/recipes/pref_align_scan
  • 本文使用的數(shù)據(jù)集和模型的集合:https://huggingface.co/collections/alignment-handbook/dpo-vs-kto-vs-ipo-65a69c5f03548d61dbe29ef8

實(shí)驗(yàn)設(shè)置

在進(jìn)行對(duì)齊實(shí)驗(yàn)時(shí),需要考慮兩個(gè)主要因素:需要優(yōu)化的模型和數(shù)據(jù)集。為了獲得更多數(shù)據(jù),作者考慮了兩個(gè)模型,OpenHermes-2.5-Mistral-7B 和 Zephyr-7B-β-sft,以及兩個(gè)對(duì)齊數(shù)據(jù)集:Intel 的 orca_dpo_paries 數(shù)據(jù)集和 ultrafeedback-binarized(https://huggingface.co/datasets/HuggingFaceH4/ultrafeedback_binarized)數(shù)據(jù)集。

  • orca_dpo_paries 數(shù)據(jù)集地址:https://huggingface.co/datasets/Intel/orca_dpo_pairs
  • ultrafeedback-binarized 數(shù)據(jù)集地址:https://huggingface.co/datasets/HuggingFaceH4/ultrafeedback_binarized

在第一個(gè)實(shí)驗(yàn)中,作者使用了 OpenHermes-2.5-Mistral-7B,因?yàn)樗遣皇褂萌魏螌?duì)齊方法的條件下,最好的 7B 級(jí)聊天模型之一。然后,本文使用了 Intel 的 orca_dpo_paries 數(shù)據(jù)集,該數(shù)據(jù)集包含 13k 個(gè) prompt,其中被選擇的響應(yīng)結(jié)果由 GPT-4 生成,不需要的響應(yīng)由 Llama Chat 13b 生成。這也是 NeuralChat 和 NeuralHermes-2.5-Mistral-7B 使用的數(shù)據(jù)集。

由于 KTO 本身不需要成對(duì)的偏好數(shù)據(jù),作者直接將 GPT-4 生成的響應(yīng)歸類為「好」標(biāo)簽,將 Llama Chat 13b 的響應(yīng)視為「壞」標(biāo)簽。雖然 GPT-4 的響應(yīng)可能比 Llama Chat 13b 普遍更受歡迎,但在某些情況下,Llama-Chat-13b 可能會(huì)產(chǎn)生更好的響應(yīng),但作者認(rèn)為這只是小概率事件,可以忽略不計(jì)。

第二個(gè)實(shí)驗(yàn)基于 ultrafeedback-binarized 數(shù)據(jù)集,在 Zephyr-7b-β-sft 模型上進(jìn)行了偏好比對(duì)。ultrafeedback-binarized 數(shù)據(jù)集包含 66k 個(gè) prompt 以及成對(duì)的偏好與拒絕的響應(yīng)。該數(shù)據(jù)集之前被用于訓(xùn)練原始 Zephyr 模型,該模型當(dāng)時(shí)在許多自動(dòng)化基準(zhǔn)測(cè)試和人工評(píng)估方面是 7B 類模型中最好的。

實(shí)驗(yàn)配置

對(duì)齊手冊(cè)提供了一種配置單個(gè)實(shí)驗(yàn)的簡(jiǎn)單方法,這些參數(shù)可以在 run_dpo.py 中配置。

圖片

作者在 Zephyr 上的實(shí)驗(yàn)配置也基本類似。

聊天模板由基本聊天模型中自動(dòng)推斷,OpenHermes-2.5 使用 ChatML,Zephyr 使用 H4。如果用戶想使用自己的聊天格式,分詞庫(kù)現(xiàn)在已經(jīng)啟用了使用 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 %}"

如下可以將對(duì)話格式化:

# <|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!

遍歷超參數(shù)

實(shí)驗(yàn)中,作者逐次調(diào)整 β 值,分別在 0.01、0.1、0.2、…、0.9 時(shí),對(duì) DPO、IPO 和 KTO 三種方法進(jìn)行實(shí)驗(yàn)。之所以包括 0.01,是因?yàn)樽髡哂^察到一些對(duì)齊算法對(duì)這個(gè)參數(shù)特別敏感。所有實(shí)驗(yàn)都只訓(xùn)練了一個(gè) epoch。期間其他超參數(shù)保持不變,包括隨機(jī)種子。

然后,作者使用上面定義的基本配置在 hugging face 的模型上逐個(gè)進(jìn)行實(shí)驗(yàn)。

# Define an array containing the base configs we wish to fine tune
cnotallow=("zephyr" "openhermes")
# Define an array of loss types
loss_types=("sigmoid" "kto_pair" "ipo")
# Define an array of beta values
betas=("0.01" "0.1" "0.2" "0.3" "0.4" "0.5" "0.6" "0.7" "0.8" "0.9")

# Outer loop for loss types
for config in "${configs [@]}"; do
    for loss_type in "${loss_types [@]}"; do
        # Inner loop for beta values
        for beta in "${betas [@]}"; do
            # Determine the job name and model revision based on loss type
            job_name="$config_${loss_type}_beta_${beta}"
            model_revisinotallow="${loss_type}-${beta}"
            # Submit the job
            sbatch --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_revisinotallow=${model_revision}"
        done
    done
done

實(shí)驗(yàn)結(jié)果

作者使用 MT Bench 評(píng)估了所有模型,這是一個(gè)多輪對(duì)話的基準(zhǔn)。該基準(zhǔn)使用 GPT-4 來(lái)判斷模型在八個(gè)不同類別中的表現(xiàn),分別是寫作、角色扮演、推理、數(shù)學(xué)、編碼、提取、STEM 和人文學(xué)科。雖然存在一些不完美的地方,但 MT Bench 仍然是評(píng)估會(huì)話 LLM 的好方法。

Zephyr-7b-β-SFT

圖片

不同 β 取值情況下,Zephyr 模型的在 MT Bench 上的評(píng)分。

對(duì)于 Zephyr 模型,作者觀察到 β 值取 0.01 時(shí),模型性能最佳。這個(gè)結(jié)論在測(cè)試的所有三種算法中都是一致的,一個(gè)有趣的后續(xù)實(shí)驗(yàn)是在 0.0-0.2 范圍內(nèi)進(jìn)行更細(xì)粒度的掃描。雖然 DPO 可以獲得最高的 MT Bench 分?jǐn)?shù),但我們發(fā)現(xiàn) KTO(成對(duì))在除一種超參數(shù)情況外的所有設(shè)置中都能獲得更好的結(jié)果。IPO 雖然有更強(qiáng)的理論保證,但在除一種情況外的所有情況下似乎都比基礎(chǔ)模式更糟糕。

圖片

MT Bench 各類別中,每種算法在 Zephyr 模型上的最佳結(jié)果。

通過(guò)分解 MT bench 評(píng)估的各個(gè)類別中每個(gè)算法的最佳結(jié)果,可以確定這些模型的優(yōu)缺點(diǎn)。可以看到,在推理、編碼和數(shù)學(xué)問(wèn)題上仍有很大的改進(jìn)空間。

OpenHermes-7b-2.5

雖然在這個(gè)模型上對(duì)各算法的觀察結(jié)果與 OpenHermes 保持一致,即 DPO>KTO>IPO,但 β 的最佳取值點(diǎn)不盡相同。DPO、KTO 和 IPO 的最佳 β 選擇分別為 0.6、0.3 和 0.01。

圖片

OpenHermes 模型上,不同 β 的 MT Bench 得分。

OpenHermes-7b-2.5 顯然是一個(gè)更強(qiáng)的基礎(chǔ)模型,在人類偏好調(diào)整后,MT Bench 得分僅提高了 0.3。

圖片

MT Bench 各類別中,三種算法在 OpenHermes 模型上的最佳結(jié)果。

總結(jié)

在這篇博客中,作者強(qiáng)調(diào)了在執(zhí)行偏好對(duì)齊時(shí)選擇正確的超參數(shù)的重要性。通過(guò)實(shí)驗(yàn)證明了 DPO 在成對(duì)偏好設(shè)置中優(yōu)于 KTO,盡管有更強(qiáng)的理論保證,但 IPO 的性能似乎很差。 

這些實(shí)驗(yàn)結(jié)果都是可復(fù)現(xiàn)的,代碼和配置文件現(xiàn)在都可以在對(duì)齊手冊(cè)中找到。同時(shí)還可以看到性能最好的模型及數(shù)據(jù)集。

未來(lái)展望

作者將繼續(xù)探索新的人類偏好對(duì)齊算法,并評(píng)估它們的性能。至少?gòu)哪壳翱磥?lái),DPO 是最穩(wěn)健和性能最好的大語(yǔ)言模型對(duì)齊算法。KTO 也同樣具有發(fā)展前景,因?yàn)?DPO 和 IPO 都需要成對(duì)偏好數(shù)據(jù),而 KTO 可以應(yīng)用于任何含有正負(fù)面標(biāo)簽的數(shù)據(jù)集。

原文鏈接:https://huggingface.co/blog/pref-tuning?cnotallow=480af4490eaf8a2f4544fe3658589730

責(zé)任編輯:張燕妮 來(lái)源: 機(jī)器之心
相關(guān)推薦

2019-03-21 09:45:11

TypeScript編程語(yǔ)言Javascript

2024-04-16 14:01:40

大型語(yǔ)言模型ORPO

2020-08-03 08:01:50

爬蟲技巧

2020-04-20 10:47:57

Redis數(shù)據(jù)開發(fā)

2021-06-28 14:13:34

OOM內(nèi)存事故

2021-04-30 07:33:35

效率提升技巧

2021-04-28 07:22:13

HiveJson數(shù)組

2020-08-31 06:54:37

注解脫敏ELK

2021-06-26 09:26:01

Jupyter主題目錄

2023-09-26 12:22:37

隊(duì)列Python

2019-07-26 06:29:22

MySQL數(shù)據(jù)庫(kù)SQL

2024-08-05 13:00:00

2024-10-09 16:00:00

AI模型數(shù)據(jù)

2021-03-29 08:24:18

KubeadmKubernetes1運(yùn)維

2021-08-04 07:47:18

IDEJTAGSWD

2022-08-01 14:59:57

Web前端后端

2024-06-05 09:59:13

2023-11-28 09:31:55

MySQL算法

2021-03-12 08:39:25

FlinkSpark批處理

2017-05-15 11:10:10

大數(shù)據(jù)聚類算法
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产精品久久久亚洲 | 亚洲欧洲综合av | 精品毛片 | 拍戏被cao翻了h承欢 | 国产一级在线 | 最新免费av网站 | 96国产精品久久久久aⅴ四区 | 国产一区二区免费在线 | 天天综合天天 | 欧美v免费 | 97精品久久 | 国产精品免费看 | 精品国产乱码久久久久久蜜柚 | 欧美视频成人 | 亚洲伦理自拍 | 欧美日本亚洲 | 欧美激情亚洲天堂 | 伊人久久综合 | 99精品视频一区二区三区 | 老牛影视av一区二区在线观看 | 国产99久久精品一区二区永久免费 | 欧美日韩一区二区三区四区 | 日韩三片| 日日拍夜夜 | 国产免费一区二区三区 | 国产三级在线观看播放 | 中文区中文字幕免费看 | 亚洲欧美视频在线观看 | 国产乱码精品一区二区三区忘忧草 | 国产精品欧美一区二区三区 | 久久伦理中文字幕 | 亚洲电影第1页 | 精品一区二区三区视频在线观看 | 国产精品久久久久久二区 | 人人种亚洲 | 久久久国产精品视频 | 国产午夜精品一区二区三区四区 | 精品毛片视频 | 亚洲精品一区二区三区在线 | 91亚洲国产成人精品一区二三 | 麻豆成人在线视频 |