RLVF:避免过度泛化地从口头反馈中学习
人工智能咨询培训老师叶梓 转载标明出处
大模型在不同行业和个人中的广泛应用要求模型能够根据具体的用户反馈进行调整或定制,以满足细微的要求和偏好。虽然通过高层次的口头反馈来指定模型调整非常方便,例如“在给老板起草电子邮件时不要使用表情符号”,但研究发现,直接使用这类反馈来提示模型会导致在不相关的上下文中过度泛化。斯坦福大学计算机科学系的研究团队提出了一种新的方法——上下文化批评与受限偏好优化(C3PO),旨在解决利用口头反馈调整模型时出现的过度泛化问题。
论文介绍了两种主要的方法来更新大型语言模型(LLMs),以适应高层次的口头反馈:
监督上下文蒸馏(Supervised Context Distillation, SCD),这是一种将文本上下文整合到模型行为中的有效方法。上下文可以是一个普遍原则或特定信息,例如“始终保持友好”或“假设美国总统是乔·拜登”。SCD的目标是将人类或基础语言模型在给定用户查询和上下文条件下产生的行为“蒸馏”到没有上下文的模型中。这一过程涉及到使用合成的监督目标进行监督微调,以最小化负对数似然损失。
基于偏好的强化学习(Preference-based Reinforcement Learning, PbRL),这是一种通过利用对LLM生成响应的偏好来更新语言模型的常用方法。这涉及到对成对的模型响应进行比较,通常由人类标注者或模型本身决定哪个响应更优。然后,使用这些偏好来训练一个参数化的奖励模型,该模型为输入-响应对分配评分。PbRL的一个关键目标是最大似然估计在Bradley-Terry选择模型下的奖励模型。
这两种方法为后续提出的C3PO算法提供了理论基础,C3PO算法旨在解决在应用口头反馈时出现的过度泛化问题,同时保持模型在不相关上下文中的行为不变。通过这些预备知识,论文为读者提供了理解和评估C3PO方法的背景。
方法
C3PO方法的核心是利用一个强大的通用模型,如GPT-4,将用户的口头反馈转化为微调数据集。该数据集由三个关键部分组成:Din-scope部分展示期望的行为变化;Dout-of-scope部分保持反馈范围之外的行为;Dnear-scope部分细化模型对何时何地应用反馈的理解。

图3所展示的C3PO数据生成方案,是研究者为解决口头反馈导致的过度泛化问题而设计的一套详细流程。这一流程的起点是利用GPT-4这样的先进语言模型,根据给定的口头反馈生成一系列可能相关的提示类别。这些类别将指导后续的提示生成,确保生成的提示既能够覆盖反馈适用的情景(in-scope),也能够覆盖表面相关但实际不适用的情景(near-scope),以及完全无关的情景(out-of-scope)。
接下来,研究者利用当前的语言模型π0为这些提示生成基线响应。这些响应代表了模型在未接受特定反馈时的默认行为。然后,针对in-scope提示,模型被进一步提示,要求其根据反馈修订响应,生成新的修订后响应y+i。这一修订过程是C3PO方法的关键,因为它直接体现了反馈对模型行为的具体影响。
通过这一过程,研究者能够自动创建三个关键的数据集:Din-scope、Dnear-scope和Dout-of-scope。这些数据集共同构成了微调模型的基础,它们不仅反映了期望的行为变化,还编码了在不相关提示上应保持的原有行为。
图示说明了 C3PO 如何通过在相关数据上使用直接偏好优化 (DPO) 来促进反馈的遵循,同时通过在不相关数据上使用简单 SFT 损失来最小化过度泛化
随后研究者采用一个精心设计的组合损失函数LC3PO对模型π0进行微调。这个损失函数包括三部分:针对in-scope数据的直接偏好优化(DPO)损失,以及针对out-of-scope和near-scope数据的标准软性损失(SFT)。这种设计使得模型在微调过程中能够在保持原有行为的同时,对in-scope提示进行适应性调整。
损失函数的具体形式如下:

这里,λ1和λ2是用于平衡不同部分影响的权重参数。通过这种方式,C3PO方法旨在优化模型,使其在接收到口头反馈时,能够更加精准地在适当的情况下应用反馈,避免在不适当的情况下过度泛化。
在解释C3PO损失时,研究者指出,C3PO生成的合成双策略偏好数据遵循Bradley-Terry偏好模型。这意味着,通过比较基线模型π0生成的响应y−和根据反馈修订后的响应y+,可以构建出一个评分函数,该函数能够量化响应之间的偏好关系。这种量化方法为研究者提供了一种强有力的工具,用以评估和优化模型的行为,确保其在遵循口头反馈时既精准又适度。
通过C3PO方法,研究者能够更精确地控制模型如何根据反馈进行调整,确保模型在接收到口头反馈时,只在适当的情境中做出改变,从而提高模型的灵活性和适用性。这对于LLMs的进一步发展和应用具有重要意义。
实验
实验旨在解答几个关键的研究问题:
1. 现有方法在学习口头反馈时,过度泛化问题有多严重?
2. C3PO是否能够减轻这种过度泛化效应?
3. 对标准方法进行简单修改,比如通过提示或监督上下文蒸馏来整合反馈,是否能有效减轻过度泛化?
4. C3PO是否能够学习多条反馈?
5. 在C3PO中,选择不同形式的约束损失对性能有何影响?
研究者构建了一个包含100条反馈的数据集,其中一半由研究者撰写,另一半由GPT-4生成。所有反馈都设计为仅在特定上下文中适用。为了C3PO和SCD + Negatives基线,他们根据C3PO程序采样了Dnear-scope和Dout-of-scope数据集,每个数据集包含960条out-of-scope提示及其对应的基线模型完成情况,用于正则化。他们从Open Instruction Generalist (OIG) 数据集中随机抽取提示,该数据集包含多样化的提示类型。
评估指标用于比较基线模型与学习反馈后的模型在反馈依从性方面的差异。研究者使用启发式规则和GPT-4两种方式来衡量反馈依从性。对于某些反馈,如修改响应长度或包含特定词汇,使用启发式规则;而对于需要定性评估的反馈,如使用更多隐喻或减少激进的语言,则使用GPT-4来衡量。
研究者将C3PO与以下方法进行了比较:
- In-Context学习:提供用户查询、反馈,并提示模型在适用时选择性地应用反馈。
- In-Context + CoT:使用思维链提示,让模型在回答前先推理反馈的适用性。
- SCD:在in-scope提示上执行监督上下文蒸馏。
- SCD + Negatives:在SCD的基础上,为out-of-scope提示添加加权约束。
- DPO:在Din-scope偏好数据集上执行直接偏好优化,没有额外的正则化。
研究者使用图2展示现有方法的局限性:成功地将反馈整合到模型中(X轴的高值)往往会导致在不适用的提示(out-of-scope prompts)上也应用这些反馈(Y轴的高值)。这表明,当模型在in-scope提示上成功遵循反馈时,也会在不相关的上下文中错误地应用这些反馈,这通过最佳拟合线的大斜率来体现。

为了解决这个问题,C3PO采用了一种更有效的折中方案,如图2中C3PO的最佳拟合线斜率明显更小,这表明C3PO能够在保持in-scope提示的反馈依从性的同时,更好地保留out-of-scope提示上的行为。

接着研究者使用图6展示了C3PO如何显著减少对于一般out-of-scope提示和更困难的near-scope提示的行为变化,同时仅轻微降低in-scope提示的反馈依从性。这种改进是通过C3PO的评估指标Sin和Sout来衡量的,其中Sin衡量in-scope提示的反馈依从性,而Sout衡量out-of-scope提示的行为变化。
研究者还探讨了C3PO学习多条反馈的能力。他们通过分别对两个不同的反馈z1和z2应用C3PO,生成了两组LoRA参数ϕ1和ϕ2。然后,他们提出了一种假设,即通过简单地将两组参数相加(ϕ′ = ϕ1 + ϕ2)来获得一个同时适应z1和z2的模型,而不是重新训练。图7比较了这种方法与分别应用和评估每条反馈的性能。结果显示,在in-scope反馈依从性和out-of-scope行为变化方面几乎没有退化,这为在不重新训练的情况下实现大型语言模型的快速个性化和定制提供了希望。

研究者最后讨论了C3PO中约束公式的选择。C3PO通过在微调过程中最大化基线模型在out-of-scope提示上响应的可能性来约束反馈调整的模型。研究者提出了一个假设,即在每个时间步对适应模型和基线模型的条件分布进行全知识蒸馏(full knowledge distillation)。这涉及到在out-of-scope提示上执行知识蒸馏,其中基线模型作为教师,适应模型作为学生。这种约束不仅仅最大化基线模型样本的可能性,而是最小化基线模型的条件分布与适应模型的条件分布之间的KL散度。尽管这种约束形式在持续学习的背景下成功利用了模型输出中低概率logits表示的“暗知识”,但研究者发现,这种更强的约束与最大似然约束相比,会显著损害in-scope提示的反馈依从性。因此,寻找合适的方法来约束out-of-scope模型行为是未来工作的一个重要课题。
通过这些实验,研究者证明了C3PO在减少过度泛化的同时,能够保持对in-scope提示的反馈依从性,这对于大型语言模型的定制和个性化具有重要意义。
论文链接:https://arxiv.org/abs/2402.10893
项目链接:RLVF: Learning from Verbal Feedback without Overgeneralization
相关文章:
RLVF:避免过度泛化地从口头反馈中学习
人工智能咨询培训老师叶梓 转载标明出处 大模型在不同行业和个人中的广泛应用要求模型能够根据具体的用户反馈进行调整或定制,以满足细微的要求和偏好。虽然通过高层次的口头反馈来指定模型调整非常方便,例如“在给老板起草电子邮件时不要使用表情符号”…...
设计原则与思想-从项目实战中学习设计模式
文章目录 开源项目通过剖析Java JDK源码学习灵活应用设计模式1. 单例模式(Singleton Pattern)示例:`java.lang.Runtime`2. 工厂模式(Factory Pattern)示例:`java.util.Date`3. 观察者模式(Observer Pattern)示例:`java.util.Observable` 和 `java.util.Observer`4. 适…...
python中的类属性、实例属性、类方法、实例方法和静态方法
1. 类属性(类变量)和实例属性(实例变量) 在python中,类中的属性就是定义在类中的变量,简称成员变量;类中的行为就是定义在类中的方法,简称成员方法。成员变量又可分为类变量和实例变量,或者分为类属性和实例属性。成员…...
A股继续底部震荡,探底是否能成功?
真心的给股民朋友提个醒,不管你胆大还是胆怯,盘面上出现了1个反常信号,一起来看看: 1、今天两市低开高走,开始筑底了,任何一个主力,都是在无人问津的熊市布局,而在人声鼎沸的牛市离场…...
NPDP考前怎么复习?NPDP200问PDF版来啦~
距离NPDP下半年考试还有4个月的时间,现在正是备考的黄金期。 以下复习建议~ 01.制定详细计划 首先,根据考试大纲,可以将内容划分为几个模块,如新产品开发流程、市场研究、产品规划等,并为每个模块设定学习目标和时间…...
ajax图书管理项目
bootstrap弹框 不离开当前页面,显示单独内容,让用户操作 功能:不离开当前页面,显示单独内容,供用户操作步骤: 1.引入bootstrap.css和bootstrap.js …...
深入理解 Java SPI - 概念、原理、应用
零、前言 在当今互联网时代,应用程序越来越复杂,对于我们开发人员来说,如何实现高效的组件化和模块化已经成为了一个重要的问题。而 Java SPI(Service Provider Interface)机制,作为一种基于接口的服务发现…...
JavaScript - 判断数组中是否包含某个的元素的几种方式
目录 1. 使用 includes 方法 2. 使用 indexOf 方法 3. 使用 find 方法 4. 使用 some 方法 5. 使用 filter 方法 6. 使用 every 方法 应该算是前端开发过程中比较常用的基本操作,话不多说,看代码。 1. 使…...
如何用AI颠覆企业未来:从大企业到中小型企业的实战攻略
如何用AI颠覆企业未来:从大企业到中小型企业的实战攻略 AI大佬经验分享:聊聊企业定制化AI需求和应用场景 今天想跟大家聊聊我在AI领域的一些经验和见解,希望能对大家有所启发。最近,不少企业都对AI很感兴趣,我也经常…...
Linux磁盘管理_LVM逻辑卷_SWAP交换分区_Centos-LVM格式磁盘扩容
目录 一、基本磁盘管理1.1 创建分区1.2 创建文件系统1.3 挂载mount1.4 查看挂载信息1.5 重启失效解决方式 二、逻辑卷LVM2.1 LVM2.2 创建LVM2.3 扩大卷组VG2.4 命令汇总 三、交换分区SWAP管理3.1 SWAP3.2 查看swap3.3 增加交换分区 四、Centos调整分区,在线调整分区…...
C++ 函数模板和类模板
参考视频:C类模板_哔哩哔哩_bilibili 遗留问题:编译器怎么处理函数模板和类模板 目录 一、为什么会有函数模版?函数模板是为了解决什么问题? 二、函数模板的概念 三、函数模版的使用 四、函数模板的特化 五、类模板的概念 …...
安卓Termux系统设备安装内网穿透工具实现远程使用SFTP传输文件
文章目录 前言1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 前言 本教程主要介绍如何在安卓 Termux 系统中使用 SFTP 文件传输,并结合cpolar内网穿透工具生成公网地址,轻松实现无公网IP环境远程传输…...
文件属性获取
1、getpwuid函数 #include <stdio.h> #include <sys/types.h> #include <pwd.h> int main(int argc, char *argv[]) {uid_t uid 1000;struct passwd * pw getpwuid(uid);printf("name:%s gid:%d info:%s wd:%s shell:%s\n",pw->pw_name,pw-&g…...
C:冒泡排序
1、冒泡排序介绍: 冒泡排序的核心思想就是:两两相邻的元素进行比较。 先用一个例子来帮助大家理解一下冒泡排序的算法是怎们进行的 有一排高矮不同的人站成一列,要按照从矮到高的顺序重新排队。 冒泡排序的方法就是,从第一个人…...
探秘C# LINQ元素运算:原理阐释与实践指南
文章目录 一、LINQ元素运算符概述二. ElementAt 和 ElementAtOrDefault三. First 和 FirstOrDefault四. Last 和 LastOrDefault五. Single 和 SingleOrDefault六. Where 和 Select七、实际应用场景示例总结 LINQ(Language-Integrated Query)是C#中强大且…...
根据bean的名称获取bean,静态方法查询数据库
根据bean名称获取bean 1.先创建bean,如template package com.test.game.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.jdbc.core.JdbcTemplate;import…...
剪画小程序:音频剪辑新手入门:基础操作指南!
亲爱的小伙伴们,你是否对音频剪辑充满好奇,却不知道从何下手?今天,就让我们用【剪画】一起揭开音频剪辑基础操作的神秘面纱! 音频拼接——打造个性音乐串烧 音频拼接是将多个音频片段组合在一起,创造出独特…...
IDEA中maven jar下载失败问题处理
前言 对于在IDEA中maven爆红问题,主要分为两类,一个是全部爆红,一个是部分爆红。 全部爆红 这类问题主要是maven配置没有搞好,可以根据下列步骤自查 1.配置好国内的Maven源 第一步:打开IDEA,查看配置 第二步: 检查…...
C++中,函数返回const类型有什么作用,请举例说明
在C中,函数返回const类型的主要作用是确保返回的对象不会被修改。这种保护机制增强了代码的健壮性和可维护性,尤其是在你希望保证函数返回的数据不被意外篡改时。下面通过几个例子来说明函数返回const类型的作用。 例子 1: 返回常量引用 当你从函数中返…...
Html详解——Vue基础
HTML是什么? 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用来结构化 Web 网页及其内容的标记语言。网页内容可以是:一组段落、一个重点信息列表、也可以含有图片和数据表…...
Kylin 麒麟系统软件源配置与版本适配指南
1. 麒麟系统软件源基础认知 第一次接触麒麟系统的用户可能会疑惑:为什么安装完系统后无法直接更新软件?这其实是因为系统默认没有配置软件源。软件源就像是一个"应用商店仓库",里面存放着系统需要的所有软件包和更新。麒麟系统作为…...
官方插件包尚未公开?手把手教你从PyPI预发布通道抢鲜下载Python 2026 AOT编译器,含离线安装包与签名验证脚本
第一章:Python 原生 AOT 编译方案 2026 插件下载与安装Python 原生 AOT(Ahead-of-Time)编译方案 2026 是 CPython 官方实验性扩展项目,旨在为 Python 提供无需运行时解释器即可生成独立可执行文件的能力。该插件目前以预发布版本形…...
Visual Studio 2022 版本对决:Community、Professional 与 Enterprise 全方位深度解析
Visual Studio 2022 是微软旗舰级集成开发环境(IDE)的新版本,也是该系列首个原生 64 位版本。它提供三个主要版本:Community(社区版)、Professional(专业版) 和 Enterpriseÿ…...
clib包管理器错误处理终极指南:10个常见问题排查与解决方案
clib包管理器错误处理终极指南:10个常见问题排查与解决方案 【免费下载链接】clib Package manager for the C programming language. 项目地址: https://gitcode.com/gh_mirrors/cl/clib clib是C语言编程的包管理器,为C开发者提供了便捷的依赖管…...
光度立体三维重建中的光源标定:从理论到Matlab实践
1. 光度立体三维重建与光源标定的基础概念 想象一下你正在用手电筒照射一个苹果,随着手电筒角度的变化,苹果表面的明暗也会跟着改变。光度立体三维重建就是利用这个原理,通过分析物体在不同光照条件下的明暗变化,来还原物体的三维…...
保姆级教程:用Keil5同时开发51单片机和STM32(C51+MDK环境配置)
嵌入式开发双环境实战:Keil5高效配置C51与MDK开发平台 在嵌入式开发领域,51单片机和STM32系列因其各自优势长期占据重要地位。许多工程师在日常工作中需要同时处理这两种架构的项目,频繁切换开发环境不仅降低效率,还容易导致开发…...
PHP低代码表单引擎安全红线清单(XSS/CSRF/表达式注入/Schema越权共7类高危漏洞实测防御方案)
第一章:PHP低代码表单引擎安全红线总览低代码表单引擎在加速业务交付的同时,也因动态字段生成、运行时逻辑注入、元数据驱动等特性,天然放大了Web安全风险面。PHP作为主流后端语言,在此类引擎中常承担表单渲染、数据校验、流程路由…...
【郑州大学主办 | SPIE出版社出版,ISSNISBN双刊号出版 | 通信技术、计算机视觉与算法、嵌入式系统技术、机器人领域EI】2026年机器学习与嵌入式系统国际学术会议(MLES 2026)
MLES 2026会议已成功申请到SPIE出版社出版!ISSN&ISBN双刊号出版! 2026年机器学习与嵌入式系统国际学术会议(MLES 2026) 2026 International Conference on Machine Learning and Embedded Systems 2026年4月24-26日 &a…...
避坑指南:Unity Stencil与UI Mask混用时发生的7个典型问题及修复方案
Unity Stencil与UI Mask混用避坑实战:7大高频问题深度解析 在移动端UI开发中,Stencil缓冲与UI Mask的组合堪称"双刃剑"——用好了能实现惊艳的视觉效果,用不好则会让开发者陷入无尽的调试深渊。去年我们团队在开发一款AR导航应用时…...
快速上手GLM-OCR:无需代码基础,网页上传图片即可提取文字
快速上手GLM-OCR:无需代码基础,网页上传图片即可提取文字 你是不是也遇到过这样的场景?手头有一堆纸质文件、截图或者照片,里面全是文字信息,需要把它们一个个敲进电脑里。或者在网上看到一张信息图,想把里…...
