在DeepSeek-R1的开源狂欢之后,感觉不少朋友都陷入了技术舒适区,但其实当前的大模型技术只是跨进了应用阶段,可以探索的领域还有不少,所以这一章咱不聊论文了,偶尔不脚踏实地,单纯仰望天空,聊聊还有什么有趣值得探索的领域,哈哈有可能单纯是最近科幻小说看太多的产物~

尚未攻克的持续学习

当前的大模型训练还是阶段式的,OpenAI每隔几个月就会对模型进行重新训练,延长模型的世界知识截止时间。说白了就是全新、覆盖式的知识写入。就像西西弗斯推石头,每次全量训练都意味着对先前知识的系统性遗忘。而真正意义上的持续学习和试试学习,当前似乎还是个未解之谜。当然也有观点认为有机体的进化,本身就和无机体的进化存在完全不同的路径,所以大模型是否真的需要持续学习,不少人也是打问号的。

之前接触到的真正使用在线更新的主要在推荐领域,基于实时发生的用户长短行为序列进行持续的模型训练和迭代更新。但是这类模型本质只是行为表征和拟合,和当前的大模型还是有比较大的区别。而在NLP领域虽然之前有不少元学习,持续学习的论文发表,但是和R1的RL训练,ChatGPT的SFT指令训练一对比就会发现,它们可能还没找到正确的打开方式。其实从Word2Vec、Bert、CLIP、ChatGPT、R1不难看出,每个划时代的模型所使用的技术本身基本都符合大道至简的原理,匠气更少一些,Scaling曲线更长一些。

持续学习其实包含多个方面,比较重要的一个是单纯的增量世界知识的补充,也就是在模型上一次截止训练后至今世界上增量产生的知识和信息。之前训练模式在持续训练上最大的问题就是灾难遗忘,学了新的忘了旧的,捡了芝麻丢了西瓜。这里纯纯个人猜想的一个可能原因来自于当前Transformer模型结构中,模型习得的语言能力、世界知识、任务完成能力、思考推理能力,这些能力是纠缠在一起存储在Transformer参数中的。导致继续学习的过程中我们只学知识,就会遗忘任务完成能力;只补充任务完成能力,不更新知识就会增加模型幻觉(模型以为自己行了!其实并不行)。但如果有结构能把以上能力分层解耦,知识既客观事实的存储纯靠背诵,推理能力更多依赖模型基于反馈探索优化,而语言能力其实没有更新的必要。甚至模型可以在实现推理和语言能力不变的情况下,持续更新知识,或者对知识存储定期进行蒸馏压缩。之前一些知识编辑的论文其实就研究过大模型的知识存储,并发现在MLP层其实存在知识以Key-Value键值对形式存储。

持续学习的另一个方向是推理和任务完成能力,是基于大模型在使用工具完成任务的过程中,收到的环境给予的反馈,模型需要基于反馈优化行为路径和任务完成形式,这样才能在不断的练习中逐步提高任务完成的成功率。哈哈那借鉴《三体》中的文明进化机制,我们是否可以为模型构建虚拟生态圈,类似斯坦福小镇等"AI 沙盒",大模型本身是Policy,由沙盒本身生成大模型的任务todo,并评估模型的完成效果,生成反馈信号。沙盒中也允许模型接入各类MCP接口去和环境进行交互,还可以在沙盒环境中动态加入各类约束和竞争条件,例如

  • 动态奖励:基于任务完成度进行推理资源的动态分配,鼓励模型用更少的资源解决更复杂的问题
  • 种群竞争:多智能体同一任务完成效果对比择优
  • 环境突变模拟:随机修改MCP接口,让模型动态适应和环境的不同交互

内生化RAG是什么样子

除了模型本身能力的持续进化,另一个似乎进入技术共识的就是RAG检索增强技术。当前解决模型获取实时信息的方式还是比较传统上一代的搜索方案,构建知识库,Query改写,多路召回,粗排精排,虽然Knowledge Retriever的每一步都可以使用大模型进行能力增强但整个知识、实时信息获取的模块还是完全外挂在模型之外的,其实是上一代搜索技术和这一代大模型技术的拼接式实现方案。这种方案有什么问题呢?

一个就是模型上文的有限长度,虽然通过各种注意力机制改进和前期的长上文训练,模型的上文context已经从最早的1024一路狂飙到了几十K的长度,但依旧难以避免在更长文本上回答效果的衰减。而之所以上文的长度会更长更长,来自于通过搜索召回、多轮对话的信息是线性平铺,没有经过压缩处理

R1之后我也在想问题的表现形式和问题的解决方案可能是不一致的,就像我们看到模型推理过程中存在反思,纠错,生成新的假设,就认为这可能是树形的思考结构。而R1证明线性思考链路+Attention注意力机制也可以实现,那是否有可能上面提到的这种压缩处理也是可以通过Attention直接实现的呢?但现在的我(哈哈未来的我不一定这么想)认为Attention并不足够,因为之前所有Attention的改良都在提高Aettention对各个位置、各个长度信息的高效定位和选择能力,但这只是信息选择,而非信息压缩,选择只是信息的拼接,而压缩能产生信息之外的智能和抽象概念。有些类似GraphRAG的节点和关系抽象,但是又不想Graph受到三元组形式的限制。

所以我就想那是否有可能在模型使用检索上文进行推理的同时,对这部分上文进行重新的压缩编码并存储到另一个独立的存储模块,之后每一次回答模型都会使用存储模块和外部检索一同回答。并随着模型不断回答问题,存储模块的内容范围会持续扩展,而每次对存储模块的更新,都是新一轮的知识压缩,知识消歧,从知识中反思形成新的思考,这样存储中知识的密度会越来越高而长度却不会发生线性增长。看到最近英伟达推出的star Attention其实就有类似的context先编码再进行推理的思路,不过只涉及到一次信息压缩,没有更深层次多步的压缩和反思,类似于on-the-fly的推理信息压缩方式。还有有一个开源项目Mem0也有类似的思路,会通过工程设计不断对对话的上文历史进行总结抽象,冲突消解并形成长短期、不同类型的记忆存储。

另一个就是搜索能力和模型能力的不匹配,搜索引擎一次搜索返回的信息深度和广度都比较有限,前一年主要方案是利用大模型去进行query改写,从多个角度一起检索,但这种方案的弊端就是闭着眼睛撒网全凭运气,改写的好问题就能回答,改写的不好就完蛋。于是在大模型能力(反思能力为主)逐步提升的当前,又出现了以模型反思驱动的链式搜索推理模式,包括OpenAI的Deep Research,以及jina, Dify,Huggingface推出的更多开源版模式相似的Deep Search实现方案(对于Research和Search的边界其实非常模糊,请不要纠结这个问题,一切以效果和具体解决的问题为主)。概念很好懂,就是每轮都是有限搜索,然后让模型判断对于回答用户提问还需要补充哪些信息,然后生成新的搜索query,再去搜索,对信息进行补充更新,然后迭代下去,直到模型判断Okay。

这种方式我们测试后信息密度和信息丰富度,在使用O1,R1以上的模型后,会有显著的提升,但使用非思考类的模型,效果基本和我们人工调优后的多步RAG效果差别不大,但速度要显著慢很多。原因也简单多数问题还是能通过前期规划和2步以内的信息补充完成,而超过这个复杂程度的问题,对模型本身思考推理能力的要求也就变得很高。但这种方式的问题就在于整个流程的时间会变得不可控制,短则几分钟,长则几十分钟。当然和人工收集信息的速度相比是快的,但是似乎又和我们理想中的Javis有了比较大的差距。

所以想要加速信息收集的过程,我们跳出Deep Research的框架,是否有可能把模型被动获取信息,转换成模型主动获取并存储信息,类似把模型直接接入数据流,持续处理、筛选、整合、并进行压缩编码。这样搜索的过程就不再是调用搜索引擎去访问外部数据,而是直接借助Attention在编码的数据库中直接获取有效信息,信息提取效率,和信息获取的丰富度都是都会更好。最大的难点不在于构建实时世界的数据流,毕竟可以先做一个子领域,像金融资讯的场景流式数据很多,难点主要在于如何流式处理数据并压缩编码成和模型内生参数处于同一个高维空间的数据库。毕竟这份数据并不随模型一起训练,所以如何保证向量空间的一致是最大的问题,或者训练个Adapter类似多模态的桥接模型。最近看到谷歌出的Titan其实已经开始探索这些方向啦,下一章我们就围绕记忆展开聊聊。

哈哈哈这一章就聊这么多,也是最近代码看的多,论文读的少,确实没看到啥值得分享的,所以又水了一章真棒!

想看更全的大模型论文·微调预训练数据·开源框架·AIGC应用 >> DecryPrompt

解密prompt系列52. 闲聊大模型还有什么值得探索的领域的更多相关文章

  1. 解密Prompt系列6. lora指令微调扣细节-请冷静,1个小时真不够~

    上一章介绍了如何基于APE+SELF自动化构建指令微调样本.这一章咱就把微调跑起来,主要介绍以Lora为首的低参数微调原理,环境配置,微调代码,以及大模型训练中显存和耗时优化的相关技术细节 标题这样写 ...

  2. 解密prompt系列5. APE+SELF=自动化指令集构建代码实现

    上一章我们介绍了不同的指令微调方案, 这一章我们介绍如何降低指令数据集的人工标注成本!这样每个人都可以构建自己的专属指令集, 哈哈当然我也在造数据集进行时~ 介绍两种方案SELF Instruct和A ...

  3. 解密Prompt系列2. 冻结Prompt微调LM: T5 & PET & LM-BFF

    这一章我们介绍固定prompt微调LM的相关模型,他们的特点都是针对不同的下游任务设计不同的prompt模板,在微调过程中固定模板对预训练模型进行微调.以下按时间顺序介绍,支持任意NLP任务的T5,针 ...

  4. 解密Prompt系列3. 冻结LM微调Prompt: Prefix-Tuning & Prompt-Tuning & P-Tuning

    这一章我们介绍在下游任务微调中固定LM参数,只微调Prompt的相关模型.这类模型的优势很直观就是微调的参数量小,能大幅降低LLM的微调参数量,是轻量级的微调替代品.和前两章微调LM和全部冻结的pro ...

  5. 解密Prompt系列4. 升级Instruction Tuning:Flan/T0/InstructGPT/TKInstruct

    这一章我们聊聊指令微调,指令微调和前3章介绍的prompt有什么关系呢?哈哈只要你细品,你就会发现大家对prompt和instruction的定义存在些出入,部分认为instruction是promp ...

  6. 华为高级研究员谢凌曦:下一代AI将走向何方?盘古大模型探路之旅

    摘要:为了更深入理解千亿参数的盘古大模型,华为云社区采访到了华为云EI盘古团队高级研究员谢凌曦.谢博士以非常通俗的方式为我们娓娓道来了盘古大模型研发的"前世今生",以及它背后的艰难 ...

  7. 无插件的大模型浏览器Autodesk Viewer开发培训-武汉-2014年8月28日 9:00 – 12:00

    武汉附近的同学们有福了,这是全球第一次关于Autodesk viewer的教室培训. :) 你可能已经在各种场合听过或看过Autodesk最新推出的大模型浏览器,这是无需插件的浏览器模型,支持几十种数 ...

  8. 11.Java 加解密技术系列之 总结

    Java 加解密技术系列之 总结 序 背景 分类 常用算法 原理 关于代码 结束语 序 上一篇文章中简单的介绍了第二种非对称加密算法 — — DH,这种算法也经常被叫做密钥交换协议,它主要是针对密钥的 ...

  9. 10.Java 加解密技术系列之 DH

    Java 加解密技术系列之 DH 序 概念 原理 代码实现 结果 结束语 序 上一篇文章中简单的介绍了一种非对称加密算法 — — RSA,今天这篇文章,继续介绍另一种非对称加密算法 — — DH.当然 ...

  10. 9.Java 加解密技术系列之 RSA

    Java 加解密技术系列之 RSA 序 概念 工作流程 RSA 代码实现 加解密结果 结束语 序 距 离上一次写博客感觉已经很长时间了,先吐槽一下,这个月以来,公司一直在加班,又是发版.上线,又是新项 ...

随机推荐

  1. 2020年最新Redis面试题-copy

    什么是Redis Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库. Redis 可以存储键和 ...

  2. manim边做边学--缩放变换

    使用 Manim 进行动画创作时,缩放变换是一项强大且实用的功能. 当我们处理复杂的科学模型可视化.数学原理演示时,缩放变换可以帮助我们在不改变元素位置关系的基础上,突出关键信息,引导观众聚焦于特定的 ...

  3. C# Winform 通过 NAudio 获取控制电脑操作系统音量

    https://github.com/naudio/NAudio NAudio 是一个开源的 .NET 音频库,由 Mark Heath 开发,开源地址:https://github.com/naud ...

  4. Linux 开发环境常用配置

    记录下我个人 Linux 开发环境常用配置,后续可以简单写个小脚本可以把一系列安装配置操作自动化一把. zsh install & conf https://blog.csdn.net/amo ...

  5. 利用坦克PWA3快速为应用配置域名:以Gogs为例

    全文概述 本文介绍了如何利用坦克PWA3平台快速为Gogs应用配置域名的过程.随着互联网技术的发展,自托管Git服务变得越来越受欢迎,其中Gogs凭借其轻量级和易于安装的特点受到众多开发者的青睐.为提 ...

  6. delphi DateUtils强大的时间功能集成

    初步说明: CompareDate 比较两个日期时间值日期部分的大小CompareDateTime 比较两个日期时间值的大小CompareTime 比较两个日期时间值时间部分的大小DateOf 去除日 ...

  7. Rust多线程中安全的使用变量

    在Rust语言中,一个既引人入胜又可能带来挑战的特性是闭包如何从其所在环境中捕获变量,尤其是在涉及多线程编程的情境下. 如果尝试在不使用move关键字的情况下创建新线程并传递数据至闭包内,编译器将很可 ...

  8. Q:bash: fork: 无法分配内存,ssh无法连接新会话

    老版本系统的内核pid参数比较小(默认设置的是32768) 原因分析,– 内存不足或进程数超出限制– 系统内部的总进程数达到pid_max的上限,创建新进程看到以上提示 查看最大进程数 sysctl ...

  9. js中的模糊搜索( 正则表达式)

    此案例在vue中实现 搜索设备ID示例 <input type="text" name="" placeholder="搜索设备ID" ...

  10. Hive - [08] 数据仓库物理模型设计

    分区 分区是将表的数据按照某个列的值进行划分和存储的一种方式.通过分区,可以将数据按照特定的维度进行组织,提高查询效率和数据管理的灵活性. 一.分区的优势 提高查询性能:通过分区,可以将数据按照特定的 ...