GPT 系列论文泛读

目录

1. GPT-1

1.1 无监督预训练

1.2 有监督的微调

2. GPT-2

3. GPT-3

4. InstructGPT

1. Supervised Fine-Tuning (SFT)

2. Reward Modeling (RM)

3. Reinforcement Learning (RL)


这篇写给自己的总结会相对比较简短,因为 GPT 系列的每篇论文都很长,我只是了解了一下大致的思路和演化过程,相对而言的重点会放在 InstructGPT 上。

GPT:Improving Language Understanding by Generative Pre-Training

GPT-2:Language Models are Unsupervised Multitask Learners

GPT-3:Language Models are Few-Shot Learners

InstructGPT:Training language models to follow instructions with human feedback

在一切之前,先贴出一个我请 ChatGPT 帮我总结的 GPT 系列演化的表格:

下面这张表格来自:ChatGPT/InstructGPT详解 - 知乎 (zhihu.com)

我也参考了这位博主的博客:【论文阅读】InstructGPT: Training language models to follow instructions with human feedback_orangerfun的博客-CSDN博客 

1. GPT-1

GPT 第一代主要特点是:无监督预训练 + 下游任务微调。

1.1 无监督预训练

GPT 系列模型是从左到右的单向语言模型,在每个时间步骤只考虑了来自历史文本的信息,使用的是 Transformer 的解码器(Decoder)部分,生成下一个单词的概率分布。简单来说,GPT 模型产生的文本是逐字或逐词地生成的,每个单词的概率分布是由之前生成的单词所决定的,类似于“词语接龙”。

如上面的目标函数(最大似然)所示,unsupervised corpus of tokens 指的是一段未经标注、未经分类的文本语料库,其中包含了大量的单词、短语、句子等语言单位(也称为“tokens”),GPT 模型通过使用这些 “tokens” 作为输入数据来进行预训练。Unsupervised pre-training 的目标函数被定义为最大化目标序列的概率,它在预测下一个单词的时候,需要考虑之前看到的 k 个单词。

在进行 unsupervised pre-training 时,没有显式地给定输入/输出对(input/output pairs),也就意味着没有标注数据进行监督训练。因此将这种方式称为“无监督”训练。在这种情况下,模型需要仅从输入数据中学习语言的模式和规律,并尽可能地预测下一个单词,这样就能最大化目标序列的概率。

1.2 有监督的微调

就是针对下游目标任务,在有标签的数据集上进行微调。

如上图所示,作者将一系列的 NLP 任务都转化成了固定结构的输入和输出模式。 

 

作者认为,把第一部分的目标函数也包括在内一起进行参数微调,会提升监督模型的泛化能力,加速收敛。

2. GPT-2

GPT 第二代在模型和算法上没有特别多的改变,主要扩大了模型和数据集的规模,以期待在 zero-shot 的多任务情境中获得性能提升。

3. GPT-3

GPT 第三代主要采取的是 in-context learning 的方法,不再需要通过 fine-tuning 的方法调整预训练模型的参数,而是直接在 zero-shot、one-shot、few-shot 三种情境中进行 in-context learning。

4. InstructGPT

因为 OpenAI 并没有放出 ChatGPT 的相关论文,InstructGPT 被认为是与 ChatGPT 较为接近的模型,所以我相对更关注它的方法。

据我的直观感受,InstructGPT 最主要的思想是希望大语言模型能够能够 "align with human",即生成的各种文本能够更加符合人类的预期。

InstructGPT 主要有三个训练阶段,如下图所示:

1. Supervised Fine-Tuning (SFT)

雇佣标注人员根据 prompt 人工生成数据,在此基础上进行有监督的微调。

2. Reward Modeling (RM)

学习标注人员对语言模型输出的打分,训练出一个符合人类预期的、可以给语言模型的输出进行打分的 reward model。

作者将 SFT 模型的最后不是 embedding 的那一层替换掉,输入 prompt 和对该 prompt 生成的答案,输出一个标量得分。针对每一个 prompt,会让模型输出 K 个答案,然后使用 pairwise ranking loss 训练这个 reward model:

对于每一个输入 prompt x 和两个不同的回复 y_{w}y_{l},计算其得分 r_{\theta }(x, y_{w}) 和 r_{\theta }(x, y_{l}),然后将这两个得分相减,并使用 sigmoid 函数将结果映射至 0 到 1 之间的范围内,最后使用 log 函数对这个值取自然对数。该损失函数的目标是最大化正确的比较任务和错误的比较任务之间的差距,以便更好地评估生成模型的性能。

3. Reinforcement Learning (RL)

第三步是利用第二步训练得到的 reward model,采取 Proximal Policy Optimization (PPO) 算法进行强化学习,进一步优化模型。

原始的 PPO 核心算法如下图所示:

(论文:Proximal Policy Optimization Algorithms) 

PPO 算法的核心思想是通过在策略更新过程中限制新策略和旧策略之间的相对改变幅度(通过控制 KL 散度的方式),来保证策略更新的稳定性(—— ChatGPT)。

在 InstructGPT 中,目标函数为:

其中,黄色部分对应了 PPO 算法的目标函数,\phi 是待学习的参数,第一项 r_{\theta }(x, y) 是希望给定 prompt x ,希望模型给出的答案 y 在 reward model 的得分可以更高(更新 \phi 以更符合人类预期);第二项是 KL 散度的约束,希望当前训练的 RL 模型不会过于偏离 SFT 模型

绿色部分是从预训练分布中进行采样,将预训练得到的模型梯度引入 RL 模型中,进一步提升模型性能。

一直令我困惑的是,我无法将 InstructGPT 中的 PPO 算法与原始的 PPO 算法对应起来,所以我去问了 ChatGPT,它的回答是(我修改了一些内容):

“尽管上述目标函数公式中与传统 PPO 算法相比有一些不同,但是它仍然可以被看作是 PPO 算法的变种或扩展。原因在于,这个目标函数公式与 PPO 算法具有一些相似的特性和思想。

首先,上述目标函数公式中包含了一个 KL penalty,这个惩罚项也是 PPO 算法中采用的一种方式。KL penalty 的作用是通过约束新旧策略之间的 KL 散度来保证更新策略时的稳定性,并避免更新过于剧烈以至于破坏已有的良好策略。因此,KL penalty 可以帮助防止模型过度拟合或过度优化,提升模型的泛化性能。

其次,在上述目标函数公式中,reward term 与传统 PPO 算法中使用的 Advantage 函数等价。Advantage 函数的作用是通过减去一个基线值来计算出每个状态动作对的优势值,从而更加准确地估计出策略的效果,并在更新策略时进行优化。类似地,reward term 也可以看做是对行为的评价,并通过更新网络参数来优化策略。

(如果可能的话,希望进一步了解一下 GPT 数据集的构成和筛选,感觉很值得探讨。)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/29715.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatGPT-4论文导读:百年未有之大变局-(2)(转载)

声明:本文已征得原作者:荔枝海豹,同意后转载。 原文链接:chatGPT-4论文导读:百年未有之大变局-(2) - 知乎 在开始讲解之前,我们先说个梗, open AI,从这个名…

吴恩达联手OpenAI上线免费课程:一个半小时学会ChatGPT Prompt工程

点击上方“Python与机器智能”,选择“星标”公众号 第一时间获取价值内容 编辑:张倩 吴恩达亲自授课。 ChatGPT 来了,一切变化都快了起来,一些科技公司开始招募「prompt 工程师」。与写代码的传统计算机工程师不同,Pro…

0基础转行网络安全,选择pwn还是web?

随着5G、工业互联网、人工智能等新兴领域技术的兴起,从而快速推动了各国从人人互联迈向万物互联的时代。 奇安信董事长齐向东曾说过:“如果说5G带来了物联网和人工智能的风口,那么网络安全行业就是风口的平方——风口的风口。" 因此&…

网络安全从业人员2023年后真的会被AI取代吗?

随着ChatGPT的火爆,很多人开始担心网络安全从业人员会被AI取代。如果说网络安全挖洞的话,AI可能真的能取代。但是网络安全不仅仅只是挖洞,所以AI只是能缓解网络安全人员不足的情况,但是是不会取代人类的作用的。 就拿最近很火的C…

Proxy Authentication Required解决

症状 <script type"text/javascript">loadTOCNode(1, symptoms);</script> 如果 Internet Security and Acceleration (ISA) Server 2000 是链接到上游 Web 代理服务器, Web 浏览器中可能会收到完整 HTML 页和随机身份验证提示。 如果下游 ISAServer 计算…

chatgpt赋能Python-python_keyring

Python Keyring: 快速&#xff0c;安全&#xff0c;便捷地管理你的密码 如果你是一个 Python 应用程序开发者&#xff0c;你必须面对有关密码管理的问题。当然&#xff0c;你可以将密码明文硬编码到你的代码中&#xff0c;但是这会很快变得混乱和难以维护。更好的方法是使用 P…

一次疑似 JVM native 内存泄漏的排查实录

最近开发同学反馈&#xff0c;某定时任务服务疑似有内存泄漏&#xff0c;整个进程的内存占用比 Xmx 内存大不少&#xff0c;而且看起来是缓慢上升的&#xff0c;做了下面这次分析&#xff0c;包括下面的内容&#xff1a; 分析 JVM native 内存的一些常见思路内存增长了&#x…

【618期间】超过200小时的课程全都有优惠,全年最好的加入有三AI学习的时间来了~...

正值2023年618期间&#xff0c;既然是全民购物节&#xff0c;有三AI所有付费的视频课程开启优惠活动&#xff0c;即日起至节日结束&#xff08;6月18日晚23:59&#xff09;。 当前已有课程包括数据使用/模型分析/图像分类/图像分割/目标检测/图像生成/图像翻译/图像增强/视频分…

虚假新闻检测概述

几个概念 社交网络的新闻往往包括新闻内容&#xff0c;社交上下文内容&#xff0c;以及外部知识。其中新闻内容指的是文章中所包含的文本信息以及图片视频等多模态信息。社交上下文信息指的是新闻的发布者&#xff0c;新闻的传播网络&#xff0c;以及其他用户对新闻的评论和转发…

认识ChatGPT

ai是由dutuai训练的一种大型自然语言处理模型&#xff0c;能够进行自然语言对话。它基于预训练的语言模型gpt&#xff08;generative pre-trained transformer&#xff09;&#xff0c;具有强大的自然语言理解和生成能力。ai可以通过了解上下文并推断回应来与用户进行交互。它被…

ChatGPT之后何去何从?LeCun新作:全面综述下一代「增强语言模型」

来自&#xff1a;新智元 【导读】语言模型该怎么增强&#xff1f; ChatGPT算是点燃了语言模型的一把火&#xff0c;NLP的从业者都在反思与总结未来的研究方向。 最近图灵奖得主Yann LeCun参与撰写了一篇关于「增强语言模型」的综述&#xff0c;回顾了语言模型与推理技能和使用工…

数据库mysql

目录 数据库的实用性 操作网上商城数据库系统 维护数据库的完整性&#xff08;过&#xff09; 维护数据库的完整性是确保数据库数据的正确性和一致性的关键。以下是一些常见的方法来维护数据库的完整性&#xff1a; 添加修改和删除数据 查询网上商城系统数据 选择列 排…

reggie

分页 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, initia…

Chat GPT是什么?初学怎么使用Chat GPT?

1.Chat GPT介绍 ChatGPT的全称是"Chat Generative Pre-training Transformer"&#xff0c;中文意思是“对话生成预训练变形器”。它是一种基于预训练的自然语言处理模型&#xff0c;旨在实现智能对话生成和理解。通过在大量文本数据上进行预训练&#xff0c;ChatGPT可…

AIGC for code(AIGC/AI生成代码/生成式AI之代码生成/AI编程工具/自动编程/自动生成代码/智能编程工具/智能编程系统)

AIGC&#xff0c;Artificial Intelligence Generated Content&#xff0c;人工智能生成内容 AIGC for code&#xff0c;AI生成代码 1 Github Copilot 1.1 简介 Copilot是由微软的子公司Github与openAI共同开发的人工智能&#xff08;AI&#xff09;驱动的编程助手。它能够直…

Windows下搭建局域网内简易git服务器

这里写自定义目录标题 概述配置步骤1.任意位置创建git 仓库2.启动Git Daemon3.其他电脑克隆工程4.开机自动启动5.其他配置注意事项 概述 由于和朋友小规模制作项目&#xff0c;又使用了UE5这样的庞然大物&#xff0c;准备整一个本地轻量化一些git版本管理。 查阅资料是发现git…

在Oracle Linux上部署Yunzai Bot v3保姆式教程/甲骨文云/云崽Bot/原神

去我的博客查看本文&#xff1a;在Oracle Linux上部署Yunzai Bot v3保姆式教程 – 肚 (iocky.com) 本文也在Github与gitee可用。 初始配置 直接注册最低配置的就ok了&#xff0c;这里不再赘述如何注册Oracle Cloud以及开设Compute Instance。 先点进目标实例&#xff0c;然后点…

保姆级教程:Linux和Windows下本地化部署Vicuna模型

目录 文章摘要一、Vicuna简介1. Vicuna模型定义2. Vicuna模型的应用场景3. Vicuna模型的训练数据4. Vicuna模型的版本5. 性能评估 二、linux 操作系统下部署1. 环境介绍2. 安装Python3.10.72.1 下载Python3.10.7安装包2.2 安装gcc编译器2.3 安装依赖包2.4 升级openssl版本2.4.1…

LLMs 诸神之战:LangChain ,以【奥德赛】之名

LLMs 一出&#xff0c;谁与争锋&#xff1f; 毫无疑问&#xff0c;大语言模型&#xff08;LLM&#xff09;掀起了新一轮的技术浪潮&#xff0c;成为全球各科技公司争相布局的领域。诚然&#xff0c;技术浪潮源起于 ChatGPT&#xff0c;不过要提及 LLMs 的技术发展的高潮&#x…

chatgpt赋能python:Python游戏辅助教程:让你的游戏更加容易

Python游戏辅助教程&#xff1a;让你的游戏更加容易 介绍 Python是一种非常受欢迎的编程语言&#xff0c;具有灵活性和易用性。Python可用于编写各种类型的程序&#xff0c;包括游戏辅助工具。Python的易用性和维护性&#xff0c;使得它成为游戏玩家、开发人员和测试人员的首…