大模型预训练与微调

一、基础知识

  1. 机器学习数学原理:梯度下降(gradient descent)在机器学习中应用十分的广泛,不论是在线性回归还是Logistic回归中,它的主要目的是通过迭代找到目标函数的最小值,或者收敛到最小值。
  2. 深度学习
  • 神经网络:神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术。详见地址:神经网络——最易懂最清晰的一篇文章-CSDN博客
  • 超参数
    • 学习率:每次迭代的步长,决定着目标函数能否收敛到局部最小值以及何时收敛到最小值。学习率越高,步长越大。

    • batch:当训练数据过多时,无法一次将所有的数据送入计算,所以需要将数据分成几个部分(多个batch),逐一地送入计算训练。即每次输入网络进行训练的批次(batch number)

    • batch_size:每个batch里面样本的大小。即一次训练所选取的样本数。同时多张卡上训练的图片数量。

      • 一般GPU性能好的时候,batchsize越大,准确率越高

      • 通过并行化提高内存的利用率,提高训练速度
      • 单个epoch的迭代次数减少了,参数调整慢,若达到相同的识别精度,需更多的epoch
      • 适当batch size使梯度下降方向更明确
      • 当数据量较小时,1个batch的训练方式收敛效果较好
    • mini-batch size:每张卡上训练的图片数量。

    • epoch:表示将输入的数据进行前向和后向传播的一个过程。其设置的大小与数据集的多样化程度有关,多样化程度越强,epoch越大。

    • iterations:完成一次epoch所需要的batch个数。即batch number就是iterations。

【注】因为CPU和GPU内存架构是以2的幂进行组织的,所以经常选择批的大小为2的幂次。且batch size 越大,训练速度则越快,内存占用更大,但收敛变慢。

3.Token

Token是对输入文本进行分割和编码时的最小单位。它可以是单词、子词、字符或其他形式的文本片段。

4.Embeding嵌入

嵌套是一种相对低维的空间,可以将高维矢量映射到这种低维空间中。通过使用嵌套,可以让在大型输入(比如代表字词的稀疏矢量)上进行机器学习变得更加容易。
在理想情况下,嵌套可以将语义上相似的不同输入映射到嵌套空间里的邻近处,以此来捕获输入的语义。一个模型学习到的嵌套,也可以被其他模型重用。

二、大模型预训练

预训练(Pre-training)是语言模型学习的初始阶段。在预训练期间,模型会接触到大量未标记的文本数据,例如书籍、文章和网站。在大量未标记文本数据上训练语言模型。预训练目标是捕获文本语料库中存在的底层模式、结构和语义知识。

1.预训练的主要特点

(1)无监督学习:预训练通常是一个无监督学习过程,模型在没有明确指导或标签的情况下从未标记的文本数据中学习。

(2)Masked Language Modeling:模型经过训练以预测句子中缺失或屏蔽的单词,学习上下文关系并捕获语言模式

(3)Transformer架构:预训练通常基于Transformer的架构,因为这种架构擅长捕获远程依赖关系和上下文信息

2.预训练的主要下游任务

(1)文本生成:预训练模型可以生成联欢且有上下文相关的文本,使他们对聊天机器人、虚拟助手和内容生成等应用程序有价值

(2)情感分析:通过对带有情感标签的数据集的预训练模型进行微调,他们可用于对文本输入的情感进行分类,协助完成客户反馈分析和社交媒体监控等任务

(3)命名实体识别:可以对预训练模型进行微调,以从文本中识别和提取命名实体,从而促进新闻文章或法律文件中的实体识别等任务

三、大模型微调

微调(Fine-tuning)是指在预训练(Pre-training)阶段之后,使用特定任务的有标签数据对模型进行进一步的训练和调整参数,以使其在目标任务上获得更好的性能。

1.模型微调步骤

(1)冻结部分参数:为了保持与训练模型的初始表示能力,通常会冻结部分参数,特别是底层的参数,使其在微调过程中保持不变。

(2)更新顶层参数:针对目标任务的特定要求,通常会添加一个或多个新的层,这些层称为顶层(top layers)。这些顶层将与与训练模型链接,并更具目标任务的标签数据进行训练。在微调过程中,主要是更新这些顶层参数。

(3)调整参数:在微调过程中,通过反向传播算法和优化方法(如随机梯度下降),根据目标任务的损失函数来调整模型的参数。由于预训练模型已经通过大规模无监督学习进行了初始化,微调过程通常只需要较少的训练数据和较少的迭代次数。

2.大模型SFT(supervised fine tuning)

动作:Fine-tuning需要微调整个预训练整个预训练语言模型,且额外添加了新的参数,而Prompting则可以将整个预训练语言模型的参数保持固定,而只需要添加prompt来预测效果即可。

P-tuning:将Prompt转换为可以学习的Embedding层,并用MLP+LSTM的方式来对Prompt Embedding进行一层处理

P-tuning V2:每一层都加入可训练的prompts,只对prompt部分的参数进行训练,而语言模型的参数固定不变

3.提示工程-prompt

prompt engineering:通过开发和优化提示词,帮助语言模型用于各种应用场景和研究领域。

1.one shot、few shot。

2.思维链(CoT):是一种改进的提示策略,用于提高LLM在复杂推理任务中的性能,如算术推理、常识推理和符号推理。

3.Freeze微调:通过用于计算机视觉领域,不同于文本微调方法,这种方法的核心思想是冻结部分模型层,以保留模型在预训练任务中学到的特征。

4.指令微调(IT):增强模型的能力和可控性。IT使用(INSTRUCTION,OUTPUT)对进一步训练LLM,其中INSTRUCTION表示模型的人工指令,OUTPUT表示遵循INSTRUCTION的期望输出。

5.基于强化学习的进阶微调方法RLHF

(1)监督微调(SFT):使用精选的人类回答来微调预训练的语言模型以应对各种查询

(2)奖励模型微调:使用一个包含人类对同一查询的多个答案打分的数据集来训练一个独立的,通常比SFT小的奖励模型RW

(3)RLHF训练:利用PPO算法,根据RW模型的奖励反馈进一步微调SFT模型

RLHF是实现难度最大的微调方法。

6.LoRA

(1)在原始预训练语言模型(PLM)旁增加一个旁路,做一个先降维再升维的操作,以此模拟内在秩

(2)训练的时候固定PLM的参数不变,只训练降维矩阵和升维矩阵,即优化器只优化右路的参数

(3)模型的输入、输出维度不变,两边共同模型的输入,输出时将与plm的参数叠加

(4)用随机高斯分布初始化,用全0矩阵初始化

(5)矩阵全零初始化,右路结果会接近于0,使得模型优化的初始点就和原本的大模型保持一致

和其他大部分高效微调方法一样,固定预训练语言模型的参数,额外增加新的参数来学习,不同的是新增的模块是一个低秩的模块,即增加低秩分解的矩阵来适配下游任务

模型预训练微调深度学习中两个关键的概念,尤其是在自然语言处理(NLP)领域。它们在机器学习模型的发展过程中扮演了重要角色。 1. **预训练(Pre-training)**: 预训练是指在一个大型未标记的数据集上对模型进行初始训练的过程,通常使用自监督或无监督学习方法。例如,BERT、GPT这类模型通过阅读大量的文本数据,学习语言的统计规律,从而建立基础的语言理解能力。这一步不针对特定任务,而是为模型提供泛化的背景知识。 2. **微调(Fine-tuning)**: 微调是在预训练模型的基础上,对模型的部分或全部参数进行调整,以适应特定的应用场景或任务。比如,对于预训练的BERT,当你想要让它识别情感分析、命名实体识别等任务时,会在预先加载好的模型基础上,用少量的标注数据进行调整,以便模型能更好地理解和生成与任务相关的输出。 3. **部署(Deployment)**: 部署是指将训练好的模型应用到实际环境中,如在线服务、移动应用或嵌入式设备。部署通常包括模型压缩(减小模型大小以适应资源有限的环境)、量化(将模型参数转换为更紧凑的数值表示)和推理优化(提高模型在实际运行中的速度)。此外,还需要考虑安全性、可解释性和实时性能等因素。 相关问题: 1. 预训练模型的优点是什么? 2. 如何选择合适的微调策略? 3. 在模型部署时,如何平衡模型性能和计算资源?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值