Skip to content

大模型核心技术说明

什么是大模型

大模型是指具有数千万甚至数亿参数的深度学习模型。近年来,随着计算机技术和大数据的快速发展,深度学习在各个领域取得了显著的成果,如自然语言处理,图片生成,工业数字化等。

ChatGPT(全名:Chat Generative Pre-trained Transformer),是OpenAI研发的一款聊天机器人程序,于2022年11月30日发布。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够基于在预训练阶段所见的模式和统计规律,来生成回答,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写论文、邮件、脚本、文案、翻译、代码等任务。

ChatGPT一经发布,5天便成为了最快达到拥有100万线上用户的产品,而我们熟知的Facebook达到100万用户用了10个月。在ChatGPT的带动下,更多AI聊天助手应用如雨后春笋般涌现。

ChatGPT的背后就是GPT-3GPT-3.5GPT-4GPT-4o这样的大模型。

大模型分为大语言模型LLMLarge Language Model)和大多模态大模型LMMLarge Multimodal Model)等。

大模型分类

  • LLMs(大语言模型)专门用于处理自然语言处理任务。它们通常由数十亿到数万亿个参数构成,通过在大型文本语料库上进行训练,学会理解语言的结构、语义、语境和语用等方面。
  • LMMs(多模态大模型)是一类人工智能模型,能够处理多种不同类型的数据输入,包括文本、图像、音频和视频。这些模型通过大规模的数据训练,学习如何联合理解和生成跨多种模式的信息。

OpenAI前不久推出了GPT-4o多模态模型,相较于GPT-3.5大语言模型有了长足的进步。GPT-4o不仅理解文字,甚至能理解图片、音频和视频。

理解大模型

我们可以把大模型理解成函数 y = f(x)x是输入,y是输出。f(x)就是机器学习算法在学习大量学习资料的基础上训练出的模型,根据得到的模型f(x),我们可以根据输入x得到输出结果值y

大模型

例如 y = ax+bab就是模型参数,x是输入,y是输出。机器学习的目的就是根据大量的训练数据(学习资料)找出合适的模型参数。当然这只是简单举例,真正的大模型参数可不止ab两个,GPT-3.51750亿个参数,GPT-4170万亿个参数!同时复杂的大模型也不是一个简单的线性关系,而是能处理非线性关系的复杂模型,例如复杂的大模型内部使用到的逻辑回归、支持向量机、决策树、随机森林等都是用于处理复杂的非线性关系,提高模型预测的准确性和灵活性。

GPT-4为例,大模型的体现在训练数据巨大,它的训练数据有多个互联网文本语料库,覆盖线上书籍、新闻、文章、科学论文、维基百科、社交媒体帖子等等海量的文本。这样的大模型能够更好的理解文本上下文的含义。还体现在训练的参数同样巨大,如上面所述,GPT-4170万亿个参数,训练出的参数决定了大模型如何对输入做出反应,用更多的数据和算力来训练更多的参数,很多时候能够给大模型带来更佳的预测能力。

参数

举个例子:
AI学习做披萨,只允许AI调整面粉、糖的量做出来的披萨口味肯定一般。而如果允许AI调整面粉、糖、油、盐、起司、烤箱温度等,那么AI就能做出口味更佳的披萨。面粉、糖、油、盐、起司、烤箱温度等就是AI训练的参数!随着参数的增加,AI甚至能做出一些全新的品种,新奇的玩意儿。

披萨

GPT-3.51750亿个参数!这样的大模型不再像小模型局限于简单或单项的任务,而是具有更广泛的能力。GPT-3.5能够总结、分类、润色、翻译、提取文本等。

能力

AI领域有著名的鸢尾花数据集,我们拿鸢尾花数据集来说明如何训练出模型f(x),并根据数据预测出结果的。

鸢尾花数据集包含了150个样本,都属于鸢尾属下的3个亚属,分别是山鸢尾、变色鸢尾和维吉尼亚鸢尾。每个样本都包含4项特征,即花萼和花瓣的长度和宽度。

鸢尾花

鸢尾花数据集就是我们的训练数据集(模型的学习资料),我们的目标是当输入一个未知鸢尾花特征值时,能够预测出这个鸢尾花属于哪一个亚属。

预测的过程需要使用到KNN算法。

什么是KNN算法?

KNN算法又称K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。

应用到本例中,我们输入一个未知鸢尾花特征值,KNN算法会找到与这个特征值最相似的K个实例,这K个实例中多数属于哪个亚属分类,那这个鸢尾花就属于哪个亚属分类。

如何找到K个相似实例呢?我们可以使用欧拉距离曼哈顿距离等计算相近度。有兴趣的同学可以自行研究。

看到这里,相信有同学肯定有疑问,并没有看到模型f(x)KNN算法是如何得到模型f(x)的?

其实KNN是一个不需要训练过程的算法。KNN算法比较特殊,可以认为是没有模型的算法。为了理解模型,可以认为训练数据集就是模型本身。

大语言模型的主流架构

2017年6月,谷歌团队发表论文《Attention is All You Need》,提出了Transformer架构。自此,自然语言处理的发展方向被改变了,随后出现了一系列基于Transformer的模型,如BERT、GPT、T5、BART等。

Transformer架构出现之前,大语言模型的主流架构是循环神经网络RNN

RNN

循环神经网络RNN示意图:

RNN

RNN按顺序逐字处理,每一步的输出取决于先前的隐藏状态和当前的输入,要等上一个步骤完成后才能进行当前的计算,因此无法并行计算,训练效率低。

举个例子:
Apple is red。您想让 RNN 在接收输入序列 Apple is 时预测 red。当隐藏层处理 Apple 一词时,会在记忆中存储一份副本。随后,当接收到 is 一词时,它会从记忆中调取 Apple,并根据上下文理解完整序列:Apple is。然后,它可以预测 red 以提高准确性。这使得 RNN 在语音识别、机器翻译和其他语言建模任务中颇为有用。

RNN不擅长处理长序列也就长文本,由于RNN的架构特点,词之间距离越远前面对后面的影响越弱所以它难以有效捕获到长距离的语义关系。

举个例子:
Tom is a cat。 Tom’s favorite food is fish。使用 RNN 时,模型无法记住Tom is a cat。在预测最后一个词时,可能会产生各种各样的食物。

为了解决RNN处理长文本的劣势,出现了RNN的改良版本长短期记忆网络LSTMLSTM 网络在隐藏层添加了一个名为单元的特殊内存块。每个单元都由输入门、输出门和遗忘门控制,使层能够记住有用的信息。例如,单元会记住 Tomcat 这两个词,从而使模型能够预测 fish 这个词。

但是LSTM网络依然没有解决RNN无法并行计算的问题,以及在处理超长文本时,依然受到限制。

于是,Transformer架构应运而生。

Transformer的位置编码和自注意力机制

Transformer架构:

Transformer

自注意力机制

Transformer架构有能力学习输入序列中所有词的相关性和上下文,不再受短时记忆的影响。这正是Transformer架构自注意力机制的功劳。它在处理输入词的时候,不仅会注意这个词本身,还会注意到输入序列中的其他所有词,Transformer有能力知道当前输入词和其他词之间的相关性,即便两个词相隔距离很远。Tom is a cat。 Tom’s favorite food is fish。上面的这个例子,Transformer就能理解Tom是一只猫。

位置编码

Transformer架构的另一项关键创新是位置编码,前面讲到RNN和人类阅读文本一样,对输入序列是按顺序依次处理,这就造成了训练速度的瓶颈。无法并行处理。
Transformer在把词输入给神经网络之前,首先会把词进行向量化,同样它会把词在句子中的位置也向量化。这样神经网络既能理解每个词的含义,又能捕获词在句子中的位置。捕获了词在句子中的位置后,Transformer不再像RNN那样顺序处理,它可以同时处理输入序列中的所有位置,每个输出都可以是独立的计算,不再需要等待前面位置的计算结果。这样模型的训练速度就大大提升了!

Transformer语言翻译的流程

我正在吃饭是如何翻译成I am eating

1. 词和位置向量化:

  • 词嵌入:首先,将中文句子“我正在吃饭”中的每个词(“我”,“正在”,“吃”,“饭”)转换为向量表示。
  • 位置编码:为每个词添加位置信息,以便模型能够理解词的顺序。

2. 编码器处理:

  • 多头自注意力机制:编码器的每一层使用多头自注意力机制来捕捉词与词之间的关系。比如,“我”和“吃饭”之间的关系。
  • 前馈神经网络:在自注意力机制之后,编码器层使用前馈神经网络进一步处理数据。

3. 解码器处理:

  • Masked多头自注意力机制:解码器的每一层首先应用Masked多头自注意力机制,只关注当前词之前的词,防止看到未来的信息。
  • 编码器-解码器注意力机制:解码器使用编码器-解码器注意力机制来结合编码器输出的信息,生成翻译。
  • 前馈神经网络:解码器层也包含前馈神经网络,用于进一步处理数据。
  • 训练数据和目标函数:模型在训练过程中,通过大量的双语句子对进行学习。目标函数(如交叉熵损失)会指导模型生成正确的翻译。通过不断调整参数,模型学会了如何将“我”翻译成“I”,将“吃饭”翻译成“eating”。

4. 生成输出:

  • 线性变换和Softmax:解码器的最后一层输出经过线性变换,然后通过Softmax函数转换为概率分布,表示每个词的可能性。
  • 选择最可能的词:根据概率分布,选择最可能的词作为输出,逐步生成完整的翻译句子。