【赠书活动|第六期《强化学习:原理与Python实战》】

2023-11-19

RLHF是什么?

强化学习利用奖励信号训练智能体。有些任务并没有自带能给出奖励信号的环境,也没有现成的生成奖励信号的方法。为此,可以搭建奖励模型来提供奖励信号。在搭建奖励模型时,可以用数据驱动的机器学习方法来训练奖励模型,并且由人类提供数据。我们把这样的利用人类提供的反馈数据来训练奖励模型以用于强化学习的系统称为人类反馈强化学习,示意图如下。

图: 人类反馈强化学习:用人类反馈的数据训练奖励模型,用奖励模型生成奖励信号

RLHF适用于哪些任务?

RLHF适合于同时满足下面所有条件的任务:

要解决的任务是一个强化学习任务,但是没有现成的奖励信号并且奖励信号的确定方式事先不知道。为了训练强化学习智能体,考虑构建奖励模型来得到奖励信号。
反例:比如电动游戏有游戏得分,那样的游戏程序能够给奖励信号,那我们直接用游戏程序反馈即可,不需要人类反馈。
反例:某些系统奖励信号的确定方式是已知的,比如交易系统的奖励信号可以由赚到的钱完全确定。这时直接可以用已知的数学表达式确定奖励信号,不需要人工反馈。

不采用人类反馈的数据难以构建合适的奖励模型,而且人类的反馈可以帮助得到合适的奖励模型,并且人类来提供反馈可以在合理的代价(包括成本代价、时间代价等)内得到。如果用人类反馈得到数据与其他方法采集得到数据相比不具有优势,那么就没有必要让人类来反馈。

RLHF和其他构建奖励模型的方法相比有何优劣?

奖励模型可以人工指定,也可以通过有监督模型、逆强化学习等机器学习方法来学习。RLHF使用机器学习方法学习奖励模型,并且在学习过程中采用人类给出的反馈。

比较人工指定奖励模型与采用机器学习方法学习奖励模型的优劣:这与对一般的机器学习优劣的讨论相同。机器学习方法的优点包括不需要太多领域知识、能够处理非常复杂的问题、能够处理快速大量的高维数据、能够随着数据增大提升精度等等。机器学习算法的缺陷包括其训练和使用需要数据时间空间电力等资源、模型和输出的解释型可能不好、模型可能有缺陷、覆盖范围不够或是被攻击(比如大模型里的提示词注入)。

比较采用人工反馈数据和采用非人工反馈数据的优劣:人工反馈往往更费时费力,并且不同人在不同时候的表现可能不一致,并且人还会有意无意地犯错,或是人类反馈的结果还不如用其他方法生成数据来的有效,等等。我们在后文会详细探讨人工反馈的局限性。采用机器收集数据等非人工反馈数据则对收集的数据类型有局限性。有些数据只能靠人类收集,或是用机器难以收集。这样的数据包括是主观的、人文的数据(比如判断艺术作品的艺术性),或是某些机器还做不了的事情(比如玩一个AI暂时还不如人类的游戏)。

什么样的人类反馈才是好的反馈

好的反馈需要够用:反馈数据可以用来学成奖励模型,并且数据足够正确、量足够大、覆盖足够全面,使得奖励模型足够好,进而在后续的强化学习中得到令人满意的智能体。
这个部分涉及的评价指标包括:对数据本身的评价指标(正确性、数据量、覆盖率、一致性),对奖励模型及其训练过程的评价指标、对强化学习训练过程和训练得到的智能体的评价指标。

好的反馈需要是可得的反馈。反馈需要可以在合理的时间花费和金钱花费的情况下得到,并且在成本可控的同时不会引发其他风险(如法律上的风险)。

涉及的评价指标包括:数据准备时间、数据准备涉及的人员数量、数据准备成本、是否引发其他风险的判断。

RLHF算法有哪些类别,各有什么优缺点?

RLHF算法有以下两大类:用监督学习的思路训练奖励模型的RLHF、用逆强化学习的思路训练奖励模型的RLHF。

1.在用监督学习的思路训练奖励模型的RLHF系统中,人类的反馈是奖励信号或是奖励信号的衍生量(如奖励信号的排序)。

直接反馈奖励信号和反馈奖励信号衍生量各有优缺点。这个优点在于获得奖励参考值后可以直接把它用作有监督学习的标签。缺点在于不同人在不同时候给出的奖励信号可能不一致,甚至矛盾。反馈奖励信号的衍生量,比如奖励模型输入的比较或排序。有些任务给出评价一致的奖励值有困难,但是比较大小容易得多。但是没有密集程度的信息。在大量类似情况导致某部分奖励对应的样本过于密集的情况下,甚至可能不收敛。

一般认为,采用比较类型的反馈可以得到更好的性能中位数,但是并不能得到更好的性能平均值。

2.在用逆强化学习的思路训练奖励模型的RLHF系统中,人类的反馈并不是奖励信号,而是使得奖励更大的奖励模型输入。即人类给出了较为正确的数量、文本、分类、物理动作等,告诉奖励模型在这时候奖励应该比较大。这其实就是逆强化学习的思想。

这种方法与用监督学习训练奖励模型的RLHF相比,其优点在于,训练奖励模型的样本点不再拘泥于系统给出的需要评判的样本。因为系统给出的需要评估奖励的样本可能具有局限性(因为系统没有找到最优的区间)。

在系统搭建初期,还可以将用户提供的参考答案用于把最初的强化学习问题转化成模仿学习问题。

这类设计还可以根据反馈的类型进一步分类,一类是让人类独立给出专家意见,另一类是在让人类在已有数据的基础上进行改进。让人类提供意见就类似于让人类提供模仿学习里的专家策略(当然可能略有不同,毕竟奖励模型的输入不只有动作)。让用户在已有的参考内容上修改可以减少人类每个标注的成本,但是已有的参考内容可能会干扰到人类的独立判断(这个干扰可能是正面的也可能是负面的)。

RLHF采用人类反馈会带来哪些局限?

前面已经提到,人类反馈可能更费时费力,并且不一定能够保证准确性和一致性。除此之外,下面几点会导致奖励模型不完整不正确,导致后续强化学习训练得到的智能体行为不能令人满意。

1.提供人类反馈的人群可能有偏见或局限性。

这个问题和数理统计里的对样本进行抽样方法可能遇到的问题类型。为RLHF系统提供反馈的人群可能并不是最佳的人群。有的时候出于成本、可得性等因素,会选择人力成本低的团队,但是这样的团队可能在专业度不够,或是有着不同的法律、道德和宗教观念,包括歧视性信息。反馈人中可能有恶意者,会提供有误导性的反馈。

2.人的决策可能没有机器决策那么高明。
在一些问题上,机器可以比人做的更好,比如对于象棋围棋等棋盘游戏,真人就比不过人工智能程序。在一些问题上,人能够处理的信息没有数据驱动的程序处理的信息全面。比如对于自动驾驶的应用,人类只能根据二维画面和声音进行决策,而程序能够处理连续时间内三维空间的信息。所以在理论上人类反馈的质量是不如程序的。

3.没有将提供反馈的人的特征引入到系统。
每个人都是独一无二的:每个人有自己的成长环境、宗教信仰、道德观念、学习和工作经历、知识储备等,我们不可能把每个人的所有特征都引入到系统。在这种情况下,如果忽略不同的人之间在某个特征维度上的差别,那么就会损失到许多有效信息,导致奖励模型性能下降。

以大规模语言模型为例,用户可以通过提示工程指定模型以某种特定的角色或沟通方式来沟通,比如有时要求语言模型的输出文字更有礼貌更客套多奉承套,有时需要输出文字内容掷地有声言之有物少客套;有时要求输出文字更有创造性,有时要求输出文字尊重事实更严谨;有时要求输出简洁扼要,有时要求输出详尽完备提供更多细节;有时要求输出中立客观仅在纯自然科学范围内讨论,有时要求输出多考虑人文社会的环境背景。而提供反馈数据的人的不同身份背景和沟通习惯可能正好对应于不同情况下的输出要求。这种情况下,反馈人的特性就非常重要。

4.人性可能导致数据集不完美。

比如语言模型可能会通过拍马屁、戴高帽等行为获得高分评价,但是这样的高分评价可能并没有真正解决问题,有违系统设计的初衷。看似得分很高,但是高得分可能是通过避免争议性话题或是拍马屁拍出来的,而不是真正解决了需要解决问题,没有达到系统设计的初衷。

此外,人类提供反馈还有其他非技术上面的风险,比如泄密等安全性风险、监管法律风险等。

如何降低人类反馈带来的负面影响?

针对人类反馈费时费力且可能导致奖励模型不完整不正确的问题,可以在收集人类反馈数据的同时就训练奖励模型、训练智能体,并全面评估奖励模型和智能体,以便于尽早发现人类反馈的缺陷。发现缺陷后,及时进行调整。

针对人类反馈中出现的反馈质量问题以及错误反馈,可以对人类反馈进行校验和审计,如引入已知奖励的校验样本来校验人类反馈的质量,或为同一样本多次索取反馈并比较多次反馈的结果等。

针对反馈人的选择不当的问题,可以在有效控制人力成本的基础上,采用科学的方法选定提供反馈的人。可以参考数理统计里的抽样方法,如分层抽样、整群抽样等,使得反馈人群更加合理。

对于反馈数据中未包括反馈人特征导致奖励模型不够好的问题,可以收集反馈人的特征,并将这些特征用于奖励模型的训练。比如,在大规模语言模型的训练中可以记录反馈人的职业背景(如律师、医生等),并在训练奖励模型时加以考虑。当用户要求智能体像律师一样工作时,更应该利用由律师提供的数据学成的那部分奖励模型来提供奖励信号;当用户要求智能体像医生一样工作时,更应该利用由医生提供的数据学成的那部分奖励模型来提供奖励信号。

另外,在整个系统的实施过程中,可以征求专业人士意见,以减小其中法律和安全风险。

图书简介

  • 理论完备,涵盖强化学习主干理论和常见算法,带你参透ChatGPT技术要点;
  • 实战性强,每章都有编程案例,深度强化学习算法提供TenorFlow和PyTorch对照实现;
  • 配套丰富,逐章提供知识点总结,章后习题形式丰富多样。还有Gym源码解读、开发环境搭建指南、习题答案等在线资源助力自学。

在这里插入图片描述

抽奖方式

  • 关注 + 点赞 + 收藏 文章

  • 评论区留言:我要成为架构师(关注并留言才能进入奖池,每人最多留言三条)

  • 周日晚八点随机抽奖

  • 本次送书2~5本【阅读量越多,送的越多】
    500-1000 赠书2本
    1000-1500 赠书3本
    1500-2000 赠书4本
    2000+ 赠书5本

本期中奖人

爱编程的小芒果
计算机魔术师

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【赠书活动|第六期《强化学习:原理与Python实战》】 的相关文章

  • 从 torch.autograd.gradcheck 导入 zero_gradients

    我想复制代码here https github com LTS4 DeepFool blob master Python deepfool py 并且我在 Google Colab 中运行时收到以下错误 ImportError 无法导入名称
  • docker 容器中的“(pygame parachute)分段错误”

    尝试在 docker 容器中使用 pygame 时出现以下错误 我想从容器中获取显示 Fatal Python error pygame parachute Segmentation Fault 重现 Docker已安装 docker ru
  • DynamodB:如何更新排序键?

    该表有两个键 filename 分区键 和eventTime 排序键 我要更新eventTime对于某些filename Tried put item and update item 发送相同的filename与新的eventTime但这些
  • 使用 Python 和 lmfit 拟合复杂模型?

    我想适合椭偏仪 http en wikipedia org wiki Ellipsometry使用 LMFit 将数据转换为复杂模型 两个测量参数 psi and delta 是复杂函数中的变量rho 我可以尝试将问题分离为实部和虚部共享参
  • Scrapy 文件管道不下载文件

    我的任务是构建一个可以下载所有内容的网络爬虫 pdfs 在给定站点中 Spider 在本地计算机和抓取集线器上运行 由于某种原因 当我运行它时 它只下载一些但不是全部的 pdf 通过查看输出中的项目可以看出这一点JSON 我已经设定MEDI
  • 动态字段取决于 WTForms 的先前字段

    我正在使用 WTForms 制作表格 目前 我有这个 class UploadForm flask wtf Form fichier wtforms fields FileField u Fichier description wtform
  • Python 内置对象的 __enter__() 和 __exit__() 在哪里定义?

    我读到每次使用 with 时都会调用该对象的 enter 和 exit 方法 我知道对于用户定义的对象 您可以自己定义这些方法 但我不明白这对于 打开 等内置对象 函数甚至测试用例是如何工作的 这段代码按预期工作 我假设它使用 exit 关
  • 会话数据库表清理

    该表是否需要清除或者由 Django 自动处理 Django 不提供自动清除功能 然而 有一个方便的命令可以帮助您手动完成此操作 Django 文档 清除会话存储 https docs djangoproject com en dev to
  • 获取 Keras model.summary() 作为表

    我在 Keras 中创建了相当大的模型 我正在用 LaTeX 写一篇关于它的文章 为了很好地描述 LaTeX 中的 keras 模型 我想用它创建一个 LaTeX 表 我可以手动实现它 但我想知道是否有任何 更好 的方法来实现这一点 我四处
  • 如何从 python 脚本执行 7zip 命令

    我试图了解如何使用 os system 模块来执行 7zip 命令 现在我不想用 Popen 或 subprocess 让事情变得复杂 我已经安装了 7zip 并将 7zip exe 复制到我的用户文件夹中 我只想提取我的测试文件 inst
  • Pandas 字典键到列[重复]

    这个问题在这里已经有答案了 我有一个像这样的数据框 index column1 e1 u c680 5 u c681 1 u c682 2 u c57 e2 u c680 6 u c681 2 u c682 1 u c57 e3 u c68
  • multiprocessing.Queue 中的 ctx 参数

    我正在尝试使用 multiprocessing Queue 模块中的队列 实施 https docs python org 3 4 library multiprocessing html exchang objects Between p
  • Python 在哪些系统上不使用 IEEE-754 双精度浮点数

    Python 对 IEEE 754 浮点运算进行了各种引用 但不保证1 https docs python org 3 tutorial floatingpoint html 2 https pythondev readthedocs io
  • Flymake的临时文件可以在系统临时目录下创建吗?

    我目前正在使用以下代码在 emacs 中连接 Flymake 和 Pyflakes defun flymake create temp in system tempdir filename prefix make temp file or
  • 获取多个同名请求参数

    我的问题是给定的代码 from flask import Flask request app Flask name app route def hello return str request values get param None a
  • 如何将 URL 添加到 Telegram Bot 的 InlineKeyboardButton

    我想制作一个按钮 可以从 Telegram 聊天中在浏览器中打开 URL 外部超链接 目前 我只开发了可点击的操作按钮 update message reply text Subscribe to us on Facebook and Te
  • 如何创建增量加载网页

    我正在编写一个处理大量数据的页面 它会永远持续到我的结果页面加载 几乎无限 因为返回的数据太大了 因此 我需要实现一个增量加载页面 例如 url 中的页面 http docs python org http docs python org
  • 将 Django 中的所有视图限制为经过身份验证的用户

    我是 Django 新手 我正在开发一个项目 该项目有一个登录页面作为其索引和一个注册页面 其余页面都必须仅限于登录用户 如果未经身份验证的用户尝试访问这些页面 则必须将他 她重定向到登录页面 我看到 login required装饰器会将
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • 从 Django 运行 shell 命令

    我正在 Django 中开发一个网页 使用 apache 服务器 需要调用 shell 命令来启用 禁用一些守护进程 我尝试这样做 os system service httpd restart 1 gt HOME out 2 gt HOM

随机推荐

  • 第一个Java程序HelloWorld

    第一个Java程序HelloWorld 1 随便建一个文件夹用来存放代码 2 新建一个java文件 可以叫Hello java 后缀是 java的文件 3 用记事本打开写如下的代码 public class Hello public sta
  • 由Qt::BlockingQueuedConnection引起的关闭Qt主页面而后台仍有进程残留

    BUG 由Qt BlockingQueuedConnection引起的关闭Qt主页面而后台仍有进程残留 1 错误代码示例 首先我们看下下面的代码 可以思考一下代码的错误之处 BlockingQueueDeadLock h pragma on
  • MATLAB代码基于cnn-lstm的轴承寿命预测

    一种结合卷积神经网络 convolution neural networks 简称CNN 和长短时记忆 long short term memory 简称LSTM 神经网络的滚动轴承RUL预测方法 首先 对滚动轴承原始振动信号作快速傅里叶变
  • MMD Maximum Mean Discrepancy 最大均值差异

    reference http songcy net posts story of basis and kernel part 2 https zhuanlan zhihu com p 163839117 https www zhihu co
  • leetcode 查找

    解法1 直接使用STL class Solution public vector
  • 使用QSettings保存QT应用程序数据

    使用QSettings保存QT应用程序数据 简介 QSettings类提供了持久的跨平台应用程序设置 这些settings一般都是存在系统里的 比如windows一般都写在系统注册表或者写INI文件 mac系统一般都在XML文件里 那么按照
  • 如何创建项目

    1 MvvmLight框架的引用 引用 头部选项卡的 工具栏 NuGet 包管理器 管理解决方案的NuGet 程序包 搜索 MVVM Light MvvmLight 作者 Laurent Bugnion GalaSoft 勾选项目 Do n
  • Vue2组件封装 Vue组件封装

    写在前面 虽然是Vue2组件封装 主要的内容是记录一下我对封装组件的一些要点和我的看法 原学习视频来源于b站黑马从0到1封装组件库 什么是组件 都说Vue是组件化开发 确实有道理 别说按钮输入框这种组件了 就连每个页面 从本质来看也是一个个
  • 电源学习总结(六)——BUCK设计

    降压型开关电源 BUCK 是实际应用中较为广泛使用的电路 本文来详细说一说相关的设计细节 这里不考虑集成的开关电源 分控制和驱动 开关管 电感等部分讲 文章目录 基本结构 控制和驱动 开关管 自举电容 电感 电容 工作频率选择 其他注意事项
  • new做了哪些事?

    new做了哪些事 function Parent this name Person const p new Parent 创建一个空对象 将对象的原型 proto 指向构造函数的prototype原型对象 将构造函数的this指向当前对象
  • 使用xshell-ssh连接服务器,报错:Xshell Socket error Event: 32 Error: 10053

    XShell连接CentOS系统时 报出Xshell Socket error Event 32 Error 10053 错误 有点烦人 操作 用SSH工具连接linux电脑出现的问题 Read from socket failed Con
  • 多益网络_网络安全的未来日益激烈的信息控制之战

    多益网络 Over two decades ago Alphabet CEO Eric Schmidt noted The Internet is the first thing that humanity has built that h
  • 内核虚拟化KVM/QEMU——guest os,qemu,kvm的运行流程

    内核虚拟化KVM QEMU guest os qemu kvm的运行流程 这里主要介绍基于x86平台的Guest Os Qemu Kvm工作流程 如图 通过KVM APIs可以将qemu的command传递到kvm 1 创建VM syste
  • 问题 对于二分类问题,当训练集中正负样本非常不均衡时,如何处理数据以更好 地训练分类模型?

    为什么很多分类模型在训练数据不均衡会出现问题 本质原因是模型在训练时优化的目标函数和人们测试时使用的评价标准不一致 这种不一致可能是训练数据的样本分布和测试数据的不一致 例如训练时优化的整个训练集 正负比例1 99 的正确率 而测试的时候期
  • JavaScript [数组去重] 的部分方法总结

    参考了文章 JavaScript数组去重 12种方法 史上最全 有部分改动 删去了一些没用的代码 替换了部分for循环 一 利用ES6 Set去重 ES6中最常用 function arrayRemoveSame arr return Ar
  • 二手房各项税费计算公式

    北京的房屋类型有很多种 有商品房 公房 一类经适房 二类经适房 两限房 现针对这些类型的房子列一下二手房购置过程中 需要考虑的税费 一 各类房源简介 1 商品房 正规从售楼处买的房源 2 公房 单位分的房子 由于不知道原值 所以个税按 网签
  • sbrk/brk函数用法

    头文件unistd h sbrk brk函数重新指定数据段的结束位置 sbrk 0 获得当前数据段结束地址 sbrk 增量 增量可正 可负 可为0 都返回原来数据段的结束地址 失败返回 1 brk 地址 返回0或 1 通过重新指定数据段新的
  • Matlab导入Excel数据快速绘图

    现在使用Matalb绘图越来越多 不会这个绘图技能感觉都要被时代抛弃了 所以 本文主要是介绍怎么用Matlab导入Excel数据快速绘图 目录 一 基本使用 二 细致调节 1 颜色选项 2 形状选项 3 网格线选项 一 基本使用 事先 建议
  • Python爬虫进阶--js逆向

    目标网址 aHR0cHM6Ly93d3cuZG5zLmNvbS9sb2dpbi5odG1s 抓包定位 首先抓包看请求 这里 password 和 email 都经过加密了 token 可以在页面上找到 从这里进去搜索 直接搜索 passwo
  • 【赠书活动|第六期《强化学习:原理与Python实战》】

    文章目录 RLHF是什么 RLHF适用于哪些任务 RLHF和其他构建奖励模型的方法相比有何优劣 什么样的人类反馈才是好的反馈 RLHF算法有哪些类别 各有什么优缺点 RLHF采用人类反馈会带来哪些局限 如何降低人类反馈带来的负面影响 图书简