目录
1. 多模态离散化(Multimodal Discretization)
图像离散化
语音离散化
音乐离散化
2. 扩展语言模型的词汇表
3. 基于序列预测的统一训练
4. 高质量多模态生成
5. 统一的数据预处理与增强
https://arxiv.org/abs/2402.12226
https://github.com/OpenMOSS/AnyGPT
我没实际测试,但我估计效果不好,这做下来工作量可是非常大的。
论文中对于统一多模态语言模型的实现,特别是如何提取和编码多模态数据,采用了如下方法来完成跨模态的统一处理:
1. 多模态离散化(Multimodal Discretization)
核心在于将多模态的连续输入(如图像、语音和音乐)离散化为统一的标记序列,具体方法如下:
图像离散化
- 使用 SEED Tokenizer:
- 编码器:ViT(视觉Transformer)将输入的224×224 RGB图像分割为16×16的补丁。
- 特征转换:因果 Q-Former 将图像补丁特征转换为32个因果嵌入。
- 量化处理:通过一个包含8192个条目的VQ代码本将嵌入离散化为离散标记。
- 与语言模型对齐:通过MLP将视觉标记对齐到预训练的unCLIP稳定扩散(unCLIP-SD)的潜在空间。
- 恢复阶段:使用UNet解码器将生成嵌入恢复为原始图像。
语音离散化
- 使用 SpeechTokenizer(基于RVQ-VAE结构):
- 编码器-解码器架构:将语音数据压缩为离散的矩阵,帧率为50 Hz。
- 多层量化:使用8层分层量化器,每层包含1024个条目。
- 语义和副语言信息分离:
- 第一层捕获语义信息。
- 后续层补充声学和副语言细节。
- 语音标记表示:10秒的语音被编码为一个500×8的矩阵,转换为语义标记和声学标记。
- 在语言模型中使用:LLM仅处理语义标记,副语言信息由专门的语音克隆模型处理。
音乐离散化
- 使用 Encodec:
- 卷积自编码器:将32kHz的单声道音频数据量化。
- 残差量化:采用4层RVQ量化器,每层有2048个条目。
- 音乐标记表示:5秒钟的音乐被编码为250个帧,生成250×4的代码矩阵。
- 因果序列展开:将四层音乐标记逐帧展平为因果序列,供语言模型按帧逐步预测。
2. 扩展语言模型的词汇表
为了使语言模型处理离散化的多模态标记,论文对预训练语言模型(如LLaMA-2)进行了词汇表扩展:
- 新增模态标记:将每个模态的特定标记加入语言模型的词汇表。
- 嵌入对齐:对新加入的模态标记嵌入和预测层进行扩展,使其与语言模型的共享表示空间对齐。
- 统一标记序列:将不同模态的标记组合成一个统一的多模态交错序列,用于语言模型训练。
3. 基于序列预测的统一训练
- 使用 下一个标记预测(Next Token Prediction) 任务,训练语言模型以统一处理多模态标记序列。
- 多模态表示融合:
- 通过统一的标记序列,模型在感知、理解、推理和生成任务中实现跨模态对齐。
- 各模态的语义信息在语言模型中共享和对齐。
4. 高质量多模态生成
论文提出通过两阶段生成框架解决多模态高保真生成的挑战:
- 第一阶段:语义建模
- 使用语言模型生成语义级标记,这些标记包含经过模态间对齐的语义信息。
- 第二阶段:感知建模
- 使用非自回归模型(如扩散模型和SoundStorm)将语义标记还原为高保真模态内容。
具体方法:
- 图像生成:将语义级的SEED标记通过扩散模型解码为高质量图像。
- 语音生成:使用SoundStorm将语义标记转换为声学标记,并通过SpeechTokenizer解码为原始语音。
- 音乐生成:Encodec标记被重建为高保真音乐。
5. 统一的数据预处理与增强
论文还提到通过标准化数据集和统一处理机制,确保多模态数据在语言模型中以离散化标记的形式表现,从而实现跨模态对齐与处理。
这套方法以离散化为核心,将多模态数据转化为语言模型能直接处理的离散标记序列,并通过统一训练目标实现了跨模态的语义对齐和生成能力。
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。
许可协议。转载请注明出处!