百度飞桨大模型训练营:人工智能与大语言模型

文章目录

生成式AI、提示词工程和零代码应用开发

人工智能概念

这里我们逐一解释这些概念

  • AI是计算机学科下的一个分支学科,旨在使用计算机使之能像人类一样学习和思考问题
  • 机器学习是AI的一个子集,他的一个重要特点就是不需要人去做显示编程(不用手撕函数),让计算机自行学习迭代总结规律,做出预测和决策
机器学习

机器学习下就有很多分支了,例如监督学习、无监督学习、强化学习

  • 监督学习目标是学习原始数据和标签之间的映射关系,他的一个特点就是是给定了原始数据和标签,让计算机自行总结归纳,他的经典的应用有对事物的分类、回归预测等
  • 无监督学习就是相对于监督学习,他只给原始数据而不给定标签,让计算机自行发现数据中的模式或规律,他的应用有聚类(就是分组)、降维、异值检测、自编码器(大语言模型中用到)、自监督学习等
  • 强化学习就是让模型在环境中采取行动,不断尝试,让他在环境中获得最大奖励的手段,类似于人类学习的模式,趋利避害,例如Alpha Go
深度学习

深度学习具有这三类学习的一些特点,也有自己的模式,属于都有点但都不是的状态

关于深度学习的核心就是两个词,一是连接,二是深度

连接的意思是说,他采用了类似于神经元的模式,互相连接,而深度则是指一层一层的神经元来进行映射

深度学习有一个很经典的应用就是识别手写的数字,通过输入,进行一层一层的运算,让计算机逐渐掌握这些数字更深层次的特征,从而输出正确的结果

关于深度学习的过程一般有如下几个步骤

数据准备、模型构建、损失函数定义、优化器选择、模型训练、模型评估与调优、模型应用与部署

这些步骤里面最最重要的其实是模型训练这一步

这里有一些基本步骤的概念我们需要了解到

  1. 前向传播:将训练数据输入到模型中,经过各层的计算得到输出
  2. 计算损失:根据损失函数计算模型的输出与真实标签之间的损失值
  3. 反向传播:根据损失值计算梯度,并讲梯度反向传播到模型的每一层
  4. 参数更新:使用优化器根据梯度信息更新模型的权重参数
  5. 迭代训练:重复上述步骤,直到在验证集上的性能达到满意水平或达到预设的训练轮数

那么生成式AI其实就是深度学习的一种应用,而大语言模型并不都是生成式AI,生成式AI也不都是大语言模型,例如文生图、文生视频,还有谷歌的Bert模型都是特例

大语言模型

大语言模型又称为LLM(large language model)是一种利用自然语言的深度学习的模型

简单说就是给一些输入,就会返回一定的输出,在这个过程中仿佛就有了理解,记忆的能力

他能完成的任务就很多了,可以是续写,翻译,总结,对话等

大语言模型为什么大

他的"大"一是体现在训练的数据量巨大,用这些数据进行无监督学习

二是体现在参数量巨大,这些参数实际上就类似于方程的系数,用于刻画一定的现象,概念等

这里就有一个Scaling Law,称之为规模定律,当模型大小,数据集大小和用于训练的计算浮点数的增加,模型的性能会提高,为了获得最佳性能,三个因素必须同时放大,当达到一定规模时,就会发生智能涌现的现象

大语言模型为什么通用

大模型也被称为通用大模型,一方面随着模型和参数的增加,一个模型对于更多的情景都能产生不同的相应的成果,不需要像分别对词频统计,主题提取等各类方面分别计算推导,只需要一个模型足矣

大语言模型的灵魂

在2017年6月Transformer模型发布之后,大语言模型就开始发展了

Transformer之前

那么在Transformer之前,主流的神经网络是RNN(循环式神经网络),而RNN训练是需要等待上一个步骤完成之后才能开始进行下一步的计算,无法并行计算,训练慢。除此之外RNN难以训练长文本,非常容易以往,文本距离越远,前面对后面的影响就越弱

为了解决RNN的两个问题,他的改良版本LSTM(长短期记忆网络)就出现了 ,但是也没有办法完全解决上述问题,而在处理极长的序列时,仍然受到限制

Transformer的优势

Transformer有两个优势,一个是自注意力机制,另一个是位置编码

他的自注意力机制体现在即使两个词的位置隔得很远,他依然可以捕捉到他们的相关性,依赖关系,而这不仅仅是两个词之间的关系,而是所有词之间的关系

他的位置编码优势主要是因为首先在语言里,字的位置是非常重要的,他对于每个词赋予位置编码之后,那么就不需要再按照顺序进行输入,因为相当于词是自带位置的,那么此时就可以一次性输入大量的词,每一次都可以独立的计算,不需要等待其他位置的结果,也就是说可以进行并行训练

Transformer内部原理

大语言模型输出的本质其实很简单,就是预测出下一个出现概率最高的词,例如搜索栏中预测的自动补全,那么在Transformer内部究竟发生了什么,他是如何进行预测的呢

第一步------数据预处理

  1. 我们在输入一段文字时,计算机实际上是无法理解和处理的,这时候就需要进行预处理,这里称之为TOKEN化(或分词),他是将句子、段落、文章等长文本分解为以字词(token)为单位的数据结构
  2. 在所有的文本都变成了token,数字化之后就需要进行词嵌入,他其实就是将token转化为一个向量,可以简单理解为他是一个有序的数组,他可以捕捉到token之间的语义和语法关系
  3. 这时我们就需要加入之前提到的位置编码,捕捉词在句子中的顺序关系,维度和嵌入层一样(向量相加),得到一个包含了一个位置信息的新向量

这三步预处理之后,我们就把长文本转化成了包含语法语义和位置信息的向量

第二步------编码器

编码器的主要作用就是把上面的输入转化成一种更抽象的表示形式,这种表示形式也是向量,最主要的就是要捕捉向量之间的关键特征了

能进行这样的操作,主要就是依靠这里的自注意力机制了

  1. 自注意力机制会计算句子中每个词与其他词之间的相关性得分,作为注意力权重,他反映了词与词之间的关联程度,可以用于确定哪些词在当前上下文中更加重要
  2. 利用这些权重,调整每个词之间的表示,权重高的词将获得更大的关注,而权重低的词则相对被忽略
  3. 最后使用权重对输入序列每个位置的嵌入向量加权求和,得到一个新的表示向量

这样我们就把一开始的向量加入权重得到新的向量

而这样的编码器,自注意力机制在这个过程中有很多个,称之为多头自注意力模块,他们可以从不同角度出发,互不影响,独立运算,关注文本中的不同方面或特征,类似于我们每个人对于同一件事情的看法是不同的

第三步------解码器

这里解码器有两个输入来源,一是由编码器的输出,二是由之前上一轮文本的输出作为新的输入

解码器的过程与编码器类似,不同之处是解码器会关注输入序列里所有其他词,在解码器中,自注意力只会关注这个词和他前面的所有词,确保生成过程的顺序性和正确性

最终就可以得到包含输入序列的全局信息、关于当前位置信息和已生成的序列信息的新向量

第四步------Linear层和Softmax层

最后阶段实际上就是输出的步骤

  1. 在Linear层中,会将输入的向量映射到一个更大的logits向量上。logits向量的长度通常与词汇表的大小一致,每一个向量上的数字对应一个词汇
  2. 在Softmax层中,将logits向量的每一个数字转换成0到1之间的概率值,这些概率表示词汇在当前位置被选择的概率,并且所有位置的概率和为1

最终会将最高概率的token输出

拓展:Transformer的变形

  • 仅编码器模型(自编码器模型)

这类编码器只使用Transformer的编码器部分,Bert是这种模型的代表,他通过遮蔽部分输入并预测这些遮蔽的词来训练模型,从而学习文本的上下文表示,这类模型适用于理解语言的任务,如文本分类、情感分析、问答等

  • 仅解码器模型(自回归模型)

这类模型只使用Transformer的解码器部分,并且通常通过自回归方式生成文本,GPT系列是这种模型的代表,他们通过预测序列中的下一个此来生成文本,这种模型适用于文本生成任务,文章协作,摘要生成

  • 编码器-解码器模型(序列到序列模型)

这类模型同时保留了两部分,T5、Bart等模型是这种结构的例子,通常适用于一个序列转换为另一个序列的任务,如机器翻译,文本摘要等

产生类GPT模型的过程

这分为四个步骤,首先是无监督学习,得到基座大模型,之后是有监督的微调,得到可以对话的模型,再是有监督学习,得到能够评估回答质量的奖励模型,最后是强化学习,使之生成结果符合人类期望

第一步------无监督学习

  1. 数据准备与预处理:海量文本作为原料,使用分词器(tokenizer)将这些文本数据转化为token序列。如GPT3训练数据的整体规模是3,000亿的token
  2. 任务构建:采用无监督学习的方式训练模型,常见的方法是掩码语言建模(Masked Language Modeling,MLM)。在这个任务中,我们随机选择输入序列中的一些token进行掩码(即用特殊符号替换)然后要求模型根据上下文预测这些被掩码的token
  3. 模型训练:将预处理后的token序列输入到Transformer模型中,经过Transformer得到每个可能token的预测概率。将预测的概率分布与真实值(即被掩码的token)进行比较,计算交叉熵损失。通过反向传播算法,计算损失函数对模型参数的梯度,并使用优化算法(如梯度下降)更新模型的权重。这个过程迭代进行,直到模型在验证集上达到满意的性能

第二步------监督学习微调

第三步------人工评价和监督学习

第四步------强化学习提升回复质量

当模型生成一个行为或回答时,奖励函数会计算一个奖励值,这个奖励值会被优化算法用来计算损失函数,并进一步用来更新大模型的权重,在这个过程中我们不断朝着增加这些行为或回答发生概率的方向进行调整

以此不断往复就可以逐渐熟练

相关推荐
搏博10 分钟前
神经网络问题之一:梯度消失(Vanishing Gradient)
人工智能·机器学习
z千鑫10 分钟前
【人工智能】深入理解PyTorch:从0开始完整教程!全文注解
人工智能·pytorch·python·gpt·深度学习·ai编程
YRr YRr18 分钟前
深度学习:神经网络的搭建
人工智能·深度学习·神经网络
威桑20 分钟前
CMake + mingw + opencv
人工智能·opencv·计算机视觉
爱喝热水的呀哈喽24 分钟前
torch张量与函数表达式写法
人工智能·pytorch·深度学习
肥猪猪爸1 小时前
使用卡尔曼滤波器估计pybullet中的机器人位置
数据结构·人工智能·python·算法·机器人·卡尔曼滤波·pybullet
LZXCyrus1 小时前
【杂记】vLLM如何指定GPU单卡/多卡离线推理
人工智能·经验分享·python·深度学习·语言模型·llm·vllm
我感觉。2 小时前
【机器学习chp4】特征工程
人工智能·机器学习·主成分分析·特征工程
YRr YRr2 小时前
深度学习神经网络中的优化器的使用
人工智能·深度学习·神经网络
DieYoung_Alive2 小时前
一篇文章了解机器学习(下)
人工智能·机器学习