强化学习及过程监督学习笔记
写在前面
笔者将在这篇文章中,写下有关过程监督,反馈对齐,奖励模型,和数据构造相关的论文的笔记。
论文主要来自Openai的论文。
问题坑
奖励模型是如何输出精确的标记的?在解决方案的每个标记后做出标量预测(具体细节?)。
预训练是怎么把知识注入进模型的,然后如何激活出这些知识
论文挖坑列表
基于过程监督+奖励模型实现复杂数学题的求解
要点如下
0,设计了PRM(过程监督奖励模型)
1,采用了15亿个数学相关的Token(数据集为MathMix)进行pretrain,发现能够提高性能模型的数学性能。
2,训练过generater以一行一行的形式输出该问题的解决方案
3,Openai采用了一个叫做PRM800K的数据集,基于12k个问题,生成了75k个solution,共有800k个steps。
4,数据标记过程为对每一个steps进行标记。
5,数据标记时没有对全部的数据进行标记(因为有一些明显就错了),选择了能骗过PRM的数据集进行标记(也就是模型看不出有问题的,但结果是错的答案),该步在原论文的4.1中有进行讲解,论文译文如下:
我们选择每个问题的N个样本,使得80%是最令人信服的(根据PRMselector)错误答案样本,而剩下的20%是剩下的最令人信服的样本(正确或错误的答案)。我们用PRMlarge为选定的样本打分并在这些分数上进行训练。这个过程确保所有样本在PRMselector下都相对令人信服,大部分已知至少包含一个错误,而我们的整个数据集并没有过度偏向错误答案的解决方案。这种数据标注方案的性能如图4a所示。通过比较最佳拟合线的斜率(有无主动学习),我们估计这种形式的主动学习比均匀数据标注约高出2.6倍的数据效率。
6,ORM为结果监督模型,用于确定ORM目标的自动评分并不完全可靠:通过错误的推理达到正确答案的解决方案会被误判。
7,PRM采用了标准的语言模型pipeline进行训练。
8,PRM的正确率计算为PRM下每一步都正确的概率的乘积。
9,过程监督时只训练到第一个错误的步骤(相比结果监督,可以提供错误的位置)。
10,PRM800K训练时出现了严重偏向错误答案的倾向(这和我们训练BERT时一致,负例过多)
11,采用了多数基线算法?majority voting其实就是生成了多个答案然后比较哪个答案出现的比较多。
12,采用了RM-weighted voting 算法?(未知细节,待填坑)
13,大规模收集人类反馈成本过高,不能轻易用人类标签消除这些因素,需要用PRM_large来监督PRM_small
14,Openai在测试时采用了别的类型的题目,以验证泛化的能力,输入了AP物理,AP化学的题目,发现均有大幅提升(绝对10%的提升)
训练一个verifier用于判断数学题是否正确
这个也是Openai发表的文章,不过是21年的文章了
1,Openai自己人工创建了一个小学数学数据集GSM8K,有8.5K道题目,需要2-8步来解决。具有高多样性,高质量,适度的挑战和自然语言的解决方案。(数据已开源)
2,采用纯微调的性能并不高,GPT-3 6B 模型的准确率只有23%,在T=0.7时生成100个样本能有84%的召回率。
3,Verifier的训练方法为:在步骤2中用generater生100个答案,然后打上正确/错误的标签,然后由(题目,分步答案i,结果)去训练verifier。verifier输出的是“正确与否”的概率。
4,在最后输出的时候,每做一道题目,就用generater生成100个答案,然后用verifier来输出的概率来排序,然后返回得分最高的答案。
5,相比于上一篇论文,这里采用的是ORM(结果监督函数)
6,这样改进后,6B模型准确率提高至40%。(甚至超过了175B模型在没有这么训练的性能),(当然也看出来了这个Verifier的准确率没那么高),采用多数投票可以达到44%
GPT的论文
language_understanding_paper.pdf (openai.com)
1,GPT预训练阶段,采用滑动窗口来训练模型,可以理解为输入前k个字符,来预测第k+1个字符
2,GPT监督学习阶段,采用输入若干个字符,通过一个线性层来直接输出,仅微调linear。
Language Models are Unsupervised Multitask Learners (openai.com)
GPT