模型训练基础:监督学习与chatgpt预训练·第七课笔记整理 | 豆包MarsCode AI刷题

161 阅读5分钟

模型训练基础:监督学习与chatgpt预训练

ChatGPT 模型的训练过程主要包括语言模型的预训练,根据用户数据微调(Finetune) ,使用强化学习方法提升模型知识涌现能力。这几部分的本质都还是利用随机梯度下降法,使用数据进行有监督训练

神经网络的训练过程

目前,神经网络最常用的模型训练方法为监督学习(Supervised Learning) 。

监督学习的目标,是通过给定的输入(ChatGPT 的输入文本)和输出(ChatGPT 的输出文本)数据来学习一个函数,使得对于新的输入数据,可以预测其对应的输出。在监督学习中,我们通常将输入数据称为特征,将输出数据称为标签或目标变量。

神经网络的输入和输出

现在假设我们有两个样本,分别标注好对应的特征和类别:

样本 1:体长:0.5 米,身高:0.3 米,食量:0.03 kg;类别:猫

样本 2:体长:1.2 米,身高:0.6 米,食量:0.2 kg;类别:狗

根据这些样本,我们构造一个最简单的神经网络(单层前馈全连接线性层),其本质就是一个矩阵乘法运算,对数据做了一次线性变换,其结构如下:

82png

其中的每一个绿色节点代表一个特征,一个蓝色节点代表一个类别结果,图中的数字代表该节点的编号牌,每一条连接线都是这个微型神经网络的权重参数,这些权重参数就是模型需要通过样本学习和拟合的。

模型的含义是,针对每一个样本,分别计算其属于猫和狗的值,比较得到的两个值更加偏向哪个类别。

假设这些权重参数分别为:w00​, w01​, w10​, w11​, w20​, w21​,其中参数的下标即节点的编号。那么,当我们计算样本 1 的结果时,就可以得到:

  • 样本 1 的猫类别值:class0​=0.5w00​ + 0.3w10​ + 0.03w20​

  • 样本 1 的狗类别值:class1​=0.5w01​ + 0.3w11​ + 0.03w21​

你可以自己尝试写一下,针对样本 2 的计算式子。

通过比较 class0​, class1​ 这两个结果值的大小,如果猫类别值比较大,说明样本属于猫,反之则属于狗。

神经网络的预测推理

在模型开始训练之前,首先需要随机初始化一套参数值,用于模型的推理(也叫模型的预测)。在 ChatGPT 中,用户每次调用 ChatGPT 回答一次问题,技术上都叫做一次模型的推理或预测。

神经网络的损失函数

损失函数是机器学习中一个重要概念,用于衡量模型预测结果真实结果之间的差距,在这个例子中,上述模型参数预测得到的类别和真实的标注类别不一致,这就需要损失函数来衡量。

而模型的训练,就是通过优化损失函数来更新模型的参数,使得模型的预测结果更加准确。常见的损失函数是交叉熵 (Cross Entropy  ,我们也以该损失函数为例,对猫狗分类的例子做介绍。

梯度下降法

定义

梯度下降法是一种常用的优化算法,用于求解函数的最小值。在机器学习中,我们通常使用梯度下降法来更新模型的参数,使得损失函数最小化。 梯度下降法的基本思想是沿着函数的负梯度方向不断迭代,直到达到最小值。

具体来说,我们首先随机初始化模型的参数,然后计算损失函数J(w)对于每个参数的偏导数,即梯度∇ J(w)。接着,我们沿着梯度的反方向更新参数,使得损失函数逐渐减小。这个过程可以通过以下公式表示:w=w−α × ∇ J(w)。

梯度下降法训练实施过程

通过调整模型参数权重,实现了模型的训练任务

ChatGPT 的预训练过程

ChatGPT 模型的输出和前面提到的猫狗分类也非常相似。在猫狗分类中,总共对每一条样本预测分别属于猫、或狗的概率,即p(猫∣样本)和p(狗∣样本)。而在 ChatGPT 预训练中,以下面为例:

例句:jionlp 是一个好用的开源_____

那么,根据 ChatGPT 建模形式,模型的输入是 jionlp 是一个好用的开源,需要让模型输出下一个字是什么。

假设我们的 token 词表总共有 50000 个。ChatGPT 模型输出了一个 50000 维度的向量,d50000​=[0.123,−1.092,...,0.037],其中每一个维度值都对应了一个 token,假设第 3333 维度对应了词表 token ,而这一维度值是最大的,我们就可以将此 token 抽取出来,作为结果放置在例句后面。反复执行这一操作,就可以填补完整句子:

例句:jionlp 是一个好用的开源 软件

以概率公式表示,即 p(软∣jionlp是一个好用的开源) 和 p(件∣jionlp是一个好用的开源软)。

除此之外,ChatGPT 的训练流程和上述的猫狗分类没有本质差别。

总结

  • 监督学习是根据数据,对模型参数进行拟合,在神经网络模型中非常常用。
  • 监督学习最常用的损失函数是交叉熵。
  • 监督学习采用梯度下降法进行模型的参数训练。
  • ChatGPT 的预训练就是一个监督学习过程。