Transformer 架构解释

一、说明

        变形金刚是机器学习的一个新发展,最近引起了很大的轰动。他们非常善于跟踪上下文,这就是为什么他们写的文本有意义。在本章中,我们将介绍它们的体系结构以及它们的工作原理。

@amanatulla1606

        Transformer 模型是机器学习中最令人兴奋的新发展之一。它们在论文《注意力就是你所需要的一切》中进行了介绍。变形金刚可以用来写故事、散文、诗歌、回答问题、在语言之间翻译、与人类聊天,它们甚至可以通过人类很难的考试!但它们是什么?您会很高兴地知道,Transformer 模型的架构并不那么复杂,它只是一些非常有用的组件的串联,每个组件都有自己的功能。在本章中,您将学习所有这些组件。

        简而言之,变压器是做什么的?想象一下,您正在手机上写一条短信。在每个单词之后,您可能会收到三个建议给您的单词。例如,如果您键入“您好,好吗”,手机可能会建议将“您”或“您的”等词作为下一个字词。当然,如果你继续在手机中选择建议的单词,你很快就会发现这些单词形成的信息没有意义。如果你看每组 3 或 4 个连续的单词,它可能是有道理的,但这些单词并不与任何有意义的东西联系起来。这是因为手机中使用的模型并不包含消息的整体上下文,它只是预测哪个词更有可能在最后几个词之后出现。另一方面,变形金刚会跟踪所写内容的上下文,这就是为什么他们编写的文本有意义的原因。

        手机可以建议在短信中使用的下一个单词,但无法生成连贯的文本。

手机可以建议在短信中使用的下一个单词,但无法生成连贯的文本。

        老实说,当我第一次发现变形金刚一次构建一个单词的文本时,我简直不敢相信。首先,这不是人类造句和思考的方式。我们首先形成一个基本的想法,然后开始提炼它并添加文字。这也不是 ML 模型做其他事情的方式。例如,映像不是以这种方式构建的。大多数基于神经网络的图形模型形成图像的粗略版本,然后慢慢细化或添加细节,直到完美为止。那么,为什么 transformer 模型要逐字构建文本呢?一个答案是,因为这真的很有效。更令人满意的是,由于变形金刚非常善于跟踪上下文,因此他们选择的下一个词正是它继续推进一个想法所需要的。

        变压器是如何训练的?事实上,互联网上有大量数据,所有数据。因此,当你在变压器中输入“你好,好吗”这句话时,它就知道,根据互联网上的所有文字,最好的下一个词是“你”。如果你给它一个更复杂的命令,比如说,“写一个故事”,它可能会发现下一个要用的词是“一次”。然后它将这个单词添加到命令中,并找出一个好的下一个单词是“upon”,依此类推。一字一句地,它会一直持续下去,直到它写出一个故事。

命令:写一个故事。
响应:一次

下一个命令:写一个故事。一次
响应:在

下一个命令:写一个故事。Once Upon
回应:a

下一个命令:写一个故事。从前的回应
时间

下一个命令:写一个故事。曾几何时
回应:有

        现在我们知道了变压器的作用,让我们来看看它们的架构。如果你看过变压器模型的架构,你可能会像我第一次看到它时一样惊叹不已,它看起来很复杂!但是,当您将其分解为最重要的部分时,它并没有那么糟糕。变压器有4个主要部分:

  • 代币化
  • 嵌入
  • 位置编码
  • 变压器块(其中几个)
  • Softmax的

        第四个是变压器块,是最复杂的。其中许多可以连接起来,每个都包含两个主要部分:注意力和前馈分量。

转换器模型的架构

二、标牌化

        标牌化是最基本的步骤。它由一个大型标记数据集组成,包括所有单词、标点符号等。标记化步骤获取每个单词、前缀、后缀和标点符号,并将它们发送到库中的已知标记。

三、嵌入

        一旦输入被标记化,就该把单词变成数字了。为此,我们使用嵌入。在上一章中,您了解了文本嵌入如何将每段文本发送到数字向量(列表)。如果两段文本相似,则其对应向量中的数字彼此相似(分量,即同一位置的每对数字相似)。否则,如果两条文本不同,则其对应向量中的数字不同。

通常,嵌入将每个单词(标记)发送到一长串数字。

四、位置编码

        一旦我们有了与句子中每个标记对应的向量,下一步就是将所有这些转换为一个向量进行处理。将一堆向量转换为一个向量的最常见方法是按组件添加它们。这意味着,我们分别添加每个坐标。例如,如果向量(长度为 2)为 [1,2] 和 [3,4],则它们对应的总和为 [1+3, 2+4],等于 [4, 6]。这可行,但有一个小警告。加法是可交换的,这意味着如果以不同的顺序将相同的数字相加,则会得到相同的结果。在这种情况下,句子“我不难过,我很开心”和句子“我不开心,我很伤心”将产生相同的向量,因为它们具有相同的单词,只是顺序不同。这不好。因此,我们必须想出一些方法,为这两个句子提供不同的向量。有几种方法有效,我们将采用其中一种:位置编码。位置编码包括将一系列预定义的向量添加到单词的嵌入向量中。这确保了我们为每个句子获得一个唯一的向量,并且具有不同顺序的相同单词的句子将被分配不同的向量。在下面的示例中,与单词“Write”、“a”、“story”和“.”对应的向量成为带有有关其位置信息的修改向量,标记为“Write (1)”、“a (2)”、“story (3)”和“。(4)".

位置编码为每个单词添加一个位置向量,以便跟踪单词的位置。

五、变压器块

        让我们回顾一下到目前为止的情况。单词进入并转换为标记(标记化),标记化的单词被转换为数字(嵌入),然后考虑顺序(位置编码)。这为我们提供了输入到模型的每个令牌的向量。现在,下一步是预测这句话中的下一个单词。这是通过一个非常大的神经网络完成的,该神经网络精确地按照该目标进行训练,以预测句子中的下一个单词。

        我们可以训练这样一个庞大的网络,但我们可以通过添加一个关键步骤来极大地改善它:注意力组件。在开创性的论文《注意力就是你所需要的一切》中介绍,它是变压器模型的关键成分之一,也是它们工作得如此之好的原因之一。注意在上一节中已经解释过,但现在,把它想象成一种为文本中的每个单词添加上下文的方法。

        注意分量被添加到前馈网络的每个块上。因此,如果你想象一个大型前馈神经网络,其目标是预测下一个单词,由几个较小的神经网络块组成,那么每个块都会添加一个注意力分量。变压器的每个组件,称为变压器块,然后由两个主要组件组成:

  • 注意力组件。
  • 前馈组件。

变压器是许多变压器块的串联。其中每一个都由一个注意力组件和一个前馈组件(神经网络)组成。

六、注意力

        下一步是注意力。正如你所了解的,注意力机制处理了一个非常重要的问题:上下文问题。有时,如您所知,同一个词可以具有不同的含义。这往往会混淆语言模型,因为嵌入只是将单词发送到向量,而不知道它们使用的单词定义。

        注意力是一种非常有用的技术,可以帮助语言模型理解上下文。为了理解注意力是如何运作的,请考虑以下两句话:

  • 第 1 句:河岸。
  • 第 2 句:银行里的钱。

        正如你所看到的,“银行”这个词出现在两者中,但有不同的定义。在第 1 句中,我们指的是河边的土地,在第二句中,我们指的是持有金钱的机构。计算机对此一无所知,因此我们需要以某种方式将这些知识注入其中。什么可以帮助我们?好吧,似乎句子中的其他词可以拯救我们。对于第一句话,“the”和“of”这两个词对我们没有好处。但是“河流”这个词让我们知道我们谈论的是河边的土地。同样,在第 2 句中,“货币”一词有助于我们理解“银行”一词现在指的是持有货币的机构。

注意力有助于根据句子(或文本)中的其他单词为每个单词提供上下文。

        简而言之,注意力的作用是将句子(或文本片段)中的单词移近单词嵌入。这样,“银行里的钱”这句话中的“银行”一词将更接近“钱”一词。同样,在“河岸”这句话中,“河岸”一词将移近“河”一词。这样,两个句子中每个句子中经过修改的单词“bank”将携带相邻单词的一些信息,从而为其添加上下文。

        变压器模型中使用的注意力步骤实际上要强大得多,它被称为多头注意力。在多头注意力中,使用几种不同的嵌入来修改向量并为其添加上下文。多头注意力帮助语言模型在处理和生成文本时达到更高的效率水平。

七、Softmax 层

        现在您知道转换器是由许多层转换器块组成的,每层都包含一个注意力层和一个前馈层,您可以将其视为一个大型神经网络,用于预测句子中的下一个单词。转换器输出所有单词的分数,其中最高分数分配给句子中最有可能下一个单词的单词。

        转换器的最后一步是 softmax 层,它将这些分数转换为概率(加到 1),其中最高分数对应于最高概率。然后,我们可以从这些概率中抽取下一个单词的样本。在下面的示例中,转换器为“Once”提供了 0.5 的最高概率,为“Somewhere”和“There”提供了 0.3 和 0.2 的概率。采样后,选择单词“once”,这就是转换器的输出。

softmax 层将分数转换为概率,这些分数用于选择文本中的下一个单词。

        现在怎么办?好吧,我们重复这一步。我们现在输入文本“写一个故事。一旦“进入模型,最有可能的是,输出将是”upon”。一遍又一遍地重复这一步,变形金刚最终会写出一个故事,比如“从前,有一个......”。

八、培训后

        既然您知道了变压器的工作原理,我们还有一些工作要做。想象一下:你问变压器“阿尔及利亚的首都是哪里?我们希望它回答“阿尔及尔”,然后继续前进。但是,变压器是在整个互联网上训练的。互联网是一个很大的地方,它不一定是最好的问答库。例如,许多页面都会有一长串没有答案的问题。在这种情况下,“阿尔及利亚的首都是什么?”之后的下一句话可能是另一个问题,例如“阿尔及利亚的人口是多少?”或“布基纳法索的首都是什么?”。转换器不是思考他们反应的人,它只是模仿它在互联网上看到的内容(或提供的任何数据集)。那么我们如何让变压器回答问题呢?

        答案是培训后。就像你教一个人做某些任务一样,你可以得到一个转换器来执行任务。一旦一个转换器在整个互联网上被训练,那么它就会在一个大型数据集上再次被训练,该数据集对应于许多问题及其各自的答案。变形金刚(和人类一样)对他们所学到的最后一件事有偏见,因此后期培训已被证明是帮助变形金刚成功完成他们被要求完成的任务的非常有用的一步。

        后期培训还有助于完成许多其他任务。例如,人们可以用大量的对话数据集对一个转换器进行后期训练,以帮助它作为一个聊天机器人表现良好,或者帮助我们写故事、诗歌甚至代码。

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

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

相关文章

点击出现视频弹框

<VideoPlayer ref"video":size"{ width: 88%, height: 100% }" :videoSrc"currentVideo.url"></VideoPlayer>import VideoPlayer from /components/video-player.vue

Cad怎么绘制齿轮模型?

CAD怎么绘制齿轮模型&#xff1f;cad中想要绘制一个锯齿形状&#xff0c;该怎么绘制呢&#xff1f;学会cad怎么画齿轮是必不可少的&#xff0c;下面我们就来看看使用cad齿轮的画法。 1、cad齿轮画法很简单&#xff0c;首先打开cad正交模式&#xff0c;并打开cad的圆心捕捉、最…

护眼台灯值得买吗?如何选购护眼台灯?2024年护眼台灯排行榜

作为在护眼行业摸爬滚打几年的好老司机&#xff0c;我对护眼台灯产品自然不陌生&#xff0c;护眼台灯也是很早之前就在使用&#xff0c;对于它的技术参数、原理、功能等可以说是非常熟悉。 现在护眼台灯普遍出现在孩子们的书桌上&#xff0c;在孩子深夜学习时&#xff0c;挑起…

打地鼠python程序设计说明,打地鼠游戏界面设计

这篇文章主要介绍了打地鼠python程序设计说明&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 Pygame库是专门为了帮助做出的游戏和其他多媒体应用Python编程语言的一个开放源代…

ORACLE Primavera Unifier v23.12 最新虚拟机(VM)分享下载

引言 根据上周的计划&#xff0c;我近日简单制作了一个基于ORACLE Primavera Unifier 最新版23.12的虚拟机演示环境&#xff0c;里面包括了unifier的全套系统服务 此虚拟系统环境仅用于演示、培训和测试目的。如要在生产环境中使用此虚拟机&#xff0c;请您与Oracle 销售代表联…

灵芝,到2025年有望达到9.2亿美元

灵芝是一种传统的药食两用菌&#xff0c;其具有丰富的营养成分和医疗价值&#xff0c;因此备受关注。全球市场分析 从全球市场来看&#xff0c;近年来灵芝的市场需求持续增长。据估计&#xff0c;2019年全球灵芝市场规模为4.1亿美元&#xff0c;到2025年有望达到9.2亿美元。市场…

Python中Selenium模块的使用详解

Selenium的介绍、配置和调用 Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。支持的浏览器包括IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Firefox&#xff0c;Safari&a…

【C语言】字符串 和 ctype.h 中的函数 练习

前面总结了有关字符串和ctype.h的文章&#xff0c;接下来就以几个例子来练习一下&#xff0c;以巩固之前的基础概念。注意&#xff1a;以下示例都有更简单更高效的解决方法&#xff0c;但本次仅以巩固基础为目的&#xff0c;所以方法可能稍作繁琐 Leetcode 344.反转字符串 编…

【第5期】前端Vue使用Proxy+Vuex(store、mutations、actions)跨域调通本地后端接口

本期简介 本期要点 本地开发前后端如何跨域调用全局请求、响应处理拦截器处理封装HTTP请求模块编写API请求映射到后端API数据的状态管理 一、 本地开发前后端如何跨域调用 众所周知&#xff0c;只要前端和后端的域名或端口不一样&#xff0c;就存在跨域访问&#xff0c;例如&…

数模学习day07-基于熵权法对Topsis模型的修正

初步理解 这里看看就好 熵权法是一种常用的多指标综合评价方法&#xff0c;通过计算指标的熵值来确定各指标的权重。而Topsis模型则是一种常用的多指标决策模型&#xff0c;用于评估不同方案的优劣。 在基于熵权法的Topsis模型中&#xff0c;可以对熵权法进行一些修正来提高模型…

在word文档中自制代码段样式

附&#xff1a; 在word中插入高亮代码的网站 HighlightCode&#xff1a;https://highlightcode.com/ CodeInWord&#xff1a;http://codeinword.com/ 一、新建代码段样式 点击下拉按钮&#xff0c;选择创建样式&#xff0c;命名为代码段&#xff0c;然后点击修改 点击格式&a…

【Linux驱动】Linux中断(二)—— 按键中断驱动

前一篇已经在设备树的 gpio-led 节点中引入了中断信息&#xff0c;接下来将通过API来获取设备树中的中断信息。gpio-led 节点具体内容如下&#xff1a; gpio-key0 {pinctrl-names "default";pinctrl-0 <&pinctrl_gpio_keys>; // pinctrl子系…

linux性能优化

文章目录 性能优化图CPU进程和cpu原理性能指标 性能优化图 CPU 进程和cpu原理 进程与线程&#xff1a; 进程是程序的执行实例&#xff0c;有自己的地址空间和系统资源。线程是进程内的执行单元&#xff0c;共享进程的资源。在多核系统中&#xff0c;使用多线程可以更好地利用多…

【JS逆向】某乐网登陆密码加密逆向分析探索!

一个网站的登陆密码加密逆向解密分析&#xff0c;没有混淆&#xff0c;加密代码还是比较好找的&#xff0c;只需要多花点耐心&#xff0c;多尝试&#xff0c;就能找到关键的加密代码片段。 网址&#xff1a; aHR0cHMlM0EvL29hdXRoLmQuY24vYXV0aC9nb0xvZ2luLmh0bWw 登陆密码加密…

炼石免改造加密亮相2023商密大会,参编密评行业报告发布

2023年8月9-11日&#xff0c;2023商用密码大会在河南省郑州国际会展中心圆满召开&#xff0c;是我国商密领域规格最高、规模最大、影响最广的全国性商用密码盛会&#xff0c;也是《密码法》和新修订的《商用密码管理条例》正式实施以来的第一次全国性的盛会。大会以“密码赋能美…

excel 插件:Rainbow Analyst Crack

一个插件中包含四种 EXCEL 审核工具检测并修复隐藏的电子表格错误 不要满足于更少&#xff0c;四种领先的电子表格审计工具合二为一 Rainbow Analyst&#xff08;因其对颜色编码的独特强大使用而得名&#xff09;结合了世界级电子表格审核功能的多个领域&#xff1a; Excel™ …

关于如何设计出优秀的 URL

Kyle Aster 在 2010 年就写过为什么认真设计 URL 很重要&#xff1a; URL 是通用的&#xff0c;它们适用于 Firefox, Chrome, Safari, Internet Explorer, cURL, wget, 以及 iPhone&#xff0c;Android, 甚至便签。它们是网络的唯一通用语法&#xff0c;不要把这当作理所当然。…

LCR 145. 判断对称二叉树

解题思路&#xff1a; class Solution {public boolean checkSymmetricTree(TreeNode root) {return root null || recur(root.left, root.right);}boolean recur(TreeNode L, TreeNode R) {if(L null && R null) return true;if(L null || R null || L.val ! R.v…

Java 深入理解 AQS 和 CAS 原理

AQS 介绍 AQS 全称是 Abstract Queued Synchronizer&#xff0c;一般翻译为同步器。它是一套实现多线程同步功能的框架&#xff0c;由大名鼎鼎的 Doug Lea 操刀设计并开发实现的。AQS 在源码中被广泛使用&#xff0c;尤其是在 JUC&#xff08;Java Util Concurrent&#xff09;…

天融信Topgate搭建

一、下载防火墙 首先下载防火墙&#xff0c;在虚拟机中打开。 二、网卡配置 防火墙设备上有5块网卡&#xff0c;分别对应接口eth1~5 这里要手动添加&#xff0c;还有需要注意vmnet1&#xff0c;他的必须是192.168.1.0&#xff0c;并且为DHCP 其它vlan无需设置DHCP 自定义网…