学习资料来源于字母站大学

1 Transformer架构

  • 基于编码器-解码器的架构来处理序列对。
  • 跟使用注意力的seq2seq不同,Transformer是基于纯注意力。

2 注意力

2.1 自注意力机制

使用注意力:需要根据整个序列进行预测,对于同一input,不同的上下文输出不同,序列长度也不同,无法用固定窗口。

Self-attention架构示意图

首先要得到一个能表示输入向量本身及其与序列其他向量的关联性( α \alpha α)的向量, α \alpha α即注意力分数。

请添加图片描述
根据 α \alpha α可以得知,哪些向量和 a a a关联性最高,就可以根据 α \alpha α抽取信息
请添加图片描述
将所有的 a a a q q q拼起来成矩阵,就一次性计算得到了所有的 q q q,同理, k k k v v v也通过矩阵运算一次性得到。
请添加图片描述
注意力分数的计算同样将 q q q k k k的点乘过程拼接成矩阵,然后对每一列做softmax

请添加图片描述
请添加图片描述
总过程:
请添加图片描述

2.2 多头注意力

由于所谓的“相关性”不是一个固定的定义,可以有多种表现形式,所以在用 q q q寻找不同的 k k k时,需要不同的 q q q负责得到不同种类的相关性,同时,由于有多个 q q q,所以也有多个 k k k和多个 v v v,相同类别的 q q q k k k v v v一起计算
请添加图片描述

3 Add&LayerNorm

Transformer在自注意力块的输出部分又加上了输入,然后一起输入Norm层。
Transformer的LayerNorm计算公式:
y = x − E ( x ) V a r ( x ) + ϵ ∗ α + β y=\frac{x-E(x)}{\sqrt{Var(x)+\epsilon}}*\alpha+\beta y=Var(x)+ϵ xE(x)α+β
其中 α \alpha α β \beta β是可学习参数,用来防止输出数据落在后续的激活函数近似线性的范围内,失去激活函数非线性特性。 ϵ \epsilon ϵ用来防止分母为0。
LayerNorm用来稳定神经网络的训练,将输入归一化到均值为0方差为1的分布中,避免训练中产生梯度消失或梯度爆炸。LayerNorm是在最后一个特征维度做归一化(一个单词内部),可以保证稳定性。

4 解码器——交叉注意力

对于Transformer架构解码器中间部分,有来自Encoder的输入,也有来自Decoder的输入,这部分架构叫做交叉注意力。总的来说,交叉注意力的 q q q来自于Decoder, k k k v v v来自于Encoder,也就是用Decoder的 q q q来抽取Encoder信息作为下一步的输入。
交叉注意力计算示意图

面试题篇

1 Transformer/RNN/CNN对比

各个模型对于NLP任务需要抽取的特征的性能:

  • 上下文语义(方向、长度):Transformer > RNN > CNN
  • 序列特征:RNN > Transformer > CNN
  • 速度:CNN > Transformer > RNN

Transformer擅长抽取上下文语义特征的原因:RNN只能对句子进行单向的编码,CNN只能对短句进行编码,而transformer既可以同时编码双向的语义,又可以抽取长距离特征,在NLP特征抽取方面能力更强。

CNN其实是self-attention的特例。单向RNN未考虑右边序列的input且顺序执行,self-attention是并行的。

2 Transformer为什么将特征维度拆分成多个头
  • 从不同角度捕捉信息,防止每个输入对自身注意力分数过高,增强模型表达能力
  • 实现并行计算,提高计算效率
  • 缓解梯度消失:当维度 d d d很大时,点积结果的方差也会很大,做softmax后会变成近似one-hot编码,导致梯度消失。
3 为什么使用乘性注意力而不用加性注意力

在GPU场景下,矩阵乘法的计算效率更高

4 A t t e n t i o n ( Q , K , V ) = s o f t m a x Q K T d k V \mathrm{Attention}(Q,K,V)=\mathrm{softmax}\frac{QK^T}{\sqrt{d_k}}V Attention(Q,K,V)=softmaxdk QKTV为什么要除以 d k \sqrt{d_k} dk

如果两个矩阵都是服从正态分布的,矩阵相乘后由于元素是相乘再相加,那么结果就变成均值为0,方差为 d d d的分布了,方差如果很大,和问题1的原因相同,可能会产生很分散的数值,使得softmax后导致梯度消失,所以要除以标准差恢复到正态分布。
梯度消失举例:对于 z = [ 1000 , 1 , − 1000 ] z=[1000,1,-1000] z=[1000,1,1000],计算softmax:
s o f t m a x ( z ) = [ d 1000 e 1000 + e 1 + e − 1000 , e 1 e 1000 + e 1 + e − 1000 , e − 1000 e 1000 + e 1 + e − 1000 ] ≈ [ 1 , 0 , 0 ] \mathrm{softmax}(z)=[\frac{d^{1000}}{e^{1000}+e^1+e^{-1000}},\frac{e^1}{e^{1000}+e^1+e^{-1000}},\frac{e^{-1000}}{e^{1000}+e^1+e^{-1000}}]\approx[1,0,0] softmax(z)=[e1000+e1+e1000d1000,e1000+e1+e1000e1,e1000+e1+e1000e1000][1,0,0]
对softmax求梯度
s o f t m a x ( z i ) = e z i ∑ k = 1 C e z k , i ∈ { 1 , 2 , . . . , C } \mathrm{softmax}(z_i)=\frac{e^{z_i}}{\sum_{k=1}^{C}e^{z_k}},i\in \{1,2,...,C\} softmax(zi)=k=1Cezkezi,i{1,2,...,C}
∂ s o f t m a x ( z i ) ∂ z j = { s o f t m a x ( z i ) , i f i = j − s o f t m a x ( z i ) ⋅ s o f t m a x ( z j ) , i f i ≠ j \frac{\partial \mathrm{softmax}(z_i)}{\partial z_j}=\begin{cases} \mathrm{softmax}(z_i),\mathrm{if}\ i=j \\-\mathrm{softmax}(z_i)·\mathrm{softmax}(z_j),\mathrm{if}\ i\neq j \end{cases} zjsoftmax(zi)={softmax(zi),if i=jsoftmax(zi)softmax(zj),if i=j
带入数值,对于 s o f t m a x ( z i ) ≈ 1 \mathrm{softmax}(z_i)\approx 1 softmax(zi)1,梯度为0,对于其他位置 j j j s o f t m a x ( z i ) ≈ 0 \mathrm{softmax}(z_i)\approx 0 softmax(zi)0,梯度同样为0,导致梯度消失。

5 为什么源码实现中mask被丢弃的token值置为-10000而不是置0

如果被丢弃的token值为0,做softmax时分子为1而不是趋近于0的值,也能得到概率值,无法满足正常token的概率和为1。

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

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

相关文章

Rust 定义与实例化结构体

文章目录 Rust 定义与实例化结构体5.1 结构体的定义与意义5.2 结构体实例化5.2.1 基本实例化5.2.2 可变性规则5.2.3 字段初始化简写5.2.4 结构体更新语法 5.3 特殊结构体类型5.3.1 元组结构体(Tuple Struct)5.3.2 类单元结构体(Unit-Like Str…

ELK日志分析系统(filebeat+logstash+elasticsearch+kibana)

一、ELK 平台介绍 1、ELK 概述 日志主要包括系统日志、应用程序日志和安全日志。系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。…

JS基础4—jQuery

jQuery常用内容 jQuery 介绍jQuery 获取方式基本选择器 (最常用)层级选择器 (基于元素间关系)过滤选择器 (基于特定条件) jQuery事件绑定jQuery 方法调用jQuery遍历jQuery 获取与设置jQuery 添加与删除jQuery CSS 类jQuery - AJAX 总结 jQuery 介绍 jQuery 是一个轻量级、快速…

时钟周期是什么?

时钟周期(Clock Cycle)是什么? 时钟周期(Clock Cycle)是计算机系统中一个最基础的时间单位,也称为时钟节拍或时钟周期时间(Clock Period)。它由系统时钟发生器产生的一个周期性脉冲…

如何用SEO优化长尾关键词?

内容概要 在SEO优化领域,长尾关键词扮演着至关重要的角色,它们能有效提升网站在搜索引擎中的可见度和流量转化率。本文将全面解析如何通过系统方法优化长尾关键词,涵盖从基础理论到实战应用的完整流程。核心内容包括利用专业工具进行关键词挖…

电子面单系统开发全解析

一、如果要做电子面单系统,怎么做? 开发电子面单系统是一项复杂且涉及多方面考量的工程,涵盖需求分析、系统架构设计、技术选型、接口对接、安全性保障、第三方服务选择以及部署与维护等关键环节。 电子面单系统开发步骤 需求分析&#xf…

UE5 - 制作《塞尔达传说》中林克的技能 - 18 - 磁力抓取器

让我们继续《塞尔达传说》中林克技能的制作!!! UE版本:5.6.0 VS版本:2022 本章节的核心目标:磁力抓取器 先让我们看一下完成后的效果: 18_磁力抓取器 大纲如下: 引言功能架构与核心逻辑物理材质与场景配置代码实现:从识别到操控操作说明1.引言 在《塞尔达传说》中,林…

基于ApachePOI实现百度POI分类快速导入PostgreSQL数据库实战

目录 前言 一、百度POI分类简介 1、数据表格 2、分类结构 二、从Excel导入到PG数据库 1、Excel解析流程 2、数据入库 3、入库成果及检索 三、总结 前言 在上一篇博文中,我们对高德POI分类进行了深入剖析 并对Excel 中 POI 分类数据的存储结构特点进行了详细介…

学习经验分享【41】YOLOv13:基于超图增强自适应视觉感知的实时目标检测

YOLO算法更新速度很快,已经出到V13版本,后续大家有想发论文或者搞项目可更新自己的baseline了。 摘要:YOLO 系列模型凭借其卓越的精度和计算效率,在实时目标检测领域占据主导地位。然而,YOLOv11 及早期版本的卷积架构&…

Handling outliers in non-blind image deconvolution论文阅读

Handling outliers in non-blind image deconvolution 1. 研究目标与实际意义2. 创新方法:基于EM的异常值建模2.1 新模糊模型2.1.1 目标函数2.2 EM框架:迭代优化二元掩码2.2.1 E步:计算后验权重 E [ m x ] E[m_x] E[mx​]2.2.2 M步:加权正则化反卷积2.3 优化加速技术2.3.1…

Redis 功能扩展:Lua 脚本对 Redis 的扩展

Redis 是一个高性能的内存数据库,支持多种数据结构,如字符串、哈希、列表、集合和有序集合。为了增强其功能,Redis 引入了 Lua 脚本支持,使开发者可以编写自定义的脚本,确保操作的原子性并提高复杂操作的性能。本文将详…

七天学完十大机器学习经典算法-06.支持向量机(SVM):分类边界的艺术——深入浅出指南

接上一篇《七天学完十大机器学习经典算法-05.从投票到分类:K近邻(KNN)算法完全指南》 想象你要在操场上为两个班级划活动区域,如何画出一条最公平的分界线?这条线不仅要分开两班学生,还要让两个班都离分界线尽可能远——这就是支持…

python如何安装PyQt6-stubs依赖包

PyQt6-stubs 是为 PyQt6 提供类型提示(Type Hints)和 IDE 智能补全支持的第三方补丁包,特别适用于 PyCharm、VS Code 等现代 IDE。它对开发者在编码时帮助极大。 一、安装方法 需要提前安装好git,然后克隆PyQt6-stubs源码&#xf…

创宇智脑 MCP 赋能 AiPy,IP 风险调查效率实现 10 倍飞跃,威胁分析一键生成

还记得上个月那个焦头烂额的凌晨三点吗?监控大屏突然疯狂闪烁,500 多个 IP 地址同时出现异常访问,密密麻麻的数据流在屏幕上跳动,像极了一张让人窒息的大网。我和团队成员瞪着布满血丝的眼睛,手动排查每一个 IP&#x…

使用SRS+ffmpeg实现https推流flv

1修改SRS的live.conf配置如下: # Live streaming config for SRS. # see full.conf for detail config.listen 1935; max_connections 1000; srs_log_tank console; daemon off;http_api {enabled on;listen …

力扣网编程题:合并两个有序数组(双指针解法)

一. 简介 上一篇文章对"合并两个有序数组"题目,使用了暴力解法,算法时间复杂度比较高。文章如下: 力扣网编程题:合并两个有序数组(直接解法)-CSDN博客 本文满足进阶要求,算法时间复…

数据结构之 【树的简介】(树的(相关)概念、二叉树的概念、部分性质、满二叉树、完全二叉树)

目录 1.树的概念及结构 1.1树的概念 1.2树的相关概念 1.3树的表示 1.4树在实际中的应用 2.二叉树概念及结构 2.1二叉树的概念 2.2特殊的二叉树 2.3二叉树的性质 2.4应用题 1.树的概念及结构 1.1树的概念 树是一种非线性的数据结构,由 n(n…

Redis-7.4.3-Windows-x64下载安装使用

Redis软件包下载地址链接:https://github.com/redis-windows/redis-windows/releases 检查或者修改配置文件redis.conf: #如果允许外部其他主机访问本机redis,设置成:bind 0.0.0.0 bind 127.0.0.1 protected-mode yes #设置端口…

Educational Codeforces Round 180 (Rated for Div. 2)

AB 略 C 对于axayaz>max(2*az,an),枚举y z 二分x D 首先,长度为1的边的已经有n-1条,那么构造的图中只能存在一条长度为2的好边。我们先构造出一个图只存在n-1条好边,我们发现对于一个点所有连接它的边要不均指向它要不均背…

CAD文件处理控件Aspose.CAD教程:在 Python 中将 DGN 文件转换为 PDF

概述 将DGN文件转换为PDF对许多行业至关重要,包括工程和建筑行业。能够轻松地以 PDF 格式共享设计,增强协作和可访问性。通过使用Aspose.CAD for Python via .NET的强大功能,开发人员可以高效地自动化此过程。这款 CAD 转换器 SDK 简化了转换…