大语言模型的“智能飞轮”!阿里最新综述全面解析大模型的自进化之路

server/2024/9/22 16:34:01/

3386ce806c55d648ee21d2ef7412dbaf.gif

©PaperWeekly 原创 · 作者 | 林廷恩

单位 | 阿里通义实验室算法研究员

研究方向 | 自然语言处理

想象一下,一个 AI 不仅能学习,还能自我改进,变得越来越聪明。这不是科幻小说,而是我们正在见证的现实。大语言模型(LLM)如今正在通过自进化的智能飞轮,不断提升其输出的质量和可靠性。这意味着它们能够适应新的信息和环境,提供更可靠、更有效的帮助。那么,这一切是如何实现的呢?

780cf1859d8661415862f799920e1a73.png

论文标题:

A Survey on Self-Evolution of Large Language Models

语言模型的自进化研究综述

论文作者:

林廷恩,武玉川,李永彬

论文链接:

https://arxiv.org/abs/2404.14387

Repo链接:

https://github.com/AlibabaResearch/DAMO-ConvAI/tree/main/Awesome-Self-Evolution-of-LLM

74a6b9595a9e672e41fcb079eb72477b.png

背景

随着 AI 领域迎来了大语言模型的爆发,如 ChatGPT、Gemini、LLaMA 和 Qwen 等模型在语言理解和生成方面取得了巨大成就。然而,当前的训练方法需要大量人类监督和外部指导,不仅昂贵,而且在处理复杂任务时逐渐遇到瓶颈。为了解决这些问题,科学家们逐渐关注到一个令人兴奋的新方向:自进化

502665b2487a704cda54bac7b0b2b438.png

1.1 什么是自进化?

简单来说,自进化就是让人工智能像人类一样,通过自己的经验不断学习和提升自己。就像玩游戏一样,从初学者到高手,靠的就是不断的练习和自我提升。

1.2 为什么自进化很重要

传统的大语言模型需要大量的人类帮助才能提升性能,然而,这样的方法不仅费时费力,而且成本高昂。而自进化的方法则让 AI 可以自主学习,不再依赖大量的人类监督。例如,AlphaGo 曾通过学习 3000 万局棋谱成为围棋高手,但 AlphaZero 仅仅依靠自我对弈,通过三天时间就超越了 AlphaGo,达到了超人类水平。

edd6519065a742bb9e7fb9829ff4811d.png

1.3 自进化带来的突破

科学家们已经在自进化方面取得了一些令人惊叹的成果。例如,DeepMind 的 AMIE 系统在诊断准确性方面超过了初级保健医生,而微软的 WizardLM-2 模型则超越了初版的 GPT-4。这些成功案例表明,自进化不仅是新的训练方法,更是一种可以超越现有数据和人类限制的途径。

1.4 自进化:大语言模型的“智能飞轮”

d4ce1019e13d34631780afc52f370359.png

传统的 AI 训练就像跑一段路,但自进化更像是跑一个循环,不断回到起点变得更强。我们称之为“智能飞轮”,它包括四个阶段:获取经验、改进经验、迭代更新和评估。这四个阶段就像一个完整的进化循环,让大语言模型能够不断迭代和提升自己的能力。

cd94734083daf5dc03243a666f941e42.png

1.5 自进化的四大阶段

1.5.1 获取经验:模型的学习旅程

模型就像一名求知若渴的人,先确定学习目标,然后获取新任务。在完成这些任务的过程中,模型不仅获得正确答案,还从周围环境中收集反馈,积累宝贵的经验。

1.5.2 改进经验:反思与修正

在获取经验后,模型会对这些经验进行反思和修正。就像学生复习功课一样,模型会剔除错误和不完美的数据,确保掌握的信息更加准确和高效。这一步骤帮助模型不断优化自己的知识库,就像人通过反复练习来提高成绩一样。

1.5.3 迭代更新:不断提升

有了改进后的经验,模型就开始更新自己,将新知识整合到现有的框架中。通过这种方式,模型始终保持在最新状态,不断提升自己的性能,以适应新的挑战,逐步提高自己的能力。

1.5.4 评估:衡量与改进

最后,模型会通过各种评估指标来衡量自己的表现。这一阶段的结果为后续的进化设定了新的目标,形成一个自我完善的闭环过程。通过不断的评估和反馈,模型能够识别出自己的不足,并在下一个迭代周期中进行改进,实现持续的自我提升。就像人通过考试和反馈,发现自己的弱点,并在下一次学习中努力改进。

1.6 自进化的进化目标

8fb7e4b482c2f88d5245bb7dc0877ea1.png

就像人类设定个人目标一样,进化目标引导模型的发展,由进化能力进化方向所组成:

进化能力:包括基于大模型与智能体的能力:

基于大模型的能力:

  • 指令跟随:模型能够准确理解并执行用户的指令。

  • 推理:具备逻辑推理和问题解决的能力。

  • 数学:在数学运算和问题解决中的表现。

  • 编码:在编程和代码生成方面的能力。

  • 角色扮演:模拟和参与不同角色对话的表现。

基于智能体的能力:

  • 规划:为未来行动制定策略和准备,并创建一系列步骤以实现特定目标。

  • 工具使用:在环境中使用各种工具(如 API)来执行任务或解决问题。

  • 具身控制:在环境中管理和协调其物理形态的能力。包括移动和物体操作。

  • 沟通协作:传达信息和理解信息的技能,包括心智理论能力建模。

进化方向:提高模型的特定能力或特性:

  • 改进性能:提升整体输出质量和准确性。

  • 适应反馈:根据用户反馈自我调整和改进。

  • 更新知识库:保持知识库的最新和全面性。

  • 安全性:确保输出内容安全、无害。

  • 减少偏见:尽量消除输出中的偏见,提供公正客观的回答。

下面,我们将详细介绍自进化的技术路线,具体如下:

9b818ef243e4cf54dcfe9caa2530e192.png

4f5f9db4b8fad9f5f2a6cf8e8e7be2f4.png

获取经验

获取经验是推动自进化的第一步。这一过程既包括探索,也包括利用现有知识。让我们一同揭开这个过程,看看 LLM 是如何通过任务进化、答案进化和反馈获取来变得更聪明的。

2.1 任务进化

b1cbafc72077abbf3e87da31d6bba6b9.png

任务进化是启动整个进化过程的关键步骤,模型首先根据进化目标来获取任务。任务进化的方法可以分为基于外部知识、不基于外部知识和基于选择的三种。

  • 基于外部知识的任务进化:AI 利用外部知识生成相关任务,确保任务的真实和有效。例如,Ditto 使用像 Wikidata 和 Wikipedia 这样的知识库生成对话任务,而 UltraChat 则从非结构化语料中生成问题或指令。

  • 不基于外部知识的任务进化:AI 通过自身的能力生成新任务,增加任务的多样性。例如,Self-Instruct 方法通过自我生成指令来创建新任务,而 Evol-Instruct 则通过扩展指令的复杂性和多样性来实现这一目标。

  • 基于选择的任务进化:AI 从现有任务中选择最相关的任务,而不是生成新任务,从而简化进化过程。Diverse-Evol 方法通过采样策略从任务池中选择多样化的任务,提升 AI 的指令遵循能力。

2.2 答案进化

获得任务后,AI 通过不同策略来解决这些任务,答案进化分为正向和负向两种方法。

正向答案进化:

b451c78414208deee556768d89b22e6e.png

  • 基于思维的策略:在解决任务时提供推理过程或理由依据,提升答案的正确性。例如,LMSI 方法通过思维链与自我一致性生成高信任度的答案。

  • 基于自我对奕的策略:通过与自身交互学习,如 SOTOPIA-π 通过自我对奕的强化训练和行为克隆提升社交智能。

  • 基于交互的策略:通过与环境互动获取反馈,例如 A3T 通过与环境交互获取多轮轨迹,让 AI 自主修复失败的 ReAct 轨迹。

  • 基于溯源的策略:利用预定义规则、先验知识或记忆引导任务解决,减少搜索空间。例如,Self-Align 通过原则驱动推理生成符合原则约束的答案。

负向答案进化:此类方法通过识别和收集不符合预期的模型行为,改善偏好对齐和安全性,可分为以下两类:

614c77c5273a294d4f065a5caf79d586.png

  • 基于对比的方法:收集多个解答,选取最优的作为正例,其他作为负例。例如,Self-Rewarding 通过生成新问题并计算分数,将高分与低分样本分别作为正例与负例,实现自我对齐。

  • 基于扰动的方法:刻意添加扰动生成负例,避免模型生成错误答案。例如,RLCD 在生成时刻意加入正向与负向提示词,引导 AI 生成正例与负例答案,获得偏好数据并对齐。

2.3 获取反馈

9bda55505527e7f275d0e11cd9bfbb70.png

反馈在 AI 自进化中扮演着至关重要的角色,帮助 AI 证明解决方案的正确性并促进技能更新。主要分为两类:

  • 获取模型反馈:AI 基于自身提供反馈内容,包括打分与评语。例如,Self-Alignment 引入自我评估模块和知识调优策略,提高AI在知识密集型任务中的事实准确性。

  • 获取环境反馈:常见于可以直接执行解决方案的任务中,反馈来源包括代码解释器、工具执行等。例如,Self-Debugging 利用测试用例的执行结果作为反馈,使 AI 能够自我诊断和修正代码错误,显著提高编程任务性能。

f6021a27154402a835d58e0ce1497c7a.png

改进经验

在获得经验后,大语言模型可以通过自我改进经验来提高其输出的质量和可靠性。这种方法分为两大类:过滤(Filtering)和纠正(Correcting)。

3.1 基于过滤的改进经验

2956bbf56dc5c6827324da9728d8363b.png

通过过滤策略,模型只会使用最可靠和高质量的数据进行更新。目前,主要有两种过滤策略:

  • 基于指标的:利用反馈或预定义指标进行筛选。比如,ReST^{EM} 通过多次采样数据、生成答案并使用反馈进行过滤,不依赖大量人工数据,逐步提高模型推理效果。

  • 不基于指标的:通过内部一致性或模型特有标准进行评估,提高灵活性和适应性。例如,Universal Self-Consistency 提出了一种通用一致性方法,在数学推理、代码生成等领域显著提高大模型效果。

3.2 基于纠正的改进经验

8b1f029f826771dcadcfb87a03fcc307.png

基于模型来迭代改进其经验。现有的纠正策略分为两种:

  • 基于评语的:通过评语发现潜在错误或次优输出,并提出解决方案,引导模型改进。Self-Refine 通过迭代反馈和改进输出,在对话、代码生成等任务中效果显著提升。

  • 不基于评语的:直接利用客观信息进行纠正,避免潜在偏见影响。STaR 利用少量带有思维链的示例和大量无思维链的数据集,逐步提升模型的复杂推理能力。

34b9ccd4fafcc1385c122305bfe99fee.png

更新

在改进经验的基础上,我们可以利用这些数据进行模型的迭代更新。主要方法分为两种:基于权重(In-Weight)和基于上下文(In-context)的迭代更新。

4.1 基于权重的迭代更新

89e8b0b8bfeaf3cc997519f730d9786c.png

在自我进化的训练过程中,核心挑战在于提升整体能力并防止灾难性遗忘。主要有三种策略:

  • 基于重放的:将新数据混入旧数据,防止遗忘以前的知识。例如,AMIE 融合已有医疗知识问答和生成的模拟医疗对话,提高诊断准确性。

  • 基于正则约束的:限制模型更新,防止与原始行为出现重大偏差。例如,WARM 通过微调多个奖励模型并加权平均,降低强化学习中的风险。

  • 基于架构的:利用额外的参数或模型进行更新。例如,EvoLLM 提出自进化的模型融合方法,使模型具备跨领域能力。

4.2 基于上下文的迭代更新

5dcf958abf533e2aeb6ff74523379472.png

除了更新模型参数外,还可以利用 LLM 的上下文学习能力,实现快速自适应更新,常见于 Agent 应用中。主要方法有两种:

  • 基于外部记忆的:通过外部模块收集和检索经验,在不更新模型参数的情况下实现更好的结果。例如,TRAN 从过去失败经验中总结规则,提高后续问题解决正确率。

  • 基于工作记忆的:利用过去经验,通过更新内部记忆流来提升效果。例如,Reflexion 通过反馈和反思,迭代增强 Agent 效果。

75775ce4816d343a214678655aad37bb.png

评估

准确自动地评估模型性能,并为后续改进提供方向,是个重要但缺乏研究的领域。评估方法主要有两种:

  • 量化评估:通过具体数字或分数来评估。例如,LLM-as-a-Judge 用大语言模型评价其他模型,评估方法与人类评判一致性接近 80%。

  • 质化评估:通过分析模型的不足之处提供更深入的评估。例如,ChatEval 通过多智能体辩论,潜在能帮助指导后续迭代目标。

45c50d3a1dbf73376f73a075baff7674.png

未来挑战与展望

随着大语言模型自进化的发展,当前工作也面临着诸多挑战:

自进化目标:多样性与层次性

目前的进化目标还不够全面。大模型已应用于各行各业,我们需要一个覆盖更多实际任务的自进化框架,提升多样性,让它适应更广泛的应用。

自主性等级

5f90957432fc1d978f32d4931d52ca94.png

自进化框架的自主性程度可以分为低、中、高三类:

  • 低自主性:用户预定义进化目标,设计进化管道,模型根据设计框架完成自进化。

  • 中自主性:用户仅设定进化目标,模型独立构建每个模块,实现自进化。

  • 高自主性:模型诊断自身缺陷,设定进化目标并设计具体模块,实现完全自主的自进化。

大多数现有研究仍处于低自主性水平,需要专家设计具体模块,随着自进化框架的发展,中高自主性的研究亟需更多关注。

经验获取与改进:从经验到理论

自进化研究多依赖经验,缺乏理论支持,机制尚不明确。需要更多理论探索,确保自进化有效改进。

迭代更新:稳定性与可塑性

我们需要在保持已有知识稳定性和适应新任务的可塑性之间找到平衡,现有方法效果有限,需寻找高效稳定的迭代更新方法。

评估:系统化和动态进化

开发动态评测集,以适应不断进化的模型,避免静态评测集过时或被模型记住。

安全性和超级对齐

98a0a1e4f6e4d9b516b5a06b933adce7.png

随着大模型智能水平逐步超越人类,确保其与人类伦理和价值观对齐至关重要。OpenAI 的 Superalignment 计划正致力于此。

9767fe11b944f648fdf73ddca29bdbc2.png

结语

语言模型的自进化能力正在引领人工智能领域的变革,参考人类学习过程,克服现有训练范式对人工标注和教师模型的依赖,显著提高性能和应用广泛性。我们通过详细介绍自进化框架、获取经验、改进经验、迭代更新、评估及未来挑战,提供了全面的理解和最新的研究进展。未来,随着自进化框架的不断发展和完善,人工智能系统将具备更强的适应能力和智能水平,有望在复杂的实际任务中不断超越人类表现。

更多阅读

4f810c772dbb8c74f78bf3eeef374709.png

405466f8519fe016c692e49dee68fdc7.png

28e0ef7efc34d6ff005f8fab339c5034.png

a251190c6d1b0cdf9dabe617133d6b7a.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

1993526f43aa8ad52aa00c4b81aee946.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

·

2b01960db3df6ec36d3917f00b38f91f.jpeg


http://www.ppmy.cn/server/105066.html

相关文章

Uint8Array与普通Array的性能速度对比:数据解析

在JavaScript中,Uint8Array和普通Array是两种常用的数据结构,它们各自有不同的使用场景和性能特点。本文将通过对比Uint8Array和普通Array在性能速度方面的差异,用数据来解释它们之间的不同。 Uint8Array的特点 Uint8Array是一种类型化数组…

Python多线程与异步处理在HTTP请求中的应用方式

代码示例: import asyncioimport aiohttpasync def fetch_async(session, url):async with session.get(url) as response:return await response.text()async def main():async with aiohttp.ClientSession() as session:html await fetch_async(session, http:/…

内网渗透—横向移动域控提权漏洞横移

前言 今天主要是说一下利用漏洞来进行横移,主要是针对域控提权。前面我们学习过通过hash传递、IPC等技术手段来进行横移,现在假如那些都用不了了,那么我们还可以利用系统的漏洞来横移到我们的域控主机上面,也就是说从一个域内用户…

单例模式 详解

单例模式 简介: 让类只初始化一次, 然后不同的地方都能获取到同一个实例 这是非常常用的一种模式, 系统稍微大一点基本上都会用到. 在系统中, 不同模块的总管理类都已单例模式居多 这里我们不仅使用c实现单例模式, 也会用python2实现一遍 python代码 想要看更详细的python单…

代理模式:静态代理和动态代理

目录 一、静态代理 1、优点 2、 缺点 3、示例 二、动态代理 1、优点 2、 缺点 3、示例 三、总结 在Java中,代理模式是一种结构型设计模式,它允许你在不改变目标对象代码的情况下,为目标对象提供一个代理对象,用以控制访问和增强功…

(24)(24.4) MultiWii/DJI/HDZero OSD (version 4.2 and later)(二)

文章目录 前言 2 未经WTFOS改装的DJI 2/V1/V2护目镜 3 参数说明 前言 除了基于本地 MSP 遥测的 OSD 显示外,在后来的型号中还添加了“自定义OSD”功能,允许显示和定位 ArduPilot 提供的任何或所有 OSD 信息面板以及警告、单位等。 2 未经WTFOS改装的…

开放世界目标检测:检测区分出未知物体

开放世界目标检测:检测区分出未知物体 01 Abstract 开放世界目标检测旨在识别未见过类别的目标,并在提供注释后逐步识别这些目标。与传统的只限于预定义类别的范式不同,这种设置承诺通过使用与类别无关的信息来持续且通用地估计目标性。然而…

Paimon Flink本地读取数据报错

1.idea本地读取paimon 用idea在本地读取paimon的表时需要添加的依赖除了官网提出的和hadoop相关的,paimon-flink之类相关的除外还需要其他额外依赖 import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.tabl…