chatgpt自从2022年底发布以来引起了很大反响,子弹已经飞了两个月了,今天重新整理一下chatgpt以及个人的一些理解。
tl;dr: chatgpt的内核是instructgpt[1]。随着language model(lm)越做越大,instructgpt的作者们发现这些lms其实经常和用户的意图不完全一致/对齐,这引发作者们的思考:如何得到能与用户意图更一致的lm?于是instructgpt横空出世,其目标是“align language models to humans”,具体的对齐方法采用reinforcement learning from human feedback(rlhf)[2]。简单说就是在训练lm时要“human in the loop”,用人类的示例/评价/比较等反馈信号调整lm,让lm输出的结果往人类意图方向靠拢。
个人chatgpt体验报告
chatgpt在哪些地方帮到我了?
有些中文文档需要很官方的文书表达(比如基金申请书),通过巧妙的提问可以让chatgpt输出很多思路甚至有些可以直接拿来用;帮助我快速了解一个大的领域,虽然看不太准,但是也提供了一点借鉴。
chatgpt技术上还存在哪些缺陷?
chatgpt经常一本正经地胡说八道;chatgpt经常很啰嗦;chatgpt给出的信息我经常需要用google double check;chatgpt每次输出的结果“不一致”(本质原因是因为它是概率模型,每次采样的结果都不一样)。
background
我首先对chatgpt做了简单的测试,直观感受一下。
chatgpt可以和用户“chat”,能根据聊天历史调整输出。
chatgpt可以写代码。
chatgpt能写paper。chatgpt能做一些一般语言模型能做的任务,比如翻译。
chatgpt functions/pros/cons一览。
instructgpt
对比一下chatgpt和instructgpt,方法几乎一模一样。
instructgpt其实就三步:用人写的样本(问答)finetune pretrained gpt3,得到supervised finetuning (sft)model;用人类反馈(比较回答好坏)训练一个reward model(rm);借助训好的rm,用rl算法进一步提升sft。
这里展开一下gpt模型的介绍,关键词:transformer decoder,生成式,自回归,因果掩码和概率模型。
言归正传,对于instructgpt的第一步:采集人类标注的demo,监督式finetune pretrained gpt。
第二步,训练reward model。
注意rm的输入和输出
最后一步,用rl提升sft model。
experiment
discussion
写在结尾:deepmind的工作总让人觉得很smart/novel,而openai的工作总让人觉得很有用(sometimes很粗暴,有点“大力出奇迹”的意思)。读这两个机构的paper总是赏心悦目。
参考
^ouyang, l., wu, j., jiang, x., almeida, d., wainwright, c.l., mishkin, p., zhang, c., agarwal, s., slama, k., ray, a. and schulman, j., 2022. training language models to follow instructions with human feedback. arxiv preprint arxiv:2203.02155. https://cdn.openai.com/papers/training_language_models_to_follow_instructions_with_human_feedback.pdf^reinforcement learning from human feedback(rlhf) https://huggingface.co/blog/rlhf