旷野之间17 - 适合所有人的 Transformer

news2024/11/15 6:56:55

最初出现在著名论文《Attention is all your need》中,基于Transformer的架构已成为大多数成功的人工智能模型中必不可少的。

然而,许多用户甚至基于人工智能的产品的创造者可能不了解Transformer是什么或它是如何工作的。

嗯,阅读研究论文并理解所有内容非常困难。

本文旨在向所有人解释 Transformer 的基本概念,无论您是高中生还是经验丰富的技术专家。我们将重点介绍构成 Transformer 的基本直觉和逻辑块。

我们将从简单的解释开始,逐渐深入探讨人工智能的更复杂方面。无需任何先验知识。

注意:除非另有说明,文章中使用的所有图像均使用 DALLE 3 或 Imgflip meme 生成器创建。

我们想要构建什么

能够像人类一样思考和反应的计算机。

人类用语言思考和交流,语言包含了关于世界的所有知识。教学和学习也通过语言进行。如果计算机能够处理和理解语言,我们就可以创造出像人类一样行为的人工智能。在互联网上,语言主要以文本形式出现。

理解所有这些文本可以自然而然地让计算机具备理解问题、指令和提示的能力。

研究人员已经开发了各种算法和神经网络来实现这一点,比如 CNN、RNN 和 LSTM(不要担心它们是什么)。数据中的模式反映了语言和人类思维的底层逻辑,太复杂了,无法手动弄清楚。神经网络就是为检测这些而设计的。

一项引人注目的观察表明,语言理解始于简单而复杂的能力预测给定句子中的下一个单词。

这项任务的一个有效架构是transformer。它最初是为语言翻译而开发的,但已被证明对许多任务都很有用。

目标是创建一个人工智能模型来接收输入并产生相关且合理的输出。这些模型在大规模运行时表现出与人类思维和表达类似的能力。

几乎所有的人工智能模型都是建立在以下几个基本原则之上的:

  • 计算机理解数字;因此,可以使用各种方法将数据(如文本)转换为数字
  • 这些数字中隐藏着统计或逻辑模式,可以通过数学方法计算出来。它们不是胡言乱语,而是基于语言和人类互动的一些基本规则。
  • 手动寻找这些模式几乎是不可能的。因此,我们尝试创建一个神经网络架构来找出这些问题。
  • 完成后,您就可以使用“ AI 模型”根据从训练数据中学习到的所有知识来生成新的响应。

如何创建 AI 模型

我们现在暂时转移一下话题,忘掉 Transformer。

以下是如何通过简单(但复杂)的步骤创建 AI 模型:

  1. 选择您希望 AI 执行的操作 — — 例如生成文本。
  2. 收集正确类型的数据进行训练。在本例中,数据就是互联网上的所有文本。
  3. 将所有数据转换成计算机可以理解的数字。弄清楚如何将这些数字输入神经网络。
  4. 神经网络本质上是一个精密的计算器,它根据您提供的数据,利用数学运算来得出结果。
  5. 使用各种方法训练这个网络(基本上就是调整所用数学中的变量),以便它学会为收到的数据提供正确的结果。结果以数字形式呈现,然后我们将其改回原始格式,例如单词。
  6. 最后,训练好的人工智能将用新数据进行测试,看它是否给出正确的输出。

让我们探索一下在 Transformer 环境中每个步骤是如何发生的。

在您继续阅读时,请记住,这里的每一步都可以通过创新来进一步突破界限。

我将介绍一系列技术主题来构建基础,然后连接各个点以获得完整的画面。

序列建模

句子本质上是单词序列。构建一个可以预测该序列中下一个单词的系统属于“序列建模”。

我们的目标是为人类语言创建一个伟大的序列模型。

传导(在人工智能背景下)

想象一下,明天的测验有一堆问题(有些有答案,有些没有答案)。传导就像学习足以回答这些特定问题的内容,而不是学习测验中可能出现的所有材料。

基本上,如果你在准备周期测试时只是简单地研究前几年的试卷中的问题而不是阅读教科书,那么你就是在进行传导:P

当你有很多问题但只有少数答案时,这种方法尤其有用。通过查看所有问题(甚至是没有答案的问题),我们尝试根据它们之间的模式或相似性来猜测答案。

传导学习通常用于在有限数量的标记数据和大量未标记数据上训练模型的场景。其目标是将输入与输出进行映射,而不是试图在它们之间找到某种一般规则。

循环模型

想象一下,你正在讲一个故事,你说的每一个词都取决于你之前说过的词。循环模型的工作原理如下:它们会跟踪到目前为止的故事,所以当要说下一个词时,它们会记住你所说的一切,并选择最合适的词。

在语言中,这意味着它们可以通过根据前面的单词猜测下一个单词来帮助写作。如果你教它很多故事或对话,它就会学习句子通常如何构成的模式以及哪些单词经常组合在一起。

这对于短序列来说没问题,但对于长序列来说就成了问题。序列越长,它们需要的内存就越多,训练时间也越长。

由于这些问题,研究人员希望创建比循环模型更好的东西。

注意力(在人工智能背景下)

顾名思义,这就是关注重要的事情。

假设你已经看过了漫威电影宇宙的所有电影,直到《复仇者联盟:终局之战》。你的任务是写一个简短的总结,用十个关键点概括最重要的内容。作为人类,你可以理解什么是重要的,什么是不重要的。你可能会提到灭霸打响指的情节,而忽略其他一些情节,比如钢铁侠和绿巨人在《奥创纪元》中的战斗。

你怎么知道的?你怎么能让计算机知道的?我们需要找到一种方法来让输入的某些部分更加重要。这正是注意力的作用。

从技术角度来说,注意力机制会计算权重,确定对输入数据的每个部分给予多少关注。此过程使模型能够优先处理与任务最相关的输入部分的信息,从而提高其在翻译、文本摘要和问答等任务上的表现。

像 RNN 这样的模型会按顺序处理数据,但有时很难记住或重视句子开头部分的信息。注意力机制解决了这个问题,它让模型能够“回顾”输入句子的所有部分(无论当前位置如何),并“关注”对下一步预测或生成最重要的部分。

注意力机制与 RNN 的结合充分利用了两者的优势:RNN 能够以固有结构处理序列,而注意力机制能够突出显示整个序列中的相关信息。

提醒:我们在这里讨论的所有内容本质上都是应用于我们系统以计算输出的“数学”。当我说“注意力”时,我指的是在计算输出之前引入一个数学步骤。

然而,由于内存问题,人们对循环模型并不满意。所以,他们开始思考这个问题。我们真的需要笨拙的循环网络吗?如果我们将它从方程式中完全移除会怎么样?

当时,没人知道它是否真的有效。实验完成并训练模型后,研究人员得出结论,也许“注意力就是你所需要的一切! ”:P。

自注意力机制

注意力机制可以通过多种方式实现。其最终目标是从数学角度赋予重要内容更多权重。自我注意力是一种技术,通过这种技术,我们可以查看句子的所有部分,并了解每个部分相对于其他部分的重要性。

想象一下,你身处一个房间里,里面挤满了谈论不同话题的人。你正试图跟上关于你最喜欢的电影的对话。为此,你需要更多地关注谈论这部电影的人,即使其他对话也在同时发生。你还可以思考你对这部电影的了解,以了解他们在说什么。这样,你就可以很好地理解在你最喜欢的电影的背景下,哪场对话对你来说是最重要的。这类似于 AI 模型中的自注意力。

当你读懂字里行间的内容时,你会发现所有这些都是人类对于我们如何行为的普遍直觉,只不过转换成了一种更合乎逻辑和技术性的格式。

编码器和解码器

大多数现代人工智能模型都包含称为编码器和解码器的组件。

顾名思义,编码器对数据进行编码 – 将输入(比如句子)转换为特定格式(通常是数字,有一个花哨的名称,称为“嵌入” – 稍后会详细介绍)。

编码器试图将输入的句子转换成复杂的数字形式,其中包含大量的上下文、理解以及给定句子中单词之间的关系。

然后解码器使用它来生成可能是该句子中的下一个单词的输出。

它以“自回归”的方式工作,这意味着创建的输出与下一步的输入相结合,并且网络可以继续这样不断生成新的输出。

Transformer

最后,我们来了解一下Transformer吧!

旷野之间17 - 适合所有人的 Transformer

图片取自首次引入 transformer 的官方研究论文。

不用担心这个复杂的框图。我把它放在那里只是为了给出一个基本的视觉概念,让你了解Transformer架构是什么样子。你看到的每个块基本上就像一个数学函数。

这是在此阶段需要建立的重要直觉。人工智能模型中的许多步骤都涉及操纵数据并将其从一种形式转换为另一种形式,以最有效地呈现数据并获得最佳结果。它转换数据(因此被称为转换器)。我们下面探讨的很多内容都属于这种类型的功能。

Transformer 中的编码器

编码器内部有多层结构。当我说“层”时,请将其视为对输入数据执行的数学步骤。Transformer 中的编码器有六个相同的层,这意味着输入数据要经过六个步骤,所有步骤都对数据执行类似的操作。

每层由两个子层组成:

  1. 多头自注意力:将注意力过程拆分为“多个头”,每个头执行自己的注意力计算。这些头并行运行,每次计算可能不同。这有助于我们理解输入序列的不同方面。每个头产生输出,这些输出组合在一起以获得该层的最终输出。
  2. 全连接前馈网络:它接收来自自注意力过程的标准化输出,并执行更多数学运算以获得更加转换的输出。这有助于模型更好地理解输入。

总而言之,编码器的输入经过以下旅程:

  1. 它进入第一层,并通过多头自注意力过程进行转换。这告诉模型在输入中需要考虑的最重要的事情。
  2. 然后他们经过“添加和规范化”步骤。
  3. 然后,它们进入前馈网络,对它们进行更多操作以获得更加变换的输出,然后再次经过“添加和规范化”步骤。
  4. 最后,我们得到了第一层的输出,它保留了与输入相同的形状,但是由于我们对它们应用了所有数学运算,所有数据点都发生了重大转变。
  5. 然后,输出进入第二层,并执行完全相同的步骤。如前所述,编码器有六个相同的层。因此,第二层的输出进入第三层,并再次进行转换。依此类推,直到到达第六层的末尾。

为什么我们要做六次同样的事?有什么不同?

它有助于模型更好地理解输入的模式和上下文。虽然所有六层的数学方程式都相同,但这些方程式中有一些变量。研究人员称它们为“参数”,每层的参数都不同。目标是找到每层的最佳参数值,以便模型在所有这些处理之后获得对输入的最佳表示。当有人说“训练人工智能”时,这就是他们试图做的事情。

这个过程有助于模型深刻理解词语之间的关系以及它们的实际意义。

经过 6 层编码器转换后,最终输出是给定输入的“矢量表示”。如果你目测该表示,它基本上看起来像一个巨大的数字矩阵。这些数字保存了输入单词和句子的含义以及单词组在上下文中的关联方式。

这个表示现在成为下一个构建块(解码器)的输入。

Transformer 中的解码器

它与编码器类似,同样有 6 个相同的层。但是,每层都有一个额外的子层,用于对编码器的输出执行自注意力过程。

来自编码器的向量表示,即充满上下文线索的密集矩阵,到达解码器的第一层。以下是逐步发生的事情:

  1. 带有转折的自注意力:最初,解码器层在一些启动输出上应用多头自注意力机制的修改版本,称为掩蔽注意力 – 稍后会详细介绍。
  2. 在自我注意之后,解码器也会像编码器一样执行“添加和规范化”步骤。此步骤通过规范化数据来帮助稳定学习,确保转换不会将值推得太远。
  3. 交叉注意层是每个解码器层中的额外子层。在这里,解码器会注意编码器的输出。它使用编码器的上下文来帮助生成序列中合适的下一个元素。
  4. 交叉注意力之后,数据会经过另一个前馈网络,在此进行进一步的转换。这些转换旨在完善解码器对输入及其运行环境的理解。
  5. 与前面的步骤一样,这个过程经过另一次“添加和规范化”,以确保转换的一致性和稳定性。

这样就完成了通过一个解码器层的旅程。输出现在稍微更接近最终结果,移动到下一层,直到 6 层的末尾。

这些层之间的重复并非多余,而是深化了模型的认知。每一层都有其独特的参数集,增加了另一层复杂性,不仅理解原始信息,还理解语言模式、上下文和含义的细微差别。

训练模型本质上是在所有层上微调这些参数的过程,以实现从输入到输出的最佳转换,代表通过编码和解码阶段捕获的细微差别。

在遍历解码器的所有六层之后,这个艰苦的过程的最终结果是一个反映预期任务的序列,无论是翻译的句子,文本的延续,还是另一种形式的序列输出,它都会被进一步处理成正确的格式,然后才能显示为您看到的最终输出。

我们再看一下架构图。也许你现在会比以前更理解它。

旷野之间17 - 适合所有人的 Transformer

图片取自首次引入 transformer 的官方研究论文。

请注意,左边部分是编码器,右边部分是解码器。编码器的输出在第二个子层与解码器的输入相连。在此之前,解码器具有称为输出嵌入的东西,它们在掩蔽注意层中处理。解码器计算输出后,会发生两个额外的步骤——线性和 softmax。让我们尝试修复这些差距。

  1. 每个输入词都被转换成数字数组,我们称之为输入嵌入,捕捉其上下文含义。
  2. 位置编码被添加到这些嵌入中以合并序列顺序信息。
  3. 该模型通过其编码器-解码器层处理这些内容,以理解句子、学习关系并执行翻译或回答问题等任务。
  4. 在解码器中(用于生成任务),输出嵌入表示迄今为止翻译或生成的序列(这可能是生成最终答案的简单起始句),位置编码确保模型以正确的顺序生成序列。

啊……有点太技术化了。让我简单说一下。

  • 你有一句话。你把它分解成单词。
  • 您将这些单词转换为数字。
  • 当你这样做时,你会跟踪这些单词在原始句子中的位置,以确保它们具有正确的顺序。
  • 您将到目前为止拥有的所有内容传递给六层数学运算,这些运算会将您的数字转换为更复杂的数字,并具有特殊的理解。这就是您的编码器。
  • 当编码器忙于处理输入句子时,解码器则准备生成输出。它从句子的开头开始,比如说“The”。然后,解码器将其传递到另一组六层,这些层会尝试进一步生成单词,一次一个,同时利用编码器创建的特殊数字中包含的所有理解。
  • 最后,经过对许多数字进行多次数学运算之后,您将创建最终的特殊数字,将其转换回文本格式,形式为输入句子中最有可能出现的一个新单词。
  • 你就是变形金刚!

我们说人工智能是一个黑匣子,因为我们不明白这些数字为何以及如何“特殊”,但计算机似乎对此了如指掌。这个过程竟然能奏效,这真是太了不起了,只要反复预测下一个单词,我们就能观察到让人感觉很智能的突发行为。

哲学结论?

读完这篇文章后,你可能会想知道这个过程有多复杂,以及有人是如何想出这个方法的。研究人员是不是有一天醒来决定,“让我们建立一个很棒的人工智能”,不知何故他们明白他们应该构建这 6 层编码器和解码器,并进行随机数学运算来创建这些数字,以便一切都能神奇地发挥作用?

这可能会让人感到不知所措。你怎么才能搞清楚这个过程?你怎么知道从哪里开始?

事情是这样的。研究是一个自然的渐进过程,它建立在几十年前所有事物的基础之上。如果你想探索,你的起点不应该是 Transformers。你必须回溯 Transformer 论文之前的数百篇论文,当你慢慢把这些点连接起来时,事情就会变得更加清晰,人们是如何真正走到这一步的。

然后,你也可以推动事情向前发展。每一步都是一个可以改变的数学或逻辑方程,从而带来新的发现。你可以在过程中添加、删除或替换一两个步骤,这可能会带来很大的不同。

这是研究方面的问题。其他方面呢?作为产品制造商或企业领导者,您如何运用这些理解和知识?

这可以帮助你在众多噪音中找出值得下注的东西。当 Transformers 推出时,OpenAI 工程师立即投入到实验中。他们全力以赴扩展这些模型,因为他们直觉地认为这在当时的许多其他架构中确实有效。自然而然地,他们建立了长期领先优势,并率先将基于该技术的消费产品推向市场。

当你理解了某些事物的工作原理时,你可能会建立起强烈的直觉,帮助你很早就能快速地识别出在新的发展中什么是值得学习的。

有时,对现有架构进行微小的更改可以带来巨大的变化。也许您的经验和意识可以帮助您发现可以进行的此类更改。

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

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

相关文章

MVC之 IHttpModule管道模型《二》

》》》注意:在http请求的处理过程中,只能调用一个HttpHandler,但可以调用多个HttpModule。 HTTP Modules ASP.NET请求处理过程是基于管道模型的,这个管道模型是由多个HttpModule和HttpHandler组成,当请求到达HttpMod…

Linux 扩展硬盘容量

根分区的硬盘容量不够了需要添加容量 扩展硬盘容量前提是需要虚拟机关机才能进行以下操作 在虚拟中找到虚拟机设置 >> 点击硬盘 >> 选择扩展 >> 输入自已要扩展的大小 >> 确定 这些设置好之后,启动虚拟机 fdisk /dev/sda n p 三个回车…

Nginx入门到精通七(Nginx原理)

下面内容整理自bilibili-尚硅谷-Nginx青铜到王者视频教程 Nginx相关文章 Nginx入门到精通一(基本概念介绍)-CSDN博客 Nginx入门到精通二(安装配置)-CSDN博客 Nginx入门到精通三(Nginx实例1:反向代理&a…

基于matlab的SVR回归模型

1 原理 SVR(Support Vector Regression)回归预测原理,基于支持向量机(SVM)的回归分支,其核心思想是通过寻找一个最优的超平面来进行回归预测,并处理非线性回归问题。以下是SVR回归预测原理的系统…

猴子吃桃(迭代算法)

猴子与桃纠缠 传说很久很久以前,一只小猴子听妈妈的话,不远万里,爬山涉水专门跑到王母娘娘的蟠桃园里偷桃子吃,小猴子趁王母娘娘闭关修炼,偷了许多桃子,直到被蟠桃园的守卫发现,才恋恋不舍的逃走…

AWS-S3实现Minio分片上传、断点续传、秒传、分片下载、暂停下载

文章目录 前言一、功能展示上传功能点下载功能点效果展示 二、思路流程上传流程下载流程 三、代码示例四、疑问 前言 Amazon Simple Storage Service(S3),简单存储服务,是一个公开的云存储服务。Web应用程序开发人员可以使用它存…

oracle数据库的plsql免安装版安装

这个是连接oracle数据库的,注意安装不能有中文路径。以下只是示例。 1、打开D:\ruanjian\plsql\plsql\plsql,发送plsqldev.exe快捷方式到桌面。 2、新弹出的页面填写cancel,什么也不写。 3、将instanceclient解压,并复制文件路径。 修改tool…

mysql5.7版本字符集编码

默认character_set_databaselatin1 当你字段插入中文值的时候,会报错。 所以修改为了character_set_databaseutf8既可以。 character_set_server他的范围更大,属于服务器级别。

非常好的新版网盘系统,是一款PHP网盘与外链分享程序,支持文件预览

这是一款PHP网盘与外链分享程序,支持所有格式文件的上传, 可以生成文件外链、图片外链、音乐视频外链,生成外链同时自动生成相应的UBB代码和HTML代码, 还可支持文本、图片、音乐、视频在线预览,这不仅仅是一个网盘&a…

【Java】 条件与选择

文章目录 1.关系操作符2.逻辑操作符3.if语句3.1常见的问题3.2 两个浮点数值的相等测试3.3 简化布尔赋值 4.switch语句5.三元操作符 1.关系操作符 Java 提供六种关系操作符(relational operator)(也称为比较操作符(comparison operator)) 操作符名称<小于<小于等于>大…

张雪峰高考志愿填报

描述 张雪峰&#xff0c;一个富有才华的老师&#xff01; 对于大家的学习有不可多得的帮助。 内容 目前主要的内容以自愿填报为主&#xff0c;对于学习自愿填报有比较大的帮助&#xff01; 但是网络上面错综复杂&#xff0c;很多老旧的版本影响学习&#xff01; 而这里我整…

现在有哪些微服务解决方案?

Dubbo&#xff1a;是一个轻量级的Java微服务框架&#xff0c;最初由阿里巴巴在2011年开源。它提供了服务注册与发现、负载均衡、容错、分布式调用等。Dubbo更多的被认为是一种高性能的RPC框架&#xff08;远程过程调用&#xff09;&#xff0c;一些服务治理功能依赖第三方组件完…

极速狂飙,激情重燃 ——《极品飞车:集结》删档公测,你准备好了吗?

亲爱的赛车迷们&#xff0c; 当引擎的轰鸣声再次响起&#xff0c;我的心脏仿佛被注入了肾上腺素&#xff0c;那一刻&#xff0c;我知道——属于我们的时刻到了&#xff01;《极品飞车&#xff1a;集结》删档公测的消息如同一道闪电&#xff0c;划破了平凡的日子&#xff0c;将…

爬虫管理:开启企业大数据时代的智能信息搜集

摘要 在数据驱动的时代&#xff0c;精准高效的信息搜集成为企业决策的黄金钥匙。本文深入探讨爬虫管理如何助力企业开启大数据智能搜集的新篇章&#xff0c;通过优化策略、技术实践与成功案例&#xff0c;揭示其对企业发展的重大意义。我们不仅会探讨其技术实现的奥秘&#xf…

【机器学习】精准农业新纪元:机器学习引领的作物管理革命

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 精准农业的背景与现状&#x1f341;精准农业的概念与发展历程&#x1f342;国内外精准农业实践案…

Milvus 核心设计 (3) ---- metric及index原理详解与示例(1)

目录 背景 Floating point embeddings 特点 适用场景 丈量方式 Euclidean distance (L2) Inner product (IP) Cosine similarity (COSINE) 代码写法 索引类型 In-Memory FLAT 索引 IVF_FLAT IVF_FLAT的工作流程 平衡准确性与速度 性能考虑 代码写法 IVF_SQ8 …

Linux下的C++编程(2)——动态库

为什么要使用动态库&#xff1f; 在实际工作工作&#xff0c;常常需要给予其他人自己的库文件&#xff0c;但是&#xff0c;我们只想让其他人使用我们的库文件&#xff0c;而不想让其他人知道我们具体代码&#xff0c;所以就引入了动态库的概念&#xff0c;使用动态库可以让使…

C++编程小游戏------斗罗大陆(1)魂力测评和武魂觉醒

#include <bits/stdc.h> #include <windows.h> using namespace std; string name,wh; int hl,wh1; int gj50,fy50,jy5000,hp60; int main() { // 共十个武魂["昊天锤","蓝电霸王龙","七杀剑","火凤凰","尖尾雨燕&qu…

Python爬虫:基础爬虫架构及爬取证券之星全站行情数据!

爬虫成长之路&#xff08;一&#xff09;里我们介绍了如何爬取证券之星网站上所有A股数据&#xff0c;主要涉及网页获取和页面解析的知识。爬虫成长之路&#xff08;二&#xff09;里我们介绍了如何获取代理IP并验证&#xff0c;涉及了多线程编程和数据存储的知识。此次我们将在…

YOLOv8-OBB 旋转目标检测训练自己的数据

数据集制作 标注工具&#xff1a;X-AnyLabeling https://github.com/CVHub520/X-AnyLabeling 下载链接&#xff1a;https://pan.baidu.com/s/1UsnDucBDed8pU1RtaVZhQw?pwd5kel 数据标注可以参考&#xff1a;https://zhuanlan.zhihu.com/p/665036259 1. 选择导出方式为…