【Transformer系列】关于Transformer的若干问题FAQ解析

news2025/2/1 13:46:16

一、参考资料

Transformer的细节到底是怎么样的?Transformer 18问

答案解析(1)—史上最全Transformer面试题:灵魂20问帮你彻底搞定Transformer
关于Transformer的若干问题整理记录
Transformer的细节与技巧

二、FAQ

Q:什么是Transformer?

Transformer可以理解为一个函数,输入是“我爱学习”,输出是“I love study”。

Transformer是一种由Encoder和Decoder组成的架构,如果把Transformer架构进行拆分,如下图所示:

Transformer = Transformer Encoder + Transformer Decoder;

Transformer Encoder = Embedding + Positional Encoding + N*(Transformer Encoder block);

Transformer Decoder = Embedding + Positional Encoding + N*(Transformer Decoder block) + Linear + Softmax;

Transformer Encoder block = 子Encoder block1 + 子Encoder block2;

子Encoder block1 = Multi-Head Attention + Add&Norm;

子Encoder block2 = Feed Forward + Add&Norm;

Q:什么是Transformer Encoder?

  1. 从功能角度,Transformer Encoder的核心作用是提取特征。例如,一个人学习跳舞,Encoder是看别人是如何跳舞的,Decoder是将学习到的经验和记忆,展现出来。

  2. 从结构角度,Transformer Encoder = Embedding + Positional Embedding + N*(子Encoder block1 + 子Encoder block2);
    子Encoder block1 = Multi head attention + Add&Norm;
    子Encoder block2 = Feed Forward + Add&Norm;
    在这里插入图片描述

  3. 从输入输出角度,N个Transformer Encoder block中的第一个Encoder block的输入为一组向量 X = (Embedding + Positional Embedding),向量维度通常为512*512,其他N个TransformerEncoder block的输入为上一个 Transformer Encoder block的输出,输出向量的维度也为512*512(输入输出大小相同)。

  4. 为什么是512*512?前者是指token的个数,如“我爱学习”是4个token。这里设置为512是为了囊括不同的序列长度,不够时padding。后者是指每一个token生成的向量维度,也就是每一个token使用一个序列长度为512的向量表示。人们常说,Transformer不能超过512,否则硬件很难支撑;其实512是指前者,也就是token的个数,因为每一个token要做self attention操作;但是后者的512不宜过大,否则计算起来也很慢。

Q:什么是Transformer Decoder?

  1. 从功能角度,相比于Transformer Encoder,Transformer Decoder更擅长做生成式任务,尤其对于自然语言处理问题。

  2. 从结构角度,Transformer Decoder = Embedding + Positional Embedding + N*(子Decoder block1 + 子Decoder block2 + 子Decoder block3)+ Linear + Softmax;
    子Decoder block1 = Mask Multi head attention + Add&Norm;
    子Decoder block2 = Multi head attention + Add&Norm;
    子Decoder block3 = Feed Forward + Add&Norm;
    在这里插入图片描述

  3. 从(Embedding+Positional Embedding)、(N个Decoder block)、(Linear + softmax) 这三个每一个单独作用角度:

    Embedding + Positional Embedding:以机器翻译为例,输入“Machine Learning”,输出“机器学习”;这里的Embedding是把“机器学习”也转化成向量的形式。

    N个Decoder block:特征处理和传递过程。

    Linear + softmax:softmax是预测下一个词出现的概率,如图7所示,前面的Linear层类似于分类网络(ResNet18)最后分类层前接的MLP层。

在这里插入图片描述

  1. Transformer Decoder的输入、输出是什么?在Train和Test时是不同的。

    在Train阶段,如下图所示。这时是知道label的,decoder的第一个输入是begin字符,输出第一个向量与label中第一个字符使用cross entropy loss。Decoder的第二个输入是第一个向量的label,Decoder的第N个输入对应的输出是End字符,到此结束。这里也可以看到,在Train阶段是可以进行并行训练的。
    在这里插入图片描述

    在Test阶段,下一个时刻的输入时是前一个时刻的输出,如图9所示。因此,Train和Test时候,Decoder的输入会出现Mismatch,在Test时候确实有可能会出现一步错,步步错的情况。有两种解决方案:一种是train时偶尔给一些错误,另一种是Scheduled sampling。

    在这里插入图片描述

  2. Transformer Decoder block内部的输出和输出是什么?

    在这里插入图片描述

    对于N=6中的第1次循环(N=1时):子Decoder block1 的输入是 embedding +Positional Embedding,子Decoder block2 的输入的Q来自子Decoder block1的输出,KV来自Transformer Encoder最后一层的输出。

    对于N=6的第2次循环:子Decoder block1的输入是N=1时,子Decoder block3的输出,KV同样来自Transformer Encoder的最后一层的输出。

    总的来说,无论在Train还是Test时,Transformer Decoder的输入不仅来自(ground truth或者上一个时刻Decoder的输出),还来自Transformer Encoder的最后一层

    训练时第i个decoder的输入 = encoder输出 + ground truth embedding

    预测时第i个decoder的输入 = encoder输出 + 第(i-1)个decoder输出

Q:Transformer Encoder和Transformer Decoder有哪些不同?

  1. 作用上,Transformer Encoder常用来提取特征,Transformer Decoder常用于生成式任务。Transformer Encoder和Transformer Decoder是两条不同的技术路线,Bert采用的前者,GPT系列模型采用的是后者。

  2. 结构上,Transformer Decoder block包括了3个子Decoder block,而Transformer Encoder block 包括2个子Encoder block,且Transformer Decoder中使用了Mask multi-head Attention。

  3. 从二者的输入输出角度,N个Transformer Encoder运算完成之后,它的输出才正式输入进Transformer Decoder,作为QKV中的K和V,给Transformer Decoder使用。

    那么TransformerEncoder最后层的输出是如何送给Decoder呢?如下图所示。

    在这里插入图片描述

Q:Transformer是如何训练出来的?

  1. 数据上,在Transformer论文中有提到,用到了4.5M和36M的翻译句子对。

  2. 硬件上,base模型是8个P100 GPU训练了12个小时,大模型是训练了3.5天。

  3. 模型参数和调参层面:

    第一,可训练的参数包括WQ、WK、WV、WO,换包括FFN层的参数。

    第二,可调的参数包括:每一个token向量表示的维度(d_model)、head的头数、Encoder和Decoder中block重复的次数N、FFN中间层向量的维度、Label smoothing(置信度0.1)和dropout(0.1)。

Q:为什么需要Multi-head Attention?

为什么Transformer 需要进行 Multi-head Attention?

Transformer论文中说到进行Multi-head Attention的原因是将模型分为多个头,形成多个子空间,可以让模型去关注不同方面(从不同角度)的信息,最后再将各个方面的信息综合起来。其实直观上也可以想到,如果自己设计这样的一个模型,必然也不会只做一次attention,多次attention综合的结果至少能够起到增强模型的作用,也可以类比CNN中同时使用多个卷积核的作用。直观上讲,多头注意力保证了Transformer可以注意到不同子空间的信息,有助于网络捕捉到更丰富的特征/信息

Q:为什么Q和K使用不同的权重矩阵?

transformer中为什么使用不同的K 和 Q, 为什么不能使用同一个值?

简单理解,使用Q/K/V不同权重矩阵,可以保证在不同空间进行投影,增强表达能力提高泛化能力

Q:计算Attention的时候为何选择点乘积而不是加法?

为了计算更快。矩阵加法的计算量确实简单,但作为一个整体计算Attention时,相当于一个隐层,整体计算量和点乘积相似。在效果上来说,两个的效果与 d k d_k dk 向量维度相关, d k d_k dk 维度越大,加法的效果越显著。

Q:进行softmax之前需要对attention进行scaled?

请参考博客:【Transformer系列】深入浅出理解Transformer网络模型(综合篇)中的【Scaled Dot-Product Attention】章节。

scaled操作的目的是为了防止内积过大,从梯度角度考虑,避免靠近1,易训练;与batch normalization(BN)有一些相似的功能。

Q:为什么要尺度缩放?

避免较大的数值,较大的数值会导致 softmax 之后值更极端,Softmax 极端值会导致梯度消失。

Q:为什么尺度缩放的缩放因子是 d k \sqrt{d_k} dk

假设q,k满足均值为0,方差为1的标准正态分布,那么q、k点积的均值和方差分别为0以及 d k d_k dk
详细证明,可参考:Statistical-Properties-of-Dot-Product

Q:如何理解 Q、K、V矩阵,如何得到 Q、K、V矩阵?

在 Self-Attention 中,Q、K、V 是在同一个输入序列(比如序列中的一个单词)上计算得到的三个向量。具体来说,可以通过对原始输入词的 embedding 进行线性变换(比如使用一个全连接层),来得到 Q、K、V。

Q: Q、K、V矩阵有什么作用,如何通过 Q、K、V矩阵得到最后的输出?

在计算 Self-Attention 时,Q、K、V 被用来计算注意力分数,即用于表示当前位置和其他位置之间的关系。注意力分数可以通过 Q 和 K 的点积来计算,然后将分数除以 8,再经过一个 softmax 归一化处理,得到每个位置的权重。然后用这些权重来加权计算 V 的加权和,即得到当前位置的输出。

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

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

相关文章

ubuntu修改IP地址

参考:ubuntu修改配置IP地址和DNS的方法总结(4种)_ubuntu设置ip地址-CSDN博客 面对ubuntu18以上的版本,主要有两种界面:图形化界面和纯命令行界面。 图形化界面配置比较简单,命令行配置稍许复杂&#xff0c…

python中的logging的使用

初级应用 import logginglogging.basicConfig(levellogging.INFO,format%(asctime)s| %(filename)s[line:%(lineno)s] |%(levelname)s| %(message)s,datefmt%Y-%m-%d %H:%M:%S,filenamesys.path[0]/running_log.log,filemodea) logging.info(This is log)高级应用 # logging的…

HTTP 响应头 X-Frame-Options

简介 X-Frame-Options HTTP 响应头用来给浏览器一个指示。该指示的作用为&#xff1a;是否允许页面在 <frame>, </iframe> 或者 <object> 中展现。 网站可以使用此功能&#xff0c;来确保自己网站的内容没有被嵌套到别人的网站中去&#xff0c;也从而避免了…

chatGPT 帮我优化mysql查询语句 优化一下查询速度

最终效果 备份一下数据库&#xff0c;加上索引就行。25ms查询完成。 对比 加上索引之前及之后的 EXPLAIN SELECT d.sn, d.imei1, d.imei2, d.remark FROM device_info_new d INNER JOIN production_log p ON d.state ‘0’ AND p.sn d.sn AND p.imei1 d.imei1 AND p.imei2 …

在雷电模拟器9上安装magisk并安装LSPosed模块以及其Manager管理器(一)

环境&#xff1a;win10 64&#xff0c;雷电模拟器9.0.60(9)&#xff0c;Android 9。 之前我都是用雷电模拟器版本4.0.78&#xff0c;Android版本7.1.2&#xff0c;为什么本篇要使用9了呢&#xff1f;先解答下这个问题。原因如下&#xff1a;经过我的测试&#xff0c;LSPosed不支…

【递归】汉诺塔问题(Java版)

目录 1.题目解析 2.讲解算法原理 2.1.如何来解决汉诺塔问题&#xff1f; 2.2.为什么这道题可以用递归来做&#xff1f; 2.2.1 什么是递归 2.2.2 为什么会用到递归 3.如何编写递归代码&#xff1f; 4.递归的细节展开图 1.题目解析 汉诺塔问题链接 在经典汉诺塔问题中&a…

激活函数小结:ReLU、ELU、Swish、GELU等

文章目录 SigmoidTanhReLULeaky ReLUPReLUELUSoftPlus MaxoutMishSwishGELUSwiGLUGEGLU资源 激活函数是神经网络中的非线性函数&#xff0c;为了增强网络的表示能力和学习能力&#xff0c;激活函数有以下几点性质&#xff1a; 连续且可导&#xff08;允许少数点上不可导&#x…

halcon深度学习中的样本增强

一、问题描述 halcon的例程中&#xff0c;下面是最经典的语义分割例子。 但是&#xff0c;它并没做样本增强&#xff0c;因为 你看下图的代码&#xff0c;第90行&#xff0c;那两个参数都是[]&#xff0c;空的。 二、解决方案 如下图所示&#xff0c;增加了从95到108行&#…

启航kp OpenHarmony环境搭建

前提 启航kp OpenHarmony环境搭建 搭建好OpenHarmony环境 未搭建好可以参考OpenHarmony docker环境搭建 安装vscode 下载好启航kp所需的开发包和样例 下载地址 搭建过程 进入正确文件夹 首先要进入 /home/openharmony 目录下&#xff0c;如果没有打开在vsc左上角找到文…

DELL R710硬盘格式化方法备忘录

DELL R710硬盘格式化方法备忘录 本方法是全部格式化硬盘&#xff0c;不能格式化其中的某一块 开机出现带CTRLR字样后 按CTRLR 按下CTRLP三次 以上是目前硬盘的状态&#xff0c;使用中的是ONLINE状态&#xff0c; 按CTRLP&#xff0c;回到第一个界面&#xff0c;然后按F2 选择…

【线上Java项目部署Bug记录】天翼云80端口不能使用,即使暴露了也不行!!!

项目场景&#xff1a; 项目背景&#xff1a;使用Docker部署SpringBoot项目&#xff0c;前端是 Vue 项目是&#xff1a;https://gitee.com/JavaLionLi/RuoYi-Vue-Plus 服务器&#xff1a;天翼云服务器 端口&#xff1a; 问题描述 所有端口都开的好好的&#xff0c;docker的…

山西电力市场日前价格预测【2023-10-15】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-15&#xff09;山西电力市场全天平均日前电价为409.82元/MWh。其中&#xff0c;最高日前价格为722.95元/MWh&#xff0c;预计出现在19: 00。最低日前电价为255.87元/MWh&#xff0c;预计…

tkinter自定义组件:文件选择按钮和颜色选择按钮

文章目录 文件对话框按钮代码实现颜色对话框 tkinter系列&#xff1a; GUI初步&#x1f48e;布局&#x1f48e;绑定变量&#x1f48e;绑定事件&#x1f48e;消息框&#x1f48e;文件对话框Frame控件&#x1f48e;PanedWindow和notebook控件扫雷小游戏&#x1f48e;强行表白神器…

人工智能就业前景越来越严峻了,你还在坚持吗?

点击上方关注 “终端研发部” 设为“星标”&#xff0c;和你一起掌握更多数据库知识 从最近最火的chatGpt来看&#xff0c;AI时长不但没有低迷下去&#xff0c;而且还越来越好了&#xff01;去年毕业的一个朋友&#xff0c;硕士毕业&#xff0c;目前在字节做机器学习工程师&…

【Spring框架】Spring监听器的简介和基本使用

目录 一、观察者模式 1.1 模型介绍 1.2 观察者模式Demo 1.2.1 观察者实体 1.2.2 主题实体 1.2.3 测试代码 二、Spring监听器的介绍 2.1 事件&#xff08;ApplicationEvent&#xff09; 2.1.1 Spring内置事件 2.1.2 Spring内置事件 2.2 事件监听器&#xff08;Applic…

阿里云安全中心需要购买吗?功能及价格告诉你值不值!

阿里云云安全中心有必要购买吗&#xff1f;云安全中心经常提示云服务器高危漏洞&#xff0c;需要购买云安全中心吗&#xff1f;无论是云服务器上是网站还是其他应用&#xff0c;难免会存在漏洞&#xff0c;有漏洞是一定要修复的&#xff0c;云安全中心不仅可以修复漏洞还可以防…

【C++STL基础入门】list的增、删

文章目录 前言一、list迭代器1.1 list迭代器的定义 二、list增2.1 头添加2.2 尾添加2.3 中间添加 三、list删3.1 尾删除3.2 头删除3.3 删除指定元素3.4 clear()函数3.5 remove()函数3.6 unique()函数 总结 前言 在C中&#xff0c;STL&#xff08;Standard Template Library&am…

ALBERT-更小更少但并不快

BERT模型的压缩大致可以分为&#xff1a;1. 参数剪枝&#xff1b;2. 知识蒸馏&#xff1b;3. 参数共享&#xff1b;4. 低秩分解。 其中&#xff0c;对于剪枝&#xff0c;比较简单&#xff0c;但是容易误操作降低精读&#xff1b; 对于知识蒸馏&#xff0c;之前我写个一系列的…

【完美世界】战王之殇特别篇定档,11月3日播,云曦受辱石昊杀红眼了

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析完美世界国漫资讯。 完美世界第132集已经播出了&#xff0c;相信很多人都去看了。但是不知道大家注意到这一集的片尾没有。如果没有快进或者直接跳过的话&#xff0c;那么应该知道&#xff0c;官方给大家送惊喜了。 这个…

高校教务系统登录页面JS分析——四川大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文&#xff0c;你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习&#xff0c;勿用于非法用途。 一、密码加…