LLMs 奖励剥削 RLHF: Reward hacking

news/2025/3/13 17:18:09/

让我们回顾一下你到目前为止所学到的内容。RLHF是一个微调过程,用于使LLM与人类偏好保持一致。在这个过程中,您利用奖励模型来评估LLM对提示数据集的完成情况,根据人类偏好指标(如有帮助或无帮助)进行评估。
在这里插入图片描述

接下来,您使用强化学习算法,即PPO,在基于当前版本的LLM生成的完成情况上,根据奖励对LLM的权重进行更新。您将在多个迭代中使用许多不同的提示和模型权重的更新来执行此周期,直到获得所期望的对齐程度。
在这里插入图片描述

最终结果是一个与人类对齐的LLM,您可以在应用程序中使用。
在这里插入图片描述

在强化学习中可能出现的一个有趣问题被称为奖励欺骗,代理程序通过偏好最大化接收到的奖励的行动来欺骗系统,即使这些行动与最初的目标不太一致。在LLM的背景下,奖励欺骗可以表现为将词语或短语添加到完成中,以使度量对齐的指标获得高分,但降低了语言的整体质量。例如,假设您正在使用RHF来去毒并指导模型。您已经训练了一个可以执行情感分析并将模型完成分类为有毒或无毒的奖励模型。您从培训数据中选择了一个提示,这个提示是“This product is… 这个产品是”,然后将其传递给指导LLM,生成了一个完成。“…complete garbage 这个完成是完全垃圾的,不太好,您可以期望它会获得很高的有毒评分。”完成由毒性奖励模型处理,该模型生成分数,然后将其馈送给PPO算法,PPO算法使用该分数来更新模型权重。
在这里插入图片描述

随着RHF的迭代,LLM将会更新以生成更少有毒的响应。
在这里插入图片描述

然而,由于策略试图优化奖励,它可能会偏离初始语言模型太远。
在这里插入图片描述

在这个示例中,模型开始生成它已经学会了会导致极低毒性评分的完成,包括诸如“most awesome 最棒的”和“most incredible 最不可思议的”等短语。这种语言听起来非常夸张。模型还可能开始生成毫无意义、语法不正确的文本,仅仅因为它恰好最大化了奖励,这些输出显然没有什么用。
在这里插入图片描述

为防止奖励欺骗的发生,您可以使用初始的指导LLM作为性能参考。我们称其为参考模型。参考模型的权重被冻结,并且在RHF的迭代过程中不会更新。这样,您始终保持单一的参考模型进行比较。在培训期间,每个提示都传递给两个模型,由参考LLM和中间LLM更新模型生成完成。在这一点上,您可以比较这两种完成并计算称为Kullback-Leibler散度(或简称KL散度)的值。KL散度是衡量两个概率分布差异的统计量。您可以将其用于比较两个模型的完成,并确定更新的模型与参考模型相比已经发生了多大的偏差。
在这里插入图片描述

不要太担心这是如何工作的细节。KL散度算法包含在许多标准机器学习库中,您可以在不了解其背后所有数学的情况下使用它。您实际上将在本周的实验中使用KL散度,以便自己看到它的工作原理。KL散度是针对整个LLM词汇表中的每个生成标记进行计算的。这可以很容易地是成千上万个标记。但是,使用softmax函数,您已将概率数量减少到远低于完整词汇表大小的水平。请记住,这仍然是一个相对计算密集的过程。您几乎总是会受益于使用GPU。

一旦计算了两个模型之间的KL散度,您将在奖励计算中添加这个项。如果RL更新的模型偏离参考LLM并生成了完全不同的完成,将会对其进行惩罚。
在这里插入图片描述

请注意,现在您需要完整的LLM副本来计算KL散度,即冻结的Reference Model LLM和口头更新的PPO LLM。顺便说一下,您可以从与PEFT adapter的关系中受益。
在这里插入图片描述

在这种情况下,您只需更新路径适配器的权重,而不是LLM的全部权重。这意味着您可以重用相同的基础LLM作为参考模型和更新的PPO模型,后者使用训练过的路径参数进行更新。这将在训练期间减少内存占用约一半。在这里插入图片描述

我知道这里有很多内容需要理解,但不要担心,带路径的RHF将在实验中介绍。您将有机会亲自看到它的运作并尝试它。完成模型的RLHF对齐后,您将希望评估模型的性能。您可以使用总结数据集来量化毒性的降低,例如,在课程早期您看到的对话数据集。您将在这里使用的数字是毒性分数,这是平均完成中的负类别(在这种情况下是有毒或恶意响应)的概率。如果RLHF成功减少了LLM的毒性,这个分数应该会下降。首先,您将通过使用一个可以评估有毒语言的奖励模型来评估总结数据集的原始指导LLM的完成来创建一个基线毒性分数。然后,您将评估您新的与人对齐的模型在相同的数据集上,并比较分数。
在这里插入图片描述

在这个示例中,经过RLHF后,毒性分数的确有所下降,表明LLM的毒性较低,对齐效果更好。同样,您将在本周的实验中看到所有这些。

Reference

https://www.coursera.org/learn/generative-ai-with-llms/lecture/Cux3s/rlhf-reward-hacking


http://www.ppmy.cn/news/1138176.html

相关文章

汇编指令.

.text 当前汇编里注释用‘’ .test声明下面的内容属于文本段内容 .global _start .global声明_start为一个全局标签 _start:汇编里的标签,类似于c语言里的函数 mov r1,#1 汇编命令 将1保存到r1寄存器 stop: b stop 跳转到stop标签 map.lds是一个链接脚本文…

伟大不能被计划

假期清理书单,把这个书读完了,结果发现出奇的好,可以说是值得亲身去读的书,中间的一些论述提供了人工智能专业方面的视角来论证这这个通识观点,可信度很不错; 这篇blog也不是对书的总结,更多的是…

目录文件比较工具

最近老比较两个目录的文件列表是否相同,需要将源目录中多出的文件自动copy到目标文件,手动太费时费力,写了一个python脚本,与大家共享。 开始使用纯控制台,发现还是有个界面更方便一些,就用tkinter写了一个…

js中的call和apply方法

this总是指向调用时的对象,但是apply()和call()可以修改this指向。 call()方法 语法:obj.call(thisObj, arg1, arg2…) call的第一个参数就是要修改的this所在的对象,其余参数是是作为参数传入到调用的方法上。 注意: 如果没…

NOIP-2023模拟题

全国青少年信息学奥林匹克竞赛 NOIP2023模拟 时间:8:00-12:30 题目名称异或游戏连通块公交路线题目类型传统型传统型传统型传统型目录 xor \text{xor} xor game \text{game} game connect \text{connect} connect route \text{route} route可执行文件名 xor \text{x…

DBC配置SecOC属性

关联文章:Autosar基础——车载信息安全SecOC 属性定义的规范详细介绍请参考 ①dbc属性定义 ②Vector DBC属性定义规则 文章目录 一、SecOC简介二、DBC文件中的SecOC属性三、配置SecOC属性设置SecOC的属性设置同步报文的属性设置同步请求报文的属性一、SecOC简介 在车载网络中…

Python(八十八)函数的参数传递

❤️ 专栏简介:本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中,我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 :本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

速学数据结构 | 手把手教你会单链表的构建方式

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《初阶数据结构》《C语言进阶篇》 ⛺️生活的理想,就是为了理想的生活! 文章目录 📋 前言1. 什么是链表1.1 链表的物理结构1.2 链表的种类 2. 链表的实现一. SList.h 单链表的声明3.…