AIGC实战——Transformer模型

news2024/11/16 9:34:57

AIGC实战——Transformer模型

    • 0. 前言
    • 1. T5
    • 2. GPT-3 和 GPT-4
    • 3. ChatGPT
    • 小结
    • 系列链接

0. 前言

我们在 GPT (Generative Pre-trained Transformer) 一节所构建的 GPT 模型是一个解码器 Transformer,它逐字符地生成文本字符串,并使用因果掩码只关注输入字符串中的前一个单词。另一些编码器 Transformer,不使用因果掩码,而是关注整个输入字符串以提取有意义的上下文表示。对于一些其他任务,如语言翻译,可以使用编码器-解码器 Transformer,将一个文本字符串翻译为另一个文本字符串,这类模型包含编码器 Transformer 块和解码器 Transformer 块。下表总结了三种类型的 Transformer 模型,其中列出了每种架构的典型模型和用途。

类型典型模型应用
EncoderBERT文本分类,命名实体识别,抽取式问答
Encoder-DecoderT5翻译,问答
DecoderGPT-3文本生成

编码器 Transformer 的一个经典模型是 Google 开发的双向编码器自注意力转换 (Bidirectional Encoder Representations from Transformers, BERT)模型,该模型在所有层中使用给定缺失单词前后上下文,来预测文本中的缺失单词。
编码器 Transformer 通常用于需要全面理解输入的任务,例如文本分类和命名实体识别等。
接下来,我们将介绍编码器-解码器 Transformer 的工作原理,并介绍 OpenAI 发布的专门为对话应用设计的 ChatGPT 模型。

1. T5

T5 模型是 Google 提出的使用编码器-解码器结构的 Transformer 模型。该模型将一系列任务重构为文本到文本的框架,包括翻译、句子相似性和文档摘要等。

T5

T5 模型的架构与原始 Transformer 论文中使用的编码器-解码器架构非常相似,如下图所示。主要区别在于 T5 模型是在大规模(包括大约 750G 的数据量)的文本语料库 (Colossal Clean Crawled CorpusC4) 上进行训练,而原始 Transformer 论文仅专注于语言翻译,因此只使用了 1.4GB 的英汉对应文本对进行训练。

Transformer

在上图中,可以看到通过堆叠 Transformer 块和位置嵌入来捕捉输入序列的顺序。此模型与 GPT 模型之间的关键区别如下:

  • 左侧是为一组编码器 Transformer 块,用于对待翻译的序列进行编码。需要注意的是,注意力层上没有应用因果掩码,这是因为我们不需要生成文本来扩展待翻译的序列,只需要学习整个序列的特征表示,以供解码器使用。因此,编码器中的注意力层可以完全不受掩码限制,以捕捉单词之间的所有交叉依赖关系,无论其顺序如何
  • 右侧是一组解码器 Transformer 块,用于生成翻译文本。初始的注意力层的键、值和查询来自同一输入(称为自引用),并且使用因果掩码来确保将来的符号信息不泄漏到当前要预测的词中。然后,后续的注意力层从编码器中提取键和值,只传递解码器本身的查询,这称为交叉引用注意力,意味着解码器可以关注需要翻译的输入序列的编码器表示

交叉引用注意力如下图所示。解码器层中的两个注意力头能够共同提供正确的德语翻译,以表示 the 这个词在街道上下文中的含义。在德语中,根据名词的性别有三个定冠词 (derdiedas),但 Transformer 之所以能够选择 die,是因为一个注意力头能够关注到街道这个词,而另一个注意力头关注的是要翻译的词 (the)。

交叉引用注意力

2. GPT-3 和 GPT-4

2018 年发布 GPT 以来,OpenAI 已经发布了多个对原始模型进行改进的更新版本。

模型时间网络层数注意力头数单词嵌入长度上下文窗口大小参数量训练数据集
GPT20181212768512120000000BookCorpus (4.85GB)
GPT-220194848160010241500000000WebText (40GB)
GPT-320209696128882048175000000000CommonCrawl, WebText, English Wikipedia, book corpora (570GB)
GPT-42023------

GPT-3 的模型架构与原始 GPT 模型相似,只是规模更大,训练数据更多。关于 GPT-4OpenAI 尚未公开发布有关该模型结构和规模的详细信息,但它能够接受图像作为输入,因此是一个多模态模型。GPT-3GPT-4 的模型权重并未开源,但可以通过商业工具或 API 使用这些模型。
GPT-3 还可以针对自己的训练数据进行微调,可以通过提供多个样本,以更新网络的权重,适应特定类型的输入。在多数情况下,这并不必要,因为 GPT-3 只需在输入提示 (prompt) 中提供一些样本就可以告诉它如何对特定类型的输入提示做出反应(称为少样本学习,few-shot learning)。微调的优势是无需每次输入提示时都提供这些样本,从长远来看可以节省成本。
GPT 等语言模型的规模非常易于扩展,包括模型权重数量和数据集大小。目前仍然尚未达到大型语言模型性能的上限,可以通过尝试使用更大的模型和数据集来实现更多可能性。

3. ChatGPT

GPT-4 发布的前几个月,OpenAI 推出了 ChatGPT,此工具允许用户通过对话界面与大型语言模型进行互动交流。下图展示了一个 ChatGPT 示例对话,可以看到,机器能够记住对话的上下文信息,并理解第二个问题中提到的"注意力机制"是指 Transformer 中的注意力机制,而不是指人的注意力。

ChatGPT

虽然,ChatGPT 并未开源,但在 ChatGPT 的官方博客文章中了解到,它使用了人类反馈强化学习 (Reinforcement Learning From Human Feedback, RLHF)的技术来微调 GPT-3.5 模型。
ChatGPT 的训练过程如下:

  1. 监督微调 (Supervised Fine-tuning):收集人类的对话输入(提示)和期望输出的示例数据集。使用监督学习来微调底层语言模型 (GPT-3.5)
  2. 奖励模型 (Reward Modeling):向标注人员展示一些提示示例和模型生成的多个输出,并要求他们对输出从最佳到最差进行排序。训练奖励模型,该模型可以根据给定对话历史预测每个输出的得分
  3. 强化学习 (Reinforcement Learning):将对话视为强化学习环境,其中策略是底层语言模型,从第一步微调模型开始初始化。给定当前状态(对话历史),策略输出一个动作(一系列符号),该动作由在第二步训练的奖励模型评分。然后,通过调整语言模型的权重,使用强化学习算法——近似策略优化算法 (Proximal Policy Optimization, PPO),以最大化奖励

RLHF 的过程如下图所示。

在这里插入图片描述

虽然 ChatGPT 仍然有许多限制,但展示了 Transformer 如何构建生成模型,生成复杂、新颖的输出。类似 ChatGPT 这样的模型充分证明了人工智能的强大潜力以及其变革性影响。
基于 AI 的通信和交互将继续快速发展,类似 Visual ChatGPT 这样的项目正在将 ChatGPT 的语言能力与 Stable Diffusion 等视觉模型相结合,使用户不仅可以通过文本与 ChatGPT 的交互,还可以使用图像进行交互,融合语言和视觉功能的人工智能模型,有望开启人机交互新时代。

小结

本节中,介绍了三类 Transformer 模型(编码器、解码器和编码器-解码器)及其应用,最后,还介绍了其他大型语言模型(如 GoogleT5OpenAIChatGPT )的结构和训练过程。

系列链接

AIGC实战——生成模型简介
AIGC实战——深度学习 (Deep Learning, DL)
AIGC实战——卷积神经网络(Convolutional Neural Network, CNN)
AIGC实战——自编码器(Autoencoder)
AIGC实战——变分自编码器(Variational Autoencoder, VAE)
AIGC实战——使用变分自编码器生成面部图像
AIGC实战——生成对抗网络(Generative Adversarial Network, GAN)
AIGC实战——WGAN(Wasserstein GAN)
AIGC实战——条件生成对抗网络(Conditional Generative Adversarial Net, CGAN)
AIGC实战——自回归模型(Autoregressive Model)
AIGC实战——改进循环神经网络
AIGC实战——像素卷积神经网络(PixelCNN)
AIGC实战——归一化流模型(Normalizing Flow Model)
AIGC实战——能量模型(Energy-Based Model)
AIGC实战——扩散模型(Diffusion Model)
AIGC实战——GPT(Generative Pre-trained Transformer)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣98---验证二叉搜索树

题目描述: 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 …

计算联合体union的大小

一:联合类型的定义 联合也是一种特殊的自定义类型,这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体) 比如:共用了 i 这个较大的空间 二: 联合的特点 …

YoloV8改进策略:Block改进|PKINet

摘要 PKINet是面向遥感旋转框的主干,网络包含了CAA、PKI等模块,给我们改进卷积结构的模型带来了很多启发。本文使用PKINet的Block替换YoloV8的Block,实现涨点。改进方法是我独创首发,给写论文没有思路的同学提供改进思路,欢迎大家订阅! 论文:《Poly Kernel Inception …

需求:实现一个类似打印的效果(文字一个字一个字的输出)

实现效果: 需求:最近接到这么一个需求,ai机器人回复的问题,后端是通过websocket每隔一段事件返回数据,前端拿到数据后直接渲染,现在需要做到一个效果,后端返回的结果前端需要一个一个文字的输出…

Unity Canvas的三种模式

一、简介: Canvas的Render Mode一共有三种模式:Screen Space -OverLay、Screen Space-Camera、World Space Screen Space - Overlay(屏幕空间 - 覆盖): 这是最简单的 Canvas 渲染模式。UI 元素在这个模式下将渲染在屏…

使用amd架构的计算机部署其他架构的虚拟机(如:arm)

1 下载quem模拟器 https://qemu.weilnetz.de/w64/2 QEMU UEFI固件文件下载(引导文件) 推荐使用:https://releases.linaro.org/components/kernel/uefi-linaro/latest/release/qemu64/QEMU_EFI.fd3 QEMU 安装 安装完成之后,需要将安装目录添加到环境变…

flutter3_douyin:基于flutter3+dart3短视频直播实例|Flutter3.x仿抖音

flutter3-dylive 跨平台仿抖音短视频直播app实战项目。 全新原创基于flutter3.19.2dart3.3.0getx等技术开发仿抖音app实战项目。实现了类似抖音整屏丝滑式上下滑动视频、左右滑动切换页面模块,直播间进场/礼物动效,聊天等模块。 运用技术 编辑器&#x…

C语言字节对齐关键字#pragma pack(n)的使用

0 前言 在进行嵌入式开发的过程中,我们经常会见到对齐操作。这些对齐操作有些是为了便于实现指针操作,有些是为了加速对内存的访问。因此,学习如何使用对齐关键字是对于嵌入式开发是很有必要的。 1 对齐规则 1.0 什么叫做对齐 众所周知&a…

微服务(基础篇-003-Nacos集群搭建)

目录 Nacos集群搭建 1.集群结构图 2.搭建集群 2.1.初始化数据库 2.2.下载nacos 2.3.配置Nacos 2.4.启动 2.5.nginx反向代理 2.6.优化 视频地址: 06-Nacos配置管理-nacos集群搭建_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1LQ4y127n4?p29&…

操作系统究竟是什么?在计算机体系中扮演什么角色?

操作系统究竟是什么?在计算机体系中扮演什么角色? 一、操作系统概念二、操作系统如何管理软硬件资源2.1 何为管理者2.2 操作系统如何管理硬件 三、系统调用接口作用四、用户操作接口五、广义操作系统和狭义操作系统 一、操作系统概念 下面是来自百度百科…

Springboot做分组校验

目录 分组校验 Insert分组 Upload分组 测试接口 测试结果 添加测试 更新测试 顺序校验GroupSequence 自定义分组校验 自定义分组表单 CustomSequenceProvider 测试接口 测试结果 Type类型为A Type类型为B 总结: 前文提到了做自定义的校验注解&#xff…

React高阶组件(HOC)

高阶组件的基本概念 高阶组件(HOC,Higher-Order Components)不是组件,而是一个函数,它会接收一个组件作为参数并返回一个经过改造的新组件: const EnhancedComponent higherOrderComponent(WrappedCompo…

小游戏-扫雷

扫雷大多人都不陌生,是一个益智类的小游戏,那么我们能否用c语言来编写呢, 我们先来分析一下扫雷的运行逻辑, 首先,用户在进来时需要我们给与一个菜单,以供用户选择, 然后我们来完善一下&#…

解决方案Please use Oracle(R) Java(TM) 11, OpenJDK(TM) 11 to run Neo4j.

文章目录 一、现象二、解决方案 一、现象 当安装好JDK跟neo4j,用neo4j.bat console来启动neo4却报错: 部分报错信息: Starting Neo4j. WARNING! You are using an unsupported Java runtime. Please use Oracle Java™ 11, OpenJDK™ 11 t…

Rust下载安装、卸载、版本切换、创建项目(包含指定版本的)

先声名一下,下面所说的版本号为xxxxx-x86_64-unknown-linux-gnu中xxxxx的部分。 下载安装 下载最新版本的Rust: curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh info: downloading installer重启shell 或者 按照提示 执行命令让环境变…

Day56-LNMP架构扩展为集群模式实战精讲

Day56-LNMP架构扩展为集群模式实战精讲 1. 企业级标准部署知乎产品wecenter1.1 部署知乎软件Wecenter 2. 企业级迁移数据库到独立服务器2.1 为什么要进行数据库的拆分2.2 数据库拆分架构演变过程,如下图所示2.3 数据库拆分环境规划2.4 数据库拆分架构详细步骤2.4 we…

Kafka broker

1. zk中存储的kafka信息 /kafka/brokers/ids存储了在线的broker id。 /kafka/brokers/topics/xxx/partitions/n/state存储了Leader是谁以及isr队列 /kafka/controller辅助Leader选举,每个broker都有一个controller,谁先在zk中注册上,谁就辅助…

第八节:深入讲解SMB中的Http组件

一、概述 Http组作是SMB中的核心组件之一,在第七节中讲解了如何简洁的进行web程序部署和运行,这只是它的功能之一。在本节中,我们将介绍Http组件的重要属性。 二、请求头Request 1、支持方法 支持POST、GET、PUT、DELETE、OPTIONS等方法&a…

二十、软考-系统架构设计师笔记-真题解析-2020年真题

软考-系统架构设计师-2020年上午选择题真题 考试时间 8:30 ~ 11:00 150分钟 1.按照我国著作权法的权利保护期,( )受到永久保护。 A.发表权 B.修改权 C.复制权 D.发行权 解析: 答案: 2.假设某计算机的字长为32位&a…

爬虫入门系列-HTML基础语法

🌈个人主页:会编辑的果子君 💫个人格言:“成为自己未来的主人~” HTML基础语法 bs4解析比较简单,但是呢,首先你需要了解一丢丢的html知识,然后再去使用bs4去提取,逻辑和编写难度就会非常简…