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 网页及其内容的标记语言。网页内容可以是:一组段落、一个重点信息列表、也可以含有图片和数据表…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案
问题描述:iview使用table 中type: "index",分页之后 ,索引还是从1开始,试过绑定后台返回数据的id, 这种方法可行,就是后台返回数据的每个页面id都不完全是按照从1开始的升序,因此百度了下,找到了…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
spring:实例工厂方法获取bean
spring处理使用静态工厂方法获取bean实例,也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下: 定义实例工厂类(Java代码),定义实例工厂(xml),定义调用实例工厂ÿ…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
