一、ChatGPT 模型训练整体介绍
ChatGPT 模型规模庞大,其训练过程主要包括语言模型的预训练、根据用户数据微调以及使用强化学习方法提升模型知识涌现能力,本质都是利用随机梯度下降法进行有监督训练。考虑到非 AI 领域读者理解困难,本节先介绍神经网络的训练流程和基础概念,并举例说明,以便更好理解模型训练过程。
二、神经网络的训练流程及基础概念
(一)监督学习概述
目前神经网络最常用的训练方法是监督学习,目标是通过给定的输入(如 ChatGPT 的输入文本)和输出(如 ChatGPT 的输出文本)数据学习一个函数,使得对于新的输入数据能预测其对应的输出。输入数据称为特征,输出数据称为标签或目标变量,这一过程就像是老师教学生做题,让学生通过观察已知问题和答案的关系学会解决新问题。
(二)具体监督学习流程示例:猫狗分类
1. 神经网络的输入和输出
以对猫狗特征分类为例,假设我们有两个标注好特征和类别的样本:
样本 1:体长:0.5 米,身高:0.3 米,食量:0.03 kg;类别:猫
样本 2:体长:1.2 米,身高:0.6 米,在食量:0.2 kg;类别:狗
据此构造一个最简单的神经网络(单层前馈全连接线性层),其本质是矩阵乘法运算。假设其权重参数分别为,计算样本 1 属于猫和狗的类别值分别为:
样本 1 的猫类别值:
样本 1 的狗类别值:
同样可写出样本 2 的计算式子。通过比较两个类别值大小判断样本所属类别。
2. 神经网络的预测推理
在模型训练前需随机初始化一套参数值用于推理(预测)。以给定的一套参数值计算上述样本属于猫和狗的类别值,这些值实际是 log 化的概率值,通过 softmax 公式可转换为真实概率值。如样本 1 属于猫的概率猫样本和属于狗的概率狗样本等,由此判断样本所属类别,发现与真实标注数据可能不符,需计算两者差距。
3. 神经网络的损失函数
损失函数用于衡量模型预测结果与真实结果之间的差距,常见的是交叉熵损失函数。其公式为,其中为样本数量,为类别数量,表示第个样本的真实标签是否属于第个类别,表示模型对第个样本属于第个类别的预测概率。以猫狗分类例子计算可得不同样本的损失值,总和损失值可反映模型预测与真实情况的差异,交叉熵值越小说明两个概率分布越接近。
4. 梯度下降法
梯度下降法是用于求解函数最小值的常用优化算法,在机器学习中用于更新模型参数使损失函数最小化。基本思想是沿着函数的负梯度方向不断迭代。以猫狗分类例子阐述其训练实施过程,通过调整权重参数(如)的值,可使模型对样本的预测更偏向正确类别,同时损失函数值下降,表明模型训练朝着正确方向前进。对所有参数按此方式迭代训练,可得到优质模型,整个过程就是利用梯度下降法实现模型训练,模型训练过程类似从高山山峰逐渐下来,损失函数值不断下降,每一次迭代都使模型更接近最优状态。
三、ChatGPT 的预训练过程
ChatGPT 的预训练过程与上述猫狗分类的监督学习过程没有本质差别。以 “jionlp 是一个好用的开源_____” 为例,ChatGPT 模型以 token 序列的 embedding 作为输入,输出一个高维度向量,通过比较向量各维度值对应 token 的大小,抽取最大维度值对应的 token 作为结果,反复执行可填补完整句子,同样涉及对输入输出的处理以及利用类似监督学习的方式进行训练。
四、总结
- 监督学习是依据数据对模型参数进行拟合,在神经网络模型中应用广泛。
- 监督学习常用交叉熵作为损失函数。
- 监督学习采用梯度下降法进行模型参数训练。
- ChatGPT 的预训练本质上是一个监督学习过程。