【论文通读】RuleR: Improving LLM Controllability by Rule-based Data Recycling

RuleR: Improving LLM Controllability by Rule-based Data Recycling

  • 前言
  • Abstract
  • Motivation
  • Solution
  • Method
  • Experiments
  • Conclusion

前言

一篇关于提升LLMs输出可控性的短文,对SFT数据以规则的方式进行增强,从而提升SFT数据的质量,进而间接帮助提升LLM的可控性。这种基于规则的方式确实可以去除人力和额外的LLM资源的开销,但是在某种程度上可能不能真正泛化到具体的数据上。
Paperhttps://arxiv.org/abs/2406.15938
Codehttps://github.com/MingLiiii/RuleR

Abstract

LLMs缺乏稳定可控的输出,这对产品表现和用户体验不利。然而现有的用于提升LLMs可控性的SFT数据集经常依赖人类经验或者大模型,需要付出额外的成本。相比于从头构建新数据集,RuleR对现有的数据集进行重新利用,对其输出注入基于规则的编辑,并将基于规则的指令append到原始的指令中。实验表明RuleR可以高效提升LLM的可控性,同时不降低模型通用性能。

Motivation

当前如何最大化利用LLMs的能力是一个重要问题,其关键在于让LLMs的输出遵循用户的要求。但是如果对输出没有约束,生成的结果很难有实际效用。
image.png
然而现有的方法通过构建SFT数据集,但是这种方法只能关注到通用的指令,忽略了用户特定的约束。一个可行的解决方法是通过模型或者人类改写指令,但成本高。
能不能通过重新利用现有SFT数据集,在不采用人力和模型的情况下,为其赋予不同类型的约束,从而进行可控微调?

Solution

本文提出Rule-based Data Recycling (RuleR),可以自动化编辑现有的SFT数据,用于提升LLM的可控性。其核心是利用各种预定义的约束规则来代替人力和模型。预定义的规则cover广泛的约束,从high-level到lower-level。对于每个规则,包括:

  1. 一组约束模板。
  2. 交替编辑指令和Response以以使他们align。

上图的下面部分是一个例子。

Method

在没有人类或者LLM引导的情况下,直接添加任意约束到原始的指令中是不合适的。为此,本文提出只添加和原始数据吻合的约束。具体来说,作者提出基于规则的RuleR方法来增强LLM的可控性,其中用于重新制定的规则和约束由原始数据来确定,确保指令和响应之间的一致性。下表是完整的规则列表:
image.png
在方法实施时,作者将每个预定义的规则实例化为一个元组:
( S k , f k , g k ) (\mathbf{S} _k,f_k,g_k) (Sk,fk,gk)
其中 S k \mathbf{S} _k Sk表示第k条规则对应的指令模板集, f k f _k fk g k g_k gk分别表示重构指令的函数和可选修改response的函数。对于样本 ( x i , y i ) (x_i,y_i) (xi,yi),增强指令会由如下公式获取:
x i , a u g = f k ( x i , y i , S k ) x_{i, a u g}=f_{k}\left(x_{i}, y_{i}, \mathbf{S}_{k}\right) xi,aug=fk(xi,yi,Sk)
具体来说,随机抽取一个规则指令模板,并填充相应的特征,作为对原始指令的附加约束。然后,规则指令与原始指令连接成为增强指令。对于标签y,也可以类似的选择性修改:
y i , a u g = g k ( x i , y i , S k ) y_{i, a u g}=g_{k}\left(x_{i}, y_{i}, \mathbf{S}_{k}\right) yi,aug=gk(xi,yi,Sk)
对于某些规则,无需对response进行修改。

Experiments

作者在一系列开源模型和开源SFT数据集上进行实验,实验结果如下:
image.png
结果显著,一些数据集上提点能够达到10%。
下表是消融实验结果。Single Temp意味一个规则使用一个模板,Diverse Temp意味一个规则对应多个模板,Max Rule 表示每个原始数据样本上最多可以采样和利用x个不同规则的设置。结果显示在一个样本中使用太多的规则可能会损害模型的性能。Aug Rate指的是将增强应用于每个样本的概率,可以看到,随着Aug Rate的增加,LLM可控性越好,但是对一般指令的跟踪能力有所下降。IF Eval的变化大,说明方法主要还是和可控性有关。
image.png

Conclusion

本文提出一个新颖的方法,即基于规则的数据回收方法RuleR,它利用从现有数据派生的约束来增强数据集,并将这些约束纳入训练过程,从而提高LLM的多约束可控性。这种方法为开发 SFT 增强方法以提高 LLM 的可控性提供了一个有前途的方向,为 LLM 更有效的进步铺平了道路。
这篇工作简单易懂,且效果显著,但是我也有一些额外的想法:

  1. 方法中提到“we propose to only incorporate constraints that are compatible with the original data sample.”但是注入规则时却是随机抽取一个规则指令模板,我很难将随机采样和“compatible with the original data sample”理解到一起。
  2. 基于规则的增强过程在文章中的描述过于泛泛,具体来说, f k f _k fk g k g_k gk这两个函数具体是怎么执行的没有详细说明,导致不是很好理解,也许对于这两个函数举出特定的一两个例子会更好。
  3. 基于规则的方法真的可以泛化到每一个特定的样本上吗,我不是很能确定。
  4. 图一中作者方法部分列举的例子让我感到困惑,Response和New Response内容一样,虽然文中提到remains unchanged,但是这个例子显然不能说明Modification的作用。

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

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

相关文章

uniapp如何隐藏默认的页面头部导航栏,uniapp开发小程序如何隐藏默认的页面头部导航栏

uniapp如何隐藏默认的页面头部导航栏 隐藏后 在pages.json文件中插入 在uni-app中,设置navigationStyle为custom来自定义导航栏,可以隐藏默认的头部了。 {"path": "pages/index/index","name": "index",&qu…

IDEA 开发工具

IDEA 开发工具 IDEA软件激活新建项目新建project 运行调试 IDEA软件激活 访问激活码网进入带*的域名下载并解压左上角的zip包先执行sh uninstall.sh,再执行sh install.sh在带*的网页中复制并使用激活码code 新建项目 新建project file》New〉Project》New Proje…

06.C2W1.Auto-correct

往期文章请点这里 目录 OverviewAutocorrectWhat is autocorrect?How it works Building the modelMinimum edit distanceMinimum edit distance algorithmMinimum edit distance Part 2Minimum edit distance Part 3 往期文章请点 这里 Overview 本周学习目标:…

嵌入式鸿蒙系统openharmony编译方法详解

大家好,时光如梭,今天主要给大家分享一下,鸿蒙系统的使用方法,以及源码该如何编译,其中要注意的细节有哪些? 第一:OpenHarmony系统简介 OpenHarmony 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目, 目标是面向全场景、全连接、全智能时代,基于…

数据结构之“队列”(全方位认识)

🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:数据结构 前言 上期博客介绍了” 栈 “这个数据结构,他具有先进后出的特点。本期介绍“ 队列 ”这个数据结构,他具有先进先出的特点。 目录…

秋招提前批面试经验分享(上)

⭐️感谢点开文章👋,欢迎来到我的微信公众号!我是恒心😊 一位热爱技术分享的博主。如果觉得本文能帮到您,劳烦点个赞、在看支持一下哈👍! ⭐️我叫恒心,一名喜欢书写博客的研究生在读…

【Java EE】Spring Boot配置文件

Spring Boot配置文件 一、配置文件的分类 一共有三类,分别是 properties, yml, yaml,其中properties相当于是老版,yml是yaml的缩写,这两个相当于新版。 二、配置文件的语法 1. properties 语法的构成是以"." 为分隔…

PingCAP 成为全球数据库管理系统市场增速最快的厂商

近日,Gartner 发布的《Market Share Analysis: Database Management Systems, Worldwide, 2023》(2024 年 6 月)报告显示:“2023 年全球数据库管理系统(DBMS)市场的增长率为 13.4%,略低于去年的…

【Spring AOP 源码解析前篇】什么是 AOP | 通知类型 | 切点表达式| AOP 如何使用

前言(关于源码航行) 在准备面试和学习的过程中,我阅读了还算多的源码,比如 JUC、Spring、MyBatis,收获了很多代码的设计思想,也对平时调用的 API 有了更深入的理解;但过多散乱的笔记给我的整理…

【Linux系统编程】文件系统

介绍: 文件系统是操作系统中负责管理和存储文件信息的软件结构,它组织和管理磁盘上的文件和目录,并定义了文件的存储结构。 Linux文件系统采用树状结构,只有一个根目录(用“/”表示),其中含有下…

【Linux】:程序地址空间

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux程序地址空间的相关知识点,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从…

GD32实战篇-双向数控BUCK-BOOST-BUCK降压理论基础

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布: https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

【驱动篇】龙芯LS2K0300之ADC驱动

实验目的 由于LS2K0300久久派开发板4.19内核还没有现成可用的ADC驱动,但是龙芯官方的5.10内核已经提供了ADC驱动,想要在4.19内核使用ADC就要参考5.10内核移植驱动,本次实验主要是关于ADC驱动的移植和使用 驱动移植 主要的驱动代码主要有3个…

【面向就业的Linux基础】从入门到熟练,探索Linux的秘密(十二)-管道、环境变量、常用命令

大致介绍了一下管道、环境变量、一些常用的基本命令,可以当作学习笔记收藏学习一下!!! 文章目录 前言 一、管道 二、环境变量 1.概念 2.查看 3.修改 4.常用环境变量 三、系统状况 总结 前言 大致介绍了一下管道、环境变量、一些常…

【数据结构与算法】快速排序霍尔版

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《数据结构与算法》 期待您的关注 ​

#数据结构 笔记一

数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。数据结构是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算&#xff0…

STM32实现硬件IIC通信(HAL库)

文章目录 一. 前言二. 关于IIC通信三. IIC通信过程四. STM32实现硬件IIC通信五. 关于硬件IIC的Bug 一. 前言 最近正在DIY一款智能电池,需要使用STM32F030F4P6和TI的电池管理芯片BQ40Z50进行SMBUS通信。SMBUS本质上就是IIC通信,项目用到STM32CubeMXHAL库…

华为机试HJ51输出单向链表中倒数第k个结点

华为机试HJ51输出单向链表中倒数第k个结点 题目: 想法: 因为要用链表,且要找到倒数第k个结点,针对输入序列倒叙进行构建链表并找到对应的元素输出。注意因为有多个输入,要能接受多次调用 class Node(object):def __…

OSS存储桶漏洞总结

简介 OSS,对象存储服务,对象存储可以简单理解为用来存储图片、音频、视频等非结构化数据的数据池。相对于主机服务器,具有读写速度快,利于分享的特点。 OSS工作原理: 数据以对象(Object)的形式…

mac|Mysql WorkBench 或终端 导入 .sql文件

选择Open SQL Script导入文件 在第一行加入use 你的schema名字,相当于选择了这个schema 点击运行即可将sql文件导入database 看到下面成功了即可 这时候可以看看左侧的目标database中有没有成功导入table,如果没有看到的话,可以点一下右上角的…