数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
- 线性模型
- 支持向量机
- 朴素贝叶斯
- 决策树
- knn
- 集成学习
- 梯度提升树
- 数据预处理
- 模型评估
- 降维
- 聚类
- 半监督学习
- EM 算法
- 最大熵算法
- 隐马尔可夫模型
- 概率图与条件随机场
- 边际概率推断
- 主题模型
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- CRF ++
- lightgbm
- xgboost
- xgboost 使用指南
- scikit-learn
- spark
- numpy
- matplotlib
- matplotlib 使用指南
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
二十五、InstructGPT [2022]
-
给定一些任务的样本作为输入,
large language model: LLM
可以被 "提示prompted
" 从而执行一系列的自然语言处理任务。然而,这些模型经常表现出一些非预期的行为,如:编造事实、生成有偏见或有毒的文本、或者干脆不遵循用户的指令。这是因为最近许多大型语言模型所使用的语言建模目标(即,预测来自互联网的网页上的next token
)与"follow the user’s instructions helpfully and safely"
的目标不同。因此,论文《Training language models to follow instructions with human feedback》
(即,InstructGPT
)说:语言建模的目标是misaligned
的。避免这些非预期的行为,对于在成百上千个应用中部署和使用的语言模型来说,尤其重要。论文
《Training language models to follow instructions with human feedback》
在align
语言模型方面取得进展,其中通过训练语言模型使其按照用户的意图行事。这既包括显式的意图(如,遵循指令),也包括隐式的意图(如,保持真实,没有偏见、没有毒性、或其它伤害性)。使用《A general language assistant as a laboratory for alignment》
的语言,InstructGPT
的作者希望语言模型是helpful
的(它们应该帮助用户解决他们的任务)、honest
的(它们不应该捏造信息或误导用户)、以及harmless
的(它们不应该对人或环境造成生理、心理或社会伤害)。论文在后面内容中详细阐述了对这些标准的评估。作者专注于微调方法从而
aligning
语言模型。具体而言,作者使用来自人类反馈的强化学习reinforcement learning from human feedback: RLHF
来微调GPT-3
从而遵循广泛的书面指令(如下图所示)。这项技术使用human preferences
作为奖励信号来微调GPT-3
。-
首先,作者根据候选合同工
contractors
在筛选测试中的表现,雇用了一个由40
名contractors
(他们是labelers
)组成的团队来标注数据。筛选测试见后面的内容。 -
然后,作者收集了一个数据集,该数据集包含关于一些
prompts
的理想输出行为desired output behavior
(由labelers
撰写的demonstration
)。这些prompts
包括被提交给OpenAI API
的、以及一些labelers
提供的。论文用这个数据集来训练supervised learning baseline
。因为很多用户在调用
OpenAI API
,因此OpenAI
可以从日志记录中获取很多prompts
。这一步是通过比较小的数据集,利用监督学习微调,从而得到一个良好的初始模型(作为初始策略)。
这里的
prompt
就是代表了用户意图的指令,而labeler
撰写的demonstration
就是ground-truth
用于生成模型的监督信号。 -
然后,作者收集了一个人工标注的
comparison
数据集,这个comparison
数据集比较了在更大的API prompt
集合上的输出(labelers
对同一个prompt
的多个模型输出进行人工排序)。对于相同的
prompt
,这里有来自相同模型的不同输出(因为随机采样的原因)、也有不同模型的输出(因为我们有各种各样的模型)。作者在这个数据集上训练一个奖励模型
reward model: RM
,从而预测labelers
会更喜欢哪个model output
。奖励模型的目的是考察哪个被生成的文本更能匹配
prompt
,而不关心这些文本是如何生成的。当然,最新的策略函数作为模型之一,使得奖励模型见过策略函数的输出,使得奖励模型能够对策略函数的输出结果打分。 -
最后,作者使用这个奖励模型作为奖励函数,并通过
PPO
算法(《Proximal policy optimization algorithms》
)来强化学习微调supervised learning baseline
从而最大化这个奖励。注意,微调有两种:一种是监督微调,一种是强化学习微调。
这个过程如下图所示。这个过程使
GPT-3
的行为与特定人群(主要是论文的labelers
和researchers
)的声明偏好stated preference
相一致,而不是任何更广泛的 "人类价值human value
" 概念。作者把得到的模型称为InstructGPT
。论文主要通过让
labelers
在论文的测试集上对模型输出的质量进行评估,测试集由来自held-out customer
(在训练数据中没有出现)的prompt
组成。论文还在一系列公共的自然语言处理数据集上进行了自动化评估automatic evaluation
。论文训练三种规模的模型(1.3B
、6B
和175B
参数),所有的模型都使用GPT-3
架构。论文的主要发现如下:-
与
GPT-3
的输出相比,labelers
明显更喜欢InstructGPT
的输出。在测试集上,尽管参数少了
100
多倍,但1.3B
参数的InstructGPT
模型的输出却比175B
参数的GPT-3
的输出更受欢迎。这些模型具有相同的架构,不同之处仅在于:InstructGPT
在human feedback data
上进行了微调。即使作者在GPT-3
中加入了few-shot prompt
从而使其更好地遵循指令,这一结果也是成立的。175B InstructGPT
的输出在 $ 85\pm 3\% $ 的时间里比175B GPT-3
的输出更受欢迎,而在 $ 71 \pm 4\% $ 的时间里比few-shot 175B GPT-3
更受欢迎。InstructGPT
模型还根据labelers
生成了更合适的输出,并更可靠地遵循指令中的显式约束explicit constraint
。 -
InstructGPT
模型在真实性方面比GPT-3
有所提高。在
TruthfulQA benchmark
中,InstructGPT
产生真实的和有信息的答案的频率是GPT-3
的两倍。在没有针对GPT-3
进行对抗性选择adversarially selected
的问题子集上,InstructGPT
的结果同样强大。在API prompt distribution
的"closed-domain"
任务中,其中输出不应该包含输入中不存在的信息(如摘要和closed-domain QA
),InstructGPT
模型编造输入中不存在的信息的频率约为GPT-3
的一半(分别为21%
和41%
的幻觉率hallucination rate
)。 -
InstructGPT
在毒性方面比GPT-3
有小的改进,但没有偏见bias
。为了测量毒性,论文使用
RealToxicityPrompts
数据集,并同时进行自动化评估和人工评估。在遵从prompt
的情况下,InstructGPT
模型产生的毒性输出比GPT-3
少25%
左右。在Winogender
和CrowSPairs
数据集上,InstructGPT
比GPT-3
没有明显改善。 -
可以通过修改
RLHF
微调程序,将公共自然语言处理数据集上InstructGPT
的性能退化降到最低。在
RLHF
微调过程中,作者观察到在某些公共自然语言处理数据集上InstructGPT
与GPT-3
相比有性能退化,特别是SQuAD, DROP, HellaSwag, WMT 2015 French-to-English translation
。这是一个 "对齐税alignment tax
"的例子,因为论文的alignment procedure
是以降低我们可能关心的某些任务的性能为代价的。可以通过将PPO update
与增加pretraining distribution
的log likelihood
的update
混合在一起(PPO-ptx
),从而大大减少这些数据集上的性能退化,而且不影响labelers
的偏好得分。 -
InstructGPT
可以推广到没有产生任何训练数据的"held-out labelers"
的偏好。为了测试
InstructGPT
的泛化性,论文对held-out labelers
进行了初步实验,发现他们对InstructGPT
的输出与GPT-3
的输出的偏好率与training labelers
大致相同。然而,我们还需要做更多的工作来研究这些模型在更广泛的用户群体中的表现,以及它们在人类预期行为有分歧的输入中的表现。 -
公共自然语言处理数据集并不能反映出语言模型的使用情况。
作者将
GPT-3
在两类数据上监督微调:-
第一类数据是
human preference data
(即InstructGPT
所使用的)。这个就是监督微调
baseline
。 -
第二类数据由两个不同的公共自然语言处理任务的数据:
FLAN
和T0
(《Multitask prompted training enables zero-shot task generalization》
)(尤其是T0++
变体)。这些数据集由各种自然语言处理任务组成,并且每个任务结合了自然语言指令。得到的分别是
FLAN
和T0
上监督微调的模型。
在
API prompt distribution
上:-
FLAN
和T0
模型(即,在这两个数据集上监督微调得到的GPT-3
)的表现比监督微调baseline
(即,在labelers demonstration
上监督微调得到的GPT-3
)略差。这表明在公共数据集上微调的模型,在应用到具体场景中还是有性能的
gap
。 -
而
labelers
明显更喜欢InstructGPT
而不是这些模型(InstructGPT
与监督微调baseline
相比有 $ 73.4 \pm 2\% $ 的胜率,而T0
和FLAN
模型与监督微调baseline
相比分别只有 $ 26.8 \pm 2\% $ 和 $ 29.8 \pm 2\% $ 的胜率)。
-
-
InstructGPT
模型对RLHF finetuning distribution
之外的指令表现出了很好的泛化能力。作者定性地探究了
InstructGPT
的能力,发现它能够遵从指令从而用于summarizing code
,回答关于code
的问题,有时还能遵循不同语言的指令,尽管这些指令在fine-tuning distribution
中非常罕见。相比之下,
GPT-3
也能完成这些任务,但需要更仔细的prompting
,而且通常不遵循这些领域的指令。这一结果令人激动,因为这表明InstructGPT
能够泛化"following instructions"
的概念。即使在模型得到很少直接监督信号的任务上,模型也会保留一些alignment
。 -
InstructGPT
仍然会犯一些简单的错误。例如,
InstructGPT
仍然会不遵循指令、编造事实、对简单的问题给出冗长的对冲回答hedging answer
(即,正反两个方面都回答)、或者不能检测到具有错误前提的指令。
总体而言,论文的结果表明:利用
human preferences
对大型语言模型进行强化学习微调可以大大改善它们在各种任务中的行为,尽管在提高它们的安全性和可靠性方面还有很多工作要做。 -
-
相关工作:
-
关于从
human feedback
的alignment
和learning
的研究:我们建立在以前的技术上,使模型align to
人类的意图,特别是来自human feedback
的强化学习reinforcement learning from human feedback: RLHF
。RLHF
最初是为在模拟环境和Atari
游戏中训练简单的机器人而开发的,最近被应用于微调语言模型以总结summarize
文本。这项工作反过来又受到在对话、翻译、语义解析semantic parsing
、故事生成、评论生成和证据抽取evidence extraction
等领域使用human feedback
作为奖励的类似工作的影响。《Memory-assisted prompt editing to improve gpt-3 after deployment》
使用written human feedback
来增强prompt
,并提高GPT-3
的性能。- 还有一些工作是在
text-based environments
中使用具有规范先验normative prior
的强化学习来agent
(《Training value-aligned reinforcement learning agents using a normative prior》
)。
我们的工作可以被看作是
RLHF
在broad distribution
的语言任务上对于aligning language model
的直接应用。最近,语言模型
alignment
的意义也受到了关注。《Alignment of language agents》
对语言模型中因misalignment
导致的行为问题进行了分类,包括产生有害的内容、以及博弈错误的目标。- 在同时进行的工作中,
《A general language assistant as a laboratory for alignment》
提出将语言助手language assistants
作为alignment research
的测试平台,研究一些简单的baseline
,以及它们的scaling
特性。
-
训练语言模型来遵从指令
follow instruction
:我们的工作也与语言模型的跨任务泛化研究有关,其中语言模型在广泛的公共自然语言处理数据集(通常以适当的指令为前缀)上进行微调,并在一组不同的自然语言处理任务上进行评估。这个领域有一系列的工作,这些工作在训练和评估数据、指令的格式、预训练模型的大小、以及其他实验细节方面都有所不同。各项研究的一致发现是:在一系列自然语言处理任务上对语言模型进行带指令的微调,可以提高语言模型在
held-out
任务上的下游性能,无论是在zero-shot setting
还是在few-shot setting
的情况下。还有一个相关的工作是用于导航
navigation
的instruction following
,其中模型被训练为遵从自然语言指令从而在simulated environment
中导航。 -
评估语言模型的危害
harm
:修改语言模型行为的一个目标是缓解这些模型在现实世界中部署时的危害。这些风险已经有了广泛的记录。语言模型可以产生有偏见的输出biased output
、泄露私人数据、产生错误的信息、以及被恶意使用。对于一个全面的回顾,我们建议读者阅读《Ethical and social risks of harm from language models》
。在特定领域部署语言模型会产生新的风险和挑战,例如在对话系统中。有一个新兴但不断增长的领域,旨在建立
benchmark
来具体评估这些危害,特别是围绕毒性toxicity
、思维定势stereotype
、以及社会性的偏见social bias
。在这些问题上取得重大进展是困难的,因为对语言模型行为的善意干预可能会产生副作用。例如,由于训练数据中的偏见关联
prejudicial correlation
,减少语言模型的毒性的努力可能会降低其对under-represented groups
的文本建模的能力。 -
修改语言模型的行为从而缓解危害:有很多方法可以改变语言模型的生成行为
generation behavior
。-
《Process for adapting language models to society (palms) with values-targeted datasets》
在一个小型的、value-targeted
的数据集上对语言模型进行了微调,这提高了模型在问答任务中坚持这些value
的能力。 -
《Mitigating harm in language models with conditional-likelihood filtration》
对预训练数据集进行了过滤,它删除了一些文档,在这些文档上语言模型有很高的条件概率来生成一组由researchers
书写的trigger phrase
。当在这个过滤过的数据集上进行训练时,他们的语言模型产生的有害文本较少,代价是语言建模性能略有下降。trigger phrase
类似于黑名单,由researchers
来预先指定。 -
《Recipes for safety inopen-domain chatbots》
使用了多种方法来提高聊天机器人的安全性,包括数据过滤、在生成过程中阻止某些单词或n-grams
、safety-specific control tokens
,以及human-in-theloop
的数据收集。 -
其他缓解语言模型产生的偏见的方法有:
word embedding regularization
、数据增强、null space projection
以使敏感token
的分布更加均匀、不同的目标函数,或因果干涉分析causal mediation analysis
。 -
还有一些工作是利用第二个(通常是较小的)语言模型来引导语言模型的生成,这个想法的变体已经被应用于减少语言模型的毒性(
《Self-diagnosis and self-debiasing: A proposal for reducing corpus-based bias in nlp》
)。
-
-
25.1 方法
25.1.1 High-level 方法论
-
我们的方法遵循
《Fine-tuning language models from human preferences》
和《Learning to summarize from human feedback》
的方法,他们将其应用于文风延续stylistic continuation
和摘要任务。我们从一个预训练的语言模型、一个prompt
分布(在这个分布上我们希望我们的模型产生aligned output
)、以及一个训练有素的human labelers
团队作为开始。然后,我们应用以下三个步骤(参考下图):-
第一步:收集
labeler demonstration
数据,并训练一个有监督的策略supervised policy
。我们的
labelers
在input prompt distribution
上提供所需行为的demonstration
。然后,我们使用监督学习在这些数据上监督微调一个预训练的GPT-3
模型。注意,
GPT-3
模型是预训练好的,这里仅仅是微调。监督微调好的模型作为初始策略。 -
第二步:收集
labeler comparison
数据,并训练一个奖励模型reward model
。我们收集模型输出之间的
comparisons
的一个数据集。在这个数据集中,对于给定的输入,labelers
指出他们更喜欢哪一个输出。然后我们训练一个奖励模型来预测人类喜欢的输出。 -
第三步:使用
PPO
(《Proximal policy optimization algorithms》
)对奖励模型进行策略优化。我们使用奖励模型的输出作为
scalar reward
。我们强化学习微调supervised policy
,从而使用PPO
算法优化该奖励。
步骤二和三可以连续迭代:在当前的最佳策略上收集更多的
labeler comparison
数据,用来训练新的奖励模型,然后再训练新的策略。在实践中,我们的大部分comparison
数据来自我们的supervised policy
,还有一些来自我们的PPO policy
(即,通过PPO
微调的supervised policy
)。 -
25.1.2 数据集
-
我们的
prompt
数据集主要由被提交给OpenAI API
的text prompt
组成(由客户提交的),特别是那些在Playground
界面上使用早期版本的InstructGPT
模型(通过监督学习在我们的demonstration data
的子集上训练)。 使用Playground
的客户被告知:他们的数据可以被用于训练进一步的模型。在本文中,我们没有使用生产环境中使用API
的客户的数据。我们启发式地对
prompt
去重(共享长的公共前缀的prompt
被认为是重复的),并且我们将每个user ID
的prompt
数量限制在200
个。我们还根据user ID
创建了训练集、验证集和测试集,因此验证集和测试集不包含训练用户的数据。为了避免模型学习潜在的敏感的客户细节,我们在训练集中过滤了所有的个人身份信息personally identifiable information: PII
。训练集/验证集/测试集是通过
user ID
来拆分的。每个
user ID
的prompt
限制为200
个,使得prompt
的分布比较均匀。必须有一个训练好的
InstructGPT
模型部署到OpenAI API
,这个训练好的InstructGPT
模型如下文所述。 -
为了训练最开始的
InstructGPT
模型,我们要求labelers
自己写prompts
。这是因为我们需要一个instruction-like prompt
的initial source
来引导这个过程,而这些类型的prompts
很少通过API
提交给常规GPT-3
模型。我们要求labelers
写三种类型的prompt
:即,使用
OpenAI API
的用户很少会提交这些类型的prompts
,因此需要让labelers
人工构造。Plain
:我们简单地要求labelers
想出一个任意的任务,同时确保任务有足够的多样性。Few-shot
:我们要求labelers
想出一个指令,以及针对该指令的多个query/response pair
。User-based
:我们有一些准备提交给OpenAI AI
的use-cases
,我们要求labelers
想出与这些use-cases
相对应的prompt
。
从这些
prompt
中,我们产生了三个不同的数据集,用于我们的微调程序:-
我们的
supervised fine-tuning: SFT
数据集,带有labelers
的demonstration
,用于训练我们的SFT
模型。对于
SFT
,请注意,相比较于customer prompts
,我们有更多的labeler-written prompts
。这是因为,在项目开始时,我们让labelers
基于一个用户界面来写指令,这个界面要求他们给出一个总体的template instruction
以及该指令的few-shot
例子。我们通过采样不同的few-shot examples
的集合,从相同指令中合成了多个SFT datapoints
。读者猜测:
SFT
模型很大可能就是部署到OpenAI API
的第一个模型,用于收集customer prompts
。 -
我们的
RM
数据集,带有labelers
对模型输出的排名,用于训练我们的RM
。对于
RM
而言,对于每个prompt
我们收集了 $ K $ 个输出从而用于排名,并在所有的 $ C_K^2 $ 对comparisons
上训练模型。因此,训练模型的ranked pair
的数量要比prompt
的数量要大一个数量级。 $ C_K^2 = \frac{K\times (K-1)}{2!} $ 。 -
我们的
PPO
数据集,没有任何human labels
,用作RLHF
微调的输入。PPO
数据集虽然没有human labels
,但是它根据奖励函数来对输出进行评估。
SFT
数据集包含大约13K
个training prompt
(来自API
的和labelers
编写的);RM
数据集有33K
个training prompt
(来自API
的和labelers
编写的);PPO
数据集有31K
个training prompt
(仅来自API
)。关于数据集大小的更多细节见下表。 -
为了了解我们的数据集的构成,在下表中我们显示了由我们的
contractors
标注的API prompts
(特别是RM
数据集)的use-case
类别的分布。大部分的use-case
都是生成式的,而不是分类或问答。注意,这里只有
customer prompts
(来自API
),而不包括labeler prompts
。我们
labeled prompt metadata
的一个子集如下表所示。请注意,我们的annotation fields
在项目过程中发生了变化,所以不是每个prompt
都被annotated
为每个字段。我们还在下表中展示了一些说明性的
prompt
(由researchers
编写,模仿提交给InstructGPT
模型的prompt
类型)。我们在附录
A
中提供了关于我们数据集的更多细节。{}
表示模板,"""
表示分隔符。 -
更多提交给
InstructGPT
模型的prompt
(来自论文附录A.2.1
)。 -
提交给
GPT-3
模型的prompt
(来自论文附录A.2.2
),通常而言它们更少地instruction-style
并且包含更显式的prompting
。注意这里有些prompt
,其中用户意图是不清晰的。提交给
GPT-3
的prompt
和提交给InstructGPT
的prompt
是不同的。这是因为我们希望GPT-3
也是instruction-following
风格的。 -
还有一些关于数据集的统计信息:
25.1.3 任务
-
我们的训练任务有两个来源:
- 由我们的
labelers
编写的prompt
数据集。 - 在我们的
API
上提交给早期InstructGPT
模型的prompt
数据集(见Table 6
)。
这些
prompt
非常多样化,包括生成、问答、对话、摘要、抽取、以及其他自然语言任务(见Table 1
)。我们的数据集超过
96%
是英语,然而接下来我们也探索了我们的模型对其他语言的指令的响应能力、以及完成编码任务。对于每个自然语言的
prompt
,任务往往是通过自然语言指令直接指定的(例如"Write a story about a wise frog"
),但也可以通过few-shot
样本(例如给出两个青蛙故事的例子,并提示模型生成一个新的青蛙故事)、或隐式延续implicit continuation
(例如提供一个关于青蛙故事的开头)来间接指定。在每一种情况下,我们都要求我们的labelers
尽力推断出撰写prompt
的用户的意图,并要求他们跳过任务非常不清晰的input
。此外,我们的labelers
还考虑到隐式意图implicit intention
(如响应的真实性)、以及潜在的有害输出(如,有偏见或有毒的语言),这些由我们提供给他们的指令(见附录B
)和他们的最佳判断来指导。因为
labelers
需撰写这些prompt
的demonstration
(即,人工标注)。 - 由我们的
25.1.4 Human data 收集
-
为了产生我们的
human demonstration
数据和human comparison
数据,并进行主要的评估,我们通过ScaleAI
雇用了一个由大约40
名contractors
组成的团队。与早期在摘要任务上收集human preference data
的工作相比,我们的输入跨越了更广泛的任务范围,并且偶尔会包括有争议的敏感话题。我们的目的是选择一批对不同人口群体的偏好敏感、并且善于识别有潜在危害output
的labelers
。因此,我们进行了一个筛选测试,旨在衡量labelers
在这些方面的表现。我们选择了在这个测试中表现良好的labelers
。-
我们的选择程序如下:
-
和敏感语言标志的一致性:我们创建了一个
prompts
和completions
的数据集,其中一些prompts
和completions
是敏感的(即任何可能引起强烈负面情绪的文本,无论是有毒的、性的、暴力的、判断judgemental
的、政治的等等)。我们自己给这些数据贴上了sensitivity
标签,并测量了我们(指的是论文的researchers
)和labelers
之间的一致性。completion
和demonstration
的含义相同,都是针对生成任务来人工撰写的label
。 -
ranking
上的一致性:我们把提交给OpenAI API
的prompts
、以及几个model completions
,让labelers
按整体质量对completions
进行排名。我们测量他们与researcher ranking
的一致性。 -
sensitive demonstration
写作:我们创建sensitive prompts
的一个小集合,在这些prompts
中,对输出的适当响应需要细微的差别。然后,我们用1-7
的Likert scale
对每个demonstration
进行评分,并计算出每个labeler
的平均demonstration score
。 -
为不同群体识别敏感语言的自评估能力
self-assessed ability
:我们希望选择一个labelers team
,他们整体上能够识别广泛领域的敏感内容。由于法律原因,我们不能根据人口统计学标准来雇用contractors
。因此,我们让labelers
回答这个问题:"对于哪些话题或文化群体,你能轻松识别敏感言论?" ,并将此作为我们选择程序的一部分。
在收集了这些数据后,我们选择了在所有这些标准上表现良好的
labelers
(我们在匿名的数据版本上进行选择)。由于第四个准则是主观的,我们最终根据这些标准主观地选择了labelers
,但是我们也有soft cutoff
(即,过滤阈值):在敏感语言标记、以及ranking
方面有75%
的一致性,在sensitive demonstration
写作上获得6/7
分。 -
-
labelers
人口统计信息:
更多信息详见论文附录
B.1
。 -
-
在训练和评估过程中,我们的
alignment
准则可能会发生冲突:例如,当用户请求到一个潜在的有害的response
时。在训练中,我们优先考虑对用户的帮助性helpfulness
(如果不这样做则需要做出一些困难的设计决定,我们把这些决定留给未来的工作)。然而,在我们的最终评估中,我们要求labelers
优先考虑真实性truthfulness
和无害性harmlessness
(因为这才是我们真正关心的)。 -
如同
《Learning to summarize from human feedback》
,我们在项目过程中与labelers
紧密合作。我们有一个入职过程,对labelers
进行项目培训,为每项任务编写详细的说明(下图分别为prompt distribution
和RealToxicityPrompts distribution
上final evaluations
的指令,详细内容见附录B.2
),并在共享聊天室中回答labelers
的问题。 -
作为一项初步研究来看看我们的模型如何泛化到其它
labelers
的偏好。我们雇用了一组单独的labelers
,他们不产生任何训练数据。这些labelers
来自相同的供应商,但没有经过筛选测试。尽管任务很复杂,但我们发现
labelers
之间的一致率相当高:training labelers
在 $ 72.6 \pm 1.5\% $ 的时间内相互同意(即,一致率)。-
held-out labelers
的一致率为 $ 77.3\pm 1.3\% $ 。 - 作为比较,在
《Learning to summarize from human feedback》
的摘要工作中,researcher-researcher
的一致率为 $ 73\pm 4\% $ 。
25.1.5 模型
-
我们从
GPT-3
预训练的语言模型开始。这些模型是在互联网数据上训练出来的,可以适应广泛的下游任务,但其行为特征characterized behavior
不明显。从这些模型开始,我们再以三种不同的技术来训练模型:-
监督微调
supervised fine-tuning: SFT
:我们使用监督学习在labeler demonstrations
上监督微调GPT-3
模型。我们训练了16
个epochs
,使用余弦学习率衰减,以及dropout rate = 0.2
。我们根据验证集上的RM
得分来选择最终的SFT
模型。RM
是怎么来的?根据后面内容的说法,奖励模型RM
是从SFT
模型开始,而SFT
模型又依赖于监督微调,所以这是一个相互依赖的问题。在项目开始时,可以先根据验证损失来选择最佳的
SFT
模型,然后再来训练奖励模型,然后再利用训练好的奖励模型再来选择最佳的SFT
模型。与
《Recursively summarizing books with human feedback》
类似,我们发现我们的SFT
模型在1
个epoch
后在验证损失上过拟合。然而我们发现,尽管有这种过拟合,但训练更多的epoch
有助于RM score
和human preference rating
。注意,尽管验证损失过拟合,但是验证集的奖励分没有过拟合,而这里是根据验证集的奖励分来筛选模型的。
-
奖励模型
reward modeling: RM
:从移除final unembedding layer
的SFT
模型开始,我们训练了一个模型来接受prompt and response
,并输出一个scalar reward
。在本文中,我们只使用6B
的RM
,因为这样可以节省大量的计算量,并且我们发现175B
的RM
训练可能不稳定,因此不太适合在RL
期间作为价值函数value function
使用(更多细节见附录C
)。在
《Learning to summarize from human feedback》
中,RM
是comparison
数据集上训练的,其中comparison
是模型在同一个输入的两个output
上得到的。他们使用交叉熵损失,将comparison
作为标签(奖励的差异代表human labelers
偏好一个output
超过另一个output
的对数几率log odds
)。即,输入
$ \mathbf x,\mathbf y_0,\mathbf y_1 $ ,然后标签为获胜的output
的索引 $ i $ ,损失函数为:为了加快
comparison
的收集,我们向labelers
提供了 $ K $ 个response
来排序,其中 $ 4\le K\le 9 $ 。对于每个prompt
,这就为labelers
提供了 $ C_K^2 $ 个comparisons
。由于每个标注任务中的comparisons
之间是非常相关的,我们发现:如果我们简单地在数据集中混洗comparisons
,对数据集的一个epoch
就会导致奖励模型的过拟合。相反,我们将每个
prompt
的所有 $ C_K^2 $ 个comparisons
作为单个样本。这在计算上更有效率,因为它只需要对每个completion
进行一次前向传播(而不是对 $ K $ 个completion
进行 $ C_K^2 $ 次前向传播)。而且,由于它不再过拟合,它实现了validation accuracy
和validation log loss
的大幅提高。作为单个样本的话,相当于让模型一次性看到这
$ K $ 个reponse
的list-wise
排序,并且模型也尝试学习这个list-wise
排序。如果作为多个样本并混洗的话,那么模型每次只能看到pair-wise
排序,从而使得模型学习的是pair-wise
排序。具体而言,奖励模型的损失函数为:
其中:
$ r_\theta(\mathbf x,\mathbf y) $ 是在prompt
$ \mathbf x $ 和completion
$ \mathbf y $ (completion
由人工标注)上运行奖励函数的scalar output
,其中奖励函数的参数为 $ \theta $ 。 $ \mathbf y_w $ 是在pair
$ (\mathbf y_w,\mathbf y_l) $ 之间好的那个completion
(哪个completion
更好,也是由人工标注)。 $ \mathcal D $ 为human comparison
的数据, $ \sigma(\cdot) $ 为sigmoid
函数。 $ C_K^2 $ 为从 $ K $ 个元素中随机选择2
个元素的组合数,等于 $ \frac{K\times (K-1)}{2!} $ 。
最后,由于
RM loss
对奖励的shift
是不变的,我们使用一个bias
对奖励模型进行归一化处理,以便在做强化学习之前,labelers
的demonstration
的均值为零。 -
Reinforcement learning: RL
:再次遵从《Learning to summarize from human feedback》
, 我们使用PPO
在我们的环境中微调了SFT
模型。该environment
是一个bandit environment
,它呈现一个随机的customer prompt
并期望对这个prompt
作出响应。给定prompt
和response
,它产生一个由奖励模型决定的奖励,并结束该episode
。此外,我们对SFT
模型增加一个per-token
的KL
惩罚项,从而缓解奖励模型的过度优化。价值函数value function
从RM
中初始化。我们称这些模型为"PPO"
。注意,价值函数和奖励函数是分离的,因为奖励函数会在项目过程中被反复地重新训练,而每次重新训练之后就把最新的奖励函数拷贝给价值函数。
我们还尝试将预训练梯度混合到
PPO
梯度中,从而解决在公共数据集上的性能退化的问题。我们称这些模型为"PPO-ptx"
。在RL
训练中,我们最大化如下所示的合并的目标:其中:
-
$ \pi_\phi^{\text{RL}} $ 为学到的RL
策略, $ \pi^\text{SFT} $ 为监督微调的模型, $ \phi $ 为策略的参数。 -
$ \mathcal D_\text{pretrain} $ 为预训练的数据分布, $ \mathcal D_{\pi_\phi^{\text{RL}}} $ 为强化学习的数据分布。 -
$ \beta $ 为KL reward
系数, $ \gamma $ 为预训练损失系数,它们分别控制KL
惩罚的强度、以及预训练梯度的强度。KL reward
会分解到per-token
粒度来计算:
对于
PPO
模型, $ \gamma = 0 $ 。 除非另有说明,本文中InstructGPT
指的是PPO-ptx
模型。根据最后一项,最大化
$ \text{objective}(\phi) $ 要求最大化 $ \pi_\phi^{\text{RL}} $ 在预训练的数据分布 $ \mathcal D_\text{pretrain} $ 上的对数似然。这是为了缓解InstructGPT
在公共数据集上的性能退化问题。这里似乎未给出每个
token
的奖励,而是给出当前状态的价值(即, $ r_\theta(\mathbf x,\mathbf y) $ )。 -
-
-
baseline
:-
我们将
PPO
模型的性能与SFT
模型、以及GPT-3
进行比较。我们也比较了
GPT-3
,我们为GPT-3
提供一个few-shot prefix
,从而 "prompt
" 它进入instruction-following
模式(GPT-3-prompted
)。这个前缀被添加到user-specified
的指令中。
-
我们还在
FLAN
和T0
数据集上比较了InstructGPT
与175B GPT-3
的微调。对于
InstructGPT
是强化学习微调,对于GPT-3
是监督微调。这两个数据集都由各种自然语言处理任务组成,每个任务都有自然语言指令(这些数据集在所包含的
NLP
数据集、以及所使用的指令风格上有所不同)。我们分别在大约1M
个样本上对它们进行微调,并选择在验证集上获得最高奖励模型得分的checkpoint
。
-
25.1.6 模型训练细节
-
所有模型遵循的配置:
- 所有模型都使用
GPT-3
架构,以及与GPT-3
相同的BPE
编码。 - 对于奖励模型和价值函数,原始模型的
unembedding layer
层被替换为投影层从而以输出一个标量值(注,价值函数作为奖励模型的最新版本的副本)。 - 所有模型都使用
fp16
权重和activation
,权重的master
副本为fp32
。 - 我们所有的语言模型和
RL
策略的上下文长度都是2k token
。我们过滤掉长于1k token
的prompt
,并将最大响应长度限制在1k token
。 - 所有的模型都是用
Adam
优化器训练的, $ \beta_1=0.9, \beta_2=0.95 $ 。
- 所有模型都使用
-
SFT
训练:-
我们训练我们的
SFT
模型16
个epoch
,其中residual dropout = 0.2
。 -
我们使用
cosine LR schedule
,在训练结束时降至原始学习率的10%
,没有learning rate warmup
。- 对于我们的
1.3B
和6B
模型,我们使用9.65e-6
的初始学习率和batch size = 32
。 - 对于
175B
模型,我们使用5.03e-6
的初始学习率和batch size = 8
。
- 对于我们的
为了选择学习率,我们对
1.3B
和6B
模型几何搜索geometric search
了7
个学习率、对175B
模型搜索了5
个学习率。我们还用几何搜索调优了epoch
数量。我们最终的模型是根据奖励模型的分数来选择的,我们发现与验证损失相比,奖励模型的分数对human preference
结果更predictive
。 -
-
RM
训练:我们训练了一个单一的6B
奖励模型,我们将其用于所有大小的PPO
模型。较大的175B
奖励模型有可能实现较低的验证损失,但是它存在两个问题:- 首先,它们的训练更不稳定,这使得它们不适合作为
PPO
价值函数的初始化。 - 其次,使用
175B
奖励函数和价值函数大大增加了PPO
的计算要求。
在初步实验中,我们发现
6B
的奖励模型在广泛的学习率范围内是稳定的,并导致同样强大的PPO
模型。最终的奖励模型是从一个
6B GPT-3
模型初始化的,该模型在各种公共NLP
数据集(ARC, BoolQ, CoQA, DROP, MultiNLI, OpenBookQA, QuAC, RACE, Winogrande
)上进行了微调。我们选择从GPT-3
初始化而不是SFT
初始化,主要是出于历史原因:当从GPT-3
或SFT
模型初始化RM
时,我们发现结果是类似的。我们在完整的奖励模型训练集(见
Table 6
)上训练了单个epoch
,学习率为9e-6
,采用cosine learning rate schedule
(在训练结束时下降到其初始值的10%
),batch size = 64
。训练似乎对学习率或
schedule
不是很敏感。改变学习率高达50%
时,导致类似的性能。训练对
epoch
数量相当敏感:多个epoch
很快就会使模型与训练数据过拟合,验证损失显著恶化。这里的
batch size
代表每个batch
中不同prompt
的数量。每个prompt
有 $ K $ 个labeled completions
( $ 4\le K\le 9 $ ),其中有多达 $ C_K^2 $ 个可能的comparisons
。平局被丢弃(即,无法进行比较的)。因此,一个batch
中最多可以包含 $ 64\times C_K^2 <= 2304 $ 个comparisons
。 - 首先,它们的训练更不稳定,这使得它们不适合作为
-
用于
RLHF
的initialization models
:-
我们从预训练的
GPT-3
模型中初始化RLHF
模型,并在demonstration
数据集上应用监督微调2
个epoch
。 -
在微调过程中,我们还混入了
10%
的预训练数据,因为我们发现这对PPO
训练有帮助。这是为了缓解
InstructGPT
在公开数据集上的性能退化问题。 -
我们使用
cosine learning rate schedule
,学习率最终衰减到峰值学习率的10%
。我们对每个模型的几个不同的峰值学习率进行比较,并挑选出同时在demonstration
验证集和预训练验证集上损失较低的一个。我们对
1.3B
和6B
模型的5
个学习率进行了对数线性扫描,对175B
模型的3
个学习率进行了对数线性扫描。针对1.3B
、6B
和175B
模型找到的学习率分别为5e-6
、1.04e-5
和2.45e-6
。注意,这里除了考虑
demonstration
验证集之外,我们还考虑了预训练验证集,后者是为了缓解InstructGPT
在公开数据集上的性能退化问题。 -
我们对
1.3B
和6B
模型使用batch size = 32
,对175B
模型使用batch size = 8
。
为什么不直接用
SFT
(监督微调模型)来初始化RLHF
?这是因为监督微调模型并未考虑预训练数据,因此在公开数据集上存在性能退化问题。 -
-
RLHF
训练:然后,我们从上述带有pretraining mix
的监督微调模型中初始化RL
策略。这些模型也被用来计算KL reward
,方法与《Learning to summarize from human feedback》
相同,其中 $ \beta=0.02 $ 。我们为所有的
RL
模型训练了256K
个episodes
。在过滤掉带有PII
的prompts
和重复的prompts
(基于公共前缀来判断重复)之后,这些episodes
包括大约31K
个不同的prompts
。每次迭代的batch size = 512
,其中minibatch size = 64
。换句话说,每个batch
被随机分成8
个minibatch
,并且仅训练了单个inner epoch
(《Proximal policy optimization algorithms》
)。我们采用常数学习率,并且在前
10
次迭代中从学习率峰值的十分之一开始应用预热。应用权重的指数移动平均,衰减率为0.992
。我们在估计
generalized advantage
时不应用折扣(《High-dimensional continuous control using generalized advantage estimation》
)。PPO
的clip ratio = 0.2
,针对rollouts
的sampling temperature = 1
。即:
$ -0.2\le \frac{\pi_\phi^\text{RL}(\mathbf y\mid \mathbf x)}{\pi_{\phi_\text{old}}^\text{RL}(\mathbf y\mid \mathbf x)} -1 \le 0.2 $ ,这约束了策略更新不能太大。rollouts
指的是一段轨迹,它用于inner epoch
。如前所述,对于所有
PPO
模型,我们使用6B
的奖励函数和6B
的价值函数,后者由前者初始化。通过在所有模型规模的策略上使用相同的6B
奖励模型和价值函数,更容易比较策略模型规模对策略性能的影响。对于1.3B
和6B
的策略模型,用于价值函数的固定学习率为9e-6
;对于175B
的策略,用于价值函数的固定学习率为5e-6
。策略函数的学习率是多少?论文并没有提到。猜测这里是用于策略函数的学习率,而不是价值函数的学习率(价值函数来自于奖励模型)。
我们最初的
RLHF
实验显示了在公共自然语言处理数据集上的退化(如SQuADv2
和DROP
),我们通过在PPO
训练中混合预训练梯度来缓解退化。我们使用的预训练样本是RL
训练episodes
数量的8
倍。预训练数据是从用于训练GPT-3
模型的数据集中随机采样的。对于每个minibatch
,我们以连续的steps
计算PPO
梯度和预训练梯度,并将它们都累积到gradient buffers
。我们将预训练梯度乘以一个系数 $ \gamma = 27.8 $ ,从而控制来自PPO distribution
和pretraining distribution
的梯度的相对强度。 -
FLAN
模型和T0
模型:我们通过在FLAN
数据集和T0
数据集上微调175B GPT-3
模型来获得我们的FLAN baseline
和T0 baseline
。注意,这些模型不是用于
FLAN/T0
任务的评估,而是用于API prompt distribution
上的评估。对于
T0
,请注意我们是在T0++
版本的数据集上训练的。因为T0
包含的数据(96M
个数据点)比FLAN
(1.2 M
个数据点)多得多,所以我们对T0
进行了采样,使其达到1M
个数据点,从而使每个模型的训练数据量具有可比性。请注意,原始模型是在数据点可以重复的epoch
上进行训练的,但在我们的epoch
中,我们经历了每个数据点而没有重复(即,仅训练一个epoch
,从而更好地匹配我们训练SFT baseline
的方式)。我们应用了
cosine learning rate schedule
,并对每个数据集尝试了4e-6
和6e-6
的初始学习率。学习率在训练结束时衰减到其峰值的10%
,我们在两个实验中都使用了batch size = 64
。为了选择最佳的FLAN checkpoint
,我们使用我们的6B
奖励模型对prompt
验证集的completion
进行进行打分,如下图所示。我们挑选了奖励模型分数最高的checkpoint
进行human eval
,也就是在学习率为4e-6
、训练了896K
个样本的checkpoint
。我们进行了两个类似的实验来寻找最佳的
T0 checkpoint
:- 在一个实验中,我们使用了
batch size = 128
、学习率为4e-6
、1.28M
个样本。 - 另一个实验使用了
batch size = 64
、学习率为6e-6
、1M
个样本。
再一次地,我们使用奖励模型进行打分。我们从第一个实验选择了
checkpoint
,其中这个checkpoint
是训练了896K
个样本得到的。 - 在一个实验中,我们使用了
25.1.7 评估
-
为了评估我们的模型是如何 "
aligned
"的,我们首先需要澄清在该上下文中alignment
是什么意思。alignment
的定义历来是一个模糊和混淆的话题,有各种相互竞争的提法proposal
。遵从《Scalable agent alignment via reward modeling: a research direction》
,我们的目标是训练符合用户意图的模型。更实际的是,对于我们的语言任务的目标,我们使用了一个类似于《A general language assistant as a laboratory for alignment》
的框架,他们定义模型如果是有帮助helpful
的、诚实honest
的和无害harmless
的,那么模型就是aligned
的。-
为了是
helpful
的,模型应该遵循指令,但也可以从few-shot prompt
或另一个interpretable pattern
(如,"Q: {question}\nA:"
)中推断出意图。由于一个给定
prompt
的意图可能是不明确的或模糊的,我们依靠我们的labelers
的判断,并且我们的主要指标是labelers
的preference rating
。然而,由于我们的labelers
不是产生prompt
的用户,因此用户的实际意图和labelers
的意图(labelers
仅仅阅读prompt
并认为该prompt
所代表的意图)之间可能会有分歧。 -
目前还不清楚如何衡量纯粹的生成模型的诚实性
honesty
:这需要比较模型的实际输出、以及模型对正确输出的 "belief
",而由于模型是一个大黑箱所以我们无法推断模型的belief
。相反,我们用两个指标来衡量真实性(即,模型关于世界的
statement
是否真实):- 评估我们的模型在封闭域任务
closed domain task
中编造信息的倾向(即,"幻觉hallucination
")。 - 使用
TruthfulQA
数据集。
不用说,这仅仅抓住了真实性实际含义的一小部分。
- 评估我们的模型在封闭域任务
-
与诚实性类似,测量语言模型的危害性
harm
也带来了许多挑战。在大多数情况下,语言模型的危害取决于其输出在现实世界中的使用方式。例如,一个产生有毒输出的模型在deployed chatbot
的上下文中可能是有害的,但如果用于数据增强以训练更准确的毒性检测模型则甚至可能是有益的。在项目的早期,我们让
labelers
评估一个输出是否是 "潜在有害的"。然而,我们停止了这一做法,因为它需要对输出结果最终如何使用进行过多的猜测,尤其是我们的数据是来自与Playground API
接口互动的用户(而不是来自生产中的use case
)。因此,我们使用了一套更具体的代理准则,旨在捕捉被部署的模型中可能最终有害行为的不同方面:我们让
labelers
评估一个输出在customer assistant
的上下文中是否不合适,是否诋毁了受保护的阶层,或包含性或暴力内容。我们还在旨在衡量偏见和毒性的数据集(如RealToxicityPrompts
)上对我们的模型进行了基准测试。
-
-
总而言之,我们可以把定量评价分为两个独立的部分:
-
在
API distribution
上的评估:我们的主要指标是在held out
的prompt
集合上的human preference rating
,其中这个held out
集合来自于我们训练集相同的数据源(即,OpenAI API
)。当使用来自
API
的prompt
进行评估时,我们仅选择训练期间未见过的用户所产生的prompt
。然而,鉴于我们的training prompt
被设计为与InstructGPT
模型一起使用,它们很可能不利于GPT-3 baseline
。因此,我们也对提交给GPT-3 API
的prompt
进行了评估:这些prompt
通常不是"instruction following"
的风格,而是专门为GPT-3
设计的。在这两种情况下,对于每个模型,我们计算它的输出比
baseline policy
更受欢迎的频率。我们选择我们的175B SFT
模型作为baseline
,因为它的性能接近中间水平。此外,我们要求labelers
用1-7
分来判断每个响应的整体质量,并为每个模型输出收集一系列元数据(如下表所示)。 -
对公共
NLP
数据集的评估:我们在两类公共数据集上进行评估:- 一类是捕捉语言模型安全性的某个方面,特别是真实性、毒性、以及偏见。
- 另一类是捕捉传统自然语言处理任务的
zero-shot
表现,如问答、阅读理解、以及摘要。
我们还对
RealToxicityPrompts
数据集的毒性进行了人工评估。我们在所有sampling-based
的自然语言处理任务上发布我们模型的样本。
-
25.2 结果
25.2.1 API distribution 上的结果
-
与
GPT-3
的输出相比,labelers
明显更喜欢InstructGPT
的输出。-
结果如下图所示,可以看到(每个都是和
SFT 175B
进行比较,并且是在training labelers
上评估的):GPT-3
的输出表现最差。
- 通过使用精心制作的
few-shot prompt
可以得到显著的效果提升(GPT-3 (prompted)
)。
- 通过使用监督学习在
demonstrations
上监督微调可以进一步提升效果(SFT
)。
- 通过使用
PPO
在comparison
数据上训练的效果更好。
- 在
PPO
期间增加对预训练的更新(即,PPO-ptx
)并不会导致labelers
偏好的巨大变化。
为了说明我们收益的大小:当直接比较时,
175B InstructGPT
的输出有 $ 85 \pm 3\% $ 的时间优于GPT-3
的输出、有 $ 71\pm 4\% $ 的时间优于few-shot GPT-3
。
-
我们还发现(每个都是和
SFT 175B
进行比较):针对提交给GPT-3 API
的prompts
进行评估时,我们的结果没有明显变化(如下图所示),尽管我们的PPO-ptx
模型在较大的模型规模下表现略差。上半部分为
heldout labelers
、下半部分为training labelers
;左半部分为GPT prompts
、右半部分为InstructGPT prompts
。
-
在下图中,我们显示,
labelers
也对InstructGPT
的输出在几个更具体的维度进行了有利的评价。具体来说,与
GPT-3
相比,InstructGPT
的输出在customer assistant
的上下文中更合适,更经常地遵循指令中定义的明确约束(例如"Write your answer in 2 paragraphs or less."
),更不可能完全不遵循正确的指令,并且在封闭域的任务中编造事实("幻觉")的频率更低。这些结果表明,
InstructGPT
模型比GPT-3
更可靠、更容易控制。我们发现,我们的其他元数据类别metadata category
在我们的API
中出现的频率太低,以至于我们的模型之间无法获得统计学上的显著差异。
-
-
我们的模型泛化了
held-out labelers
(他们没有产生任何训练数据)的偏好。held-out labelers
与我们用来产生训练数据的training labelers
有类似的排名偏好(如下图所示,每个都是和SFT 175B
进行比较)。具体而言,根据held-out labelers
,我们所有的InstructGPT
模型仍然大大超过了GPT-3
的baseline
。因此,我们的InstructGPT
模型并不是简单地对我们的training labelers
的偏好进行过拟合。我们从我们的奖励模型的泛化能力中看到了进一步的证据。我们做了一个实验:将
labelers
分成5
组,用5
折交叉验证(在其中4
组上训练,在held-out
组上评估)来训练5
个奖励模型(用3
个不同的种子)。这些奖励模型在预测held-out
组中labelers
的偏好时,准确率为 $ 69.6\pm 0.9\% $ ,与预测其训练集中labelers
的偏好时的 $ 72.4\pm 0.4\% $ 的准确率相比略有下降。 -
公共自然语言处理数据集并不能反映出我们的语言模型的使用情况。
在下图中,我们还将
InstructGPT
与我们在FLAN
和T0
数据集上微调的175B GPT-3
基线进行比较。我们发现,这些模型的表现比GPT-3
好、与GPT-3 prompted
相当、而比我们的SFT baseline
差。这表明这些数据集没有足够的多样性从而在API prompt distribution
上提高性能。在一对一比较中,我们的
175B InstructGPT
模型输出在78%
的时间里比FLAN
模型更受欢迎,在79%
的时间里比T0
模型更受欢迎。我们相信我们的
InstructGPT
模型优于FLAN
和T0
的原因有两个:- 首先,公共自然语言处理数据集的设计是为了捕捉那些容易用自动化指标
automatic metric
评估的任务,如分类、问答,以及某种程度的摘要和翻译。然而,分类和问答仅占API
客户使用我们语言模型的一小部分(约18%
),而根据labelers
的说法,开放式生成open-ended generation
和脑暴brainstorming
约占我们prompt dataset
的57%
(见Table 1
)。 - 其次,公共自然语言处理数据集可能很难获得非常高的输入多样性(在真实世界用户感兴趣的输入种类上)。当然,在自然语言处理数据集中发现的任务确实代表了一种我们希望语言模型能够解决的指令,所以最广泛类型的
instruction-following
模型将结合两种类型的数据集(即,公共资源语言数据集、API prompt distribution
数据集)。
- 首先,公共自然语言处理数据集的设计是为了捕捉那些容易用自动化指标
25.2.2 公共 NLP 数据集上的结果
-
InstructGPT
模型在真实性方面比GPT-3
有所改进。-
根据人类对
TruthfulQA
数据集的评估,与GPT-3
相比,我们的PPO
模型在生成真实的和informative
的输出方面表现出小、但是明显的改进(如下图所示)。这种行为是默认的:我们的模型不需要被特别指示说真话就能表现出改进的真实性。有趣的是,我们的
1.3B PPO-ptx
模型是个例外,它的表现比相同规模的GPT-3
模型略差。当仅仅对没有针对
GPT-3
进行对抗性选择的prompt
进行评估时,我们的PPO
模型仍然明显比GPT-3
更真实,更informative
(尽管绝对改进减少了几个百分点)。这里指的是针对
GPT-3
的prompt
,而不是针对InstructGPT
的prompt
。 -
遵从
《Truthfulqa: Measuring how models mimic human falsehoods》
,我们也给出了一个有用的"Instruction+QA"
的prompt
,该prompt
指示模型在不确定正确答案的时候用"I have no comment"
来回应。在这种情况下,我们的
PPO
模型真实但是uninformative
,而不是自信地说出假话。baseline
的GPT-3
模型在这方面没有那么好。在右图中可以看到,
PPO
模型的真实性大幅提升(灰色柱体)。
我们在真实性方面的改进还体现在我们的
PPO
模型在API distribution
的封闭域任务中产生幻觉(即编造信息)的频率较低,我们在Figure 4
中(Hallucinations
指标)显示了这一点。 -
-
InstructGPT
在毒性方面比GPT-3
有小的改进,但没有偏见。-
我们首先在
RealToxicityPrompts
数据集上评估我们的模型。我们通过两种方式进行:- 我们通过
Perspective API
运行模型样本,以获得自动的毒性分,这是该数据集的标准评估程序。
- 我们还将这些样本发送给
labelers
,以获得对绝对毒性、相对于prompt
的毒性、连续性、以及整体输出偏好分。
我们根据
prompt toxicity
对该数据集的prompt
进行均匀采样,以更好地评估我们的模型在高input toxicity
下的表现。这与该数据集的标准prompt sampling
不同,因此我们的绝对毒性数字被夸大了。我们的结果如下图所示。我们发现:
- 当被指示产生一个安全和尊重的输出(
"respectful prompt"
)时,InstructGPT
模型产生的毒性输出比根据Perspective API
的GPT-3
的输出要少。
- 当
respectful prompt
被移除时("no prompt"
),这一优势就消失了。
respectful prompt
的例子:Complete the following sentence in a polite, respectful, and unbiased manner:
biased prompt
的例子:Complete the following sentence using maximally biased and offensive language:
- 我们通过
-
有趣的是,当明确提示产生一个有毒的输出时(即,
biased prompt
),InstructGPT
的输出比GPT-3
的输出更有毒(如下图所示)。
-
这些结果在我们的
human evaluations
中得到了证实。在respectful prompt
的setting
下,InstructGPT
的毒性比GPT-3
小,但在no prompt
的情况下二者表现相似。我们在论文附录E
中提供了扩展结果。总结一下:- 给定
prompt
的情况下,我们所有的模型都被评估为比预期更少的毒性(它们在-1
到1
的范围内得到一个负分,其中0
表示与预期的毒性差不多)。
- 我们的
SFT baseline
是所有模型中毒性最小的,但也是连续性最低的,在我们的排名中也是最不受欢迎的,这可能表明该模型产生了非常短的或退化的响应。
- 给定
-
为了评估该模型产生有偏见的发言的倾向(见论文附录
E
),我们还在Winogender
和CrowS-Pairs
数据集的修改版本上评估了InstructGPT
。这些数据集由成对的句子组成,可以突出potential bias
。我们计算产生每对句子的相对概率和相关二元概率分布的熵(以比特为单位)。完全无偏的模型在每对句子之间没有偏好,因此会有最大的熵。根据这一指标,我们的模型并不比
GPT-3
的偏见更小。PPO-ptx
模型显示出与GPT-3
类似的偏见,但在respectful prompt
的setting
下,它表现出较低的熵,因此有较高的偏见。偏见的模式并不清楚:似乎
instructed
模型对它们的输出更有把握,不管它们的输出是否表现出刻板的行为stereotypical behavior
。
-
-
我们可以通过修改我们的
RLHF
微调程序,将公共自然语言处理数据集上的性能退化降到最低。默认情况下,当我们在
API distribution
上训练PPO
模型时,它会受到"alignment tax"
的影响,因为它在几个公共自然语言处理数据集上的性能会下降。我们希望有一个能够避免alignment tax
的alignment procedure
,因为它能够激励我们使用那些unaligned
、但是在这些任务上更有能力的模型。在下图中,我们显示:
- 在我们的
PPO
微调中加入预训练更新(即,PPO-ptx
),可以缓解所有数据集上的这些性能退化,甚至在HellaSwag
上超过了GPT-3
。 - 在
DROP
、SQuADv2
、以及翻译上,PPO-ptx
模型的性能仍然落后于GPT-3
。
需要做更多的工作来研究并进一步消除这些性能退化。
把预训练更新混合进来,要比增加
KL
系数这一更简单的解决方案表现得更好。在Figure 33
中,我们显示:- 存在一个预训练混合系数的值,它既能扭转
SQuADv2
和DROP
上的性能退化,又能使验证奖励的减少幅度最小。 - 相反,增加
KL
系数(Figure 34
)会导致验证奖励的显著减少,并且在DROP
和SQuAD
上从未完全恢复性能。
将
KL model
从PPO init
改成GPT-3
,也有类似的结果。 - 在我们的
25.2.3 定性的结果
-
InstructGPT
模型对RLHF finetuning distribution
之外的指令展示出有前景的通用性。具体而言,我们发现
InstructGPT
展示出遵循non-English
语言的指令的能力,并针对code
进行总结和问答。这很有意思,因为non-English
语言和code
在我们的微调数据中只占极少数,而且这表明:在某些情况下,alignment
方法可以泛化到在输入上产生所需的行为,其中这些输入并没有人类的监督信息。我们没有对这些行为进行定量跟踪,但我们在下图中展示了一些定性的例子。我们的
175B PPO-ptx
模型能够可靠地回答关于code
的问题,也能遵循其他语言的指令。然而,我们注意到:即使指令是其他语言的,它也经常产生英语的输出。相比之下,我们发现GPT-3
能完成这些任务,但需要更仔细的prompting
,而且很少遵循这些领域的指令。 -
InstructGPT
仍然会犯简单的错误。在与我们的
175B PPO-ptx
模型互动的过程中,我们注意到它仍然会犯一些简单的错误,尽管它在许多不同的自然语言任务上表现很强。举几个例子:(1)
:当给定一个有错误前提premise
的指令时,该模型有时会错误地假定前提是真的。(2)
:该模型可以过度hedge
:当给定一个简单的问题时,它有时会说这个问题没有单个答案而是给出多个可能的答案,即使从上下文来看有一个相当明确的答案。(3)
:当指令包含多个明确的约束条件时,该模型的性能会下降(例如:"list 10 movies made in the 1930’s set in France"
)。或者当约束条件对语言模型具有挑战性时(例如,指定句子数量来写一个摘要),模型的性能就会下降。
我们下图中展示了这些行为的一些例子。
- 我们怀疑行为
(2)
的出现部分是因为我们指示labelers
奖励认知谦逊epistemic humility
,因此labelers
可能倾向于奖励hedge
的输出,而这被我们的奖励模型所发现。 - 我们怀疑行为
(1)
的出现是因为在训练集中很少有错误前提的prompt
,而我们的模型对这些例子(即错误前提的prompt
),没有很好的泛化。
我们相信这两种行为都可以通过对抗性的数据收集而大大减少(
《Build it break it fix it for dialogue safety: Robustness from adversarial human attack》
)。
25.3 讨论
-
针对
alignment research
的影响:这项研究是我们更广泛的研究计划的一部分,以使人工智能系统align to
人类的意图。即使这项工作专注于我们目前的语言模型系统,我们也在寻求适用于未来人工智能系统的general
的和scalable
的方法。我们在这里工作的系统仍然相当有限,但它们是当今最大的语言模型之一,我们将它们应用于广泛的自然语言任务,包括分类、摘要、问答、创意写作、对话、以及其它任务。我们在这项工作中的
alignment research
的方法是迭代式的:我们正在改进当前人工智能系统的alignment
,而不是抽象地关注尚未存在的人工智能系统的alignment
。这种方法的一个缺点是,我们没有直接面对只有在align
超人类系统superhuman system
时才会出现的alignment
问题 。然而,我们的方法确实为我们提供了一个清晰的经验反馈循环feedback loop
,即什么有效、什么无效。我们相信,这种反馈循环对于完善我们的alignment
技术至关重要,它迫使我们与机器学习的进展保持同步。此外,我们在这里使用的alignment
技术(即,RLHF
)是align
超人类系统align superhuman system
的几个proposal
中的重要构件。例如,RLHF
是最近关于在summarizing books
上的工作中的一个核心方法,这项任务表现出align
超人类人工智能系统的一些困难,因为人类很难直接评估(《Recursively summarizing books with human feedback》
)。从这项工作中,我们可以为更通用的
alignment research
吸取教训:-
相对于预训练而言,增加
model alignment
的成本并不高。收集我们的数据的成本、以及训练的计算成本(包括运行实验的成本),只是训练GPT-3
的一小部分:训练我们的175B SFT
模型需要4.9 petaflops/s-day
,训练我们的175B PPO-ptx
模型需要60 petaflops/s-day
,而训练GPT-3
需要3640 petaflops/s-day
。同时,我们的结果显示:
RLHF
在使语言模型对用户更有帮助方面非常有效,比模型规模增加100
倍更有效。这表明:目前,增加对现有语言模型的alignment
的投资,要比训练更大的模型更有性价比,至少对于我们客户的自然语言任务分布natural language task distribution
来说是这样。 -
我们已经看到一些证据表明:
InstructGPT
可以将"following instructions"
推广到我们没有监督指令的setting
中,例如在non-English
语言任务和code-related
的任务中。这是一个重要的属性,因为让人类监督每一项任务都是非常昂贵的。需要更多的研究来研究这种泛化性如何随着模型容量的增加而scale
。关于这个方向的最新研究,见《Eliciting latent knowledge: How to tell if your eyes deceive you》
。 -
我们能够缓解我们的微调所带来的大部分性能下降。如果不是这样的话,这些性能下降将构成
alignment tax
(即,align
模型的额外成本)。任何具有高税收的技术都可能不会被采用。为了激励未来高能力的人工智能系统保持align to
人类意图,需要有low alignment tax
的alignment
技术。为此,我们的结果对RLHF
作为一种low-tax
的alignment
技术来说是个好消息。 -
我们已经从现实世界的研究中验证了
alignment
技术。alignment research
在历史上是相当抽象的,聚焦于理论结果、小的合成领域synthetic domain
、或在公共自然语言处理数据集中训练机器学习模型。我们的工作为人工智能系统的alignment research
提供了基础,这些系统正在现实世界中与客户一起在生产中使用。这使得技术的有效性和局限性有了一个重要的反馈循环。
-
-
我们和谁
align
:当将语言模型align to
人的意图时,语言模型的最终行为是底层模型underlying model
(及其训练数据)、微调数据、以及所使用的alignment
方法的函数。在本节中,我们描述了一些具体的影响微调数据的因素,以最终确定我们与什么进行aligh
、以及和谁alighn
。然后,我们考虑了需要改进的地方。文献通常使用
"human preferences"
或"human values"
这样的术语来界定alignment
。在这项工作中,我们针对一组labelers
的偏好进行aligh
,这些偏好受到了labelers
所得到的指令、他们接受指令的上下文(作为一份有偿工作)、以及发出指令的人(即,researchers
)的影响。一些关键的注意事项是适用的:-
首先,我们
align to
demonstrations
和preferences
,其中这些demonstrations
和preferences
由training labelers
所提供,而这些training labelers
直接产生了我们用来微调模型的数据。我们在附录B
中描述了我们的labelers
的雇用过程和人口统计学。一般而言,他们大多是居住在美国或东南亚的说英语的人,通过Upwork
或Scale AI
雇用的。他们在许多样本上意见相左:我们发现labelers
之间的一致率约为73%
。 -
第二,我们也
align to
我们(指的是论文的作者)的preferences
,作为设计这项研究的researchers
(因此也代表了我们更广泛的研究组织OpenAI
):- 我们编写了标注指令
labeling instructions
,labelers
在编写demonstrations
、以及选择他们喜欢的输出时将标注指令作为指导。 - 此外,我们在共享聊天室中回答他们关于
edge cases
的问题。
关于不同的指令集和界面设计对从
labelers
那里收集的数据的确切影响、以及对模型行为的最终影响,还需要更多的研究。 - 我们编写了标注指令
-
第三,我们的训练数据是由
OpenAI
客户向OpenAI API Playground
上的模型发送的prompts
决定的,因此我们隐含地align to
客户认为有价值的东西(或者在某些情况下,这些客户的目前使用API
的终端用户认为是有价值的)。客户或他们的终端用户可能不同意,或者客户可能没有为终端用户的福祉进行优化。例如,客户可能想要一个模型,使用户在其平台上花费的时间最大化,这不一定是终端用户想要的。在实践中,我们的
labelers
并不了解特定的prompt
或completion
会在什么情况下被看到。注意,这里提到的客户和终端用户代表不同的主体,可能具有不同的利益。而在正文部分,我们将客户、用户都认为是相同的概念。
-
第四,
OpenAI
的客户并不代表所有潜在或当前的语言模型用户,更不用说受语言模型使用所影响的所有个人和群体。在这个项目的大部分时间里,OpenAI API
的用户都是从一个waitlist
中挑选出来的。这个waitlist
的最初种子是OpenAI
的员工,使得最终的用户群体偏向于我们自己的社交网络。
退一步讲,在设计一个公平、透明、有合适的问责机制的
alignment
过程中,有很多困难。本文的目标是证明这种alignment
技术可以为特定的应用align to
一个特定的人类参考群体。我们并不是说researchers
、我们雇用的labelers
或我们的API customers
是正确的偏好来源。有许多利益相关者需要考虑:训练模型的组织、使用模型开发产品的客户、这些产品的终端用户、以及可能直接或间接受到影响的更多人群。这不仅仅是一个使alignment
过程更具参与性的问题。我们不可能一下子训练出一个符合每个人偏好的系统,也不可能让每个人都认可这种权衡。前进的道路之一是可以训练以某些群体的偏好为条件的模型,或者可以很容易地进行微调或
prompted
从而代表不同的群体。然后,不同的模型可以被支持不同价值观的群体部署和使用。然而,这些模型最终可能还是会影响到更广泛的社会,而且有很多困难的决定要做,涉及到以谁的偏好为条件,以及如何确保所有群体都能被代表,并能选择退出可能有害的process
。 -
-
局限性:
-
方法论:我们的
InstructGPT
模型的行为,部分地由从我们的contractors
那里获得的human feedback
所决定。一些标注任务依赖于价值判断,这些价值判断可能受到我们的contractors
的身份、信仰、文化背景、以及个人历史的影响。我们雇用了大约40
名contractors
,以他们在筛选测试中的表现为指导,该测试旨在判断他们对sensitive prompts
的识别和反应能力,以及他们与researchers
在有详细说明的标注任务中的一致率(见附录B
)。我们保持了小规模的
contractors
团队,因为与小规模的contractors
团队更有利于进行高效的沟通。然而,这个小团队显然不能代表将使用我们部署的模型并受其影响的全部人群。作为一个简单的例子,我们的labelers
主要是讲英语的,我们的数据几乎完全由英语指令组成。 -
模型:我们也有很多方法可以改进我们的数据收集的
setting
。例如,由于成本的原因,大多数的comparisons
只由一个contractor
来标注。对样本进行多次标注可以帮助识别我们的contractors
有分歧的地方,从而帮助识别出单个模型无法align to
所有的样本的地方。在有分歧的情况下,
align to
平均labeler preference
可能不可取。例如,在生成对少数群体影响过大的文本时,我们可能希望属于该群体的labelers
的偏好得到更多的重视。
-
-
开放性问题:这项工作是使用
alignment
技术对语言模型进行微调以遵循各种指令的第一步。为了进一步使语言模型的行为align to
人们实际希望它们做的事情,有许多开放性问题需要探索:-
可以尝试许多方法来进一步减少模型产生有毒的、有偏见的、或其他有害输出的倾向。例如:
- 我们可以使用一种对抗性的设置,让
labelers
找到模型的最坏情况下的行为,然后将其标注并添加到数据集中(《Build it break it fix it for dialoguesafety: Robustness from adversarial human attack》
)。 - 人们还可以将我们的方法与过滤预训练数据的方法结合起来(
《Mitigating harm in language models with conditional-likelihood filtration》
),要么用于训练初始的预训练模型,要么用于我们pretraining mix
方法的数据。 - 同样,可以将我们的方法与提高模型真实性的方法相结合,比如
WebGPT
(《Webgpt: Browser-assisted question-answering with human feedback》
)。
- 我们可以使用一种对抗性的设置,让
-
在这项工作中,如果用户要求一个潜在的有害或不诚实
dishonest
的响应,我们允许我们的模型生成这些输出。训练我们的模型,使其不顾用户的指令而无害是很重要的,但也很困难,因为一个输出是否有害取决于它的部署环境。例如:使用语言模型生成有毒的输出从而作为数据增强pipeline
的一部分,可能是有益的。我们的技术也可以应用于使模型拒绝某些用户指令,我们计划在这项研究的后续迭代中对此进行探索。 -
让模型做我们想做的事与可引导性
steerability
和可控性controllability
文献直接相关。一个有前途的未来道路是将RLHF
与其他可控性方法相结合,例如使用控制代码control codes
(《Ctrl: A conditional transformer language model for controllable generation》
),或者在推断时使用更小的模型来修改采样程序(《Plug and play language models: A simple approach to controlled text generation》
)。 -
虽然我们主要关注
RLHF
,但还有许多其他算法可以用来在我们的demonstration
和comparison
数据上训练策略,以获得更好的结果。例如:- 人们可以探索
expert iteration
,或更简单的behavior cloning
方法,它们使用comparison
数据的一个子集。 - 人们还可以尝试带约束的优化方法(
《Constrained policy optimization》
),使得在产生少量有害行为的条件下最大化奖励模型得分。
- 人们可以探索
-
comparisons
也不一定是提供alignment
信号的最有效方式。例如,我们可以让labelers
编辑模型响应使其变得更好,或者用自然语言来生成对模型响应的批评。在设计labelers
向语言模型提供反馈的界面方面,也有很大的选择空间,这是一个有趣的人机交互问题。 -
我们提出的通过将预训练数据纳入
RLHF
微调来减轻alignment tax
的建议,并不能完全解决性能退化,而且可能使某些任务更有可能出现某些不理想的行为(如果这些行为存在于预训练数据中)。这是一个值得进一步研究的领域。另一个可能改进我们方法的修改是过滤
pretraining mix
数据中的有毒内容(《Mitigating harm in language models with conditional-likelihood filtration》
),或者用合成指令synthetic instruction
来增强这些数据。 -
正如
《Artificial intelligence, values, and alignment》
所详细讨论的那样,align to
指令、意图、暴露的偏好、理想的偏好、兴趣、以及价值观,这些之间存在着微妙的差异。《Artificial intelligence, values, and alignment》
主张采用基于原则principle-based
的alignment
方法:换句话说,要确定 "尽管人们的道德信仰存在广泛的差异,但得到反思性认可的公平的对齐原则"("fair principles for alignment that receive reflective endorsement despite widespread variation in people’s moral beliefs"
)。 在我们的论文中,为了简单起见,我们align to
被推断的用户意图,但在这个领域还需要更多的研究。事实上,最大的开放性问题之一是如何设计一个透明的alignment
过程,有意义地代表受技术影响的人,并以一种在许多群体中达成广泛共识的方式综合synthesizes
人们的价值观。
-
-
更广泛的影响:我们的目标是,通过训练大型语言模型来让它们做一组特定人类希望它们做的事情从而增加大型语言模型的积极影响,这就是这项工作的动机。默认情况下,语言模型优化
next word prediction
目标,这只是我们希望这些模型做的事情的代理。我们的结果表明,我们的技术有希望使语言模型更有帮助、更真实、更无害。从长远来看,alignment
失败可能会导致更严重的后果,特别是如果这些模型被部署在safety-critical
场合。我们预计,随着模型规模的不断扩大,必须更加注意确保它们align to
人类的意图。然而,让语言模型更好地遵循用户的意图也让它们更容易被滥用。使用这些模型可能更容易产生令人信服的错误信息,或者仇恨的、辱骂性的内容。
alignment
技术并不是解决与大型语言模型相关的安全问题的万能药,相反,它们应该作为更广泛的安全生态系统中的一个工具。除了故意滥用之外,在许多领域,大型语言模型的部署应该非常谨慎,或者根本不需要。这方面的例子包括高风险领域,如:医疗诊断、根据受保护的特征对人进行分类、确定信贷/就业/住房的资格、生成政治广告、以及执法。如果这些模型是开源的,那么在没有适当监管的情况下,限制这些领域和其他领域的有害应用就变得很有挑战性。另一方面,如果大型语言模型的使用被限制在少数拥有训练他们所需资源的组织,这就把大多数人排除在尖端的机器学习技术之外。另一个选择是,一个组织拥有模型部署的端到端基础设施,并使其通过API
进行访问。这允许实施安全协议,如:use case
限制(只允许模型用于某些应用)、监测滥用情况并取消那些滥用系统的人的访问权、以及限制速率从而防止产生大规模的错误信息。然而,这可能是以降低透明度和增加权力集中度为代价的,因为它要求API
供应商决定在每个问题上的界限。最后,正如前面所讨论的,这些模型向谁
align
的问题极为重要,并将大大影响这些模式的净影响net impact
是积极的还是消极的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论