gpt常见用法 (gpt怎么微调)

上文把主要观点和过程叙述了一遍。但是真正落实和许多技术细节,在本文中补充。

1 数据集细节

我们最初通过在Upwork( upwork.com )上雇佣自由承包商收集了一组一千个问题和自然语言解决方案。然后,我们与Surge AI( surgehq.ai )合作,使用NLP数据标注平台扩大了我们的数据收集规模。在收集完整数据集后,我们要求工人重新解决所有问题,但不允许他们重新解决他们最初编写的问题。我们检查他们的最终答案是否与原始解决方案一致,任何导致不一致的问题都会被修复或丢弃。然后,我们对一小部分问题进行了另一轮协议检查,发现1.7%的问题仍然导致承包商之间的不一致。我们估计这是包含破坏性错误或模棱两可性的问题的比例。可能有更大比例的问题包含微妙的错误。

为了帮助承包商编写问题,我们提供了从一些预设的175B GPT-3模型中自动生成的种子问题。承包商可以直接使用这些种子问题,以其为灵感并进行修改,或者完全自己提出问题。我们指示承包商在解决问题时尽可能详细,并且不要在不同问题之间重复使用问题设置或模板。为了确保承包商不会重复使用问题模板,我们计算了问题之间的成对相似度分数,并使用此分数向承包商提供反馈。

2 超参数

我们在下面列出了一张重要的超参数表。我们对学习率和批次大小进行了一个数量级的扫描,从表中的值向两个方向进行,并且未能找到任何显著的改进。在我们的削减实验中,验证器温度(例如:1.0而不是0.7)和目标(交叉熵而不是均方误差)的其他合理选择也对结果产生了微不足道的影响。

gpt微调模型的优势,gpt微调数据量

表1:除非明确说明,否则所有实验都使用的超参数。

上表中,值得注意的例外包括图8c,该图在训练和测试时都使用了4倍的令牌批次和300个完成。图8中的所有Dropout实验都使用20%的Dropout。图7a使用对100个完成进行训练的验证器,但在测试时搜索更多的完成。

3 计算器注释

计算器的注释不是由人类承包商提供的:它们是通过硬编码逻辑和经过微调的语言模型的组合生成的。自动生成计算器注释的逻辑不完善。它极不可能生成任何不正确的注释,但通常会忽略一些可以注释的行。

在训练期间,注释的令牌和其余解决方案之间没有特殊的区别:它们只是令牌。在测试期间,当存在格式良好的注释时,我们覆盖模型采样,特别是覆盖紧跟“=”和在<<...>>内的令牌。

为了模拟计算器,我们只需使用Python eval函数来评估表达式中的令牌(图9)。超时或引发错误的评估会导致注释被跳过,并按照通常的方式从模型中采样。

我们注意到,我们在本文中使用的计算器的原始版本存在一些轻微的实现错误。因此,我们报告的测试性能略低于实际水平,尽管在大多数实验中,这种差异的大小都不到1%。修复计算器可以在使用完整的GSM8K训练集进行验证测试时将性能提高约1%。

gpt微调模型的优势,gpt微调数据量

图9:计算器采样过程的示意图

4 模型方案示例

我们展示了一些样本,比较了6B和175B规模下微调和验证的结果。由于多样性考虑,样本稍微经过选择。

gpt微调模型的优势,gpt微调数据量

模型方案示例

gpt微调模型的优势,gpt微调数据量

模型方案示例

5 验证器细节

正如第4.2节所述,我们使用联合目标训练验证器,其中模型学习将模型完成标记为正确或不正确,以及原始的语言建模目标。从架构上讲,这意味着我们的验证器是语言模型,具有一个小的标量头,可以按标记输出预测。

我们将这个标量头实现为一个单一偏置参数和一个单一增益参数,它们作用于语言模型的最终非嵌入层所输出的logits(逻辑回归输出)。具体来说,偏置和增益会移动并缩放与词汇表中一个特殊标记相对应的logit。因此,其他标记的logit可以继续表示语言建模目标,而该特殊标记则保留给验证器的预测。

我们可以选择使用与生成器微调相同的预训练语言模型来初始化验证器,或者使用生成器本身。在我们的实验中,后者表现略好一些;我们认为这是因为更好地理解生成器学习的语言分布应该只有在验证器评分该分布的样本时才有帮助。除非另有明确说明,我们在所有实验中都使用其对应的生成器来初始化验证器。

当使用联合目标训练验证器时,我们使用相等比例的语言数据和验证器数据。由于我们对每个原始训练示例采样100个完成品来生成验证器数据,使用相等比例意味着我们有效地将原始语言数据上采样了100倍。为了形成联合目标,我们简单地将验证器损失和语言建模损失不加权地相加,并将这个联合目标的一个epoch定义为观察到每个验证器示例一次。在两个目标中,我们掩盖问题中的标记,并仅训练解决方案中的标记,如图12所示。

gpt微调模型的优势,gpt微调数据量

图12:联合训练目标的可视化。我们掩盖问题中的标记,并且只考虑与解决方案中的标记相对应的损失。

6 验证器可视化

gpt微调模型的优势,gpt微调数据量

图13:由一种经过175B微调的模型生成的五个精选样本,并由一种经过175B令牌级验证器评分。

上图中, 绿色背景表示高验证器分数,红色背景表示低分数。

令牌级验证器的一个好处是这些模型立即可解释:我们可以可视化每个令牌的预测值,并更好地理解验证器如何决策判断样本。上面我们展示了由一种经过175B令牌级验证器在完整训练集上训练的五个不同的筛选问题和模型完成的预测值可视化。

在可视化中,文本的背景颜色对应于该令牌的验证器分数,其中红色表示低值(预测错误),绿色表示高值(预测正确)。表格的第二列总结了验证器的预测结果,第三列指示生成的模型完成是否实际正确或错误。第二列和第三列之间的任何不一致都表明验证器出现了错误。

第一行包括一个真正的正例,其中验证器正确地将完成分类为正确。请注意,模型最初对解决方案是否正确并不确定,并随着解决方案的进展逐渐获得确定性:这可能是验证器训练过程的一个特性,其中它对大量不正确的模型生成的样本进行训练。

第二行包含一个问题,其中解决方案是正确的,但是验证器将其评为不正确。这可能是由于问题描述中“4次”和“4个土豆”之间的歧义。

第三行包含另一个假阴性的例子。但与前一个例子不同的是,这里的模型完成包含一些错误的推理。因此,即使模型完成的最终答案是正确的,自然语言解释也是错误的,因此验证器正确地分配了一个低分数。

在第四行中,我们看到验证器评分一个模型完成,该模型完成一开始是正确的,但随着解决方案的进展,验证器逐渐对解决方案的正确性变得不太自信。在解决方案犯了一个明显的错误(说花费了64美元,而不是64 + 16 + 8 = 88美元)之后,验证器以高度自信的方式判断解决方案是不正确的。

最后一行包含一个假阳性,其中模型在第二步中犯了一个错误,在这一步中,它从钻石珠宝的价格中减去了400美元,而不是黄金珠宝的价格。验证器偶尔会在执行数量和它们之间关系的变量绑定时出现错误。