Meta:大语言模型可以通过自我批判取得大幅提升!

图片

 夕小瑶科技说 原创
 作者 | 谢年年

论文的审稿模式想必大家都不会陌生,一篇论文除了分配多个评审,最后还将由PC综合评估各位审稿人的reviews撰写meta-review。

最近,来自Meta的研究团队将这一模式引进到大模型的对齐训练中。模型同时扮演 执行者(actor)、评判者(judge)和元评判者(meta-judge) 三种角色。执行者生成回复,评判者评估生成回复的质量并打分,元评判者则检查评判者的质量,为评判者提供必要的训练反馈。

通过这种方式获得大量回复偏好对,无需人工标注数据,进一步训练对齐模型,显著提高了模型的判断和遵循指令的能力

论文标题:
META-REWARDING LANGUAGE MODELS: Self-Improving Alignment with LLM-as-a-Meta-Judge

论文链接
https://arxiv.org/pdf/2407.19594

图片

方法

本文假设没有任何额外的人工监督数据,仅有一个初始的种子LLM。通过迭代自我对弈,模型同时扮演执行者(actor)、评判者(judge)和元评判者(meta-judge)三种角色。执行者生成回复,评判者评估生成的质量并打分,元评判者则比较评判者的质量,为其提供必要的训练反馈。

虽然最终的目标是训练执行者生成更优质的回复,但评判者评判是否准确也很重要。随着评判者能力的提升,执行者也能获得更好的反馈,从而不断进步。本文提出的 “元奖励机制(Meta-Rewarding)”旨在同时增强执行者和评判者的能力。迭代过程下图所示:

图片

增强执行者和评判者的能力最重要的就是获取大量训练数据。因此每个迭代周期首先由执行者针对每个提示生成多个回复变体,评判者为每个回复打分,为训练执行者构建回复偏好对。

为了训练评判者构建评判偏好对,则选择一个回复,并让元评判者比较评判者针对该回复生成的两个评判变体,以确定哪个更好,这通过LLM作为元评判者的提示来实现,如下图所示:

图片

一旦为执行者和评判者都收集了偏好数据,就通过DPO在数据集上进行偏好优化训练。

接下来详述每个部分数据集构建。

执行者偏好数据集创建

数据集创建过程主要包括三个步骤:

  1. 从执行者获取样本回复假设有一组给定的提示,对于每个提示,在迭代时,从当前模型中抽样生成个不同的回复。

  2. 聚合多个评判对于每个回复,使用“LLM作为评判者”的提示从中生成个不同的评判。

    图片

    该提示指示模型根据固定评分标准对给定提示下的回复进行评价,并输出其推理过程和最终分数(满分5分)。丢弃无效的打分,计算所有有效评判分数的平均值,得到每个回复的最终奖励分数。

  3. 带长度控制的偏好数据选择

    之前的工作简单地选择每个提示下得分最高和最低的回复作为被选回复和被拒绝回复,形成偏好对。然而,这会导致长度爆炸问题,即随着迭代次数增加,回复变得越来越长。

    作者引入了一个简单的长度控制机制。通过定义了一个质量层级参数,以控制基于分数的选择和长度考虑之间的权衡。特别地,得分位于顶层范围内的回复被认为具有相似质量。在选择被选回复时,优先选择该顶层范围内最短的回复。这种方法有助于抵消评判者倾向于更长回复的倾向,从而避免训练数据出现偏差。相反,对于被拒绝回复,选择得分在范围内的最长回复。将设置为0将有效禁用长度控制,恢复为纯基于分数的选择。

评判者偏好数据集创建

作者设计了一个元评审,来对比评判者的好坏。整个过程分为三大步骤,旨在精准挑选出高质量的评审对,并有效减少位置偏差等影响因素。

  1. 响应选择

    为了训练出更加敏锐的评审系统,专注于那些评审意见分歧最大的响应。通过计算每个响应在不同评审间评分的方差,筛选出评分方差最大的响应作为训练材料。

  2. 成对的元评审评估

    对于每个选定的响应,有最多N个相应的评审,记作。然后利用LLM作为元评审,通过详细分析两个评审的判断,模型会生成思维链推理并给出胜负判断。

    为消除位置偏差,变换评审顺序并引入位置加权评分机制,确保评估的公正性。此外,还引入了针对第一和第二位置的获胜加权评分。定义和分别为在第一和第二位置的总获胜次数,并计算权重为:

    图片

    判断()之间单场战斗的结果定义为:

    图片

    最终,这些评估结果汇总成一个战斗矩阵,反映评审间的相对实力。

    图片

  3. Elo评分和成对选择

    借鉴Elo评分系统,作者将战斗矩阵转化为每个评审的元奖励。通过解决以下最大似然估计问题确定每个评审的Elo评分 :

    图片

    这种方法允许在元评判者评估中考虑位置偏差的分数,提供更准确的奖励信号,提高评审质量。在创建偏好对时,选择Elo评分最高和最低的评审输出作为通过和拒绝的评审输出。

    在实践中,元评审可能偏好冗长的评审输出。为纠正这一偏差,作者增设了长度阈值过滤步骤,有效限制了过长输出的影响,实现了评审质量与简洁性的良好平衡。

实验

实验设置

本文使用经过指令微调的 Llama-3-8B-Instruct 作为种子模型。再对种子模型利用[1]提供的评估微调数据集进行监督微调得到初始评判者。

在Meta-Rewarding迭代中,同样以[1]提供的20000个提示作为种子集,每次迭代抽取5000个提示,总共进行四次迭代:

  • Iter 1 通过使用 DPO在SFT模型生成的执行和评审偏好数据对对上训练获得M1。

  • Iter 2 通过在M1生成的执行和评审偏好对上使用 DPO 训练 M1 来获得 M2。

  • Iter 3 通过仅在 M2 生成的执行偏好对上使用 DPO 训练 M2 来获得 M3。

  • Iter 4 通过仅在 M3 生成的执行偏好对上使用 DPO 训练 M3 来获得 M4。

评估与实验分析

由于Meta-Rewarding同时改善模型作为演员和评判者的表现,因此将测量两个方面。

执行者的指令遵循能力

作者采用了三个成熟的GPT4驱动自动评估基准从不同维度评估模型。AlpacaEval 2侧重于日常聊天场景,Arena-Hard则包含复杂与挑战性问题,MT-Bench评估多轮对话能力,覆盖8类问题。

  • Meta-Rewarding迭代显著提升胜率。如下图所示,在AlpacaEval基准上,胜率从22.9%跃升至39.4%,超越GPT-4,逼近Claude Opus,且模型仅8B参数,未用额外人类数据,成效显著。同时,该方法优于使用强大外部奖励模型的强基线SPPO。

    图片

  • 元评判者及长度控制机制对提升至关重要,在没有元评判者参与训练评判者的情况下,仅依赖自奖励基线与长度控制(LC)相结合,虽然能够带来一定程度的改进,但这种改进在训练的后期迭代中显得较为有限。如下表所示,随着训练迭代的进行,平均响应长度并未出现明显增长,这有力地证明了所采用的长度控制机制在控制输出长度方面的稳定性和有效性。

    图片

  • Meta-Rewarding几乎改进了所有指令类别,特别在知识密集型类别如科学、游戏、文学上表现突出(,但在旅行、数学等类别上改进较小。

    图片

  • Meta-Rewarding 改进了复杂和困难问题的回答。 在应对复杂问题上,通过Arena-Hard评估,Meta-Rewarding持续提分,较种子模型提升显著(+8.5%)。

    图片

  • Meta-Rewarding 尽管仅在单轮数据上训练,但并未牺牲多轮能力。 Meta-Rewarding在MT-Bench评估中仍保持了多轮对话能力,最后一轮迭代中首轮得分提升,第二轮得分牺牲微小(<0.1),而以往的方法通常在第二轮得分上牺牲超过 0.2,而第一轮得分没有改善。

图片

评判者的奖励建模能力

作者比较评判者的能力与人类评判和当前最强的判断模型 gpt-4-1106-preview 之间的相关性。还通过斯皮尔曼相关性分析,量化模型生成排名与Open Assistant数据集中的一致性。

模型经Meta-Rewarding训练后,判断能力显著提升。下表显示,与自奖励基线相比,在两种评估设置中,Meta-Rewarding与GPT-4判断的相关性均大幅增强,尤其是无平局一致性指标提升显著。自选对设置中,迭代2时改进高达+12.34%,而GPT-4选择对设置中也超过+6%。这证明了Meta-Rewarding在提升模型判断能力上的有效性,使其更接近GPT-4的评估水平。

图片

Meta-Rewarding 训练提高了与人类的判断相关性。 通过Open Assistant数据集验证,可以看到本文模型与人类排名的相关性显著增加。然而,随着训练深入,这一改进有所减缓,可能与响应分布变化有关。

图片

结语

本文利用元评判者分配元奖励,优化模型判断偏好,克服自奖励框架的训练限制。同时,引入长度控制技术,解决训练中的长度问题。即使没有额外的人类反馈,该方法也显著改善了 Llama-3-8B-Instruct,并超越了依赖于人类反馈的强基线 Self-Rewarding 和SPPO 。并且该模型的判断能力与人类及强大AI评判者(如GPT-4)高度相关。也许随着科技发展,无需人类反馈的模型超对齐将可能实现。

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

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

相关文章

springboot名著阅读网站

基于 springbootvue实现的名著阅读网站&#xff08;源码L文ppt&#xff09;4-035 4 系统设计 4.1 系统概述 名著阅读网站的设计与开发是指对该系统的各个功能模块进行详细设计&#xff0c;力求每个模块都能够满足用户的要求&#xff0c;系统开发完成后还需对系统进行单元…

如何搭建RGBD GS-ICP SLAM环境以及如何与自己编的pcl并存

0. 简介 最近深度学习SLAM又出来一个分支&#xff0c;3D gaussion splatting做slam的操作&#xff0c;之前我们给读者讲过如何使用C做3D高斯溅射。这里最近受到优刻得的使用邀请&#xff0c;正好解决了我在大模型和自动驾驶行业对GPU的使用需求。UCloud云计算旗下的Compshare的…

视频结构化从入门到精通——GPU主要硬件平台介绍

视频结构化主要硬件平台 1. 深度学习中“硬”和“软”的概念 在深度学习中&#xff0c;“硬”和“软”通常用于描述不同的处理方法或策略&#xff0c;尤其是在解码、编码、推理等任务中。它们反映了算法在处理信息时的确定性和灵活性。 软&#xff08;Soft&#xff09; 处理…

【看雪-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

电脑物理地址怎么修改方法

电脑物理地址怎么修改方法非常容易&#xff0c;需要用到一个小工具 首先需要下载一个修改软件《物理网卡mac修改器》&#xff0c;工具下载地址&#xff1a;https://download.csdn.net/download/baiseled/89633292 1.点击软件下拉框选中网卡序号 2.当前网卡mac物理地址就会显示…

Android Studio执行代码报错:Cause: unable to find valid certification path to requested target

今天执行一个老项目&#xff0c;代码没人动过&#xff0c;但是启动Android Studio后系统报错&#xff0c;报错信息为&#xff1a;Cause: unable to find valid certification path to requested target 下面是报错截图 网上找了好多解决方法&#xff0c;但是都不好用。 最后的…

windows安装php7.4

windows安装php7.4 1.通过官网下载所需的php版本 首先从PHP官网&#xff08;https://www.php.net/downloads.php&#xff09;或者Windows下的PHP官网&#xff08;http://windows.php.net/download/&#xff09;下载Windows版本的PHP安装包。下载后解压到一个路径下。 2.配…

【YOLOv5模型部署】——TensorRT推理引擎安装与使用基于Flask的项目部署

声明&#xff1a;笔记是做项目时根据B站博主视频学习时自己编写&#xff0c;请勿随意转载&#xff01; 温馨提示&#xff1a;对于我的电脑没有Nvidia的独显&#xff0c;只有Intel的集显&#xff0c;最后导出时无法识别Nvidia显卡设备&#xff01;&#xff01;就没成功&#xf…

访问数组索引时超出边界引发 ArrayIndexOutOfBoundsException

ArrayIndexOutOfBoundsException 是 Java 中非常常见的一种运行时异常。它是在访问数组时&#xff0c;如果访问的索引超出了数组的有效范围时抛出的异常。为了更好地理解这种异常的工作机制、产生原因以及如何处理&#xff0c;让我们详细分解这个问题&#xff0c;并从多个角度进…

STM32基础篇:RTC × Unix时间戳 × BKP

Unix时间戳 最早是在Unix系统使用的&#xff0c;之后很多由Unix演变而来的系统也都继承了Unix时间戳的规定。目前&#xff0c;Linux、Windows、安卓这些系统&#xff0c;其底层的计时系统都是使用Unix时间戳。 Uinx时间戳&#xff08;Unix Timestamp&#xff09;定义为从UTC/…

实验室ICPR 2024论文分享┆DS MYOLO:一种基于状态空间模型的驾驶场景可靠目标检测器

论文分享简介 本推文详细介绍了一篇实验室的最新论文成果《DS MYOLO: A Reliable Object Detector Based on SSMs for Driving Scenarios》&#xff0c;该论文已被第27届国际模式识别大会&#xff08;ICPR&#xff09;接收&#xff0c;论文的第一作者为李杨。论文提出了一种基…

Elasticsearch Mapping 详解

1 概述 映射的基本概念 Mapping 也称之为映射&#xff0c;定义了 ES 的索引结构、字段类型、分词器等属性&#xff0c;是索引必不可少的组成部分。 ES 中的 mapping 有点类似与DB中“表结构”的概念&#xff0c;在 MySQL 中&#xff0c;表结构里包含了字段名称&#xff0c;字…

CRIO与Windows下LabVIEW开发对比

LabVIEW在CRIO和Windows平台上开发时&#xff0c;尽管同属于一个编程环境&#xff0c;但在硬件架构、实时性能、模块化设计等方面存在显著差异。CRIO系统通常应用于工业自动化和嵌入式控制&#xff0c;具有实时操作系统支持和强大的I/O扩展能力&#xff1b;而Windows系统则更适…

《机器学习》文本数据分析之关键词提取、TF-IDF、项目实现 <上>

目录 一、如何进行关键词提取 1、关键词提取步骤 1&#xff09;数据收集 2&#xff09;数据准备 3&#xff09;模型建立 4&#xff09;模型结果统计 5&#xff09;TF-IDF分析 2、什么是语料库 3、如何进行中文分词 1&#xff09;导包 2&#xff09;导入分词库 3&#xff09…

今年读过最绝的大模型神书死磕这本大模型神书!看完直接脱胎换骨!!

书名&#x1f4d6;&#xff1a;《大语言模型&#xff1a;基础与前沿》 该书深入阐述了大语言模型&#xff08;Large Language Model, LLM&#xff09;的基本概念和算法、研究前沿以及应用&#xff0c;内容全面且系统性强&#xff0c;适合&#x1f468;&#x1f3fb;‍&#x1…

Prometheus + Grafana + nVisual 实现运维监控全面可视化

Prometheus主要实现采集、存储、查询设备数据指标、告警等功能&#xff1b;Grafana通过Prometheus的API以仪表板的形展示数据&#xff0c;同时在线提供了大量监测数据展示模版。然而&#xff0c;实际运维中我们不仅需要实时监测数据&#xff0c;还需要了解设备的物理位置、拓扑…

3.js - modelPosition.z = sin((modelPosition.x+uTime)*10.0)*0.05;

哈 1、完整的动态波纹效果吧 main.js import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls// 顶点着色器 import basicVertexShader from ./shader/11-01/raw/vertex.glsl?raw // 片元着色器 import basicFragmentShad…

使用docker安装jenkins,然后使用jenkins本地发版和远程发版

使用docker安装jenkins&#xff0c;然后使用jenkins本地发版和远程发版 1、安装docker 1.安装必要的一些系统工具 sudo yum install docker-ce 2.添加软件源信息 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 3.更新…

内推|京东|后端开发|运维|算法...|北京 更多岗位扫内推码了解,直接投递,跟踪进度

热招岗位 更多岗位欢迎扫描末尾二维码&#xff0c;小程序直接提交简历等面试。实时帮你查询面试进程。 安全运营中心研发工程师 岗位要求 1、本科及以上学历&#xff0c;3年以上的安全相关工作经验&#xff1b; 2、熟悉c/c、go编程语言之一、熟悉linux网络编程和系统编程 3、…

102.二叉树的层次遍历的算法实现及详解

二叉树的层次遍历 题目 102. 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root = [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2: 输入:root = [1] 输出:[[1]] 示例 3…