LLMs 奖励剥削 RLHF: Reward hacking

让我们回顾一下你到目前为止所学到的内容。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.hqwc.cn/news/126064.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建捡垃圾机器人的 ROS 2 项目

一、说明 本系列是关于学习如何使用 ROS2、Docker 和 Github 设计、设置和维护机器人项目。 先决条件 — ROS2 软件包的基本知识、实现发布者、订阅者、操作并连接它们。 我们之前在 ROS2 中了解了不同的部分。但是,在我们转向实际的基于硬件的项目之前,…

字符串和内存函数

目录 strlen 模拟实现 长度不受限字符串函数 strcpy 模拟实现 ​编辑 strcat 模拟实现 strcmp 模拟实现 长度受限字符串函数 strncpy 模拟实现 strncat strncmp strstr 模拟实现 strtok strerror perror 字符分类函数 字符转换 示例: ​编辑内…

Net相关的各类开源项目

Net相关的各类开源项目 WPFHandyControlLive-ChartsWPFDeveloperswpf-uidesignStylet WebScheduleMasterYiShaAdminBlog.CoreNebula.AdminNewLife.CubeOpenAuth UnityuGUIUnityCsReferenceEpitomeMyUnityFrameWorkKSFrameworkTowerDefense-GameFramework-Demo 通用ClientServer…

SRTP交叉编译与移植

1 SRTP源码下载 源码下载在github采用的库为libsrtp2.5.0: weget https://github.com/cisco/libsrtp/archive/refs/tags/v2.5.0.tar.gz2 SRTP交叉编译 新增交叉编译脚本,这里需要支持openssl。 ./configure --hostarm-linux-androideabi --prefix$(pwd)/object …

《视觉 SLAM 十四讲》V2 第 6 讲 非线性优化 【高斯牛顿法、列文伯格-马夸尔特方法 、Ceres 库 和 g2o库 】

文章目录 6.1.2 最小二乘 寻找下降增量 Δ x k \Delta\bm{x}_k Δxk​的 4 种方法6.2.1 一阶和二阶梯度法(最速下降法、牛顿法)6.2.2 高斯牛顿法6.2.3 列文伯格-马夸尔特方法 【阻尼牛顿法】【信赖区域法】 6.3 实践6.3.1 手写高斯牛顿法 【Code】6.3.2 谷歌的优化库 Ceres 【最…

Linux自用笔记

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Linux相关 ✨特色专栏: My…

RabbitMQ核心总结

AMQP协议核心概念 RabbitMQ是基于AMQP协议的,通过使用通用协议就可以做到在不同语言之间传递。 server:又称broker,接受客户端连接,实现AMQP实体服务。 connection:连接和具体broker网络连接。 channel&#xff1a…

redis学习(二)——redis常见命令及基础数据类型

数据类型 基础数据类型 字符串 String abcMap集合 Hsah {name:“zhangsan”,age:18}列表 List [a, b, c, d]Set集合 Set {a,b,c}有序Set集合 SortSet {a:1,b:2,c:3} 特殊数据类型 GEO 地理坐标 {A:(100.2,35.1)}BitMap 位图,只存储0和1 01101011101HyperLog 基数…

软件设计师_数据结构与算法_学习笔记

文章目录 6.1 数组与矩阵6.1.1 数组6.1.2 稀疏矩阵 6.2 线性表6.2.1 数据结构的定义6.2.2 顺序表与链表6.2.2.1 定义6.2.2.2 链表的操作 6.2.3 顺序存储和链式存储的对比6.2.4 队列、循环队列、栈6.2.4.2 循环队列队空与队满条件6.2.4.3 出入后不可能出现的序列练习 6.2.5 串 6…

【Spring笔记02】Spring中的IOC容器和DI依赖注入介绍

这篇文章,主要介绍一下Spring中的IOC容器和DI依赖注入两个概念。 目录 一、IOC控制反转 1.1、什么是IOC 1.2、两种IOC容器 (1)基于BeanFactory的IOC容器 (2)基于ApplicationContext的IOC容器 二、DI依赖注入 2.…

【Python】读取显示pgm图像文件

文章目录 零. 前言一. pgm基本概念二. pgm基本信息读取三. pgm图像渲染四. 代码优化 零. 前言 这学期要学多媒体信息隐藏对抗,发现其中的图像数据集文件都是pgm文件形式的。虽然是图像文件,但是却不能直接通过图像查看器来打开,上网一搜&…

大模型 Decoder 的生成策略

本文将介绍以下内容: IntroductionGreedy Searchbeam searchSamplingTop-K SamplingTop-p (nucleus) sampling总结 一、Introduction 1、简介 近年来,由于在数百万个网页数据上训练的大型基于 Transformer 的语言模型的兴起,开放式语言生…