Meta:BackTranslation
- Self-Alignment with Instruction Backtranslation
- ClueWeb数据集:https://lemurproject.org/clueweb12/specs.php
- Open Assistant数据集:https://huggingface.co/datasets/OpenAssistant/oasst1
- 要点:结合质量过滤和半监督的指令样本挖掘方案扩充种子样本,多次迭代后可以提高模型效果
对比以上WizardLM从指令侧入手,通过改写指令来生成更多样,复杂的指令样本,来扩充种子样本集。Back Translation则是用了半监督的思路,从输出侧入手,通过从网络上爬取优质的人工编辑的内容作为输出,并为这些输出配上合适的指令来扩展已有的指令样本集。
因为是先有输出再有输入,所以论文使用了回译来命名此方案,核心两个步骤如下
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如下,
同时论文使用了多轮迭代的训练,以上第一轮打分过滤出的高分样本,会和种子样本混合,重头进行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等闭源模型。
同时论文进行了消融实验,对训练数据的数量和质量的影响做了进一步的测试,对比了未使用Self-Curation过滤的数据集,4轮过滤的数据集和5轮过滤的数据集,不同的样本量带来的效果差异,主要结论有两个
- 高质量样本集提升数量会带来效果提升:这里的结论和上一章LIMA的结论有矛盾顿,LIMA中在过滤后的Stack Exchange数据集上增加采样比例并不会提升效果。猜测这里可能的差异有:
- Stack Exchange的指令丰富程度可能低于回译指令,和AlpaGasus中指令丰富程度有限的话增加样本量并不会带来效果提升的结论一致
- Stack Exchange本身的指令质量低于回译,导致数量增加带来的效果增幅不明显。Anyway LLM时代一切结论都不可尽信,只是拓宽下思路,实际情况下处理问题还是要具体问题具体分析。
- 质量的影响大于数量: 在未过滤的数据集上提升量级不会显著带来效果提升,简单理解就是1个低质样本需要很多的高质量样本来弥补,当低质量样本占比太高的时候,无论如何提升样本量都不会提升效果。
IBM: Self Alignment
- Principle-Driven Self-Alignment of Language Models from Scratch with Minimal Human Supervision
- https://mitibmdemos.draco.res.ibm.com/dromedary
- 要点:使用prompt规则让大模型Self-Instruct生成的推理样本更加符合人类偏好,部分代替RLHF阶段大量的人工标注
同样是改写方案,Self-Align在Self-Instruct的基础上上,通过引入对抗指令样本和3H相关的指令prompt,在SFT阶段就让模型进行偏好对齐。让模型先基于外化的偏好原则生成符合3H原则的回答,再通过SFT对齐把偏好内化到模型参数中,因为指令样本是Base模型自己生成的所以叫Self-Alignment。有些类似自监督,只不过样本特征被人工抽象成了人类偏好规则。
指令样本生成分成以下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条
而In-context的few-shot样本同样是固定的,few-shot的样本是为了指导模型如何遵守以上16条规则来进行指令回答,并加入了类似chain-of-thought的Internal Thoughts步骤,来强化模型在不同的上文中遵从不同的规则
微调
以上两步机器样本构造后,经过过滤总共得到了260K指令样本,用于模型微调。注意微调阶段不会使用以上的16条规则指令和few-shot样本,而是会直接使用回答部分。因为需要模型直接把3H原则指令通过微调内化到模型参数中,而不是基于条件上文进行符合偏好的回答。
微调的指令如下
微调后作者发现,以上构造的样本在微调模型后存在两个问题
- 部分回答过于简短:个人感觉这和Prompt+few-shot的长度过长有关。因为条件上文过长,限制了下文的生成范围,导致回答过短。通俗点就是命题作文你的要求太多自然就没啥好写的了。
- 部分回答未直接回答用户指令,而是去复述wikipedia上的内容:个人感觉这同样是以上的规则指令模型未能完全理解,影响了回答质量。
这里其实有个疑问,就是在大量指令和In-Context条件上文下,构造出的模型回答是否本身就是有偏的???而去掉条件上文直接去拟合回答后得到的模型是否也是bias的?这个问题要是有想法欢迎评论区留言~
为了解决以上问题,论文使用第一步对齐微调后,已经内化3H原则的模型,使用以下的Prompt指令引导模型重新对以上的260K指令进行回答生成,引导模型给出更丰富,跟全面的回答。然后再使用生成的样本进一步微调模型。
效果上在TruthfulQA的事实性评测,以及Big-Bench的3H评测上,微调后的模型相较LLama都有显著的提升。
重新回来聊Agent,前四章的LLM Agent,不论是和数据库和模型还是和搜索引擎交互,更多还是大模型和人之间的交互。这一章我们来唠唠只有大模型智能体的世界!分别介绍斯坦福小镇和Chatdev两篇论文。它们的共同特点是使用多个大模型智能体协同完成任务。
多智能相比单一智能体可能有以下的应用场景
- 协同任务完成/创意生成:通过多智能体间的沟通,反思,校验,完成复杂任务,激发创意的小火花
- 模拟世界:多智能体模拟社会环境,现实应用是游戏NPC,脑洞再大一点是不是可以用于社会学研究,因果推断,平行世界模拟??
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
😝有需要的小伙伴,可以Vx扫描下方二维码免费领取==🆓