一、ChatGPT原理
1、模型越大、参数越多,并不是效果越好。因为过拟合,出现模型能力不一致问题。只能说刚开始好,后面就不一定了。
2、ChatGPT为了解决模型的不一致问题,使用了人类反馈来指导学习过程,对其进行了进一步训练,用到的技术是强化学习(Reinforcement Learning,RL)
3、强化学习是机器学习的一种方法,用于描述和解决智能体(Agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。
4、强化学习是 状态--动作--奖励 的无限循环
5、ChatGPT强化学习步骤;
1)监督学习(SFT模型),预训练的语言模型在少量已标注的数据上进行调优,以学习从给定的prompt列表生成输出的有监督的策略。
通过人为标注问题和答案,实现大模型的微调。
2)训练奖励模型(reward):生成新的数据集,生成训练奖励模型(RM)。
人为输入问题进入SFT模型,给出不唯一的答案,模型本来是基于概率的事件,SFT回答的结果是奖励模型的数据集。
奖励模型的目的是为SFT模型输出进行打分,代表这些输出对于人类来说可取程度有多大,即模仿人类偏好的系统。SFT回答的较好,RM模型分数打的越高,如果回答的较差,那肯定就低。
3)强化学习(PPO算法):强化学习被应用于通过优化RM模型来调优SFT模型,所使用的特定算法称为近端策略优化(PPO)。
二、大模型主流模型架构(Decoder-Only)
LLM分类一般分为三种:自编码模型(encoder)、自回归模型(decoder)和序列到序列模型(encoder-decoder)。
自编码模型AE(AutoEncoder model):代表是BERT,基本原理是在输入中随机MASK掉一部分单词,根据上下文预测这个词。AE模型常用于内容理解任务。
自回归模型AR(Autoregressive model):代表是GPT,基本原理是从左往右学习的模型,只能利用上文或者下文的信息。通常用于生成式任务。
序列到序列模型(Sequence to Sequence Model):代表模型是T5,encoder-decoder模型同时使用了编码器和解码器,它将每个task视作序列到序列的转换/生成。通常用于需要内容理解和生成的任务,比如机器翻译。该模型的目的为构建任务统一的框架:将所有NLP任务都视为文本转换任务。
除了训练效率和工程实现上的优势外,在理论上是因为Encoder的双向注意力会存在低秩问题,这可能会削弱模型表达能力,就生成任务而言,引入双向注意力并无实质好处。
Encoder和Decoder参数太大。所以在同等参数量、同等推理成本下,Decoder-Only架构就是最忧选择了。
三、ChatGPT的成长史
1、什么是ChatGPT?
2022年11月30日OpenAI发布的全新聊天机器人模型。真正像人类一样来交流。
2、GPT -1
3、GPT -2
4、GPT -3
四、LLM主流开源大模型
1、LLM主流大模型类别:
1)ChatGLM-6B
清华大学提出的一个开源、支持中英双语的对话语言模型,基于General Language Model GLM架构,具有62亿参数。
GLM是一种基于自回归空白填充目标的通用预训练框架。GLM将NLU任务转化为包含任务描述的完形填空问题,可以通过自回归生成的方式来回答。
原理:在输入文本中随机挖去一些连续的文本片段,然后训练模型按照任意顺序重建这些片段。完形填空问题是指在输入文本中用一个特殊的符号替换掉一个或多个词,然后训练模型预测被替换掉的词。
改动是transfomer中的Decode模块。
2)LLaMA (Large Language Model Meta AI)
LLaMA训练数据是以英语为主的拉丁语系,另外还包含了来自GitHub的代码数据,LLaMA的训练目标是语言模型,即根据已有的上文去预测下一个词。和GPT系列一样,是Decoder-Only结构.
不同点:
- 使用了pre_layer Norm,同时使用RMSNorm归一化函数。
- 激活函数:将ReLU非线性替换为SwiGLU激活函数。
- 位置编码:去除了绝对位置编码,采用了旋转位置编码RoPE。
3)Bloom
Hugging Face公司训练的大语言模型。包含了英文、中文、法文等。模型架构也是Decoder-only。
不同点:
- 在embedding层后添加了一个layer normalization,来使训练更加稳定
- 使用了pre layer Norm,提升稳定性
- 激活函数:采用了GeLU激活函数
- 位置编码:去除了绝对位置编码,采用了相对位置编码
4)BaiChuan
百川智能在2023年6月发布的大模型,其支持中英双语。训练目标也是语言模型,即根据已有的上文去预测下一个词。模型架构也是Decode-Only。