【ML】transform 之 decoder 及其实现细节

【ML】transform 之 decoder 及其实现细节

      • 1. decoder
      • 2. encoder 和decoder 之间是如何处理和传递讯息的?self-attention
      • 3. 查询(Query)、键(Key)、值(Value)是三个核心概念及其具体含义和计算方式

1. decoder

在 Transformer 架构中,解码器(Decoder)是负责生成输出序列的部分,例如在机器翻译任务中生成目标语言的句子。解码器由多个相同的层组成,每层都包含几个关键组件,以下是解码器的实现细节:

  1. 自注意力层(Self-Attention Layer)

    • 解码器的第一个自注意力层只接收之前生成的输出作为输入,而不是整个输入序列。这确保了解码器在生成每个输出时刻时,只能看到它之前的状态,而不是未来的输出,这是遵循序列生成中的因果关系。
  2. 遮蔽(Masking)

    • 在自注意力层中使用遮蔽技术,确保在计算注意力权重时,仅考虑当前步骤之前的输出,忽略之后的输出。这通常通过在 softmax 操作之前添加一个上三角矩阵的掩码来实现。
  3. 编码器-解码器注意力层(Encoder-Decoder Attention Layer)

    • 紧接着自注意力层的是编码器-解码器注意力层,它允许解码器层关注编码器的输出。这个层通常使用标准的自注意力机制,但只针对编码器的输出序列。
  4. 前馈网络(Feed-Forward Neural Network)

    • 每个自注意力和编码器-解码器注意力层后面都有一个前馈网络,通常包含两个线性变换和一个非线性激活函数(如 ReLU)。
  5. 残差连接(Residual Connection)

    • 每个子层(自注意力层、编码器-解码器注意力层和前馈网络)的输出都通过残差连接与子层的输入相加。这有助于缓解深层网络训练中的梯度消失问题。
  6. 层归一化(Layer Normalization)

    • 在每个子层的输入和输出上应用层归一化,以稳定训练过程并加速收敛。
  7. 可学习的参数

    • 解码器的每个层都包含可学习的参数,如自注意力层和前馈网络的权重,以及层归一化和残差连接的缩放和平移参数。
  8. 输出层

    • 解码器的最后一层通常会有一个线性层,将隐藏状态映射到输出词汇表的大小,然后通过 softmax 函数进行归一化,以预测下一个词的概率分布。
  9. 训练过程

    • 解码器通过最大化给定正确输出序列的似然性来训练,通常使用交叉熵损失函数。
  10. 并行处理

    • 由于自注意力机制的特性,解码器的所有层都可以并行处理,这与循环神经网络(RNN)的序列处理方式形成对比。
  11. 条件生成

    • 在生成任务中,解码器可以条件于编码器的输出以及之前生成的输出序列,以生成下一个词。

Transformer 解码器的设计允许它捕捉长距离依赖关系,并在生成序列时保持高效的并行计算能力。这些特性使得 Transformer 成为许多序列到序列任务的强大模型。

在这里插入图片描述
在这里插入图片描述

对比 decoder 和 encoder 的差异 : 只有下图中红色方框的一点差异,在多头主注意力机制的基础上增加 mask 操作,那么这个操作有什么影响呢?
,

采用masked self-attention 之后a 和b 之间的依赖关系改编成为,b1 的输出只依赖于 a1,而b2的输出依赖与 a1 a2 ,如图所示依次类推,而原来的 self-attention b 则是有赖于所有的 a

在这里插入图片描述
更具体的如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2. encoder 和decoder 之间是如何处理和传递讯息的?self-attention

在 Transformer 架构中,编码器(Encoder)和解码器(Decoder)之间的信息传递是通过一种特殊的自注意力机制实现的,称为交叉注意力(Cross-Attention)或编码器-解码器注意力(Encoder-Decoder Attention)。以下是交叉注意力的实现原理及其细节:

  1. 编码器输出

    • 编码器处理输入序列(如源语言文本)并生成一系列连续的表示,这些表示捕获了输入数据的上下文信息。
  2. 查询(Query)、键(Key)、值(Value)

    • 在交叉注意力中,解码器的当前状态作为查询,而编码器的输出作为键和值。
    • 查询用于与编码器的键进行比较,以确定注意力权重。
  3. 计算注意力得分

    • 通过计算解码器中每个查询与编码器中每个键的兼容性来确定注意力得分。通常使用点积来计算兼容性:
      score = Q ⋅ K T d k \text{score} = \frac{Q \cdot K^T}{\sqrt{d_k}} score=dk QKT
    • 其中 ( Q ) 是查询矩阵,( K ) 是键矩阵,( d_k ) 是键向量的维度,分母中的平方根是缩放因子。
  4. 应用 softmax 函数

    • 使用 softmax 函数对每个查询的注意力得分进行归一化,得到编码器中每个值的注意力权重:
      weights=softmax(score)
  5. 加权值向量

    • 使用归一化的注意力权重对编码器的值向量进行加权求和,得到最终的交叉注意力输出:
      context = ∑ i weights i ⋅ V i \text{context} = \sum_{i} \text{weights}_i \cdot V_i context=iweightsiVi
    • 其中 ( V_i ) 是编码器中与键 ( K_i ) 相关联的值。
  6. 多头注意力

    • 交叉注意力可以扩展为多头注意力,其中查询、键和值被分割成多个头,每个头独立计算注意力输出,然后将这些输出拼接起来,并通过一个线性层进行整合。
  7. 残差连接和层归一化

    • 交叉注意力的输出通常会通过一个残差连接,即将注意力输出与其输入相加,以帮助梯度流动。
    • 然后,输出会通过层归一化来进一步稳定训练过程。
  8. 遮蔽(Masking)

    • 在解码器的自注意力层中使用遮蔽,以防止解码器在未来的步骤中获取信息。在交叉注意力中,遮蔽确保解码器只能看到编码器的输出,而不能访问未来的解码器状态。
  9. 并行处理

    • 交叉注意力允许并行处理解码器的所有步骤,因为每个步骤的输出仅依赖于当前步骤的输入和编码器的输出。
  10. 实现细节

    • 实现交叉注意力时,可以使用现有的自注意力函数,只需将解码器的状态作为查询,将编码器的输出作为键和值。
    • 在多头注意力中,查询、键和值会被分割成多个头,每个头独立计算注意力,然后使用线性层将结果合并。

交叉注意力是 Transformer 解码器的核心部分,它允许解码器在生成每个输出步骤时,有效地利用编码器捕获的输入序列的上下文信息。这种机制使得 Transformer 能够有效地处理序列到序列的任务,如机器翻译、文本摘要等。

在这里插入图片描述

在这里插入图片描述

decoder 与 encoder 的连接部分 cross attention 两个输入来自与 encoder 一个输入来自于 decoder ,具体的形式如下 2图所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 查询(Query)、键(Key)、值(Value)是三个核心概念及其具体含义和计算方式

在 Transformer 架构中使用的自注意力机制以及交叉注意力机制中,查询(Query)、键(Key)、值(Value)是三个核心概念,它们是从输入数据中派生出来的,用于计算注意力权重和聚合信息。以下是它们的具体含义和计算方式:

  1. 查询(Query)

    • 查询是用于表示解码器中当前步骤的状态,或编码器中当前步骤的状态(在自注意力中)。它们是输入数据通过可学习的线性变换得到的向量。
  2. 键(Key)

    • 键是编码器中输入数据的另一种表示,用于与查询进行比较以确定注意力得分。键同样通过可学习的线性变换从输入数据计算得到。
  3. 值(Value)

    • 值是编码器中与每个键相关联的实际数据,它们包含了编码器处理的输入信息。值也是通过可学习的线性变换从输入数据计算得到的。

计算过程如下:

  • 给定输入序列 ( X ),首先将其分别通过三个不同的可学习线性变换 ( W^Q ),( W^K ),和 ( W^V ) 来得到查询 ( Q ),键 ( K ),和值 ( V ):
    Q = X W Q , K = X W K , V = X W V Q = XW^Q, \quad K = XW^K, \quad V = XW^V Q=XWQ,K=XWK,V=XWV
    其中,( W^Q ),( W^K ),和 ( W^V ) 是模型参数。

  • 然后计算查询和键之间的点积来得到初步的注意力得分:
    score = Q ⋅ K T \text{score} = Q \cdot K^T score=QKT

  • 为了使得注意力得分不会因为维度的大小而受到影响,通常会对得分进行缩放,即除以键向量维度 ( d_k ) 的平方根:
    score = Q ⋅ K T d k \text{score} = \frac{Q \cdot K^T}{\sqrt{d_k}} score=dk QKT

  • 使用 softmax 函数对缩放后的注意力得分进行归一化处理,得到注意力权重:
    weights = softmax ( score ) \text{weights} = \text{softmax}(\text{score}) weights=softmax(score)

  • 最后,注意力权重用于加权和聚合值 ( V ),得到加权的输出,这通常在自注意力或交叉注意力中完成:
    output = ∑ i weights i ⋅ V i \text{output} = \sum_{i} \text{weights}_i \cdot V_i output=iweightsiVi

含义上,查询、键、值机制允许模型在处理序列数据时动态地聚焦于当前步骤最相关的信息。在解码器中,查询来自之前步骤的输出,而键和值来自编码器的输出,这样解码器就可以在生成每个词时考虑编码器中的所有信息,但更加关注与当前词最相关的部分。这种机制使得 Transformer 能够有效地处理长距离依赖问题,并提高了模型的灵活性和表现力。

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

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

相关文章

二十八、【人工智能】【机器学习】- 隐马尔可夫模型 (Hidden Markov Models, HMMs)

系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…

模型 MBTI(性格模型)

系列文章 分享 模型,了解更多👉 模型_思维模型目录。探索真我,和谐人际。 1 MBTI性格模型的应用 1.1 跨国公司团队协作改进 ABC公司是一家全球性的科技公司,其研发团队由来自世界各地的工程师和设计师组成。尽管团队成员个个才华…

【Linux操作系统】关于深度睡眠与浅度睡眠进程的理解

目录 一、可中断的睡眠状态(S浅度睡眠状态)二、不可中断的睡眠状态(D深度睡眠状态)三、关于S浅度睡眠状态与D深度睡眠状态的理解 一、可中断的睡眠状态(S浅度睡眠状态) S(sleeping)…

【docker】docker和镜像仓库

阿里云镜像仓库(Aliyun Container Registry)是阿里云提供的容器镜像存储和管理服务。它以Docker Registry协议为基础,为容器开发者提供了稳定可靠的镜像存储和分发服务。 使用阿里云镜像仓库,您可以将自己的Docker镜像推送到阿里…

sqliabs靶场练习

关卡 熟悉Mqsql相关命令Less-1Less-2Less-3Less-4Less-5Less-6Less-7Less-8Less-9Less-10 熟悉Mqsql相关命令 首先先熟悉一下Mysql的相关命令,可能在SQL注入的时候会用到。 1.查询服务器主机信息 HOSTNAME 主机名称 datadir——数据库路径 version_compile_os—…

Golang | Leetcode Golang题解之第324题摆动排序II

题目&#xff1a; 题解&#xff1a; func wiggleSort(nums []int) {n : len(nums)x : (n 1) / 2target : quickSelect(nums, x-1)transAddress : func(i int) int { return (2*n - 2*i - 1) % (n | 1) }for k, i, j : 0, 0, n-1; k < j; k {tk : transAddress(k)if nums[t…

【Android】四大组件(Activity、Service、Broadcast Receiver、Content Provider)、结构目录

文章目录 Android系统架构Android四大组件ActivityServiceBroadcast ReceiverContent Provider 两大视图主要结构目录 Android系统架构 https://blog.csdn.net/xzzteach/article/details/140904613 Android四大组件 Activity 一个 Activity 包含了用户能够看到的界面&#xff0…

【Web】从TFCCTF-FUNNY浅析PHPCGI命令行注入漏洞利用

目录 背景 CVE-2012-1823 发散利用 法一&#xff1a;读文件 法二&#xff1a;数据外带 背景 CVE-2012-1823 PHP-CGI远程代码执行漏洞&#xff08;CVE-2012-1823&#xff09;分析 | 离别歌 省流&#xff1a; 命令行参数不光可以通过#!/usr/local/bin/php-cgi -d include…

C语言典型例题27

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 习题2.4 用下面的scanf函数输入数据 使a3,b7,x8.5,y71.8,c1A,c2a。问在键盘上怎么输入 代码 //《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 //习题2.4 用下面的scanf函数输入数据&#xff0c;使…

卷积神经网络 - 结构化输出篇

序言 卷积神经网络&#xff08; CNN \text{CNN} CNN&#xff09;作为深度学习领域的重要分支&#xff0c;凭借其强大的特征提取与学习能力&#xff0c;在图像和视频处理领域取得了显著成就。其结构化输出的特性&#xff0c;更是为复杂任务的解决提供了有力支持。本文旨在简要概…

C++ | Leetcode C++题解之第328题奇偶链表

题目&#xff1a; 题解&#xff1a; class Solution { public:ListNode* oddEvenList(ListNode* head) {if (head nullptr) {return head;}ListNode* evenHead head->next;ListNode* odd head;ListNode* even evenHead;while (even ! nullptr && even->next…

DAMA学习笔记(十一)-元数据管理

1.引言 元数据最常见的定义是“关于数据的数据”。它描述了数据本身&#xff08;如数据库、数据元素、数据模型&#xff09;&#xff0c;数据表示的概念&#xff08;如业务流程、应用系统、软件代码、技术基础设施&#xff09;&#xff0c;数据与概念之间的联系&#xff08;关系…

SQL注入(闯关游戏)

目录 关卡1 关卡2 关卡3 关卡4 关卡5 关卡6 关卡7 关卡8 关卡9 关卡10 关卡11 关卡12 关卡13 关卡14 关卡15 关卡16 关卡17 关卡18 关卡19 关卡20 关卡21 关卡22 关卡23 关卡24 关卡1 (联合查询) ?gid1 第一件事情就是逃脱单引号的控制——》为了闭…

表字段显示tip

需求背景&#xff1a; 生成的报表&#xff0c;前端只展示字段名称&#xff0c;计算逻辑没有解释&#xff0c;使用方频繁“骚扰”&#xff0c;实在受不了&#xff0c;增加一个字段tip&#xff0c;实现效果&#xff08;下图&#xff09;&#xff1a; 代码 结合使用el-table-colu…

[Unity实战]Mirror网络与Addressable场景管理

前言 很遗憾&#xff0c;Mirror包括UNET的场景管理不支持Addressables。我做手机游戏&#xff0c;需要实现服务器广播场景切换&#xff0c;但主程序没有场景&#xff0c;热更代码和资源都在AB包里。我已经在Google上搜索了一段时间&#xff0c;没有找到有用的解决方案。 Redd…

unity VR项目3DUI:人物头部旁“说话框”,功能:1.永远朝向相机 2.打字效果 3.UI不会被模型遮挡 4.切换位置 5.文字自动根据内容扩充

提示&#xff1a;文章有错误的地方&#xff0c;还望诸位大神不吝指教&#xff01; 文章目录 前言一、UI搭建1.创建基节点2.创建Canvas3.添加永远看向相机代码4.创建UI背景&#xff0c;设置相关操作1.锚点设置2.添加组件&#xff1a;Vertical Layout Group、Content Size Fitter…

上海冷链配送新篇章 华鼎冷链科技以卓越服务餐饮品牌

在快速发展的上海餐饮连锁行业中&#xff0c;冷链运输作为保障食品安全与品质的关键环节&#xff0c;正迎来前所未有的发展机遇与挑战。华鼎冷链科技作为该领域的佼佼者&#xff0c;正引领着上海乃至全国冷链运输行业的新风尚。 华鼎冷链科技的成功并非一蹴而就。首先&#xff…

视频融合技术

三维视频融合技术遵循数字孪生多源数据融合的原则&#xff0c;比视频窗口、矩阵更加直观高效&#xff0c;省去了人脑理解空间的时间&#xff0c;可有效提升数字孪生城市在物联感知操作、虚实融合交互等方面的能力&#xff0c;动静一体、虚实结合&#xff0c;让三维场景“动起来…

MATLAB基础应用精讲-【数模应用】配对样本Wilcoxon检验(附MATLAB、R语言和python代码实现)

目录 知识储备 常用的统计假设检验的方法 算法原理 什么是Wilcoxon符号秩检验? 何时使用Wilcoxon符号秩检验 适用条件 SPSS-符号秩检验 一统计理论 二实例分析 三拓展知识 SAS --配对样本Wilcoxon符号秩检验 SPSSAU 配对样本Wilcoxon检验案例 1、背景 2、理论 …

SQL注入sqli-labs-master关卡一

本文环境搭建使用的是小皮&#xff0c;靶机压缩包&#xff1a;通过百度网盘分享的文件&#xff1a;sqli-labs-php7-master.zip 链接&#xff1a;https://pan.baidu.com/s/1xBfsi2lyrA1QgUWycRsHeQ?pwdqwer 提取码&#xff1a;qwer 下载解压至phpstudy的WWW目录下即可。 第一…