大语言模型之人类反馈学习RLHF

news2024/10/7 15:19:06

在2017年左右,深度强化学习(Deep Reinforcement Learning)逐渐兴起并引起广泛关注。特别是在2017年6月,OpenAI与Google DeepMind联合推出了一项名为《Deep Reinforcement Learning from Human Preferences》(RLHF)的研究项目,该项目基于人类偏好进行深度强化学习。这项研究旨在解决深度强化学习中一个重要的挑战,即如何有效地设计奖励函数来引导智能体的学习过程。传统的强化学习方法通常使用手工设计的奖励函数,但这种方法往往难以捕捉到复杂任务中的细微差别和人类的偏好。
论文链接:https://arxiv.org/pdf/1706.03741

RLHF提出了一种全新的方法,利用人类偏好来训练深度强化学习模型。在这个方法中,人类参与者被要求观看智能体在执行任务时的表现,并根据他们的偏好进行选择。这些选择被用作奖励信号,用于训练深度强化学习模型。RLHF可以使智能体更好地学习任务的目标和优先级。这种方法不仅能够提高强化学习模型的性能,还能够使模型的行为更加符合人类的期望和偏好。
在这里插入图片描述

  • 在Zieglar等人(2019年)的论文《Fine-Tuning Language Models from Human Preferences》中,他们介绍了一种使用人类参与的方法来训练奖励模型。在这个方法中,人类标注者会对由策略模型生成的文本进行选择,比如在四个答案选项(y0、y1、y2、y3)中选择一个最好的作为奖励模型的标签。通过这种方式,奖励模型可以学习到更准确的文本评估准则,并指导策略模型的训练。
    论文链接:https://arxiv.org/pdf/1909.08593

在这里插入图片描述

  • 而在Stiennon等人(2020年)的论文《Learning to summarize with human feedback》中,OpenAI团队提出了一种类似于instructGPT和ChatGPT的训练模式。在这种模式下,人类标注者通过与模型交互,向模型提供反馈和指导,帮助模型学习如何进行摘要生成任务。通过与人类标注者的互动,模型可以逐步优化自身的生成能力,并生成更加准确和合理的摘要。
    论文链接:https://arxiv.org/pdf/2009.01325
    在这里插入图片描述
    论文中提到三个关键步骤来微调监督模型并训练奖励函数。

  • 根据人工标注数据微调监督模型:在预训练语言模型后,使用人工标注的数据来微调模型以适应特定任务。通过将任务相关的数据输入模型,并通过反向传播算法调整模型参数,使其更好地适应任务要求。这个过程类似于传统的监督学习,其中人工标注数据被用作训练样本,目标是优化模型的性能。

  • 训练一个奖励函数:在传统的强化学习中,奖励函数通常由人工设计。然而,在这种情况下,训练一个奖励函数来代替人工设计的奖励函数。这个奖励函数的目的是根据任务的目标,给出对生成文本的评估。通过使用高质量标注数据训练奖励函数,我们可以让模型在生成文本时更好地符合任务的要求。

  • 使用PPO优化模型的策略:PPO(Proximal Policy Optimization)是一种用于优化策略的算法。在这里,我们使用PPO算法来更新模型的策略,以最大化奖励函数的预期值。此外,为了避免奖励模型过于绝对,还添加了一个惩罚项来平衡奖励函数。(后续会专门写一个关于强化学习的博客,会详细介绍这部分内容。请耐心等待!)

这些论文都探索了利用人类参与来指导和改善语言模型的训练过程。通过结合人类的专业知识和判断力,可以提供更准确的标签和反馈,从而改善模型的生成能力和表现。这种人类参与的训练方法为语言模型的发展和进步提供了一种有益的途径。

相关知识正在学习,未完待续!预计一两天后完成

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/632621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python如何判断整数

Python如何判断整数 Python是一个简单易学的编程语言,但是对于初学者来说,判断整数可能会有一些困难。在本文中,将介绍Python如何判断整数,并提供一些示例帮助您更好地理解。 如何判断整数 在Python中,判断整数可以…

Skywalking环境搭建

Skywalking环境搭建 elasticsearch环境搭建Skywalking环境搭建 elasticsearch环境搭建 接下来我们在虚拟机CentOS中搭建Skywalking的可观测性分析平台OAP环境。Skywalking默认使用H2内存进行数据的存储,我们可以替换存储源为ElasticSearch保证其查询的高效及可用性…

运行后端SpringBoot项目

目录 一、注册微信开发者账号 1. 注册开发者账号 2. 获取appid和密钥 二、开通腾讯云TRTC服务 1. TRTC业务介绍 2. 为什么不使用阿里云的实时音视频服务,偏要选用腾讯云TRTC服务? 3. 开通TRTC服务 4. 领取TRTC的AppID和密钥 三、导入 emos-api …

Geant4安装记录,15.5.0VMware + 11.0.0G4 + 18..04.1 ubuntu

仅仅是记录学习使用,有问题请联系 Geant4安装前准备 (1)安装虚拟机, VMware 15.5 (2)在虚拟机上安装ubuntu 以上两个步骤在网上有很多教程,安装很简单,大家自行安装即可 这里记录…

【前端验证】通关寄存器与ral_model —— 25种常用寄存器类型全览

寄存器的属性分类 本文档对于寄存器的属性以synopsys相关文档以及ral_model生成模型时的识别方式为基准。通常讲可以归纳为以下三个方面:读写属性read-write access、写后值modified write value、读后操作read action。注意,这里指的都是软件的操作&am…

chatgpt赋能python:Python怎么升序排序

Python怎么升序排序 排序是我们经常会用到的一种操作,而在Python中,对于列表或数组等序列类型的数据,我们可以使用内置的sorted()函数来进行排序操作。而在排序时,升序排序是我们最常用的一种。 Python中的sorted()函数 sorted…

关于uni-app与vue路由配置的不同,不使用uni.navigateTo接口跳转时,使用this.$router.push的踩坑经验

目录 懵逼的一个小时 uni-app与vue路由配置的不同 非官方接口的另类写法 错误编写: 正确编写(只需写父组件即可,其他是多余): 懵逼的一个小时 之前用vue写router路由的时候,先配置一个路由表&am…

chatgpt赋能python:Python怎么删除列表中的最大值和最小值

Python怎么删除列表中的最大值和最小值 在Python中,一个列表(List)是一种非常常见的数据结构,它允许我们以有序的方式存储和访问数据。但是,有时候我们需要从列表中删除最大或最小的值,以满足我们的特定需…

哈希表原理,以及unordered_set/和unordered_map的封装和迭代器的实现

哈希表 unordered系列unordered_set和unordered_map的使用哈希哈希概念哈希冲突哈希函数闭散列开散列哈希表的扩容哈希表源码(开散列和闭散列) 封装unordered_set/和unordered_map,以及实现迭代器节点定义unordered_set定义unordered_map定义…

Python3 flask-socketio 整合vue

1. 前端说明 前端追加了vue-socket.io的依赖 更新package.json及package-lock.json后,需要补充库 2. 后端说明 服务端需要安装的python包 suse python 3.6.12 Flask_SocketIO-4.3.1-py2.py3-none-any.whl python_socketio-4.6.0-py2.py3-none-any.whl python_…

在PPT里如何做出晶莹剔透的高级水泡感出来呢

开篇 很多PPT特别是一些TED演讲类PPT,它的首页开篇给人以强烈的冲击感。比如说上面这张PPT,笔者就卖出过一页800元的效果。它的高级高级在以下两个地方: 水晶感;透明感这是时下非常流行的一种TED场景式演讲专用的PPT,适用于一些大厂的CTO、CEO都大量使用这种效果。 今天…

shell脚本编写辅助命令

目录 一、echo 命令 二、字符串相关操作 1.截取字符串 2.获取字符串长度 3.字符串追加字符 4.从开头或结尾删除字符串指定格式内容 三、随机数 1.使用 $RANDOM 2.指定RANDOM变量的范围 (1)从0开始的范围 (2)从指定数始…

35、git的使用

一、git简介 git是一款免费、开源的版本控制系统,用于高效地处理任何或大或小的项目。 作用: 文件存档备份 文件版本管理 多人协同合作(自动合并) 二、git的三个区域 工作区:处理工作的区域 暂存区:临时存放…

Shell脚本实现数组冒泡排序等简单算法排序

目录 一、冒泡排序 1.简介 2.基本思想 3.算法思路 4.shell脚本实现 二、选择排序 1.简介 2.基本思想 3.shell脚本实现 三、插入排序 1.算法思路 2.shell脚本实现 四、反转排序 1.作用 2.shell脚本实现 一、冒泡排序 1.简介 类似气泡上涌的动作,会将…

Java入门之学习随记(三)

一. 栈内存和堆内存 堆内存:存放"引用数据类型的数据"和"new出来的对象",注意-创建出来的对象只包含各自的成员变量,不包括成员方法. 栈内存:存放"基本数据类型的数据","引用数据类型的变量名"以及"对象的引用",但是引用数…

k8s之ReplicaSet回收pod的优先级

ReplicaSet syncReplicaSet的逻辑,首先找到rs下相关的pod // 从informer中获取当前ns下所有的podallPods, err : rsc.podLister.Pods(rs.Namespace).List(labels.Everything())if err ! nil {return err}// 忽略不健康的podfilteredPods : controller.FilterActiveP…

CentOS桥接模式下设置静态IP并解决java.net.ConnectException: Connection timed out: connect

一、前言 最近在配置服务器,DHCP模式下IP地址不固定,每次SSH远程登录连接不上,都要查看新动态分配的IP地址重新配置,感觉些许麻烦,于是给机器配置了静态固定IP。 动态主机配置协议DHCP(Dynamic Host Confi…

Shell脚本练习题(附详细解题过程)

目录 一、利用for循环打印99乘法表 二、十进制转二进制 三、将十进制ip地址转换为二进制格式 四、检测某个网段中存活的主机并输出其ip地址 五、检查文件中用户名是否存在并提示创建用户和设置密码 六、检查httpd服务并开启 七、根据百米赛跑成绩判断结果 八、随机数…

栈和队列(数据结构刷题)[一]-python

文章目录 前言一、原理介绍二、用栈实现队列1.操作2.思路 三、关于面试考察栈里面的元素在内存中是连续分布的么? 前言 提到栈和队列,大家可能对它们的了解只停留在表面,再深入一点,好像知道又好像不知道的感觉。本文我将从底层实…

Django----------模板、静态文件、案例(城市天气预报)、请求和响应

目录 1.templates模板 2.静态文件 1.static目录 2.引用静态文件 1.方式一:直接引用 2.方式二:头部及内部引用 3. 模板语法 1.取内容 2.取下标 3.for循环 4.利用字典 5.列表里套字典 6.if条件语句 7.总结 4.案例(城市天气预…