0%

《多模态大模型技术原理与实践》学习笔记

  • 大模型的核心特征是“大数据、大算力和大参数量”

自然语言处理主要有两类任务:一类是自然语言理解,另一类是自然语言生成

深度学习期的里程碑论文:

  • Reducing the Dimensionality of Data with Neural Networks

此文掀起了深度学习在自然语言处理领域飞速发展的浪潮。主要提出了三个观点:第一是多层神经网络能够挖掘更多隐含信息;第二是多层神经网络能够有效地实现特征工程的自动化;第三是可以通过逐层初始化的预训练方式解决多层神经网络训练的难题。

  • A Unified Architecture for Natural Language Processing: Deep Neural Networks with Multitask Learning

该文中提出了将词向量作为深层神经网络的目标任务,打开了词向量表征技术的大门。简单来说,词向量技术就是一种特殊的特征提取技术,将词从稀疏空间通过隐藏层投影到低维度的稠密向量空间中,语义相近的词在较低维向量空间中距离也相近,不仅有效解决了矩阵稀疏问题,还实现了特征的自动提取。

  • Efficient Estimation of Word Representations in Vector Space

文中提出了比较经典的Word2vec词向量表征方法,该方法包含两种词向量表征模型,分表示连续词袋模型CBOW(通过目标词上下文的词预测目标词)和Skip-gram(通过目标词预测其附近的词)。

随后,在自然语言处理领域中,学者们又陆续提出了其他典型的词向量表征模型,比如Glove和ELMo 。

BERT模型采用的是双向Transformer的编码器,能获取上下文信息,适合做自然语言理解,而GPT采用的是单项Transformer的解码器,更适合自然语言生成的应用场景。

  • BERT: Pretraining of Deep Bidirectional Transformers for Language Understanding

BERT模型获得成功,行业学者和专家们也总结出提高自然语言处理效果的3个方向。

  1. BERT大模型的效果显著优于BERT模型的效果,因此增加深度学习的层数,增加参数量成为行业优化的一个方向
  2. 预训练模型和微调机制的结合也成为优化自然语言处理效果的一个方向
  3. 多任务学习也成为一个重要的方向,有助于数据互相挖掘,从而带来模型效果的提高

InstructGPT模型的构建流程

  • Training Language Models to Follow Instructions with Human Feedback

InstrcutGPT 和 ChatGPT 的差异

模型 InstructGPT ChatGPT
底座模型 GPT-3.0 GPT-3.5
数据集 指令数据集 人工交互标注数据+指令数据集,最后转化为对话数据集
应用场景 更适合指令型文本生成任务 更适合对话型文本生成任务
推理能力 较强
代码生成能力 较强
泛化能力 较强

读懂ChatGPT的核心技术

3.1 基于Transformer的预训练语言模型

ChatGPT的底座模型是在谷歌提出的原始Transformer模型上的变种。原始Transformer模型以编码器(Encoder)-解码器(Decoder)架构为基础,主要包含两个关键组件:编码器和解码器。解码器用于将输入序列进行映射,转化为中间矩阵,而解码器则将中间矩阵转换为目标序列。编码器和解码器都由自注意力层和前馈神经网络层组成。

自注意力层的主要作用是学习序列中不同位置之间的依赖关系。而前馈神经网络层的主要作用是对特征进行非线性变换,提高整个网络的信息表达能力。通过Softmax函数映射即可获得预测下一个词语的概率值。

编码器的详细结构

每一个编码器都包含一个多头自注意力层和一个前馈神经网络层,并且每层的输出都需要经过残差连接和归一化层进行处理。

残差连接的作用是将输入矩阵X和经过多头自注意力层转化之后的新矩阵连接在一起,即X+MultiHeadAttention(X)。残差链接是行业解决多层网络训练梯度爆炸或者梯度消失等问题,使得网络能够学习更深层的特征表示。归一化的作用是让每一层神经元的输入分布都具有其相同的均值和方差,这有助于加快模型的收敛速度。

多头自注意力机制的计算逻辑十分简单,是将多个单层自注意力模型的输出矩阵按行拼接在一起,然后通过一个线性变换层得到新矩阵。

前馈神经网络层一般由一个或多个线性变换函数或者非线性变换函数构成,主要作用是获得更丰富的特征。在原始Transformer模型中提到的前馈神经网络层包含一个两层的全连接层,第一层的线性变换使用了ReLU激活函数,第二层的线性变换不适用激活函数。

解码器的结构

解码器和编码器的整体结构十分相似,差别在于每一个解码器包含两个多有自注意力层和一个反馈神经网络。

二者主要存在以下两点差异:

  • 是否存在遮挡

第一个多头自注意力层中的自注意力模型带有遮挡操作,好处是可以提高模型的泛化能力。

  • 是否包含编码器的输出作为输入

基于人工反馈的强化学习

1.第一阶段:SFT,即有监督微调

2.第二阶段:训练RM

3.第三阶段,使用PPO算法更新ChatGPT参数

常见的集成方法有以下4种:

  • bagging方法
  • boosting方法
  • stacking方法
  • 混合专家(MOE)方法

大模型+多模态产生的“化学反应”

  • 多模态(Multimodal)指的是在同一个体系或者系统中,同时存在两种或者两种以上的感知模态或数据类型。这些感知模态或者数据类型包含了文本、图像、语音、视频等,每一种模态都从各自的维度分别提供了不同的信息。将不同模态的信息进行汇总,就可以获得更多样、更丰富的信息。

多模态发展综述论文:Language Models are Few-shot Learners

多模态学习指的是同时使用多个类别的数据,共同处理、训练和推理。跨模态学习可以被认为是多模态学习的一个分支,两者关注的重点不同。多模态学习关注的是多个不同模态数据之间的语义对齐,利用多模态数据构建多模态模型来提高传统单模态算法推理的准确性。跨模态学习关注的更多的是将不同模态之间的数据进行相互转换和映射,以便处理下游任务。

跨模态学习的典型应用领域是跨模态检索,例如通过文本检索图像、通过文本检索视频等。由于不同模态数据的多源异构性,跨模态检索的难点在于如何对不同模态的数据进行语义对齐。跨模态检索有两种主流的技术,以图文检索为例,一种是公共空间特征学习技术,一种是跨模态相似性检索技术。

公共空间特征学习技术,指的是将文本和图像分别用各自的编码器映射道公共空间中,得到公共空间中的文本特征和图像特征,然后取各自特征的最后一层向量嵌入进行余弦相似度计算。

跨模态相似性检索技术在文本特征和图像特征比那妈的过程中所采用的方法与公共空间特征学习技术类似,不同的是,没有直接取特征的最后一层向量嵌入进行余弦相似度计算,而是将文本特征和图像特征进行拼接融合,然后加上一层映射层网络,使得映射层网络尽可能的学习到能够度量跨模态相似性的参数。

多模态大模型发展的重大里程碑

  1. Vision Transformer模型

    An Image is Worth 16×16 Words: Transformers for Image Recognition at Scale

  2. VideoBERT

    VideoBERT: A Joint Model for Video and Language Represatation Learning

  3. CLIP模型

    文本-图像多模态预训练大模型

    Learning Transferable Visual Models from Natural Language Sueprvision

  4. Coca模型

    Coca: Contrastive Captioners are Image-Text Foundation Models

    解决图像多模态问题有3种传统的思路,分别是使用单编码器模型、双编码器模型、编码器-解码器模型。

  5. GPT-4

  6. CoDi模型

    CoDi模型开创性的提出了可组合扩散技术,这项技术支持模型的输入为文本、图像、语音、视频的任意组合,模型的输出也可以是文本、图像、语音、视频的任意组合。

    CoDi: Any-to-Any Generation via Composable Diffusion

大模型+多模态的3种实现方法

  1. 以LLM为核心,调用其他多模态组件

    HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in HuggingFace

  2. 基于多模态对齐数据训练多模态大模型

  3. 以LLM为底座模型,训练跨模态编码器

文本多模态技术

图像生成文本主要有3个方法,分别为基于模板的图像描述方法、基于检索的图像描述方法及基于深度学习的图像描述方法。

Multi-Modal Neural Language Models 中采用CNN-RNN框架,首次利用深度学习算法处理图像描述任务,他们将图像的的不同区域及其相应文本映射至同一个向量空间,然后使用深度神经网络与序列建模递归神经网络构建了两种不同的多模态神经网络模型,结合单词和图像语义信息实现了文本和图像的双向映射。

图像多模态技术

Generating Images from Captions with Attention

Generative Adversarial Text to Images Synthesis

语音多模态技术

Parallel WaveGAN: A Fast Waveform Genration Model beased on Generative Adversarial Networks with Multi-resolution Spectrogram

High Fidelity Speech Synthesis with Adversarial Networks

FastDiff: A Fast Cnditional Diffusion Model for High-quanlity Speech and Singing Synthesizers

视频多模态技术

To create What You Tell: Generating Videos from Captions

VideoGPT: Video Generation Using Vq-Vae and transformers

Imagen Video: High Definition Video Generation with Diffusion Models

多模态大模型高效的训练方法

  1. 前缀调优和提示调优
  2. P-Tuning、P-Tuning v2
  3. 低秩适配技术(Low-Rank Adaption, LoRA),可调整的低秩适配(Adaptive Low-Rank Adaptation,AdaLoRA), 量化压缩远程注意力(Quantized Long-Range Attention, QLoRA)

国内多模态大模型介绍

LLaMA-Adapter V2: Parameter-Efficient Visual Instruction Model

VisualGLM-6B

mPLUG-Owl: Modularization Empowers Large Languege Models with Multimodality

国外多模态大模型介绍

Visual ChatGPT: Talking, Drawing and Editing with Visual Foundation Models

InstructBLIP: Towards General-Purpose Vision-Language Models with Instruction Tuning

MiniGPT-4: Enhancing Vision-Language Understanding with Advanced Large Language Models

多模态大模型评测数据集

OwlEval 主要用来评测模型的文本生成能力。

MME: A Comprehensive Evaluation Benchmark for Multimodal Large Models

COCO: Common Objects in Context

VQA: Visual Question Answer

微调技术介绍

LoRA: Low-Rank Adaptation of Large Language Models

AdaLoRA Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning

QLoRA: Efficient Finetuning of Quantized LLMs

模型压缩技术介绍

模型压缩技术是实现高性能目标的关键技术之一。

  • 剪枝

    剪枝技术通过删除多余的节点来减小网络规模,从而降低计算成本,同时保持良好的推理效果和速度。主要步骤为:

    1. 训练一个原始模型,该模型具有较高的性能但运行速度较慢
    2. 确定哪些参数对输出结果的贡献较小,并将其设置为零
    3. 在训练数据上进行微调,以便尽量避免面因网络结构发生变化而导致性能下降。
    4. 评估模型的大小、速度和效果等指标,如果不符合要求,则继续剪枝

    剪枝技术主要分为两种类型:非结构化剪枝和结构化剪枝

    非结构化剪枝通常涉及对权重矩阵中的单个或整行、整列的权重值进行修建。这种方法通常回将修建后的权重矩阵转换为稀疏矩阵。相比之下,结构化剪枝使用滤波器或权重矩阵的一个或多个通道来进行修剪,这种方法不会改变权重矩阵本身的系数程度。(Filter-wise, Channel-wise, Shape-wise)

  • 知识蒸馏

    将大模型获取的知识运用于小模型的训练,可以提高小模型的性能并显著减少其参数两,这就是知识蒸馏与迁移学习在模型优化方面的作用。

    知识蒸馏(Knowledge Distillation, KD)是一种模型压缩技术。

    Distilling the Knowledge in a Neural Network

  • 量化压缩

    模型量化压缩本质上是通过函数映射来进行的。根据映射函数是否为线性关系,可以将量化压缩方式分为线性量化压缩和非线性量化压缩。

    线性量化压缩又被称为均衡量化压缩,它的特点是两个相邻量化压缩值之间的差距是固定的。

    非线性量化压缩的量化压缩间隔并不固定,而基于数据的分布情况进行调整。

从0到1部署多模态大模型

部署环境主要包括显卡、操作系统、显卡驱动程序、并行计算平台(CUDA)和神经网络库(cuDNN)。

多模态大模型的应用通常有以下几种方式:命令行方式、API调用方式、Web页面访问方式

Flask框架是Python的轻量级Web框架,其特点是轻便、灵活、可定制、易上手、具有良好的扩展性,适用于小型网站的开发。Flask框架的基本工作原理是在程序中为每一个视图函数都绑定唯一的URL,一旦用户请求这个URL,系统就会调用这个URL绑定的视图函数,然后返回给浏览器显示。

Gradio框架是一个适用于初学者构建机器学习和深度学习Web页面的Python库,可以简单、便捷地将机器学习和深度学习模型构建为交互式应用程序。

使用Flask框架和Gradio框架可以很好部署网页交互的多模态大模型。此外,还有几种常见的部署方法,即FastAPI、Django、Tornado框架。

## 用多模态大模型打造AI助理

方法论

  • 思维链解决复杂的推理问题

    思维链(COT)是一种基于自然语言的推理过程,包括输入问题、思维推理路径和输出结论3个部分。与传统的提示词模式不同,思维链提示词模式更注重推理过程,因此可以显著地提高多模态大模型在复杂推理任务中的准确性。

  • 思维数进一步提升推理能力

    思维数(TOT)是一个更复杂的模型推理框架,它可以让多模态大模型通过考虑多条不同的推理连进行自我评估,从而在深入思考后做出决策。

  • 采用插值法解决长文本输入问题

    可以简单、有效地解决LLaMa接收、阅读、理解中文长文本token受限的问题的方案之一是让LLaMa采用旋转式位置编码。采用插值法能将LLaMa的位置编码长度成倍地增加,让LLaMa能接收更长的文本输入。

## 多模态大模型在情绪识别领域的应用

VLP-MABSA 多模态大模型的细粒度的属性级情绪识别预训练

使用准确率、精确率、召回率和F1值作为情绪识别领域多模态大模型效果的评测指标。

准确率指的是所有预测正确的数据条数与整个数据集总数据条数的比例。精确率指的是将正确的数据预测为正确的条数与全部的预测为正确的数据条数的比例。召回率指的是将正确的数据条数预测为正确的条数与全部实际正确的数据的条数的比例。F1值是召回率和精确率的调和平均数。综合来说,F1值越高,代表多模态大模型的整体性能越好。