探究 ChatGPT 的心脏--Transformer(基础知识第一篇)

这篇具有很好参考价值的文章主要介绍了探究 ChatGPT 的心脏--Transformer(基础知识第一篇)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        探究 ChatGPT 的心脏--Transformer(基础知识第一篇),AI技术,chatgpt,transformer,深度学习

        Transformer 是 ChatGPT 的核心部分,如果将 AI 看做一辆高速运转的汽车,那么 Transformer 就是最重要的引擎。它是谷歌于 2017 年发表的《Attention is All You Need》中提出的 Sequence-to-sequence 的模型,诞生之后便一统江湖,在 NLP, CV, Audio, Video 多个模态领域成为了遥遥领先。

  1. 如果你之前不了解 Transformer, 或者只知道大概的知识,那么这篇文章可以让你通过自己动手写代码深刻地理解 Transformer 的结构、训练方法以及实际用例等;

  2. 如果你了解 Transformer,这篇文章可以让你温习 Transformer 的知识,所谓温故而知新;

        由于内容很多,因此拆分为几篇文章的内容。

模型结构

总体流程:

探究 ChatGPT 的心脏--Transformer(基础知识第一篇),AI技术,chatgpt,transformer,深度学习

        分为 输入(Input), 模型(Model), 输出(Output) 三部分。接下来详细说明每一个部分。

输入

        输入:"我有一只猫"

        分词:用某种分词方法输出 ["我",“有”,“一只”, “猫”],常用的中文分词方法有 jieba 分词,THULAC分词等(想要详细了解这些分词方法可以问 悟空 AI 助手,支持 GPT 3.5, GPT 4),这里每个词也叫做 token(token 的概念很重要,后面反复用到)

        转 Embedding: 将 ["我“,“有”,“一只”, “猫”] 的每一个词转为一个实数向量,常见的是 512 维的向量,因为有 4 个词,每个词变成 512 维向量,所以得到 4*512 维的矩阵,一般用 tensor 存储,简单的就记作 x。具体的转换方法可以问悟空AI,但是本文后面会详细讲到的。

        添加位置 Embedding: 位置 embedding 是对 token 顺序的一种表示,因为 token 顺序很重要。例如:

["我",“爱”,“你”] 跟 ["你",“爱”,“我”],token 顺序变一下含义就完全不同!那么最简单的顺序表示方法就是 1,2,3,...N,用数组索引表示位置,但是 Transformer 没有这么干而是用正弦/余弦函数来表示:

探究 ChatGPT 的心脏--Transformer(基础知识第一篇),AI技术,chatgpt,transformer,深度学习

        其中,PE 就是位置编码(Positional Embedding),pos 表示单词在句子中的位置,d 表示 PE的维度 (与词 Embedding 一样),2i 表示偶数的维度,2i+1 表示奇数维度 (即 2i≤d, 2i+1≤d)。画图看一下就是这样:

探究 ChatGPT 的心脏--Transformer(基础知识第一篇),AI技术,chatgpt,transformer,深度学习

        脑经急转弯:为什么位置 embedding 不用 [1,2,3,...N] 来表示顺序?

        请认真思考 5 分钟后再看下面的答案。

        有两个原因:

  1. 保证模型训练稳定性和快速收敛性:类似于 data normalization, 原始数据的取值可以是负无穷到正无穷,但是一旦输入到模型就要强制归一化到一个固定区间,常见的是 [-1, 1] 区间,这样做可以大幅加速模型收敛并减少训练误差,但是 1,2,3,...,N 是没有界限的,如果简单的除以 N 来归一化,那么 N 取多少比较合适呢?实际上很难选择 N 的值,所以一个比较合适的选择就是周期性函数,最经典好用的就是正弦/余弦,为啥嘞?因为它们很常见而且求导巨简单,忘了它们导数的去问问 悟空 AI 助手

  2. 要遵循文本结构的周期性:任何一个句子,任何一个段落都是具有周期性的。为啥呢,因为所有的句子都有固定的结构,最常见的是:主语 + 谓语 + 宾语,所以一段话的结构其实类似于这样子的:

 主语 + 谓语 + 宾语 + 标点符号 + 主语 + 谓语 + 宾语 + 标点符号, ......

        很自然地,就想到了用周期性函数来表示位置了。

        网上有人说其中一个原因是可以让模型容易地计算出相对位置,对于固定长度的间距 k,PE(pos+k) 可以用 PE(pos) 计算得到。因为 Sin(A+B) = Sin(A)Cos(B) + Cos(A)Sin(B), Cos(A+B) = Cos(A)Cos(B) - Sin(A)Sin(B)。这个我个人表示不认同,因为 1,2,3,...N 也符合这个性质,不信你算一下。

        然后,将文本的 embedding 和位置的 embedding 加起来就是模型的输入了,如下:

    探究 ChatGPT 的心脏--Transformer(基础知识第一篇),AI技术,chatgpt,transformer,深度学习

        到这里 Transformer 的输入就讲完了,下一篇将介绍模型的结构。文章来源地址https://www.toymoban.com/news/detail-849006.html

到了这里,关于探究 ChatGPT 的心脏--Transformer(基础知识第一篇)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32】基础知识 第一课 单片机简介

    单片机 (Single-Chip Microcomputer) 单品微型计算机, 是一种集成电路芯片. 电脑 vs 单片机: 电脑 单片机 CPU CPU 内存 SRAM 硬盘 Flash 主板 外设 SRAM 静态随机读取器 (Static Random-Access Memory): SRAM 是随机存储器的一种, 属于静态数据, 这类存储器要是维持电源, 里面存储的信息就可以恒常维持

    2024年02月11日
    浏览(61)
  • Python库第一课:基础Numpy知识(下):矩阵

            好的,我们今天继续来学习Numpy的基础,昨天,已经介绍完Numpy的成员之一——数组,今天,在接着介绍其另一大成员——矩阵,也是应用非常广泛的成员。         矩阵,在线性代数中是几乎贯穿全文的成员,因此,这里需要较高的线性代数的基础。在这里,默认

    2024年02月03日
    浏览(47)
  • 详解TCP/IP协议第一篇:网络基础知识

    😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月09日
    浏览(42)
  • 【软考数据库】第一章 计算机系统基础知识

    目录 目录 1.1 计算机系统 1.1.1 计算机硬件组成 1.1.2 中央处理单元 1.1.3 数据表示 1.1.4 校验码 1.2 计算机体系结构 1.2.1 体系结构分类 1.2.2 指令系统存 1.2.3 储系系统 1.2.4 输入/输出技术 1.2.5 总线结构 1.3 可靠性、性能、安全 1.3.1 计算机可靠性 1.3.2 计算机系统的性能评价 1.

    2023年04月13日
    浏览(91)
  • 明德扬FPGA至简设计原理与应用 第一篇 FPGA基础知识 第一章 FPGA简介

    FPGA 的全称为 Field-Programmable Gate Array, 即现场可编程门阵列。FPGA 就是一个可以“改变”内部结构的芯片,而让这个芯片来实现怎样的功能,就需要通过编程即设计HDL,经过 EDA工具编译、综合、布局布线成后转换为可烧录的文件,最终加载到 FPGA 器件中去,改变 FPGA 内部的连

    2024年01月16日
    浏览(37)
  • [ XJTUSE ]JAVA语言基础知识——第一章 面向对象程序设计思想

    类描述了一组有相同 特性 (属性)和相同 行为 (方法)的对象,类和对象是面向对象思想的两个核心概念 · 人类是一种类,每一个具体的人则是这个类的对象 用面向对象程序来模拟真实世界 发现并创建类 发现类的特征 发现类的行为 在面向对象程序中,对象的特征由各种

    2023年04月13日
    浏览(51)
  • Unity | Shader基础知识(第一集:unity中最简单的shader)

    目录 一、unity的shader 二、创建一个shader(在创建时,选前三种都可以) 三、内容解读 1.shader一直都在 2.我们写shader在写什么 四、没有被干预的shader(最简单的shader) 相关阅读 编写着色器概述 - Unity 手册 一、unity的shader unity写的shader并不是真正意义上的shader。 官方解释:

    2024年02月04日
    浏览(47)
  • 计算机网络之TCP/IP协议第一篇:网络基础知识

    😉😉 学习交流群: ✅✅1:这是孙哥suns给大家的福利! ✨✨2:我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 🥭🥭3:QQ群:583783824   📚📚  工作微信:BigTreeJava 拉你进微信群,免费领取! 🍎🍎4:本文章内容出自上述:Spring应用课程!💞💞

    2024年02月09日
    浏览(51)
  • ChatGPT的基础知识

    ChatGPT是一种基于深度学习的自然语言处理技术,其核心是一个神经网络模型,包括深度学习基础、自然语言处理基础、循环神经网络基础和注意力机制基础。 深度学习是一种基于人工神经网络的机器学习技术,可以用来解决多种复杂的问题,比如图像识别、自然语言处理、

    2024年02月06日
    浏览(84)
  • 机器学习第一周:用卷积神经网络实现Mnist手写数字识别(付基础知识解释)

    MNIST 数据集是一个手写数字识别数据集,包含了 60000 张训练图像和 10000 张测试图像,每张图像都是 28x28 像素的灰度图像。 在这个代码中,我们首先使用了 numpy 库中的 np.random.seed() 方法来设置随机种子,以确保结果可重复。 然后,我们使用了 Keras 中的 mnist.load_data() 方法来

    2024年02月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包