目录
一、深度学习的局限性和大模型发展背景
深度学习模型需要大量标记数据进行训练才能达到良好性能,然而手工标记数据耗时耗力,并且特定任务领域的数据往往比较稀缺,限制了深度学习模型的应用。此外,在有限的数据量下,当参数量增加时,模型容易出现过拟合问题,难以泛化到不同的任务领域。
为了减少数据集构建的工作量,提升模型的领域迁移能力,研究者提出使用基于大规模数据集训练的模型来处理不同的任务。预训练模型(Pretrained Model, PM)提供了一种基于预训练和微调的两阶段解决方案:在预训练阶段,模型从大规模无监督数据中学习领域知识;在微调阶段,只需要少量的标注数据,就可以将预训练阶段学到的领域知识转移到特定任务中,无需从头开始训练模型,也不需要耗费大量的时间和精力进行数据标注工作,从而提高模型的泛化能力。
预训练模型已经在计算机视觉和自然语言处理等方面展现出良好的性能。人工智能技术的三大要素包括数据、算法以及算力,这三者的有机结合共同构建了模型。近年来,传统的“特定任务特定模型”的构建模式逐渐被“一个大规模预训练模型适用于多个下游任务”的模式取代。在这种新模式中,大规模预训练模型也被简称为大模型。研究人员设计先进的算法,并借助海量算力和大规模计算系统的支持,为不同需求的用户训练大模型,以服务于各类人工智能应用。
二、大模型架构
1、多头自注意力机制
首先我们通过一个例子,来对 Self-Attention 有一个直观的认识。假如我们要翻译下面这个句子:
The animal didn’t cross the street because it was too tired.
这个句子中的 it 指的是什么?是指 animal 还是 street ?对人来说,这是一个简单的问题,但是算法来说却不那么简单。
当模型在处理 it 时,Self-Attention 机制使其能够将 it 和 animal 关联起来。
当模型处理每个词(输入序列中的每个位置)时,Self-Attention 机制使得模型不仅能够关注当前位置的词,而且能够关注句子中其他位置的词,从而可以更好地编码这个词。
下面是视觉-语言大模型中图像生成任务的一个例子。
假设我们输入有四个向量,这四个向量是有关系的,而如果我们将self-attention这个模块拿走,那么就相当于是把这四个输入当作毫无关系的向量进行处理然后得到四个输出。所以:self-attention这个模块的作用就是将这四个输入联系起来使我们的输出与这四个输入都有关。假如我们现在要做一个任务输入四张图片:content1,content2,style1,style2,我们想要得到一张包含图片content1,content2的内容同时它又符合图片style1,style2的图片风格的图片,那么我们此时就可以利用注意力机制来对四张图片做一个全方位的考虑,然后再将图片输出(当然,这里说的图片是经过编码后的向量)。
Multi-Head sdlf-attention(多头注意力机制)
普通的注意力机制是指将输入序列中的每个位置作为查询(query),并根据查询与其他位置的关联性(通过计算查询与键(key)之间的相似度)来加权求和其他位置的值(value)。这种方式可以捕捉输入序列内部的依赖关系,但对于长序列或大规模的任务可能存在计算上的困难。
多头注意力机制是对普通注意力机制的扩展,通过同时使用多个独立的注意力头来处理输入序列。每个注意力头都学习自己的查询、键和值的线性变换,然后进行独立的注意力计算。最后,多个注意力头的结果通过线性变换和拼接的方式组合起来得到最终的输出。多头注意力机制可以在保持计算效率的同时,提高模型的表达能力和泛化性能。
与普通注意力机制相比,多头注意力机制具有以下区别和优势:
并行计算:多头注意力可以并行地处理不同的注意力头,提高计算效率,特别是在GPU上的并行计算中。
组合性:通过线性变换和拼接多个注意力头的结果,模型可以融合多个不同角度的注意力表示,从而提供更丰富的信息。