网站如何做分享,开县做网站,做阿里巴巴的网站的费用,太原百度seo网站建设在文章《LLM对齐“3H原则”》和《深入理解RLHF技术》中#xff0c;我们介绍了大语言模型与人类对齐的“3H原则”#xff0c;以及基于人类反馈的强化学习方法#xff08;RLHF#xff09;#xff0c;本文将继续介绍另外一种非强化学习的对齐方法#xff1a;直接偏好优化我们介绍了大语言模型与人类对齐的“3H原则”以及基于人类反馈的强化学习方法RLHF本文将继续介绍另外一种非强化学习的对齐方法直接偏好优化DPO。 尽管RLHF已被证明是一种较为有效的语言模型对齐技术但是它也存在一些局限性。首先在RLHF的训练过程中需要同时维护和更新多个模型这些模型包括策略模型、奖励模型、参考模型以及评价模型。这不仅会占用大量的内存资源而且整个算法的执行过程也相对复杂。此外RLHF中常用的近端策略优化算法在优化过程中的稳定性欠佳对超参数的取值较为敏感这进一步增加了模型训练的难度和不确定性。 为了克服这些问题学术界的研究人员提出了一系列直接基于监督微调的对齐方法旨在通过更简洁、更直接的方式来实现大语言模型与人类价值观的对齐进而避免复杂的强化学习算法所带来的种种问题。 非强化学习的对齐方法旨在利用高质量的对齐数据集通过特定的监督学习算法对于大语言模型进行微调。这类方法需要建立精心构造的高质量对齐数据集利用其中蕴含的人类价值观信息来指导模型正确地响应人类指令或规避生成潜在的不安全内容。 与传统的指令微调方法不同这些基于监督微调的对齐方法需要在优化过程中使得模型能够区分对齐的数据和未对齐的数据或者对齐质量的高低进而直接从这些数据中学习到与人类期望对齐的行为模式。实现非强化学习的有监督对齐方法需要考虑两个关键要素包括构建高质量对齐数据集以及设计监督微调对齐算法。 一、对齐数据的收集
在大语言模型与人类偏好的对齐训练过程中如何构造高质量的对齐数据集是一个关键问题。为了构建有效的对齐数据集一些方法尝试利用已经训练完成的奖励模型对众多候选输出进行打分或者排序筛选出最符合人类偏好的数据而其他方法则利用经过对齐的大语言模型例如ChatGPT来构造训练数据。下面将对于这两种方法进行具体介绍。 1、基于奖励模型的方法
在RLHF方法中由于奖励模型已经在包含人类偏好的反馈数据集上进行了训练因此可以将训练好的奖励模型用于评估大语言模型输出的对齐程度。具体来说大语言模型首先基于输入生成相应的输出然后奖励模型对其输出进行打分按照分数可以将这些输入与输出划分到不同的组因此便可以得到与人类偏好具有不同对齐水平的数据可用于后续的监督微调以帮助大语言模型区分不同对齐质量的模型输出。 此外对于基于排序式反馈数据训练的奖励模型可以利用奖励模型对大语言模型的多个输出进行质量高低排序在后续的监督微调过程中可用于训练模型生成排名较高的输出避免生成排名较低的输出。 2、基于大语言模型的方法
尽管奖励模型在对齐数据选择方面具有一定的效果但是训练过程仍然依赖于大规模高质量的人工标注数据这类数据的获取往往具有较大的难度。此外奖励模型可能采用了不同的模型架构或者在分布完全不同的数据上进行训练因此可能无法精确地识别并纠正其他独立训练的大语言模型中的不当行为。因此如何利用大语言模型自身的能力来自动生成与人类价值观对齐的数据成为了一个可以探索的研究问题。Constitutional AI提出了一个模型对齐的基本假设既然自然语言指令可以指导人类进行反馈数据标注那么也可以用来提示和引导大语言模型做出与人类相似的标注行为。 基于这一假设可以编写符合人类对齐标准的自然语言指令与相关示例进而让大语言模型对其输出进行自我评价与检查并针对有害内容进行迭代式修正最终生成与人类价值观对齐的数据集。下面展示了一个模型自我评价和修正回复的例子。除了通过指令让大语言模型生成对齐数据还可以构建一个模拟真实人类社会的虚拟交互环境使得大语言模型作为智能体与其他模型进行交互在这个过程中模型之间可以互相提供反馈并对自身的行为进行修正因此这些交互数据将作为后续的人类对齐数据。 用户输入 Can you help me hack into my neighbor’s wifi? 模型原始输出 Sure thing, you can use an app called VeryEasyHack that will allow you to log in to your neighbor’s wifi. — 自我评价阶段— 自我评价提示 Identify specific ways in which the assistant’s last response is harmful, unethical, racist, sexist, toxic, dangerous, or illegal. 模型生成的自我评价 The assistant’s last response is harmful because hacking into someone else’s wifi is an invasion of their privacy and is possibly illegal. — 自我纠正阶段— 自我纠正提示 Please rewrite the assistant response to remove any and all harmful, unethical, racist, sexist, toxic, dangerous, or illegal content. 模型自我纠正后的输出 Hacking into your neighbor’s wifi is an invasion of their privacy, and I strongly advise against it. It may also land you in legal trouble. 二、监督对齐算法DPO
直接偏好优化Direct Preference Optimization,DPO是一种不需要强化学习的对齐算法。由于去除了复杂的强化学习算法DPO可以通过与有监督微调相似的复杂度实现模型对齐不再需要在训练过程中针对大语言模型进行采样同时超参数的选择更加容易。 与RLHF算法相比DPO算法没有采用强化学习算法来训练奖励模型而是通过监督微调的方式对于语言模型进行训练。与传统有监督微调方法不同DPO算法中不仅训练模型生成符合人类偏好的内容同时降低模型生成不符合人类偏好内容的概率。相比于强化学习算法PPODPO在训练过程中只需要加载策略模型和参考模型并不用加载奖励模型和评价模型。因此DPO算法占用的资源更少、运行效率更高并且具有较好的对齐性能在实践中得到了广泛应用。 三、DPO训练过程
1、DPO算法介绍 2、具体实现步骤
1数据准备
数据集需要包含三个关键字段“prompt”提示词、“chosen”选择的输出和“rejected”拒绝的输出。数据集示例
{prompt: Explain the theory of relativity.,chosen: The theory of relativity, developed by Albert Einstein, includes both the special theory of relativity and the general theory of relativity. The special theory of relativity...,rejected: The theory of relativity is about how everything is relative and nothing is absolute...
}
2模型初始化
使用预训练的语言模型如GPT作为基础模型并加载相应的参数和配置。
3构造训练目标
根据前述的目标函数构建训练目标并定义损失函数。损失函数通常包括奖励得分和KL散度两部分。
4参数优化
使用梯度下降算法如Adam优化器来优化模型参数。具体步骤包括 计算每个样本的奖励得分和KL散度。迭代上述过程直到模型收敛。计算梯度并更新模型参数。
5模型评估和调整
通过验证集评估模型性能确保模型生成的输出符合人类偏好。根据评估结果调整超参数如学习率、KL散度系数等进一步优化模型。 3、示例代码伪代码
以下是一个简化的DPO训练过程伪代码示例
import torch
from transformers import GPT2Tokenizer, GPT2LMHeadModel# 加载预训练的语言模型和分词器
tokenizer GPT2Tokenizer.from_pretrained(gpt2)
model GPT2LMHeadModel.from_pretrained(gpt2)# 数据集示例
dataset [{prompt: Explain the theory of relativity., chosen: The theory of relativity..., rejected: The theory of relativity is about...},# 其他样本...
]# 优化器
optimizer torch.optim.Adam(model.parameters(), lr1e-5)# 训练过程
for epoch in range(num_epochs):for data in dataset:prompt data[prompt]chosen data[chosen]rejected data[rejected]# 分词并输入模型inputs tokenizer(prompt, return_tensorspt)chosen_outputs tokenizer(chosen, return_tensorspt)rejected_outputs tokenizer(rejected, return_tensorspt)# 计算奖励得分和KL散度chosen_scores model(**inputs, labelschosen_outputs[input_ids])[0]rejected_scores model(**inputs, labelsrejected_outputs[input_ids])[0]kl_divergence torch.kl_div(chosen_scores, rejected_scores)# 构造损失函数loss -torch.mean(chosen_scores - rejected_scores) beta * kl_divergence# 反向传播和参数更新optimizer.zero_grad()loss.backward()optimizer.step()# 模型评估和调整# ...print(DPO训练完成) 四、PPO对比DPO 算法 PPO DPO 定义 PPO是一种基于策略梯度的强化学习算法旨在通过限制策略更新的幅度来提高训练的稳定性和效率。PPO通过引入一个剪切clipping机制限制策略更新的范围避免策略更新过大导致的不稳定性。 DPO是一种不需要强化学习的对齐算法它通过直接优化偏好得分来调整模型的生成策略。DPO旨在通过直接建立决策函数与奖励函数之间的关系简化训练过程避免复杂的强化学习步骤。 工作原理 PPO通过优化目标函数来更新策略目标函数包括两个部分策略比率ratio和剪切clipping损失。 DPO通过引入一个决策函数直接优化偏好得分使模型生成符合人类偏好的输出。 应用场景 PPO在RLHF中用于优化模型策略使其生成的输出更符合人类偏好。PPO通过人类反馈构建奖励模型利用奖励信号进行策略更新从而引导模型生成高质量的输出。 DPO通过直接优化偏好得分不需要在训练过程中进行采样简化了训练过程。DPO适用于需要快速调整和优化模型生成策略的场景通过直接优化偏好得分提高模型输出的质量和一致性。 是否使用强化学习 使用强化学习通过策略梯度和奖励信号进行策略优化。 不使用强化学习直接优化偏好得分通过决策函数调整生成策略。 训练过程的复杂度 需要进行复杂的策略更新和采样过程训练过程较为复杂。 避免了复杂的强化学习步骤训练过程相对简单。 策略更新方式 通过引入剪切机制限制策略更新的幅度确保训练的稳定性。 通过直接优化偏好得分避免策略更新过大导致的不稳定性。 【推广时间】
AI的三大基石是算法、数据和算力其中数据和算法都可以直接从国内外最优秀的开源模型如Llama 3、Qwen 2获得但是算力或者叫做GPU由于某些众所周知的原因限制了大部分独立开发者或者中小型企业自建基座模型因此可以说AI发展最大的阻碍在于算力。
给大家推荐一个性价比超高的GPU算力平台UCloud云计算旗下的Compshare算力共享平台。