【变形金刚02】注意机制以及BERT 和 GPT
一、说明
我已经解释了什么是注意力机制,以及与转换器相关的一些重要关键字和块,例如自我注意、查询、键和值以及多头注意力。在这一部分中,我将解释这些注意力块如何帮助创建转换器网络,注意、自我注意、多头注意、蒙面多头注意力、变形金刚、BERT 和 GPT。
二、内容:
- RNN 的挑战以及转换器模型如何帮助克服这些挑战(在第 1 部分中介绍)
- 注意力机制 — 自我注意、查询、键、值、多头注意(在第 1 部分中介绍)
- 变压器网络
- GPT 的基础知识(将在第 3 部分中介绍)
- BERT的基础知识(将在第3部分中介绍)
三. 变压器网络
论文 — 注意力就是你所需要的一切 (2017)
图1.The Transformer Network(来源:图片来源于原文)
图 1 显示了变压器网络。这个网络已经取代了RNN,成为NLP甚至计算机视觉(视觉变压器)的最佳模型。
网络包含两部分 — 编码器和解码器。
在机器翻译中,编码器用于对初始句子进行编码,解码器用于生成翻译后的句子。转换器的编码器可以并行处理整个句子,使其比RNN更快,更好 - RNN一次处理句子的一个单词。
3.1 编码器块
图2.变压器网络的编码器部分(来源:图片来自原文)
编码器网络从输入开始。在这里,整个句子立即被喂食。然后将它们嵌入到“输入嵌入”块中。然后将“位置编码”添加到句子中的每个单词中。这种编码对于理解句子中每个单词的位置至关重要。如果没有位置嵌入,模型会将整个句子视为一个装满单词的袋子,没有任何序列或含义。
详细地:
3.1.1 输入嵌入
— 句子中的单词“dog”可以使用嵌入空间来获取向量嵌入。嵌入只是将任何语言中的单词转换为其向量表示。示例如图 3 所示。在嵌入空间中,相似的单词具有相似的嵌入,例如,单词“cat”和单词“kitty”在嵌入空间中会非常接近,而单词“cat”和“emotion”会在空间中落得更远。
图3.输入嵌入(来源:作者创建的图像)
3.1.2 位置编码
不同句子中的单词可以有不同的含义。例如,单词 dog in a.我养了一只可爱的狗(动物/宠物 - 位置 5)和 b。你真是一条懒狗!(无价值-位置4),有不同的含义。为了帮助进行位置编码。它是一个向量,根据单词在句子中的上下文和位置提供信息。
在任何句子中,单词一个接一个地出现,具有重要意义。如果句子中的单词混乱,那么句子将没有意义。但是当转换器加载句子时,它不会按顺序加载,而是并行加载它们。由于变压器架构在并行加载时不包括单词的顺序,因此我们必须明确定义单词在句子中的位置。这有助于转换器理解句子中的一个单词在另一个单词之后。这就是位置嵌入派上用场的地方。这是一种定义单词位置的矢量编码。在进入注意力网络之前,此位置嵌入被添加到输入嵌入中。图 4 给出了输入嵌入和位置嵌入的直观理解,然后再将其输入到注意力网络中。
图4.直观理解位置嵌入(来源:作者创建的图像)
有多种方法可以定义这些位置嵌入。例如,在原始论文《注意力是你所需要的一切》中,作者使用交替的正弦和余弦函数来定义嵌入,如图5所示。
图5.原论文中使用的位置嵌入(来源:原论文图片)
尽管此嵌入适用于文本数据,但此嵌入不适用于图像数据。因此,可以有多种方式嵌入对象的位置(文本/图像),并且可以在训练过程中固定或学习它们。基本思想是,这种嵌入允许转换器架构理解单词在句子中的位置,而不是通过混淆单词来弄乱含义。
在单词/输入嵌入和位置嵌入完成后,嵌入然后流入编码器最重要的部分,其中包含两个重要块 - “多头注意力”块和“前馈”网络。
3.1.3 多头注意力
这是魔术发生的主要块。要了解多头注意力,请访问此链接 — 2.4 多头注意力。
作为输入,该块接收一个包含子向量(句子中的单词)的向量(句子)。然后,多头注意力计算每个位置与矢量其他位置之间的注意力。
图6.缩放点积注意力(来源:图片来自原始论文)
上图显示了缩放的点积注意力。这与自我注意完全相同,增加了两个块(比例和蒙版)。要详细了解Sef-Attention,请访问此链接 — 2.1 自我关注。
如图 6 所示,缩放注意力完全相同,只是它在第一个矩阵乘法 (Matmul) 之后增加了一个刻度。
缩放比例如下所示,
缩放后的输出将进入遮罩层。这是一个可选层,对机器翻译很有用。
图7.注意力块(来源:作者创建的图像)
图 7 显示了注意力块的神经网络表示。词嵌入首先传递到一些线性层中。这些线性层没有“偏差”项,因此只不过是矩阵乘法。其中一个层表示为“键”,另一个表示为“查询”,最后一个层表示为“值”。如果在键和查询之间执行矩阵乘法,然后规范化,我们得到权重。然后将这些权重乘以值并相加,得到最终的注意力向量。这个块现在可以在神经网络中使用,被称为注意力块。可以添加多个这样的注意力块以提供更多上下文。最好的部分是,我们可以获得梯度反向传播来更新注意力块(键、查询、值的权重)。
多头注意力接收多个键、查询和值,通过多个缩放的点积注意力块馈送它,最后连接注意力以给我们一个最终输出。如图 8 所示。
图8.多头注意力(来源:作者创建的图像)
更简单的解释:主向量(句子)包含子向量(单词)——每个单词都有一个位置嵌入。注意力计算将每个单词视为一个“查询”,并找到一些与句子中其他一些单词对应的“键”,然后采用相应“值”的凸组合。在多头注意力中,选择多个值、查询和键,以提供多重关注(更好的单词嵌入与上下文)。这些多个注意力被连接起来以给出最终的注意力值(来自所有多个注意力的所有单词的上下文组合),这比使用单个注意力块要好得多。
在简单的单词,多头注意力的想法是采用一个单词嵌入,将其与其他一些单词嵌入(或多个单词)结合使用注意力(或多个注意力)来为该单词产生更好的嵌入(嵌入周围单词的更多上下文)。
这个想法是计算每个查询的多个注意力,具有不同的权重。
3.1.4 添加和规范和前馈
下一个块是“添加和规范”,它接收原始单词嵌入的残差连接,将其添加到多头注意力的嵌入中,然后将其归一化为零均值和方差 1。
这被馈送到一个“前馈”块,该块的输出端也有一个“添加和规范”块。
整个多头注意力和前馈块在编码器块中重复n次(超参数)。
3.2 解码器块
图9.变压器网络的解码器部分(Souce:图片来自原始论文)
编码器的输出又是一系列嵌入,每个位置一个嵌入,其中每个位置嵌入不仅包含原始单词在该位置的嵌入,还包含有关其他单词的信息,这些信息是它使用注意力学习的。
然后将其馈送到变压器网络的解码器部分,如图9所示。解码器的目的是产生一些输出。在论文《注意力是你所需要的一切》中,这个解码器被用于句子翻译(比如从英语到法语)。因此,编码器将接收英语句子,解码器将其翻译成法语。在其他应用程序中,网络的解码器部分不是必需的,因此我不会过多地阐述它。
解码器块中的步骤 —
1.在句子翻译中,解码器块接收法语句子(用于英语到法语翻译)。像编码器一样,这里我们添加一个词嵌入和一个位置嵌入,并将其馈送到多头注意力块。
2.自注意力块会为法语句子中的每个单词生成一个注意力向量,以显示句子中一个单词与另一个单词的相关性。
3.然后将法语句子中的注意力向量与英语句子中的注意力向量进行比较。这是英语到法语单词映射发生的部分。
4.在最后几层中,解码器预测英语单词到最佳可能的法语单词的翻译。
5.整个过程重复多次,以获得整个文本数据的翻译。
用于上述每个步骤的模块如图 10 所示。
图 10.不同解码器块在句子翻译中的作用(来源:作者创建的图像)
解码器中有一个新块 - 蒙面多头注意力。所有其他块,我们之前已经在编码器中看到过。
3.2.1Mask多头注意力
这是一个多头注意力块,其中某些值被屏蔽。屏蔽值的概率为空或未选中。
例如,在解码时,输出值应仅取决于以前的输出,而不依赖于未来的输出。然后我们屏蔽未来的输出。
3.3 结果和结论
图 11.结果(来源:原始论文图片)
在论文中,将英语到德语和英语到法语之间的语言翻译与其他最先进的语言模型进行了比较。BLEU是语言翻译比较中使用的度量。从图 11 中,我们看到大型转换器模型在这两个翻译任务中都获得了更高的BLEU分数。他们还显着改善的是培训成本。
总之,变压器模型可以降低计算成本,同时仍然获得最先进的结果。
在这一部分中,我解释了变压器网络的编码器和解码器块,以及如何在语言翻译中使用每个块。在下一部分也是最后一部分(第 3 部分),我将讨论一些最近变得非常有名的重要变压器网络,例如 BERT(来自变压器的双向编码器表示)和 GPT(通用变压器)。
四、引用
Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, and Illia Polosukhin. 2017. Attention is all you need. In Proceedings of the 31st International Conference on Neural Information Processing Systems (NIPS’17). Curran Associates Inc., Red Hook, NY, USA, 6000–6010.
相关文章:

【变形金刚02】注意机制以及BERT 和 GPT
一、说明 我已经解释了什么是注意力机制,以及与转换器相关的一些重要关键字和块,例如自我注意、查询、键和值以及多头注意力。在这一部分中,我将解释这些注意力块如何帮助创建转换器网络,注意、自我注意、多头注意、蒙面多头注意力…...

一个脚本 专治杂乱
背景 之前不是自己手动搞了一个COS嘛,直接复制粘贴图片,上传到后端的服务器,返回一个可访问的地址。我在哔哩哔哩上也分享过这样的一期视频。 今天偶尔上服务器一看,我靠,我的文件真的乱! 这还得了了&…...

springboot 基础
巩固基础,砥砺前行 。 只有不断重复,才能做到超越自己。 能坚持把简单的事情做到极致,也是不容易的。 SpringBoot JavaEE 简介 JavaEE的局限性: 1、过于复杂,JavaEE正对的是复杂的分布式企业应用,然而现实…...
web集群学习:基于nginx的反向代理和负载均衡
目录 一,反向代理 1,环境准备 2,配置代理服务器 3,在物理机上一管理员身份打开文本编辑器,编辑C:\Windows\System32\drivers\etc目录下的hosts文件 4,访问测试 5,查看日志,并记…...
编程小窍门: 一个简单的go mutex的小例子
本期小窍门用到了两个组件 mutex 这个类似其他语言的互斥锁waitGroup 这个类似其他语言的信号量或者java的栅栏锁 示例如下 func TestDoSomething04(t *testing.T) {total : 0var wg sync.WaitGroup{}var mut sync.Mutex{} for i : 0; i < 5000; i {go func() {wg.Ad…...

【工作记录】mysql中实现分组统计的三种方式
前言 实际工作中对范围分组统计的需求还是相对普遍的,本文记录下在mysql中通过函数和sql完成分组统计的实现过程。 数据及期望 比如我们获取到了豆瓣电影top250,现在想知道各个分数段的电影总数. 表数据如下: 期望结果: 实现方案 主要思路是根据s…...

马来西亚的区块链和NFT市场调研
马来西亚的区块链和NFT市场调研 基本介绍 参考: https://zh.wikipedia.org/wiki/%E9%A9%AC%E6%9D%A5%E8%A5%BF%E4%BA%9A zz制度:联邦议会制 语言文字: 马来语 民族: 69.4%原住民(土著),23.2%…...

[保研/考研机试] KY109 Zero-complexity Transposition 上海交通大学复试上机题 C++实现
描述: You are given a sequence of integer numbers. Zero-complexity transposition of the sequence is the reverse of this sequence. Your task is to write a program that prints zero-complexity transposition of the given sequence. 输入描述…...

Linux零基础快速入门到精通
一、操作系统概述 二、初始Linux Linux的诞生 Linux内核 Linux发行版 小结 三、虚拟机 认识虚拟机 虚拟化软件及安装 VMware Workstation 17 Pro安装教程https://blog.csdn.net/weixin_62332711/article/details/128695978 远程连接Linux系统 小结 扩展-虚拟机快照 …...

ARM02汇编指令
文章目录 一、keil软件介绍1.1 创建工程1.2 解析start.s文件(重点)1.3 乱码解决1.4 更换背景颜色1.5 C语言内存分布1.6 解析map.lds文件(重点)1.7 常见错误信息1.8 仿真 二、汇编三种符号2.1 汇编指令2.2 伪指令2.3 伪操作 三、汇编指令格式3.1 格式3.2 注意事项 四、数据操作指…...

从初学者到专家:Java方法的完整指南
目录 一.方法的概念及使用 1.1什么是方法 1.2方法的定义 1.3方法的调用 1.4实参和形参的关系 1.5没有返回值的方法 1.6方法的意义 二.方法重载 2.1方法重载的实现 2.2方法重载的意义 2.3方法签名 一.方法的概念及使用 1.1什么是方法 方法就是一个代码片段. 类似于 …...

【生成式AI】ProlificDreamer论文阅读
ProlificDreamer 论文阅读 Project指路:https://ml.cs.tsinghua.edu.cn/prolificdreamer/ 论文简介:截止2023/8/10,text-to-3D的baseline SOTA,提出了VSD优化方法 前置芝士:text-to-3D任务简介 text-to-3D Problem text-to-3D…...
C++元编程——模拟javascript异步执行
javascript有一个期约调用,就是利用内部的一种协程机制实现的类似并行的操作。以下是用ChatGPT搞出来的一块演示代码: // 异步任务 function asyncTask() {return new Promise((resolve, reject) > {setTimeout(() > {const randomNumber Math.f…...

【JavaEE】懒人的福音-MyBatis框架—复杂的操作-动态SQL
【JavaEE】MyBatis框架要点总结(3) 文章目录 【JavaEE】MyBatis框架要点总结(3)1. 多表查询1.1 映射表resultMap1.2 只有部分属性跨表查询1.2.1 依照常规去写代码1.2.2 用标签去实现接口 1.3 分多步的解决方案1.4 与多线程的结合 …...
Springboot 默认路径说明
Spring Boot基本上是Spring框架的扩展,它消除了设置Spring应用程序所需的样板配置,极大的方便了开发者,其默认识别路径如下: Spring Boot 作为Spring默认将 /** 所有访问映射到以下目录: 1、classpath:/static 用于加…...
springboot注册拦截器与返回统一标准响应格式
响应对象ResultVO package com.example.poi.utils;import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.io.Serializable;/*** A…...

卷王特斯拉又全网降价了,卷死车企们
哈喽,大家好,今天媒介盒子小编又来跟大家分享软文推广的干货知识了,本篇分享的主要内容是:特斯无孔不入的营销手段。 1、特斯拉Model Y降价 车企要打架 自2023 年 8 月 14 日起,Model Y 长续航版起售价从 31.39 万元调整为 29.99 万元,Mode…...

wiley:revision 流程
1 上传修改后的word文件 注意:包括没标注修改位置的word文件和标注了修改位置的word文件 2 上传response回复文件 Your Author Response should include relevant comments that you have copied from the decision letter, along with your comments detailing …...

【论文阅读】基于深度学习的时序预测——Pyraformer
系列文章链接 论文一:2020 Informer:长时序数据预测 论文二:2021 Autoformer:长序列数据预测 论文三:2022 FEDformer:长序列数据预测 论文四:2022 Non-Stationary Transformers:非平…...

玩转IndexedDB,比localStorage、cookie还要强大的网页端本地缓存
随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据。 现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的大小不超过 4K…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...

Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
基于matlab策略迭代和值迭代法的动态规划
经典的基于策略迭代和值迭代法的动态规划matlab代码,实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...