《镜子大全》《朝华午拾》分享 http://blog.sciencenet.cn/u/liwei999 曾任红小兵,插队修地球,1991年去国离乡,不知行止。

博文

GPT作为序列数据的无损压缩器

已有 335 次阅读 2025-7-8 14:04 |个人分类:AI 浪潮|系统分类:教学心得

预测下一词的自回归大模型GPT早已风靡全球。压缩即智能的说法已经广为人知,但关于其无损压缩的能力貌似一直有争议。GPT压缩到底是无损还是有损呢?

这是一个非常值得打破沙锅问到底的问题,它正好切入了LLM压缩最核心、也最巧妙的部分。我们来把这个过程彻底拆解一下,让它变得清晰易懂。

一个直观的比喻:在无限的图书馆里找书

想象一个图书馆,里面包含了所有可能的句子。

    • 像 “人工智能将重塑未来产业格局” 这种符合语法、逻辑且有意义的句子,位于图书馆里非常显眼、容易找到的区域 (比如“热门新书区”)。

    • 而像 “产业未来将格局人工智能重塑” 这种语法不通的句子,位于偏僻的角落

    • 像 “猫枕头跳跃蓝色因为星期三” 这种完全随机的胡言乱语,则位于几乎无法访问的尘封地下室

现在,我需要告诉您具体是哪句话。

    • 对于那句热门句子,我不需要把整句话念给您听。我只需要给您一个极短的指令:“热门区,第3排,第5本”。这个指令就是压缩后信息 (少量比特)

    • 对于那句胡言乱语,我没有捷径可走,只能把整句话一字不差地读给您听。这个指令非常长,几乎和原文一样。

GPT的作用,就是建立了这个图书馆的终极索引系统(世界模型)。它知道每一句话“热门”的程度(概率)。算术编码就是那个高效的区间定位系统

核心机制:算术编码如何划分“区间”

现在我们进入技术细节。算术编码的精髓是把一整段信息表示成 0.0 到 1.0 之间的一个小数。

压缩:一步步“缩小”区间

我们以您的例子 “人工智能将重塑未来产业格局” 来走一遍流程。为了简化,我们假设分词是:“人工”, “智能”, “将”, “重塑”, “未来”, “产业”, “格局”。

  1. 初始状态:我们的区间是 [0.0, 1.0]。

  2. 编码第一个词“人工”

    • GPT模型启动,预测第一个词的概率。假设在所有可能开头的词中,"人工" 的概率是 5% : P("人工")=0.05。

    • 算术编码器就在 [0.0, 1.0] 的区间里,把开头 5% 的位置,也就是 [0.0, 0.05],分配给"人工"。

    • 我们“放大”进入这个新区间 [0.0, 0.05]。

  3. 编码第二个词“智能”

    • 现在,GPT的上下文是“人工”。它预测下一个词。因为“人工智能”是高频词,所以 P("智能" | "人工") 的概率会非常高,比如 80%。

    • 算术编码器就在当前区间 [0.0, 0.05] 里,把前 80% 的位置分配给"智能"。

    • 新的区间是 [0.0, (0.05 * 0.8)],即 [0.0, 0.04]。

    • 我们再次“放大”进入这个更小的区间 [0.0, 0.04]。

  4. 编码第三个词“将”

    • 上下文是“人工智能”。GPT预测 P("将" | "人工智能") 的概率也很高,比如 60%。

    • 新区间是 [0.0, (0.04 * 0.6)],即 [0.0, 0.024]。

  5. ...持续这个过程...

最终结果:当整句话编码完毕,我们得到了一个非常精确定位的、极小的最终区间,比如 [0.02113, 0.02114]。

关键来了:我们只需要从这个最终区间里随便挑选一个数,比如 0.02113,把它转换成二进制(比如 0.00010101...),这个二进制串就是我们的压缩结果。因为它是一个高概率句子,每一步都取了较大的百分比,所以最终区间的范围相对较大(虽然数值很小),可以用较少的二进制位数来精确表示。

解压:按图索骥,还原路径

解压过程就是上述步骤的逆向操作,像拿着藏宝图找宝藏一样。让我们用数学语言走一遍解压流程。

    • 压缩数字:V = 0.02113

    • GPT模型:随时待命

第一轮:解码第一个词

  1. 获取概率:GPT预测,(无上下文时)'人工'的概率是0.05,'智能'是0.03...

  2. 划分区间:[0.0, 1.0] 被划分为:

    • [0.0, 0.05] -> '人工'

    • [0.05, 0.08] -> '智能'

    • ...

  3. 定位:V = 0.02113 落在 [0.0, 0.05] 区间内。

  4. 解码:输出第一个词 “人工”

  5. 更新区间:我们接下来的工作区间是 L=0.0, H=0.05。

第二轮:解码第二个词 

  1. 区间归一化 (Rescaling) 

    • 我们需要更新我们的指针 V,计算它在 [0.0, 0.05] 这个新区间里的相对位置。

    • 公式:V_new = (V_old - L) / (H - L)

    • 计算:V_new = (0.02113 - 0.0) / (0.05 - 0.0) = 0.4226

    • 现在,我们用来做决策的指针变成了 0.4226。

  2. 获取概率:解压器给GPT输入上下文“人工”,GPT预测下一个词的概率:

    • P("智能" | "人工") = 0.8

    • P("智慧" | "人工") = 0.1

    • ...

  3. 在新坐标系下划分区间:我们根据新概率划分标准区间 [0.0, 1.0]:

    • [0.0, 0.8] -> '智能'

    • [0.8, 0.9] -> '智慧'

    • ...

  4. 定位:我们用归一化后的新指针 V_new = 0.4226 来比较。它落在 [0.0, 0.8] 这个区间内。

  5. 解码:输出第二个词 “智能”

  6. 更新区间[L, H]:为下一轮的计算定义新的边界。方:将相对的 [l,h] 区间缩小/映射回绝对坐标系中。'智能'对应的区间是 [0.0, 0.8]。映射回绝对坐标系的工作区间是 [0.0, 0.04]。这个 [0.0, 0.04] 精确地定义了“人工智能”这个词序列在整个 [0.0, 1.0] 空间中的最终位置。

    • L_new = L_prev + (l_curr * Width_Previous)

    • H_new = L_prev + (h_curr * Width_Previous)

这个过程不断重复,每一步都包含 定位 -> 解码 -> 归一化 三个动作,直到结束。具体说,更新指针 V 与 更新区间 [L, H] 这两个过程交替进行,一个负责“决策”,一个负责“更新状态”,共同驱动解码器精确地还原出原始文本。因为每一步的选择都是唯一的,所以解压结果能100%保证和原文一致。

总结:为什么高概率 = 少比特

这背后的数学原理是信息论。一个事件所包含的信息量I是其概率P的负对数:

I(x) = -log₂(P(x))

    • 高概率事件 (P → 1):比如GPT预测下一个词是“格局”的概率是95% (P=0.95)。它所包含的信息量就非常小(-log₂(0.95) ≈ 0.07比特)。我们只需要极少的信息就能确认这个预测。

    • 低概率事件 (P → 0):如果下一个词是个罕见词,概率只有0.01% (P=0.0001),它所包含的信息量就极大(-log₂(0.0001) ≈ 13.3比特)。我们需要很多信息才能描述这个“意外”。

算术编码巧妙地将这个理论变成了现实。对于一个高概率序列,最终的区间总大小(即所有概率的乘积)会比较“大”,从而可以用一个位数较少的二进制小数来表示。这就是“语义级消除冗余”的本质:所有符合人类知识、语法和逻辑的“意料之中”的内容,都被GPT这个“世界模型”识别出来,并用最少的信息量进行了编码。



https://wap.sciencenet.cn/blog-362400-1492857.html

上一篇:与尼克等老友唠大模型压缩理论
收藏 IP: 108.65.198.*| 热度|

1 王涛

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2025-7-8 22:48

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部