Transformer面试题总结

在这里插入图片描述

1.框架
Transformer和seq2seq一样由解码器和编码器组成,用多头注意力替换编码器和解码器架构中最常用的循环层
1.1 编码器:编码器有一堆N=6的相同层组成,每一层有两个子层,第一个子层包含多头注意力机制,第二个子层是前馈神经网络,每两个子层采用残差链接,然后进行归一化,为了保证残差链接维度一致,模型所有子层和嵌入层维度爆出在512,

1.2 解码器:解码器同样由N=6相同的层组成,除了和编码器有两个相同的子层以外,解码器第三个子层是带有掩码的注意力机制,Mask mutil-Head Attention ,做解码是一个自回归,需要确保当前时刻t的位置不会关注t以后的数据。

1.3 Linear + softmax:
全连接层和softmax函数,目的是将解码器的输出转换为预测的下一个token出现的概率,

2.整理运行流程
第一步:获取输入句子的每一个单词的表示向量 X,X由单词的 Embedding(Embedding就是从原始数据提取出来的Feature) 和单词位置的 Embedding 相加得到。
第二步:将得到的单词表示向量矩阵传入 Encoder 中,经过 6 个 Encoder block 后可以得到句子所有单词的编码信息矩阵,每一个 Encoder block 输出的矩阵维度与输入完全一致。
第三步:将 Encoder 输出的编码信息矩阵传递到 Decoder 中,Decoder 依次会根据当前翻译过的单词 1~ i 翻译下一个单词 i+1,

3.模块详细介绍

3.1 Embedding和Positional Embedding
Embedding是将计算机无法处理的单词或者汉字,转化成为计算机可以识别的向量,单词的Embedding 有很多种方式可以获取,例如可以采用 Word2Vec、Glove 等算法预训练得到,也可以在 Transformer 中训练得到。
而Attention机制并没有考虑先后顺序信息,但前后顺序信息对语义影响很大,因此需要通过Positional Embedding这种方式把前后位置信息加在输入的Embedding上。
实现方式使用不同频率的sin和cos函数

attention:对于序列数据而言,attention的本质就是通过权重矩阵计算找到输入中不同token之间的相互关系,函数是计算是由查询词q和键k做内积,然后除以根号输入向量的维度dk,并用softmax函数计算后乘以权重V,
(做内积的目的是计算q和k两个向量的相似度,两个向量越接近相似度越高,一个query中有n个q v 对,最后输出是n个结果,最后softmax会得到n个和为1的权重,乘以v得到最后的输出)
(和点积计算不同的是,除以根号dk,对于较小的dk,两中机制表现类似,dk较大时,点积计算的量级会增大很多,但是除以这个值的计算量就很小)

self-attention
Multi-Head Attention,是由多个 Self-Attention组成的,可以看到 Encoder block 包含一个 Multi-Head Attention,而 Decoder block 包含两个 Multi-Head Attention (其中有一个用到 Masked)。Multi-Head Attention 上方还包括一个 Add & Norm 层,Add 表示残差连接 (Residual Connection) 用于防止网络退化,Norm 表示 Layer Normalization,用于对每一层的激活值进行归一化。

是什么:self attention是每一个Q与每一个K依次计算注意力系数,经softmax后最后乘V得到最后的输出结果,
在这里插入图片描述
Multi-Head Attention
Multi-Head Attention 包含多个 Self-Attention 层,首先将输入X分别传递到 h 个不同的 Self-Attention 中,计算得到 h 个输出矩阵Z。 h=8 时会得到 8 个输出矩阵Z。得到 8 个输出矩阵 之后,Multi-Head Attention 将它们拼接在一起 (Concat),然后传入一个Linear层,得到 Multi-Head Attention 最终的输出Z,

Mask操作是如何具体实现的呢?
Q1只跟K1计算,Q2只跟K1、K2计算,而对于K3、K4等,在softmax之前给一个非常大的负数,由此经过softmax之后变为0

ADD
可以防止网络退化,常用于解决多层网络难训练的问题。

什么是Norm?
Norm就是layer normalization。
核心作用:为了训练更加稳定,和batch normalization有相同的作用,都是为了使输入的样本均值为零,方差为1。
为什么不使用batch normalization,使用的是layer normalization呢?因为一个时序数据,句子输入长度有长有短,如果使用batch normalization,则很容易造成因样本长短不一造成“训练不稳定”。BN是对同一个batch内的所有数据的同一个特征数据进行操作;而LN是对同一个样本进行操作。

什么是FFN?
FFN就是feed forward networks。
为什么有了Self attention层,还要有FFN?Attention已经有了想要的序列信息特征,MLP的作用是把信息投影到特定的空间里,再做一次非线性映射,和Self attention交替使用。
结构上:包括两层MLP,第一层的维度为5122048,第二层的维度为2048512,且第二层MLP没有使用激活函数

参考链接
link
link

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

React环境安装配置

React环境安装配置 一、前提二、React安装 一、前提 安装本地React环境需要Node.js,如果具有Node环境跳过即可。如果没有安装则可参考该篇文章安装Node环境,点击查看 二、React安装 全局安装React 首先打开命令行,建议以管理员身份输入命…

Golang语言介绍、环境搭建以及编译工具( CDN 加速代理)

Go 语言是非常有潜力的语言,是因为它的应用场景是目前互联网非常热门的几个领域,比如 WEB 开发、区块链开发、大型游戏服务端开发、分布式/云计算开发。国内比较知名的B 站就是用 Go 语言开发的,像 Goggle、阿里、京东、百度、腾讯、小米、36…

人工神经网络太简陋了,《Science》揭露,神经元树突也隐含计算能力

本篇文章是博主在人工智能等领域学习时,用于个人学习、研究或者欣赏使用,并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记,若有不当和侵权之处,指出后将会立即改正,还望谅解。文章分类在学习摘录和笔记专…

[论文阅读] (31)李沐老师视频学习——4.研究的艺术·理由、论据和担保

《娜璋带你读论文》系列主要是督促自己阅读优秀论文及听取学术讲座,并分享给大家,希望您喜欢。由于作者的英文水平和学术能力不高,需要不断提升,所以还请大家批评指正,非常欢迎大家给我留言评论,学术路上期…

【微服务】什么是微服务?-- 全面了解微服务架构

What is Microservices — Edureka 您有没有想过,什么是微服务以及扩展行业如何与它们集成,同时构建应用程序以满足客户的期望? 要了解什么是微服务,您必须了解如何将单体应用程序分解为独立打包和部署的小型微型应用程序。本文将…

【Docker】基于jib插件,实现Docker部署springboot项目

文章目录 创建springboot项目jib插件介绍使用打tar包 Docker部署springboot项目 在工作中,作为一名后端开发人员,项目部署运维的事我们可能都要同时干,今天想跟大家聊聊关于springboot项目使用docker部署相关操作。后期还会跟大家分享docker-…

服务器垃圾怎样清理?C盘垃圾如何清理?

好多人都在问电脑垃圾如何清理?服务器的垃圾清理是系统维护中必不可少的一项任务,而C盘垃圾的清理同样也是必须要做的任务之一。那么,如何一键清理服务器垃圾,C盘垃圾如何清理呢?今天,我会以服务器助手为例…

动态ip与静态ip的概念、区别、应用场景

动态ip与静态ip的区别 前言一、介绍IP地址的概念和作用1.1、IP地址的定义1.2、IP地址的作用 二、动态IP和静态IP的区别2.1、动态IP和静态IP的定义2.2、动态IP和静态IP的特点2.3、动态IP和静态IP的优缺点比较 三、动态IP和静态IP的应用场景3.1. 动态IP的应用场景3.2. 静态IP的应…

【Spring Boot】Spring Boot配置文件详情

前言 Spring Boot是一个开源的Java框架,用于快速构建应用程序和微服务。它基于Spring Framework,通过自动化配置和约定优于配置的方式,使开发人员可以更快地启动和运行应用程序。Spring Boot提供了许多开箱即用的功能和插件,包括嵌…

LeetCode 75 —— 62. 不同路径

LeetCode 75 —— 62. 不同路径 一、题目描述: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” &…

【图像处理】去雾源码收集(halcon、python、C#、VB、matlab)

【图像处理】去雾代码收集(附halcon、python、C#、VB、matlab源码) 一、halcon算法1.1 halcon算法源码1.2 halcon算法效果图![在这里插入图片描述](https://img-blog.csdnimg.cn/8ad5217a59be4de29b5a7b6eee997b85.png#pic_center) 二、opencv算法2.1 py…

SQL Server数据库 -- 表的创建与管理

文章目录 一、数据表的组成二、创建数据表 表的创建表的查看表的增加表的修改表的删除、三、表的架构操作四、总结 前言 上次博客写到了数据库的创建与管理,但是创建的库里面什么东西都没有,现在我们需要在库里面添加数据表内容 一、数据表的组成 在创…

MySQL:聚合函数(全面详解)

聚合函数 前言一、聚合函数介绍1、AVG和SUM函数2、 MIN和MAX函数3、COUNT函数 二、GROUP BY1、基本使用2、使用多个列分组3、 GROUP BY中使用WITH ROLLUP 三、HAVING1、基本使用2、WHERE和HAVING的对比 四、 SELECT的执行过程1、查询的结构2、SELECT执行顺序3、SQL 的执行原理 …

Presto(Trino)分布式(物理)执行计划的生成和调度

文章目录 1.前言2.物理执行生成(Stage)的生成2.1不同的调度分区策略2.1.1 Connector自己提供的分区策略2.1.2 Presto提供的Partition策略(SystemPartitioningHandle): 2.2 为Stage创建StageScheduler2.2.1 普通的非bucket表的TableScan StageSplit 放置策略解析 2.2…

Tune-A-Video:用于文本到视频生成的图像扩散模型的One-shot Tuning

Tune-A-Video: One-Shot Tuning of Image Diffusion Models for Text-to-Video Generation Project:https://tuneavideo.github.io 原文链接:Tnue-A-Video:用于文本到视频生成的图像扩散模型的One-shot Tuning (by 小样本视觉与智能前沿&…

Nginx-反向代理详解

本文已收录于专栏 《中间件合集》 目录 概念说明什么是Nginx什么是反向代理 功能介绍配置过程1.修改nginx配置文件修改全局模块修改工作模块修改HTTP模块 2.保存配置文件3.重启配置文件4.查看配置文件是否重启成功 配置反向代理的好处总结提升 概念说明 什么是Nginx Nginx 是一…

Nginx服务器的六个修改小实验

一、Nginx虚拟主机配置 1.基于域名 (1)为虚拟主机提供域名解析 配置DNS 修改/etc/hosts文件 (2)为虚拟主机准备网页文档 #创建网页目录 mkdir -p /var/www/html/abc mkdir -p /var/www/html/def ​ #编写简易首页html文件 ec…

89C52RC普中单片机-3

1.LCD1602调试工具 main.c #include<regx52.h> #include "lcd1602.h" void main() {lcd1602_init();//LCD1602初始化();while(1){lcd1602_show_string(0,0,"helloworld");lcd1602_show_string(1,1,"123456.0");} } lcd1602.c #include …

matlab 使用预训练神经网络和SVM进行苹果分级(带图形界面)支持其他物品图片分级或者分类

目录 数据集&#xff1a; 实验代码&#xff1a;alexnet版 如果你的matlab不是正版&#xff0c;先看这里&#xff1a; 数据集结构&#xff1a; 训练代码&#xff1a; 训练结果&#xff1a; 图形界面&#xff1a; 界面展示&#xff1a; 其他&#xff1a; 输出结果: 实验…

Ansible练习

部署ansible练习 开始之前先使用student用户登录 登录命令&#xff1a;ssh studentworkstation 在workstation上运行lab deploy-review start命令&#xff0c;此脚本将确保受管主机在网络上访问。 然后开始验证控制节点上是否安装了ansible软件包&#xff0c;在运行anisble -…