LLM对齐方案再升级

Microsoft:WizardLM

  • WizardLM: Empowering Large Language Models to Follow Complex Instructions

  • GitHub - nlpxucan/WizardLM: LLMs build upon Evol Insturct: WizardLM, WizardCoder, WizardMath

  • 要点:使用prompt对种子指令样本进行多样化,复杂化改写可以有效提升模型效果

wizardLM提出了一套指令改写的方案Evol-Instruct对原始指令样本进行改写,改写后的指令用于微调模型显著超过了之前Vicuna使用ShareGPT微调LLAMA的效果,甚至在复杂指令上号称超过ChatGPT。

指令改写是使用大模型直接进行的,分成深度改写和广度改写两个类型,其中深度改写有5种不同的改写指令,广度改写有1种改写指令。Evol-Instruct对初始的指令集,也就是52K的Alpaca指令,总共进行了4轮改写,每轮改写会等权重随机选择一种深度、广度改写指令,经过过滤后总共得到了250K的改写指令用于模型微调。下图是一个指令改写的示例

img

下面我们具体看下改写指令是如何设计的

深度改写

深度改写把指令改写的更加复杂,包括加入限制条件,指令复杂化,指令具象化,增加推理步骤,输入复杂化等5种类型的指令。以下是加入限制条件的prompt指令,以下指令控制每次改写增加的字数,以及改写的程度,每次只增加部分难度,这样通过多轮的改写,就可以得到不同难度,多样性更高的指令集。

img

其他的四类prompt的差异主要在高亮部分,分别为

  • 指令复杂化:If #Given Prompt# contains inquiries about certain issues, the depth and breadth of the inquiry can be increased

  • 指令具象化:Please replace general concepts with more specific concepts.

  • 增加推理步骤:If #Given Prompt# can be solved with just a few simple thinking processes, you can rewrite it to explicitly request multiple-step reasoning.

  • 输入复杂化:You must add [XML data] format text as input data in [Rewritten Prompt]

广度改写

广度改写的目的就是为了扩充指令覆盖的范围,包括更多的话题,技能等等

img

改写基本是论文最大的亮点,除此之外的细节就不多细说啦。通过4轮改写,加上简单的样本过滤后得到的250K指令样本用于模型微调,效果上在收集的Evol-Instruct测试集,Vicuna的测试集,以及更高难度的测试集上WizardLM的效果都略超过vicuna还有alapca。但略有些奇怪的是vicuna似乎表现还略差于alpaca?Anyway, LLM时代评估指标的置信度都有限,方法学到手就好,模型表现莫要太当真.......

img

Meta:BackTranslation

  • Self-Alignment with Instruction Backtranslation

  • ClueWeb数据集:The ClueWeb12 Dataset: Dataset Details

  • Open Assistant数据集:https://huggingface.co/datasets/OpenAssistant/oasst1

  • 要点:结合质量过滤和半监督的指令样本挖掘方案扩充种子样本,多次迭代后可以提高模型效果

对比以上WizardLM从指令侧入手,通过改写指令来生成更多样,复杂的指令样本,来扩充种子样本集。Back Translation则是用了半监督的思路,从输出侧入手,通过从网络上爬取优质的人工编辑的内容作为输出,并为这些输出配上合适的指令来扩展已有的指令样本集。

img

因为是先有输出再有输入,所以论文使用了回译来命名此方案,核心两个步骤如下

1. Self-Augmentation

指令生成部分,论文先使用Open Assistant里面人工标注的3200指令样本数据作为种子数据来训练LLama模型,得到初版的对齐模型。SFT训练和常规略有不同,采用了反向对齐,也就是给定Output生成Instruction(P(X|Y))的条件生成任务。

然后论文针对爬取的网页数据,经过清洗后作为指令样本的输出,然后使用以上模型直接推理得到指令本身,对应以上P(X|Y)的条件生成任务。

这一步其实感觉也可以使用类似APE的prompt逆向工程方案来实现,让模型基于输出猜测最合适的指令是什么。这样SFT的模型可能也能完成这个步骤?

2. Iterative Self-Curation

第二步考虑以上生成的指令样本对可能存在很多低质量样本,因此需要进行质量过滤。质量过滤的模型同样是基于3200个种子指令样本,进行常规SFT得到初始模型。然后基于Prompt模板对以上得到的指令样本进行1-5分的绝对打分。主要评估回答是否明确有用无争议,能合理回答指令中的问题,并且回答的主语模型而非其他第三人称,Prompt如下,

img

同时论文使用了多轮迭代的训练,以上第一轮打分过滤出的高分样本,会和种子样本混合,重头进行SFT。然后微调后的模型会再用来对样本进行打分过滤,然后再混合重新SFT。

在SFT的样本构建中,论文使用了不同的Prompt来区分样本是来自人工标注的种子集,还是来自机器生成的扩展集,前者的prompt=“Answer in the style of an AI Assistant,后者的prompt=Answer with knowledge from web search,从而降低样本间不同回答format带来的模型学习混淆。

效果

整体效果评估,论文使用了混合测试集包括Vicuna,self-instruct, opena assistant,koala,HH-RLHF, LIMA等总共1130个指令数据。使用人工进行两两偏好对比,以下使用回译训练的HumpBack优于LIMA等质量过滤微调模型,以及Davinci,Claude等闭源模型。

img

同时论文进行了消融实验,对训练数据的数量和质量的影响做了进一步的测试,对比了未使用Self-Curation过滤的数据集,4轮过滤的数据集和5轮过滤的数据集,不同的样本量带来的效果差异,主要结论有两个

  1. 高质量样本集提升数量会带来效果提升:这里的结论和上一章LIMA的结论有矛盾顿,LIMA中在过滤后的Stack Exchange数据集上增加采样比例并不会提升效果。猜测这里可能的差异有:

  • Stack Exchange的指令丰富程度可能低于回译指令,和AlpaGasus中指令丰富程度有限的话增加样本量并不会带来效果提升的结论一致

  • Stack Exchange本身的指令质量低于回译,导致数量增加带来的效果增幅不明显。Anyway LLM时代一切结论都不可尽信,只是拓宽下思路,实际情况下处理问题还是要具体问题具体分析。

  1. 质量的影响大于数量: 在未过滤的数据集上提升量级不会显著带来效果提升,简单理解就是1个低质样本需要很多的高质量样本来弥补,当低质量样本占比太高的时候,无论如何提升样本量都不会提升效果。

img

IBM: Self Alignment

  • Principle-Driven Self-Alignment of Language Models from Scratch with Minimal Human Supervision

  • GitHub - IBM/Dromedary: Dromedary: towards helpful, ethical and reliable LLMs.

  • 要点:使用prompt规则让大模型Self-Instruct生成的推理样本更加符合人类偏好,部分代替RLHF阶段大量的人工标注

同样是改写方案,Self-Align在Self-Instruct的基础上上,通过引入对抗指令样本和3H相关的指令prompt,在SFT阶段就让模型进行偏好对齐。让模型先基于外化的偏好原则生成符合3H原则的回答,再通过SFT对齐把偏好内化到模型参数中,因为指令样本是Base模型自己生成的所以叫Self-Alignment。有些类似自监督,只不过样本特征被人工抽象成了人类偏好规则。

img

指令样本生成分成以下4个步骤

Self-Instruct生成指令

不熟悉Self-Instruct的同学,请先看解密prompt系列5. APE+SELF=自动化指令集构建代码实现,原始论文基于175个种子指令通过多轮的Bootstrap让大模型生成新的指令。

IBM论文在此基础上人工补充了20个不同主题的对抗种子指令。对抗样本我们在解密Prompt7. 偏好对齐RLHF章节针对Anthropic如何设计对抗样本进行了很详细的介绍,这里不再展开。IBM设计对抗样本的原则是模型在没有获取外部信息下无法回答,或者会回答错误的指令,例如询问天气,知识问答类的指令。通过补充这类种子指令,让模型在bootstrap过程中生成更多的对抗指令,从而通过指令微调的对齐注入3H(helpful+harmless+honest)偏好。

Self-Alignment生成回答

指令生成完,下一步就是需要让模型生成符合3H偏好的回答。论文的实现方案是通过规则指令+fewshot样例来实现。其中规则指令总共包含以下16条原则:1 (ethical), 2 (informative), 3 (helpful), 4 (question assessment), 5 (reasoning), 6 (multi-aspect), 7 (candor), 8 (knowledge recitation), 9 (static),10 (clarification), 11 (numerical sensitivity), 12 (dated knowledge), 13 (step-by-step), 14 (balanced & informative perspectives), 15 (creative), 16 (operationa)。

以下是附录中具体规则指令的前5条

img

而In-context的few-shot样本同样是固定的,few-shot的样本是为了指导模型如何遵守以上16条规则来进行指令回答,并加入了类似chain-of-thought的Internal Thoughts步骤,来强化模型在不同的上文中遵从不同的规则

img

微调

以上两步机器样本构造后,经过过滤总共得到了260K指令样本,用于模型微调。注意微调阶段不会使用以上的16条规则指令和few-shot样本,而是会直接使用回答部分。因为需要模型直接把3H原则指令通过微调内化到模型参数中,而不是基于条件上文进行符合偏好的回答。

微调的指令如下

img

微调后作者发现,以上构造的样本在微调模型后存在两个问题

  • 部分回答过于简短:个人感觉这和Prompt+few-shot的长度过长有关。因为条件上文过长,限制了下文的生成范围,导致回答过短。通俗点就是命题作文你的要求太多自然就没啥好写的了。

  • 部分回答未直接回答用户指令,而是去复述wikipedia上的内容:个人感觉这同样是以上的规则指令模型未能完全理解,影响了回答质量。

这里其实有个疑问,就是在大量指令和In-Context条件上文下,构造出的模型回答是否本身就是有偏的???而去掉条件上文直接去拟合回答后得到的模型是否也是bias的?这个问题要是有想法欢迎评论区留言~

为了解决以上问题,论文使用第一步对齐微调后,已经内化3H原则的模型,使用以下的Prompt指令引导模型重新对以上的260K指令进行回答生成,引导模型给出更丰富,跟全面的回答。然后再使用生成的样本进一步微调模型。

img

效果上在TruthfulQA的事实性评测,以及Big-Bench的3H评测上,微调后的模型相较LLama都有显著的提升。

重新回来聊Agent,前四章的LLM Agent,不论是和数据库和模型还是和搜索引擎交互,更多还是大模型和人之间的交互。这一章我们来唠唠只有大模型智能体的世界!分别介绍斯坦福小镇和Chatdev两篇论文。它们的共同特点是使用多个大模型智能体协同完成任务。

多智能相比单一智能体可能有以下的应用场景

  • 协同任务完成/创意生成:通过多智能体间的沟通,反思,校验,完成复杂任务,激发创意的小火花

  • 模拟世界:多智能体模拟社会环境,现实应用是游戏NPC,脑洞再大一点是不是可以用于社会学研究,因果推断,平行世界模拟??

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue无法获取dom

处理过程 watch监听值变化 index.js:33 [Vue warn]: Error in callback for watcher "$store.state.modelsStorageUrl": "TypeError: Cannot set properties of undefined (setting modelScene)"watch: {"$store.state.modelsStorageUrl":{ha…

网页爬虫在数据分析中的作用,代理IP知识科普

在当今信息爆炸的时代,数据分析成为洞察信息和制定决策的不可或缺的工具。而网页爬虫,作为数据收集的得力助手,在数据分析中扮演着举足轻重的角色。今天,我们将一同探讨网页爬虫在数据分析中的作用。 1. 数据收集的先锋 网页爬虫…

Java爬虫之Jsoup

1.Jsoup相关概念 Jsoup很多概念和js类似,可参照对比理解 Document :文档对象。每份HTML页面都是一个文档对象,Document 是 jsoup 体系中最顶层的结构。 Element:元素对象。一个 Document 中可以着包含着多个 Element 对象&#…

微信公众号(小程序)验证URL和事件推送

文章的内容适用小程序和公众号 微信官方示例代码demo下载地址:微信官方demo代码 必须下载,后面要用到 把微信官方示例代码也就是下图中除了 WXBizMsgCryptTest 文件外的所有文件复制到项目中 下面是全部代码,有问题请留言 代码中只提到了…

linux防护与集群——系统安全及应用

一、账号安全控制: 用户账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号才能进入计算机。在Linux系统中,提供了多种机制来确保用户账号的正当、安全使用 1.1 基本安全措施: 在Linux…

业务项目中Echarts图表组件的封装实践方案

背景:如果我们的项目是一个可视化类/营销看板类/大屏展示类业务项目,不可避免的会使用到各种图表展示。那在一个项目中如何封装一个图表组件既能够快速复用、UI统一,又可以灵活扩充Echarts的各种复杂配置项配置就变得极为重要。 封装目标 符…

vmware workstation的三种网络模式通俗理解

一、前言 workstations想必很多童鞋都在用,经常会用来在本机创建不同的虚拟机来做各种测试,那么对于它支持的网络模式,在不同的测试场景下应该用哪种网络模式,你需要做下了解,以便可以愉快的继续测(搬&…

1.5C语言 双曲正弦函数(*) 优化麦克劳林公式

一.传统算法 #include<stdio.h> #include<math.h> int jc(int x); int main(){double x,eps,y0.0;scanf("%lf%lf",&x,&eps);int de1,i1;double item1.0;while(fabs(item)>eps){itempow(x,i)/jc(de);i2;yitem;}printf("%.6f\n",y); …

H5 - - - - - 获取图片exif相关信息

1. EXIF是什么 【可交换图像文件格式】&#xff1a;&#xff08;英语&#xff1a;Exchangeable image file format&#xff0c;官方简称Exif&#xff09;,是专门为数码相机的照片设定的&#xff0c;可以记录数码照片的属性信息和拍摄数据。 2. EXIF 相关标识 { ApertureValu…

科研上新 | 第6期:优化LLM数学推理;深度学习建模基因表达调控;基于深度学习的近实时海洋碳汇估算

编者按&#xff1a;欢迎阅读“科研上新”栏目&#xff01;“科研上新”汇聚了微软亚洲研究院最新的创新成果与科研动态。在这里&#xff0c;你可以快速浏览研究院的亮点资讯&#xff0c;保持对前沿领域的敏锐嗅觉&#xff0c;同时也能找到先进实用的开源工具。 本期内容速览 …

redisson作为分布式锁的底层实现

1. redisson如何实现尝试获取锁的逻辑 如何实现在一段的时间内不断的尝试获取锁 其实就是搞了个while循环&#xff0c;不断的去尝试获取锁资源。但是因为latch的存在会在给定的时间内处于休眠状态。这个事件&#xff0c;监听的是解锁动作&#xff0c;如果解锁动作发生。会调用…

webrtc报文记录

tcp.port 10443 || tcp.port 6080 || udp.port 8000 https://download.csdn.net/download/dualvencsdn/88706745

flutter学习-day23-使用extended_image处理图片的加载和操作

文章目录 1. 介绍2. 属性介绍3. 使用 1. 介绍 在 Flutter 的开发过程中&#xff0c;经常会遇到图片的显示和加载处理&#xff0c;通常显示一个图片&#xff0c;都有很多细节需要处理&#xff0c;比如图片的加载、缓存、错误处理、图片的压缩、图片的格式转换等&#xff0c;如果…

面试算法97:子序列的数目

题目 输入字符串S和T&#xff0c;请计算字符串S中有多少个子序列等于字符串T。例如&#xff0c;在字符串"appplep"中&#xff0c;有3个子序列等于字符串"apple" 分析 为了解决这个问题&#xff0c;每步从字符串S中取出一个字符判断它是否和字符串T中的…

《MySQL系列-InnoDB引擎04》MySQL表相关介绍

文章目录 第四章 表1 索引组织表2 InnoDB逻辑存储结构2.1 表空间2.2 段2.3 区2.4 页2.5 行2.6 拓展&#xff1a;MySQL的varchar(n)能存储几个字符&#xff1f;占多少字节&#xff1f; 3 InnoDB行记录格式4 文件格式5 约束5.1 数据完整性5.2 约束的创建和查找5.3 约束和索引的区…

决策树--分类决策树

1、介绍 ① 定义 分类决策树通过树形结构来模拟决策过程&#xff0c;决策树由结点和有向边组成。结点有两种类型&#xff1a;内部结 点和叶结点。内部结点表示一个特征或属性&#xff0c;叶子节点表示一个类。 ② 生成过程 用决策树分类&#xff0c;从根结点开始&#xff…

UI5与后端的文件交互(三)

文章目录 前言一、开发Action1. 修改Table2. BDEF中新增Action3. 新建结构&#xff0c;用于接收uuid以及附件数据4. 实现Method逻辑 二、UI5项目修改1. 添加表格行2. 事件处理函数3. 点击文件名时的事件 三、测试 前言 这系列文章详细记录在Fiori应用中如何在前端和后端之间使…

GB∕T 33171-2016 城市交通运行状况评价规范

免登陆免积分下载地址 标准号&#xff1a;GB/T 33171-2016 中文标准名称&#xff1a;城市交通运行状况评价规范 英文标准名称&#xff1a;Specification for urban traffic performance evaluation 中国标准分类号&#xff08;CCS&#xff09;R85 国际标准分类号&#xff08;…

python的课后练习总结3(字典)

1&#xff0c;创建空字典 空字典的创建 名字 { } 1&#xff0c;字典的查 变量名 {星期一:上课,星期二:休息,星期三:吃晚饭} print(变量名[星期一]) &#xff08;1&#xff09;get( ) 语法&#xff1a; 字典序列名.get(键&#xff0c;随便写) 如果键存在&#xff0c;返回值…

CTFHub | 存储型

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习&#xff0c;实训平台。提供优质的赛事及学习服务&#xff0c;拥有完善的题目环境及配套 writeup &#xff0c;降低 CTF 学习入门门槛&#xff0c;快速帮助选手成长&#xff0c;跟随主流比赛潮流。 0x01 题目描述…