AI大模型通俗笔记

AI大模型通俗笔记

一、基础模型的几个核心技术

Transformer变形金刚技术出现之前,有两个技术一流且重要:一个是CNN,另一个是RNN。CNN是卷积神经网络的缩写;RNN是时序神经网络的缩写,处理和建模时序数据。

1

简单神经网络模型

CNN和RNN之前,先简单描述基础神经网络模型,借助下图:圆圈表示神经元,每个神经元都导出一个信号(代表一个结果)出来,这个信号传导到下一层的所有神经元,经过中间若干层后,所有结果统一汇总到最后一个神经元,这个神经元输出结果。

所有神经网络的目的是搞预测,简单描述:给定一个原始数据X,推测一个结果Y,中间的过程尽管冗长复杂,但终极目的是寻找X和Y之间的映射f, 使得Y=f(x)。

这个映射关系不是数学上非常严谨的函数关系,而是带统计误差项。换句话说,Y和f(x)之间不能简单画等号,两者之间差了一个误差项。

实操中,面对海量数据,通过定义损失函数,我们要搜索的是近似映射关系,使得通过海量数据后,预测的结果和实际结果之间的误差最小化。

这个映射关系拆解到每一个神经元里面,通过大量的参数体现出来。我们通过最小化损失函数,估计出这些参数。

如此,你有大量的原始数据X和Y,你就可以通过原始数据估计出这个模型参数,也就是上图中的W和B,这样的话,等于说你把X和Y之间的映射关系搞清楚了。举个例子,你知道描绘猫的若干特征数据,输入后,据此黑盒子,就可以识别这个物体是不是猫。

显然,你也可以把神经网络模型理解为非参数统计模型。

说完了模型基本原理,关键是估计这个模型的预设参数。估计参数的过程就是训练模型的过程。如何训练模型?大致过程涉及几个方面:

一是设置好损失函数,使得把训练用的输入数据带入这个映射关系后的预测结果和对应的实际结果作差,得到误差。我们把每一组误差平方后加总得到损失函数。

我们的目标是选择一组参数,进行调参,使得你的损失函数最小化。对应上图所示,就是估计出(W,B),使得损失函数最小化。

二是采取一定算法,使得这些参数的估计运算能够尽快收敛,所以梯度下降的算法就很重要。打个比方,我们求一个函数的最优值,一般来说从某一个点开始,按照递归算法,沿着梯度方向不断接近最优点。

问题是一般一个模型好几十亿甚至千亿个参数,梯度方向是千亿级别的维度,怎么沉降下去,的确是个技术活,所以这个里面涉及到很复杂的算法设计。

除了算法设计,在实际递归运算中,因为涉及到大量的数据转化成矩阵后的运算,GPU是必备的硬件设备。

对于千亿级别的模型,从头开始训练显然是非常昂贵的,所以一般在开源中,选取他们的数值作为初始值,然后拿一组某个场景下的数据进行特殊训练,再去求解,这个过程就是fine-tune的过程。这么做,模型容易收敛。

2

卷积神经网络模型CNN

卷积神经网络CNN改进了传统神经网络,基本架构没变,但是中间的过程更加精细化,是一种深度神经网络学习,用于视觉识别领域较多,由Yann Lecun(中文名杨力坤)提出。

卷积是干什么的?卷积是提取图像特征的,把原始像点通过某一个卷积函数相乘后求和,提取这幅图像的某些特征出来,数学上这么来表达。

一副图像出来,比如说一个猫放在你的面前,人可以不费工夫识别出来,无论是面对你,还是背对你。但是你把这个猫交给机器去识别,就没有那么简单了,机器就得像儿童一样,找准了几个猫的关键点,比如说两支耳朵,四只爪子…也就是所谓的特征提取。

卷积是干这个事情的,把一副非常复杂的图像,提取几个关键特征,把他识别出来。

实操中,拿这个来说明上面的数学公式是如何工作的,对应下面的图像:

二维图像像素表示经过卷积核运算,得出一个新的二维图像像素表示。卷积核运算一般是锐化或者钝化边沿,把这个图像进行边沿修饰,得到新的图像。

拿猫的例子来说,图像数字化后,通过像素表达出来。像素的数字表达就类似上图中的最左边的部分。中间的部分就是一个卷积透镜,他这个方框中的数字作用到最左边大的框图中的数字,通过点乘,然后求和得到一个-8, 这个得出的数字可以理解为大框图3*3数字像素的特征提取。

不卷积行不行?当然是可以的。但是卷积后的数据便于更好识别特征,有了特征,预测就更加准确,而我们目的是为了更好,更快预测目标。

就整个CNN操作过程来说,一般遵循几个步骤:首先处理原始图像数据,每一个像素pixel都数字化。然后这些数字取均值,归一化,利用主成分手段进行技术处理,得到每一个像素的标准化数据。

第二步是拿到标准化的数据后,就要利用神经元或者滤波器对其进行卷积处理。

第三步是卷积处理结果出来后,非线性处理卷积结果,一般用的是Relu。进行池化处理,防止过度拟合,把一些不太重要的特征去掉,因为你的目的是为了识别。

最后一步这对这些特征进行分类处理,分类的方式采用logistic 函数,logit(0-1之间的概率大小)值超过某个临界点,那么就识别出这个图像。

所以CNN实际上是一个不断提取特征,然后进行分类,分类其实就是识别或预测的过程。

3

循环神经网络RNN

一般的神经网络处理一组样本,样本之间没有时间序列关系,也就是说第一个样本和第二样本之间没有内在的先后关系。

实践中,我们会遇到时间序列的数据。比如说语言数据。句子中的第一个单词和第二个单词之间是存在明显的先后顺序的,模型只有保留他的这种先后位置关系,出来的结构才符合语言习惯,别人才会懂你。拿中文来说,一般主语肯定放在第一个出现,谓语是第二个,宾语是第三个,弄错了,说出来的句子就很别扭。这个时候就第一个样本和第二个样本之间的时间上的关联关系就不能忽略,应该保留他们之间的这种关系,或者说顺序上的关系。

自然语言处理问题NLP,这类问题就得考虑到这方面。RNN模型就是为这类目标设计的深度学习的神经网络。

下面的图表达了RNN的意思。显然这个网络架构比CNN可能要更加复杂一些。下图中,X是输入变量,S是状态变量,O是输出变量。U、V、W是三个参数矩阵,需要评估。

状态变量带有自回归性质,当期的状态变量和上期乃至以前所有历史期限相关,并且和输入的所有历史时期的输入变量相关。

循环神经网络隐藏层的值s不仅仅取决于当前这次的输入x,还取决于上一次隐藏层的值s。权重矩阵 W就是隐藏层上一次的值作为这一次的输入的权重。

所以这个模型是原来神经网络基础上衍生出来的专门用来处理顺序或者时间序列模型。

训练的过程是类似的。RNN在处理自然语言方面取得了不错的效果,但是 RNN 的缺点有:梯度消失(Vanishing)或梯度爆炸(Exploding)。无论哪一种,梯度很难收敛,参数估计出现较大偏差,模型估计不稳定。

Transformer 技术出来之前,设计一个机器翻译的网络,一般会采用 Encoder-Decoder 架构,编解码器使用 RNN 作为基本的单元架构。输入一个句子到 Encoder 中,将输入转化成一个向量, 提取特征后,得到新的向量,然后作为 Decoder 的输入去预测输出。整个方式的核心是应用 RNN 作为编解码器的基本结构,通过编码器把输入数据编码成一个低维的向量,而使用此低维的向量作为解码器的输入去预测结果。

4

Transformer技术

谷歌在2017年发了一篇论文:Attention is all you need. 仅仅依赖注意力机制就可以解决时序数据问题,从而抛弃CNN和RNN,Transformer 架构由此产生,目前的Bert就是基于transformer架构。

在Transformer 之前,Google 便提出了另一种解决方案来代替 RNN ,这个解决方案便是 Attention。同一年,facebook也发表了一片文章,convolutional sequance to sequence learning. 这两篇文章都是处理序列到序列的创新(seq2seq),本质上来说,两篇文章都是抛弃了RNN结构来做seq2seq任务。

所谓序列到序列(seq2seq)从一个序列到另外一个序列的预测。RNN是递归架构,X输入后,X的每一个词都是一个向量vector, 这个vector输入到中间的状态向量S中,然后你的S序列的长度可能短于原来X的时间长度。

每个S取决于上一期的S以及当期的X,然后输出取决于过去所有的序列S,所以输出是一个一个输出。RNN要逐步递归才能获得全局信息。

但是Attention机制是从序列到序列的输出,不是一个词一个词的蹦跶。把X(t)与原来的每个词向量进行对比,直接得到全局信息。这个思想是革命性的。

在仔细讲解 Attention 之前,可以先来看看处理序列数据的一些解决方案,具体可以参考此博文:《Attention is All You Need》浅读 ,博主讲解的浅显易懂。

咱们把这三个模型做个比较:RNN模型是个递归结构,结果和输入都是序列结构,Y的结构依赖输入的X和上一次的Y;CNN就是说Y仅仅依赖过去几个位置的X,不断提升密集度卷积而已;但是attention机制就是说Y仅仅依赖X,你把所有的X一段话全部进去即可。

可是仅仅X,如果次序发生变化,结果就会不变化,所以attention 机制里面专门给位置坐了另外一个向量。然后把词向量和位置向量相加,得到新的向量。

Attention机制的原理如下(以encoder为例):

1.对输入的数据进行 Embedding,把每个单词的向量表示提取出来。

2.把 Embedding 后的结果融入 Positional 信息。循环神经网络每个时间步输入一个单词,通过这样的迭代操作能够捕获输入句子中单词的位置信息。但是 transformer 模型没有类似于循环神经网络的结构, 所以必须提供每个单词的位置信息给 transformer, 这样才能识别出语言中的顺序关系。所以,输入进 encoder 中的向量不仅仅是单词的 embedding,而是单词的 embedding 和 位置向量 positional encoding 融合后的结果。大致类似下图所示。

3.输入到 Encoder 网络中。

4.输入信息输入到 Attention layer 中来捕获多维度的上下文信息。

5.将注意力学习到的结果和原始输入进行融合后进入 Feed Forward 网络进一步学习。

6.前馈网络的结果和也会和前馈网络的输入做一个融合,类似于 skip-connection。

7.这样便得到了一个 Encoder 单元后的结果。

总体运行过程大致如下图。

通过一个复杂的encoder过程,我们达到了提取、凝练(降维)特征的目的。类似的自注意力机制可以作用于decoder,把特征向量转化为我们想要的结果。

以下为几个自注意力机制的模型应用:

二、大模型的数据

大多数基于Transformer的大型语言模型 (LLM) 都依赖于英文维基百科和Common Crawl、C4、Github的4个大型数据集。这几个数据集是最常用的,基本上大部分大模型训练过程都会使用到,其中CommonCrawl的数据集比较大,而wiki Pedia的数据集比较规整相对来说比较少。

数据为王:大模型预训练中的数据处理及思考—The RefinedWeb Dataset for Falcon LLM 论文解读 https://zhuanlan.zhihu.com/p/641013454

语言大模型(如GPT-3/4、LLaMA和PaLM)使用token作为基本单位进行工作。它们接受文本作为输入,将其转换为token(整数),然后预测接下来应该出现哪些token。通过操作这些token,可以更好地了解它们在语言模型内部的工作原理。

三、大模型训练

一般会有一个基座,在此基础上训练进而调参,可以参考以下详细介绍

https://zhuanlan.zhihu.com/p/636270877

人工智能大模型越来越火了,离全民大模型的时代不远了,大模型应用场景非常多,不管是做主业还是副业或者别的都行,技多不压身,我这里有一份全套的大模型学习资料,希望给那些想学习大模型的小伙伴们一点帮助!

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值