【压缩泛化】对大语言模型智能涌现的理解

news2024/9/20 1:42:23

AGI = Maximizing Compression!

1. 智能定义

      一年时间,大语言模型(LLM)席卷互联网行业,包括自己在内,日常工作生活已经快离不开大模型应用了。前段时间,看到有赞干掉了30多人的UI团队,后又干掉了HRBP团队,想当初自己还拿到过有赞的offer,对于公司果断、雷厉风行的风格还是有很深的印象的,在竞争异常激烈的当下,企业必须认清现实,预判未来,未雨绸缪,才能长久生存。有赞对于团队的变化,给出的理由是要用更新的工具和更新的工作方式和流程。不求变,迟早会被迫改变。因此在当下,要快速积极去拥抱大模型这一技术变革带来的变化,主动去适应和提升自己。事实上,在工作中,大模型确实对自己的工作效率有明显提升。如果对chatgpt熟悉的话,可以看到很多将其应用于文字写作、编程辅助、多媒体创作、开发应用程序、脚本灵感生成、分析总结报告、教育培训等多领域的应用案例。在不同的领域以及不同的语言提示背景,chatgpt可以输出相应的能力。

      之所以当下大量公司或者业务场景融入了大模型作为效率倍增器,隐含的前提条件是其具备一定的可靠性和可用性,而这背后正是LLM所体现出的智能。当然不同人对于“智能”的理解可能存在些许差异。这里给出相对学术的定义:智能最具通用性的定义是“适应环境的能力",这一定义可包含智慧和行为能力两方面,狭义的智能是抽象、逻辑、理解、推理等能力,广义的智能可描述为在一定的环境或情境中感知和推断信息、保存为知识以应用于适应性行为。针对LLM仅是大型的语言模型,那么我们将智能限定在狭义层面,即抽象、逻辑、理解、推理等能力。

2. 智能缘由

        对于大语言模型体现的智能缘由,有很多不同的看法,有一些关注点在表层的术,也就是模型结构或者训练流程等,比如去解释transformer,但transformer的NTP(next token prediction)产生智能太过于牵强。早期有观点认为通过NTP任务,LLM在模型参数里学到了某种知识图谱,当输入Prompt的时候,Prompt包含的概念启动知识图谱相关节点,然后在知识图谱上按照激活扩散理论引发知识间的激活扩散和信息传递,由此导致LLM产生了智能。这类观点相对来说有点路径依赖,难以支撑OpenAI不惜代价投入研发AGI。

2.1 压缩思路

        今天来回顾一下OpenAI的科学家分享对于LLM的理解,提供了一种新的压缩思路,来解释大语言模型背后的哲学思想,虽然追溯起来,在AGI领域对于压缩作用的探讨很早就有,但OpenAI应该是将该理念工程化落地的最佳实践。此次分享主题为《Compression for AGI》,来自于Stanford MLSys Seminar,主讲人为Jack Rae。Jack Rae 是 OpenAI 的团队负责人,主要研究大型语言模型和远程记忆(large language models & long-range memory architectures)。此前,他在 DeepMind 工作多年,领导大语言模型 (LLM) 研究组。

        首先,我们给出一个例子,来帮助理解什么是压缩。比如Alice和Bob需要通信一组数据,数据如下1,2,3,4,...,100000000。一种直观的做法就是将数据原模原样由Alice发送给Bob,那数据传输量不小。如果采用一种压缩的方法,比如发送一个语言编码器“生成1到100000000的之间连续的整数”,然后将这个编码器发送给Bob,Bob接收之后,再通过解码器还原回1,2,3,4,...,100000000,那整体通信代价就非常小。这个例子至少包含以下要点:(1)对于发送的信息,需要理解抽象; (2)生成最小长度的编码来承载发送的信息; (3) 尽可能的无损压缩。

        那么如何去刻画这种一项任务的目标函数,以及如何优化该目标函数?基于该问题,引出本次的分享的要点,也就是:

(1)对完成某个任务有效方法的最小描述长度代表了对该任务的最大理解;

(2)使用生成模型进行无损压缩可以对最小描述长度进行计算;

(3)大语言模型是 SOTA 的无损文本压缩器。

2.1.1 最小描述长度

        所谓的最小描述长度,其实就是对于观测对象的最深层次的理解。例如对于英文翻译成中文的任务,仅仅通过直接查找词典把所有可能的短语翻译成中文,那么对该翻译任务理解是最差的,因为需要维护一个足够庞大的词典,而且由于英文与中文天然存在语言表达的差异,按词直译的效果往往不尽如人意。但如果将词典提炼为一系列的规则集(例如语法、词汇、短语等),那它将会有更好的理解能力,因此根据规则集的压缩程度对其进行最小描述长度的评价。如果将该规则集压缩到最小描述长度,那么可以获得对翻译任务有着最好的理解。

        Jack给出了一种更数学化对压缩的描述公式,图中|D|表示数据集D的无损压缩,无损压缩的大小可以表示为对 D 评估的生成模型的负对数似然加上估计函数f的最小描述长度。对数据集D评估的生成模型的负对数似然等于对 next token 预测损失的总和。这里的最小描述长度可以理解成初始化模型的代码量,和模型大小无关,和具体语言或者三方包也无关(code from scratch)。

        接下来通过LLaMA的例子,基于上述公式可以对比不同语言模型选出更好的压缩器,以及如何计算出精确的压缩率。

(1)模型效果对比:LLaMA 33B 和 LLaMA 65B 两个模型有着相同的数据描述长度,用于训练的代码大小相同。65B 模型有着更低的训练损失,根据公式把两项loss因子相加,可以得出 65B 模型是更好的压缩器。

(2)压缩比例的计算:LLaMA 65B 用于初始化和训练模型的代码约为 1MB,负对数似然大约是 400GB,而用于训练的原始数据是 5.6TB 的文本,因此该模型的压缩率为 14 倍。

2.1.2 使用生成模型进行无损压缩计算最小描述长度

        使用算术编码实现无损压缩。假设在 t时刻有一个 token x_t,并且概率分布是p_t。简单来说,算术编码就是将 token x_t编码成z_t,z_t占用对应bit大小。解码 z_t时仍然需要用到分布p_t。

        以 p_t是均匀分布为例,此时存储x_t需要的空间与直接二进制存储是一样的。当确切知道x_t是什么时,也就是概率为1,那么不需要耗费存储空间。这是两个极端的例子,说明需要尽可能好的生成模型来表征数据来降低空间的耗损。

        因此,对于Satya 和Sundar的例子,Satya在数据D上训练transformer模型,然后记录下一个词出现的概率分布,使用算术编码来对数据进行编码。

然后 Satya 把模型代码和算术编码后的 z 发送给 Sundar,训练代码约为 1MB,编码量级为-\sum {log_2}{p_t}{(x_t)}bits。也就是不发送神经网络的超大规模参数,而只是发送训练的代码。

        在 Sundar 这端,他运行模型训练的代码:使用相同的初始化网络进行初始化,在 t=1时刻模型使用 P_1 对 Z_1进行算术解码得到 X_1,然后经过一个训练步长使得网络预测出 P_1,之后迭代地遍历并恢复整个数据集。

2.1.3 通过压缩实现对训练集以外的信息实现最大泛化能力

        图中橙色部分代表模型的训练集,白色部分是训练数据所对应的真实世界信息,压缩的目标并不是保证能对训练数据做更好的预测,而是对训练数据所代表的真实世界信息能够最大程度的泛化表示。因此神经网络在橙色圆圈对应的训练数据上可能存在丢失部分信息,甚至不能很好地重建出训练集。LLM模型的训练更在意的是模型的泛化能力。

        Jack认为对于通用人工智能的关键包含两个部分: (1)收集所有有效的感知信息;(2)通过使用更加强大的基础模型学习来尽可能压缩数据。也就是说可以从使用更好的模型架构、模型尺寸、第三方工具、信息检索、人工合成数据等各种可能的方案,来实现更好的无损压缩效果,不应该限制所使用的方法,这也说明其实GPT模型只是现阶段的一种优选网络结构,也许未来会出现更好的模型网络结构来代替。只要是能够提升压缩效果的手段,都是AGI 基础模型的可选项,生成模型只是被压缩过程的一个组成部分,而被压缩的完整过程是对应一个以生成模型为核心的系统,其中可能包含规则、第三方工具等。

2.2 局限性

        前述章节讨论了使用大语言模型进行压缩的方案,接下来会谈其存在的局限性。

        (1) 压缩有可能是正确的,但效率不高 对于像素级图像进行建模需要的代价是相对高昂的,特别是对于像素级的视频建模就更加夸张了。因此一开始会从语义信息进行建模。随着算力、价格等的变化,也会有相应的变化。

        (2)现实世界的很多有用的信息是不可观察的, 比如 Alphazero可能只能观察到其可以进行围棋的自我博弈,但在训练它时用到了很多其他游戏的中间搜索结果。它看起来更像是一个代理人,可以通过搜索中间结果实现不同行为。

2.3 总结及展望

        Jack提到,基础模型工作总纲:明确 AGI 基础模型的目标并搜集尽可能多的有效数据,然后使用所有可能的无损压缩方式,从而得到对任务方法的最小描述长度。大道至简,复杂现象的底层存在着简单的原理。

        有效数据的搜集是 AGI 基础模型工作总纲中的两项工作之一,该项工作至关重要。从GPT4的技术报告中可以看到有大量的工作组投身在数据的收集、处理、对齐等任务。那么什么是有效数据,个人觉得应该是包含人类智慧结晶的数据,比如结构化的大规模的知识图谱数据、逻辑和架构清晰的人类编程语言数据都属于包含大量人类抽象总结信息在内的有效数据。密度越高,有效性越高的数据,对于数据压缩会有更显著的效用。另外,对于数据进行细致的文字描述,说明图像包含什么物体,特点是什么,描述了什么场景,那么这样一份图像和文字数据所包含的人类智慧密度就更高。新增多轮对话数据,可以让模型提升原本不具备的对话能力,这类数据的有效性也会帮助模型更好的压缩,提升语言表达能力。数据的异质化越高,有效性也会越高。AGI 基础模型是对人类智慧行为的概率预测,那么包含人类智慧信息的数据是对这种概率预测确定性的增强。

        同时,Jack也提到会进一步探索更高效的压缩方案,探索新的LLM的算法架构、不同的模型尺寸,在有效数据上进行提取有效信息,不断增强AGI模型地理解和表达能力。比较直观理解其中的关系,可以描述为:压缩方法会决定压缩的行为的效率以及有效压缩力度的上限;压缩力度决定了你是否能成功完成压缩任务;压缩数据决定了你该选用何种压缩方法以及模型能力增强的程度。

3. 参考文献

【1】Compression for AGI - Jack Rae | Stanford MLSys #76 

【2】《微软官方推出介绍Prompt 教学指南》

【3】智慧信息的压缩:模型智能的涌现之道

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

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

相关文章

FTP、NFS、SAMBA系统服务

⼀、rsync托管xinetd 1 、为什么要进⾏服务托管 独⽴服务:独⽴启动脚本 ssh ftp nfs dns ... 依赖服务 : 没有独⽴的启动脚本 rsync telnet 依赖 xinetd 服务(独⽴服务) 2 、如何将 rsync 托管给 xinetd 服务去管理? 第⼀步&am…

无人机之航拍高级操作与技巧

一、直线飞行与矩形飞行练习:通过直线和矩形路径的练习,提升飞行路径控制能力。 二、航点命令和事件编程:学习如何设置航点命令和事件,使无人机能够自动执行复杂任务。 三、故障诊断与处理:掌握基本的故障诊断方法和…

USART串口理论知识总结

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 USART串口理论知识总结 1、通讯的串行和并行1.串口采用发送数据代码并用printf重代码 1、通讯的串行和并行 1.串口采用发送数据代码并用printf重代码 #include <stdint.h…

【C++】set的使用

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; STL || C 目录 &#x1f308;前言&#x1f308;关于set&#x1f525;容量函数emptysize &#x1f525;Modifiersinserteraseclear &#x1f525;Operationsfindcountlower_bound和upper_…

Redis从入门到超神-(五)Redis实现分布式锁原理

引言 什么是分布式锁&#xff1f; 分布式锁是分布式系统中用于控制多个进程或线程对共享资源的访问的一种机制。在分布式系统中&#xff0c;由于存在多个服务实例或节点&#xff0c;它们可能会同时尝试访问或修改同一份数据或资源。如果没有适当的同步机制&#xff0c;就可能导…

谷粒商城实战笔记-46-商品服务-API-三级分类-配置网关路由与路径重写

文章目录 一&#xff0c;准备工作1&#xff0c;新增一级菜单2&#xff0c;新增二级菜单 二&#xff0c;前端树形界面开发1&#xff0c;开发分类展示组件 三&#xff0c;远程调用接口获取商品分类数据1&#xff0c;远程调用2&#xff0c;路由配置 错误记录 本节的主要内容&#…

PT2262-IR

PT2262是一款很古老的编码芯片&#xff0c;其兼容型号有&#xff1a;SC2262&#xff0c;AD2262&#xff0c;SC2260(需改变匹配电阻)等。 依据其datasheet&#xff0c;PT2262射频模式工作原理: CODE BITS A Code Bit is the basic component of the encoded waveform, and ca…

iOS实际开发中使用数据驱动页面布局

引言 在实际的APP开发中&#xff0c;我们通常会首先根据设计团队提供的视觉设计UI来构建我们的应用页面。这些设计通常是最全面和理想化的状态&#xff0c;因为设计师并不需要考虑用户的实际操作和交互。然而&#xff0c;如果我们仅仅根据这些设计进行硬编码&#xff0c;会在应…

接入百度文心一言API教程

然后&#xff0c;编辑文章。点击AI识别摘要&#xff0c;然后保存即可 COREAIPOWER设置 暂时只支持经典编辑器.古腾堡编辑器等几个版本后支持.在比期间,你可以自己写点摘要 摘要内容 AL识别摘要 清空 若有收获&#xff0c;就点个赞吧 接入文心一言 现在百度文心一言&…

php-fpm如何配置max_children参数

前言 略 php-fpm 资源耗尽 php-fpm 的子进程耗尽的时&#xff1a; 会导致 502 出现nginx 出现错误日志 2024/07/18 20:19:10 [crit] 36390#0: *1402471 connect() to unix:/tmp/php-cgi-81.sock failed (2: No such file or directory) while connecting to upstream, cli…

OpenHarmony 入门——初识JS/ArkTS 侧的“JNI” NAPI 常见的函数详解(二)

引言 前面一篇文章OpenHarmony 入门——初识JS/ArkTS 侧的“JNI” NAPI&#xff08;一&#xff09;介绍了NAPI的基础理论知识&#xff0c;今天重点介绍下NAPI中重要的函数。 一、Native 侧的NAPI的相关的C函数 以下面一段代码为例介绍下主要函数的功能和用法。 napi_value …

前端网页打开PC端本地的应用程序实现方案

最近开发有一个需求&#xff0c;网页端有个入口需要跳转三维大屏&#xff0c;而这个大屏是一个exe应用程序。产品需要点击这个入口&#xff0c;并打开这个应用程序。这个就类似于百度网盘网页跳转到PC端应用程序中。 这里我们采用添加自定义协议的方式打开该应用程序。一开始可…

Elasticsearch-RestAPI --学习笔记

RestAPI ES官方提供了各种不同语言的客户端&#xff0c;用来操作ES。这些客户端的本质就是组装DSL语句&#xff0c;通过http请求发送给ES。 官方文档地址&#xff1a; Elasticsearch Clients | Elastic 以下关于RestAPI 的说明都是基于老版本客户端 初始化RestClient 1&…

英语科技写作 希拉里·格拉斯曼-蒂(英文版)pdf下载

下载链接&#xff1a; 链接1&#xff1a;https://pan.baidu.com 链接2&#xff1a;/s/1fxRUGnlJrKEzQVF6k1GmBA 提取码&#xff1a;b69t 由于是英文版&#xff0c;可能有些看着不太方便&#xff0c;可以在网页版使用以下软件中英文对照着看&#xff0c;看着更舒服&#xff0c;…

Docker核心技术:Docker原理之Cgroups

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Docker核心技术 系列文章&#xff1a;Docker原理之Cgroups&#xff0c;其他文章快捷链接如下&#xff1a; 应用架构演进容器技术要解决哪些问题Docker的基本使用Docker是如何实现的 Docker核心技术&#xff1a;…

扭蛋机潮玩小程序搭建,扭蛋机行业的创新

在当下潮玩市场中&#xff0c;扭蛋机具有盲盒的未知性和惊喜体验感&#xff0c;商品丰富&#xff0c;并且价格相对低廉&#xff0c;获得了极高的人气。年轻人开始对扭蛋机逐渐“上头”&#xff0c;为了扭到喜欢的商品不断地进行复购下单&#xff0c;在这场随机性的扭蛋游戏中&a…

Java语言程序设计——篇七(1)

&#x1f33f;&#x1f33f;&#x1f33f;跟随博主脚步&#xff0c;从这里开始→博主主页&#x1f33f;&#x1f33f;&#x1f33f; 继承 类的继承实战演练 方法覆盖实战演练 &#x1f351;super关键字实战演练 调用父类的构造方法 类的继承 通过类的继承方式&#xff0c;可以…

【Qt】QWidget核心属性相关API

目录 一. enabled——是否可用 二. geometry——几何位置 window frame 三. windowTitle——窗口标题 四. windowIcon——窗口图标 ​qrc文件 五. windowOpacity——透明度 六. cursor——光标 自定义光标 七. font——字体 八. toolTip——提示栏 九. focusPolic…

git免密推送代码至仓库gitee/github 常用命令

代码托管 gitee github gitclone 1 生成/添加SSH公钥 ssh-keygen -C "***qq.com"2 gitee添加公钥 查看公钥 cat ~/.ssh/id_rsa.pub然后再gitee添加 3 验证 gitee ssh -T gitgitee.comgithub ssh -T gitgithub.comgitclone&#xff1a;无法测试&#xff0c…

MSSQL注入前置知识

简述 Microsoft SQL server也叫SQL server / MSSQL&#xff0c;由微软推出的关系型数据库&#xff0c;默认端口1433 常见搭配C# / .net IISmssql mssql的数据库文件 数据文件&#xff08;.mdf&#xff09;&#xff1a;主要的数据文件&#xff0c;包含数据表中的数据和对象信息…