前言
比赛记录:
本篇的目的是由于参加了公司内部的AI比赛,比赛的题目是基于强化学习的语言模型训练,虽然没有取得成绩,但是还是让我系统性的学习了一遍 LLM 的一些基础技术,最后直接接触到了GPT3-5的背后技术实现。对于学习AI 网上有非常多的资料和论文,于是做一下总结和理解并分享,以便以后有机会继续进一步的学习和应用。也希望有大牛进一步指导。
期望可以总体上从意思上会晓当前模型的原理,并不难哈。
人工神经网络的发展
反向传播算法
Reference:www.jiqizhixin.com/graph/techn...
正向传播
输入层 矩阵 乘以 权重,依次到 输出层,得到模型的输出 y
反向传播
计算得出的输出y和预期的真实结果z有一定的误差,这个误差就叫做误差信号。用误差信号反向传递给前面的各层,来调整网络参数。
根据权重,反向将误差传递
权重更新
利用误差δ_1和之前的权重以及之前e函数的倒数来获得新的权重w'.这里η是系数,它影响着权重改变大小的范围。
对每个权重进行更新之后,则完成了模型的修正。
总结
-
从AI发展的基石,我们可以有个基本的认知,对于神经网络,图像识别、语言识别的处理都是会转化为一个确定大小的数组[x1, x2, x3 ...],才能输入到网络,然后网络输出结果确定大小的数组[y1, y2]。
-
通过调整神经元连接权重来完成对模型的训练
强化学习和语言模型
语言模型
最初的文本处理模型,从RNN 到 Attention Mechanism 到 目前最新的 Transformer 结构。
RNN
Reference:easyai.tech/ai-definiti...
文本处理是一个连续性,不确定大小的数据,需要从时序上来模型理解总体的句子。类似的还有视频、音频。
示意 | 解释 |
---|---|
RNN 跟传统神经网络最大的区别在于每次都会将前一次的输出结果,带到下一次的隐藏层中,一起训练。 | |
对 What time is it 的 模型处理过程。 | |
输入最后一个字时,之前输入结果的权重分布。 | 输入最后一个字时,越晚输入的字符记忆最深。 |
改进措施:
- 抓重点 =》 一个调整缓存权重的优化算法 LSTM 和 LSTM 简化后的GRU
缺点:
-
没法解决过拟合,可能长期记忆不相关的模式
-
对于过长的文本
总结
RNN通过缓存上一次的中间输入,相当于有了"记忆功能",所以他能处理序列数据。
人工算法结合模型,对模型的提升较小,但是可以使得其更适合于特定场景。
Encoder-Decoder
通过压缩数据,提高过长文本的效果。
Encoder(编码器)和 Decoder(解码器)之间只有一个"向量 c"来传递信息,且 c 的长度固定。根据不同的任务可以选择不同的编码器和解码器(可以是一个 RNN ,但通常是其变种 LSTM 或者 GRU )当输入信息太长时,会丢失掉一些信息。 |
---|
总结:
Encoder-Decoder 通过对输入数据 统一压缩的形式,提高模型效果,不过会丢失一些信息。
Attention(注意力)
有没有更好的抓重点办法?Attention 来了。模仿人眼视觉的注意力机制,最早应用于图像识别,但是应用到文本处理,得到了很不错的效果。
图书管(source)里有很多书(value),为了方便查找,我们给书做了编号(key)。当我们想要了解漫威(query)的时候,我们就可以看看那些动漫、电影、甚至二战(美国队长)相关的书籍。
为了提高效率,并不是所有的书都会仔细看,针对漫威来说,动漫,电影相关的会看的仔细一些(权重高),但是二战的就只需要简单扫一下即可(权重低)。
第一步: query 和 key 进行相似度计算,得到权值
第二步:将权值进行归一化,得到直接可用的权重
第三步:将权重和 value 进行加权求和
-
想想看Attention Value能告诉我们什么信息?
-
Source还能是什么?
根据不同的业态和维度,会有不同的注意力机制
总结:
Attention 模仿人眼识别的注意力机制,让模型找到和知识库,相关性最大的内容,从而抓住重点。
Transformer
将Encoder-Decoder 和 Attention 结合,跟进一步优化
Transformer模型结构中的左半部分为编码器(encoder),右半部分为解码器(decoder)
宏观上: |
---|
微观上: 词向量通过同时编码位置和词向量,因此transformer不需要循环输入,可以并行处理一整段句子。位置编码算法:可以用4维数组,编码0-无限长的Index当然,上述公式不是唯一生成位置编码向量的方法。但这种方法的优点是:可以扩展到未知的序列长度。 Self-Attention 就是 注意这个词在输入句子中的 注意力分数。假设我们想要翻译的句子是: 那么 It 在这个句子中指的是什么? The animal didn't cross the street because it was too tired多头注意力 **:**Multi-Head Attention 就是可以在不同维度再对单词进行不同维度的注意力分数。这样可以收集更多语境上的信息,比如人物、地点、时间等。当我们编码单词"it"时,其中一个 attention head (橙色注意力头)最关注的是"the animal",另外一个绿色 attention head 关注的是"tired"。因此在某种意义上,"it"在模型中的表示,融合了"animal"和"tire"的部分表达。这种机制可以说是帮助模型实现类似于发散联想和理解整体语境的能力。 |
总结
Transformer通过结合Attention 和 Encoder-Decoder,使得模型获得以下特性:
-
从文本中抓住和知识库关联性最大的内容
-
可以处理更长的文本
GPT
GPT-2能够处理1024 个token。每个token沿着自己的路径经过所有的Decoder层。试用一个训练好的GPT-2模型的最简单方法是让它自己生成文本(这在技术上称为:生成无条件文本)。或者,我们可以给它一个提示,让它谈论某个主题(即生成交互式条件样本)。GPT2的 decoder | GPT2:要使用Transformer来解决语言模型任务,并不需要完整的Encoder部分和Decoder部分,于是在原始Transformer之后的许多研究工作中,人们尝试只使用Transformer Encoder或者Decoder,并且将它们堆得层数尽可能高,然后使用大量的训练语料和大量的计算资源(数十万美元用于训练这些模型)进行预训练。比如BERT只使用了Encoder部分进行masked language model(自编码)训练,GPT-2便是只使用了Decoder部分进行自回归(auto regressive)语言模型训练。问:每一层Decoder都是相同的吗? 为什么狂堆 Decoder 和 数据集 能让模型更智能?简单说明: 进一步说明: |
---|---|
升级到GPT3.5 | GPT的发展:GPT3在GPT2的基础上,参数量和训练数据更大、ChatGPT在 GPT3基础上,进行了强化学习的应用,和安全合规的限制再开放。 |
GPT之间的区别
总结
GPT 系列通过堆叠 Transformer-Decoder 提高参数量,同时提高数据集的量级,使得模型更加智能。
强化学习
就是让机器人自己根据环境学习。
强化学习的几个关键概念
Agent | It is an entity that interacts with an environment in order to learn how to perform a task |
---|---|
Policy | A mapping from states to actions that defines the agent's behavior. |
Environment | The external world that the agent interacts with, which provides feedback in the form of rewards or penalties. |
State | A representation of the environment at a particular time, which includes all relevant information needed to make a decision. |
Action | A decision made by the agent based on the current state, which affects the next state and the reward received. |
Reward | A scalar value that reflects the desirability of the state-action pair, which the agent seeks to maximize over time. |
Value function | A function that estimates the expected cumulative reward under a given policy |
Model | A representation of the environment that allows the agent to predict the next state and reward given the current state and action. |
Exploration vs. Exploitation | The trade-off between trying out new actions to learn more about the environment (exploration) and taking actions that are known to yield high rewards (exploitation). |
Learning algorithm | A method for updating the agent's policy or value function based on observed experiences |
Distributions | Distributions play an important role in reinforcement learning (RL) as they are used to model uncertainty and randomness in the environment |
再参考文章,入个门复习一下, zhuanlan.zhihu.com/p/466455380
应用场景:
游戏:
推荐算法
常见的RL算法:
Actor-Critic 算法
RLHF算法
RLHF (Reinforcement Learning from Human Feedback) ,即以强化学习方式依据人类反馈优化语言模型。
-
预训练一个语言模型 (LM) ;
-
聚合问答数据并训练一个奖励模型 (Reward Model,RM) ;
-
用强化学习 (RL) 方式微调 LM。
总结
AI的发展:
实践DEMO:做一个配送数据中心协议解析和Mock 的 GPT机器人
开发AI应用,我们不需要理解深层的GPT运行原理,不需要编程基础,只需要用语言开发。
GPT 结合 到应用生态里,也只需要提供OpenAPI 供 AI调用,需要注意的是,AI 没法一次生成标准化的Schema,不能相信来自AI提交的数据。
我们以 Coze Bot 开发举例
新建机器人
新增Promot
可以自动优化,大致写,你是一个专门从自然语言解析协议和mock返回数据的机器人。
增加knowledge
将协议内容上传,自动分割
调试知识
刚开始AI可能理解不清楚上下文,问点问题并且纠正它
发布
实践DEMO2:私有化AI模型开发
在上面的例子中,底层是OpenAPI的大模型,这样会有一些缺点
-
数据泄露
-
费用
-
特定领域技能不足
所以需要私有化部署AI大模型,可以解决上面的问题。
网上有很多教程了。
偏应用:
-
LangChain:简化了LLM集成的框架。
-
LlamaIndex:用于LLM基础搜索的向量存储。
-
FlowiseAI:FlowiseAI 是一个用于构建 LLM 流程和开发 LangChain 应用的拖放用户界面。这是对开发人员来说的极好的选择。
-
TigerLab:这是另一个流行的 LLB 框架,专为生产环境中的 LLM 应用设计。
偏模型后端:
HuggingFace相当于一个模型托管网站,类比于Github, 里面有预训练好的模型,还有数据集、向量库等AI开发工具。 Hugging Face NLP CourseSetting up a working environment with Hugging Face
使用LangChain 在本地部署私有化HuggingFace 模型22|再探HuggingFace:一键部署自己的大模型
请注意,部署大型模型可能会涉及大量的计算资源,并可能需要进行一些优化,以确保模型在不同的硬件和网络条件下都能高效运行。
此外目前有大模型云服务、或者直接使用Torch、TensorFlow开源库运行部署、Docker,等部署方式。