今天小编分享的互联网经验:字节模型来了!把字节当作token,统一一切,预测一切?,欢迎阅读。
相信你或多或少对 GPT 有一定的了解,但我赌你没听说过 bGPT。bGPT 的意思是 byte GPT,即字节 GPT。这是一种专门设计用于处理二进制数据和模拟数字世界的深度学习模型。简单概括,bGPT 突破了传统语言模型的局限,能够直接理解和操作二进制数据,拓展了深度学习在原生二进制数据领網域的应用边界。
bGPT 的成果来自于微软亚洲研究院、清华大学以及中央音乐学院的共同开发,等会你就知道这里为什么会有中央音乐学院了,希望你还没有忘记五线谱。
从运行逻辑来看,bGPT 反而很像是在解数学题
在硅星人 Pro 的文章《揭秘 Sora:用大语言模型的方法理解视频,实现了对物理世界的 " 涌现 "》中提到,大语言模型有一个核心功能是通过代码将多种文本形式进行了统一。正是这种数据结构上的相同,才让大语言模型实现 " 思考 ",进而生成各种各样的内容。但是文字的数据结构和音频、影像、符号、CPU 状态数据等等完全不相同,所以想要只使用一个大模型就完成对所有类型数据结构的学习,并不容易。
不过我们每一个使用电子产品的人都清楚,无论是何种类型的数据,它是由 " 字节 " 组成的。因此,研究团队提出了一个想法,是否能用字节来代替传统的 token,使得大模型可以把所有类型的数据放在一起进行训练推理。bGPT 的技术原理是基于深度学习中的序列建模思想,通过训练模型对连续的字节序列进行预测,以理解并生成符合特定上下文的二进制数据。
bGPT 可以处理不同类型的声音檔案
如果说 transformer 模型的核心机制是自注意力,那么 bGPT 的核心机制就是 " 猜 "。通过深度学习训练,学会根据当前字节序列预测接下来可能出现的字节,从而对数字世界的内在规律进行建模。即采用 " 下一个字节预测 " 的方式来模拟数字世界的各种活动。
就像大语言模型的预处理环节一样,bGPT 也有预处理,而且逻辑上和大语言模型是一致的,也是将不同类型的数据(音频和影像)标准化为适合模型输入的格式。比如音频就会被转换为统一的 WAV 格式,设定采样率为 8kHz,单声道,8 位深度,并裁剪至一秒长度;而影像数据则被設定为 32 × 32 像素、RGB 颜色模式、24 位深度的 BMP 格式。
接下来模型使用最终解码层的补丁级特征,通过平均池化操作提取全局特征以供分类任务使用。这一步的作用是提取特征,为下一步的生成式建模做准备。为了凸显 bGPT 和市面上流传的文字、影像、视频大模型不同,研究团队特地选择了音乐作为模型生成的内容。
论文所选取的乐谱
论文使用了两种檔案类型来做演示,第一种是 ABC 记谱法,第二种是 MIDI。ABC 记谱法是一种简洁的人工编写的文本格式,用来描述音乐曲目,而 MIDI 是一种二进制格式,记录的是音乐演奏的具体表现细节。更直白一点,ABC 记谱法就是我们人类看的操作手册,MIDI 则是机器用模拟环境来还原这份操作手册。
bGPT 首先将成对的 ABC 记谱法檔案和对应的 MIDI 檔案合并成连续的字节序列,并用特殊的分割符标识两个檔案之间的界限。接着,模型运用生成式建模的方法来学习这些字节序列的规律,从而实现了双向转换。也就是说,bGPT 可以将基于文本的 ABC 记谱法乐谱转换为 MIDI 二进制表演信号,以及将 MIDI 檔案还原回 ABC 记谱法文本格式。
在实际效果上,bGPT 在完成这项任务时展现了非常高的精确度。研究团队在论文中写到,在将 ABC 记谱法转换为 MIDI 格式时,错误率低至每字节仅 0.0011 比特。尽管转换过程中可能会遇到一些挑战,比如 MIDI 转回 ABC 时,由于 MIDI 不支持重复符号,导致 ABC 乐谱在视觉上显得比原始版本更为冗长,装饰音符也可能因 MIDI 的表现方式而在转换回 ABC 时无法完全精确对应,但总体上 bGPT 成功地模拟了这个数据转换的过程,证明了它在模拟和处理数字世界中不同数据格式间转换的能力。
此外,为了评估 bGPT 在模拟数字过程方面的性能,研究人员还创建了一个 CPU 状态数据集,通过 Python 脚本模拟 CPU 的操作,让 bGPT 学习和预测 CPU 执行不同指令时的状态变化,结果显示 bGPT 在此类硬體行为模拟上的准确性超过 99.99%,进一步验证了其在模拟数字世界复杂过程的有效性和潜力。
所谓 CPU 状态集,是一个专为评估和训练 bGPT 模型而构建的合成数据集,它模拟了 CPU 在执行一系列机器指令后内部寄存器状态的变化情况。此数据集中每个实例都包含了 1KB 大小的内存块,其中包含一定数量的机器指令,随后是一系列 16 字节的 CPU 寄存器状态序列,反映了每次执行指令后 CPU 的最新状态。寄存器主要包括了程式计数器、累加器、指令寄存器、通用寄存器。
那么换句话说,这 CPU 状态集,其实就是想让 bGPT 来模仿 CPU 的物理运行逻辑。研究团队之所以选择这种类型的数据结构,就是为了和传统大模型进行区分。人家玩的就是时髦,玩的就是另类。
损失函数和周期的关系图
让我们看这两张图,上面的是 ABC 记谱法 /MIDI 所对应的数据转换任务,下面就是 CPU 状态建模任务。Loss 代表损失函数(loss function),Epoch 代表完整周期。随着 epoch 数的增加,模型会不断更新权重参数,以期在后续的 Epoch 中达到更低的损失水平。结果证明,模型预测输出越来越接近实际标签,拟合程度越来越好,预测能力越来越强。
数据转换任务使用 IrishMAN 数据集进行验证,不是我吹牛,这个数据集一般研究大模型的都不一定认识。它是一个包含了 20 多万首爱尔兰乐谱的 ABC 记谱法数据集。其中 99%(214122 首曲子)用于训练,1%(2162 首曲子)用于验证。为了确保格式的统一,所有曲调都被转换为 XML,然后使用脚本转换回 ABC 记谱法,并且包含自然语言的資料欄(例如,标题和歌词)被删除。
IrishMAN 数据集
bGPT 是非常有创意的,因为字节是最基本的信息存储部門,而且虽然人类用肉眼可能没办法理解 0 和 1,但是不同类型的檔案,它所对应的字节是截然不同的。咱们就拿音乐来说,它的字节是音频数据、编码格式、元数据。音频数据是声音振幅和频率随时间的变化,编码格式是表示方法(MP3、WAV 等),元数据是这段声音的信息(歌曲名称、表演者、所属专辑等)。
因此这些字节是有规律可循的,它具备明显的特征,只不过人类识别不了罢了。借由当下火热的大模型技术,对这种格式的数据结构进行处理,最后成功实现。以这个逻辑来发展,是有可能发展出性能更强大的模型的。bGPT 为这条道路开了个好头。