模型Alignment之RLHF与DPO

news2024/11/15 17:49:40

1. RLHF (Reinforcement Learning from Human Feedback)

RLHF 是一种通过人类反馈来强化学习的训练方法,它能够让语言模型更好地理解和执行人类指令。

RLHF 的三个阶段

RLHF 的训练过程一般分为三个阶段:

  1. 监督微调(Supervised Fine-Tuning, SFT)

    • 目的:让模型初步具备按照人类指令生成文本的能力。
    • 数据:使用大量的人工标注数据,包含输入的 prompt 和对应的期望输出。
    • 训练:将这些数据作为监督学习任务,对预训练的大语言模型进行微调。
    • 结果:得到一个初步具有指令跟随能力的模型。
  2. 奖励模型训练(Reward Model Training)

    • 目的:训练一个模型来评估模型生成的文本质量。
    • 数据:收集模型在 SFT 阶段生成的多个不同回复,由人类标注人员对这些回复进行排序,以表示它们相对于给定 prompt 的优劣。
    • 训练:将这些排序数据作为训练数据,训练一个奖励模型。奖励模型的输出是一个标量值,表示生成的文本的质量。
    • 结果:得到一个能够对文本质量进行打分的奖励模型。
  3. 强化学习微调(Reinforcement Learning Fine-Tuning)

    • 目的:使用奖励模型的反馈来进一步优化模型的生成能力。
    • 方法:采用强化学习算法(如 PPO),将语言模型作为策略,奖励模型作为价值函数。
    • 过程
      • 模型生成文本。
      • 奖励模型对生成的文本打分。
      • 根据奖励信号,更新模型的参数,使其生成更高质量的文本。
    • 结果:得到一个在人类反馈下表现更优的语言模型。

技术细节

  • 奖励模型:奖励模型通常是一个分类模型,它学习将不同的文本输出映射到一个连续的奖励值。常用的模型架构包括:
    • 基于 Transformer 的模型:与语言模型类似,具有强大的序列处理能力。
    • 对比学习模型:通过比较不同文本输出的相似性来学习奖励函数。
  • 强化学习算法:PPO(Proximal Policy Optimization)是一种常用的强化学习算法,它能够在保证策略稳定性的同时,高效地更新策略。
  • 数据收集:在 RLHF 的过程中,需要不断地收集新的数据来训练奖励模型和更新策略。这些数据可以来自以下几个方面:
    • 人工标注:由人类标注人员对模型生成的文本进行评估。
    • 用户反馈:收集用户在实际使用中的反馈。
    • 模型自生成:模型通过自生成的方式产生大量数据。

2. PPO在RLHF中的应用

PPO算法概述

PPO(Proximal Policy Optimization)是一种常用的强化学习算法,在RLHF中,它被用来优化语言模型,使其生成的文本能最大化人类反馈的奖励。

核心思想:

  • 策略更新: 通过不断调整模型的参数,使得模型生成的文本能获得更高的奖励。
  • 近端策略更新: 为了保证策略的稳定性,PPO限制了新旧策略之间的差异,避免模型发生剧烈变化。

PPO在RLHF中的具体步骤

  1. 采样数据:

    • 使用当前的语言模型生成多个文本样本。
    • 将这些样本输入到奖励模型中,获得对应的奖励分数。
  2. 计算优势函数:

    • 优势函数表示一个动作的好坏程度相对于平均动作的偏离程度。
    • 在RLHF中,优势函数可以表示为:
      • 优势函数 = 奖励 - 基线
    • 基线通常是所有样本奖励的平均值或一个估计值。
  3. 更新策略:

    • 概率比: 计算新旧策略下,生成相同文本的概率比。
    • 裁剪概率比: 为了防止策略更新过大,将概率比裁剪到一个合理范围内。
    • 计算损失函数:
      • 损失函数通常包含两项:
        • 策略损失: 鼓励模型生成高奖励的文本。
        • KL散度: 限制新旧策略之间的差异。
    • 更新模型参数: 使用梯度下降法来最小化损失函数,从而更新模型的参数。

损失函数的具体形式

PPO的损失函数可以写成如下形式:

L(θ) = 𝔼[min(r_t(θ) * A_t, clip(r_t(θ), 1 - ε, 1 + ε) * A_t)] - β * KL[π_θ, π_θ_old]
  • r_t(θ): 概率比,表示新旧策略下生成相同动作的概率比。
  • A_t: 优势函数。
  • clip: 裁剪操作,将概率比裁剪到[1-ε, 1+ε]的范围内。
  • β: KL散度的系数,用于控制新旧策略之间的差异。
  • KL[π_θ, π_θ_old]: 新旧策略之间的KL散度。

  • 第一项: 鼓励模型生成高奖励的文本。当优势函数为正时,希望概率比越大越好;当优势函数为负时,希望概率比越小越好。
  • 第二项: 限制新旧策略之间的差异,保证策略的稳定性。

3. DPO (Direct Preference Optimization)

DPO的工作原理

DPO的核心思想是:通过比较不同文本生成的优劣,直接优化模型参数。具体来说,DPO会收集大量的文本对,其中每一对文本代表着人类对两个文本的偏好。然后,DPO会训练模型,使得模型能够对新的文本对进行排序,并尽可能地与人类的偏好一致。

DPO与RLHF的区别

特点RLHFDPO
奖励模型需要训练奖励模型无需训练奖励模型
优化目标最大化奖励信号直接优化人类偏好
训练过程两阶段训练(预训练+强化学习)单阶段训练
  • 与RLHF相比,DPO旨在简化过程,直接针对用户偏好优化模型,而不需要复杂的奖励建模和策略优化
  • 换句话说,DPO专注于直接优化模型的输出,以符合人类的偏好或特定目标
  • 如下所示是DPO如何工作的概述

DPO没有再去训练一个奖励模型,使用奖励模型更新大模型,而是直接对LLM进行微调。
实现DPO损失的具体公式如下所示:

  • “期望值” E \mathbb{E} E是统计学术语,表示随机变量的平均值或平均值(括号内的表达式);优化 − E -\mathbb{E} E使模型更好地与用户偏好保持一致
  • π θ \pi_{\theta} πθ变量是所谓的策略(从强化学习借用的一个术语),表示我们想要优化的LLM; π r e f \pi_{ref} πref是一个参考LLM,这通常是优化前的原始LLM(在训练开始时, π θ \pi_{\theta} πθ π r e f \pi_{ref} πref通常是相同的)
  • β \beta β是一个超参数,用于控制 π θ \pi_{\theta} πθ和参考模型之间的分歧;增加 β \beta β增加差异的影响
    π θ \pi_{\theta} πθ π r e f \pi_{ref} πref在整体损失函数上的对数概率,从而增加了两个模型之间的分歧
  • logistic sigmoid函数 σ ( ⋅ ) \sigma(\centerdot) σ()将首选和拒绝响应的对数优势比(logistic sigmoid函数中的项)转换为概率分数

DPO需要两个LLMs,一个策略(policy)模型(我们想要优化的模型)还有一个参考(reference)模型(原始的模型,保持不变)。
我们得到两个模型的输出后,对其输出的结果计算softmax并取log,然后通过target取出预测目标对应的数值。(其实就是做了一个交叉熵,和交叉熵的计算过程一模一样)。通过这个过程我们可以得到每个模型在每个回答上的 π \pi π,于是代入公式计算结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2163367.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

认知杂谈82《跳出信息茧房,持续精进》

内容摘要: 互联网时代,信息丰富,但便捷性削弱了我们的好奇心。互联网是双刃剑,快速获取知识的同时,也让我们陷入“信息茧房”,限制视野。 好奇心减少,部分原因是互联网的“懒惰效应”&#xff0…

国家标准和团体标准有什么区别?

国家标准和团体标准的区别主要体现在以下几个方面: 1. 制定标准的主体不同:国家标准是由国家机构通过并公开发布的标准;团体标准是由学会、协会、商会、联合会、产业技术联盟等社会团体协调相关市场主体共同制…

【项目实战】如何在项目中基于 Spring Boot Starter 开发简单的 SDK

什么是SDK 通常在分布式项目中,类和方法是不能跨模块使用的。为了方便开发者的调用,我们需要开发一个简单易用的SDK,使开发者只需关注调用哪些接口、传递哪些参数,就像调用自己编写的代码一样简单。实际上,RPC(远程过…

element下拉框联动 或 多选 回显数据后页面操作不生效问题解决

第一种:多选回显不生效 解决方式: 代码: <el-form-item label"系统" prop"Key"> <el-select v-model"addForm.Key" multiple placeholder"请选择" change"$forceUpdate()"> <el-option v-for"item …

Typescript高级用法

TypeScript 是一种类型安全的 JavaScript 超集&#xff0c;除了基本类型和对象类型之外&#xff0c;TypeScript 还提供了一些高级类型系统&#xff0c;使得我们可以更好地处理复杂的数据结构和业务逻辑。本文将深入探讨 TypeScript 的高级类型系统&#xff0c;以更好地理解和使…

【AI大模型应用开发】【综合实战】AI+搜索,手把手带你实现属于你的AI搜索引擎(附完整代码)

现在市面上有很多的AI搜索的应用或插件&#xff0c;一直想学习其背后的实现原理。今天咱们就学习一下&#xff0c;并且亲自动手实践&#xff0c;从0开始&#xff0c;搭建一个自己的AI搜索引擎。最终实现效果如下&#xff1a; 话不多说&#xff0c;开干。 本文代码参考&#xff…

累加求和-C语言

1.问题&#xff1a; 计算123……100的和&#xff0c;要求分别用while、do while、for循环实现。 2.解答&#xff1a; 累加问题&#xff0c;先后将100个数相加。要重复进行100次加法运算&#xff0c;可以用循环结构来实现。重复执行循环体100次&#xff0c;每次加一个数。 3.代…

02DSP学习-了解syscfg

不是哥们儿&#xff0c;学习DSP为什么不是上来就写代码啊&#xff0c;说了一堆&#xff0c;写小说呢啊&#xff1f; 你别着急&#xff0c;学习DSP本身&#xff0c;真不需要写多少代码&#xff0c;我们需要的写的是自己的算法。开车知道方向盘、油门、刹车、后视镜之后也能开&a…

【SpringBoot详细教程】-03-整合Junit【持续更新】

JUnit是一个用于Java编程语言的测试框架。它支持自动化单元测试&#xff0c;可以帮助开发人员测试代码的正确性和健壮性。JUnit提供了一组注解、断言和测试运行器&#xff0c;可以方便地编写和运行单元测试。 SpringBoot 整合 junit 特别简单&#xff0c;分为以下三步完成 在…

cmake--file

教程 参数 需要指定文件后缀 GLOB 只搜索当前目录 GLOB_RECURSE &#xff1a;搜索当前目录和其子目录&#xff08;递归搜索&#xff09; RELATIVE 相对于哪个路径进行搜索&#xff0c;获取文件的相对路径。 使用RELATIVE和不使用RELATIVE的区别&#xff1a; 1&#xff…

《让手机秒变超级电脑!ToDesk云电脑、易腾云、青椒云移动端深度体验》

前言 科技发展到如今2024年&#xff0c;可以说每一年都在发生翻天覆地的变化。云电脑这个市场近年来迅速发展&#xff0c;无需购买和维护额外的硬件就可以体验到电脑端顶配的性能和体验&#xff0c;并且移动端也可以带来非凡体验。我们在外出办公随身没有携带电脑情况下&#x…

MudBlazor:一个UI简洁美观漂亮的Blazor开源组件!

Blazor&#xff0c;作为.NET生态系统中的一个革命性框架&#xff0c;使得可以使用C#来全栈开发Web应用。下面推荐一个Blazor开源UI组件MudBlazor&#xff0c;方便我们快速开发。 01 项目简介 MudBlazor 是一个开源的 .NET 库&#xff0c;它为 Blazor 应用程序提供了一套丰富的…

Java JUC(二) Synchronized 基本使用与核心原理

Java JUC&#xff08;二&#xff09; Synchronized 基本使用与核心原理 随着 Java 多线程开发的引入&#xff0c;程序的执行效率和速度都取得了极大的提升。但此时&#xff0c;多条线程如果同时对一个共享资源进行了非原子性操作则可能会诱发线程安全问题&#xff0c;而线程安全…

前端报错401 【已解决】

前端报错401 【已解决】 在前端开发中&#xff0c;HTTP状态码401&#xff08;Unauthorized&#xff09;是一个常见的错误&#xff0c;它表明用户试图访问受保护的资源&#xff0c;但未能提供有效的身份验证信息。这个错误不仅关乎用户体验&#xff0c;也直接关系到应用的安全性…

JAVA开源项目 学科竞赛管理系统 计算机毕业设计

本文项目编号 T 047 &#xff0c;文末自助获取源码 \color{red}{T047&#xff0c;文末自助获取源码} T047&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 查…

修牛蹄视频哪里找?修牛蹄的解压视频素材网站分享

在现代农业和畜牧业中&#xff0c;牛蹄修剪技术的重要性不言而喻&#xff0c;不仅直接关联到牲畜的健康&#xff0c;也对农场的整体经济收益产生巨大影响。对于新手畜牧工作者而言&#xff0c;挑选出优秀的学习资源尤为关键。今天&#xff0c;我将为大家推荐几个提供优质牛蹄修…

烤羊肉串引来的思考——命令模式

文章目录 烤羊肉串引来的思考——命令模式吃烤羊肉串&#xff01;烧烤摊vs.烧烤店紧耦合设计命令模式松耦合设计进一步改进命令模式命令模式的作用 烤羊肉串引来的思考——命令模式 吃烤羊肉串&#xff01; 时间&#xff1a;6月23日17点  地点&#xff1a;小区门口  人物…

企业EMS -能源管理系统-能源在线监测平台

一、介绍 基于SpringCloud的能管管理系统-能源管理平台源码-能源在线监测平台-双碳平台源码-SpringCloud全家桶-能管管理系统源码 二、软件架构 二、功能介绍 三、数字大屏展示 四、数据采集原理 五、软件截图

在不受支持的 Mac 上安装 macOS Sequoia (OpenCore Legacy Patcher v2.0.1)

在不受支持的 Mac 上安装 macOS Sequoia (OpenCore Legacy Patcher v2.0.1) Install macOS on unsupported Macs 请访问原文链接&#xff1a;https://sysin.org/blog/install-macos-on-unsupported-mac/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主…

吉客云与金蝶云星空对接集成分页查询货品信息连通[标准]

吉客云与金蝶云星空对接集成分页查询货品信息连通[标准][付款单新增]-v1(付款单) 对接系统&#xff1a;吉客云 “吉客云”是一站式企业数字化解决方案系统&#xff0c;可实现业务、财务、办公、人事等一体化管理。相对于传统多套软件系统的集成方案&#xff0c;“吉客云”具有业…