Transformer中的核心问题 知识点汇总

Transformer架构图

 transformer整体架构

1. Transformer 的参数配置

Transformer 的Encoder层和Decoder层都使用6个注意力模块,所有的子网络的输出维度均为512维,多头注意力部分使用了8个注意力头。

2. 归一化的方式

归一化的方式为LayerNorm,因为当时18年还没有其他更好的归一化方式,LayerNorm是对同一个样本的特征进行标准化,从而保证模型训练时不同网络层的输入输出分布的稳定,从而加速训练。

3. 注意力得分的计算为什么要除

因为不除的话会导致梯度消失的问题。

  1. 当两个分布为(均值=0,方差=1)的向量相乘时,其内积的结果的分布为(均值=0,方差=d),其中d是向量的维度,这就导致注意力分数中可能出现一些非常大的值,这种大值会在softmax中占据主导地位。
  2. softmax的计算公式为:

其梯度的计算公式为:

这里可以看出,一旦softmax处理的向量的某一项的值很大,那么softmax的结果对原向量的每一个输入x的梯度都会趋近于0,因为如果softmax(x_i) -> 1,那么其他的softmax(x_j) 就趋近于0了,在梯度公式里面无论哪一种情况都会导致梯度计算趋近于0,最终引起梯度消失,导致训练困难。

4. 什么是长程依赖问题?

长程依赖问题是说当输入序列很长时,模型难以记住序列早期的关键信息,导致输出时模型忘记这些关键内容。

RNN和LSTM是因为把长上下文压缩成一个或两个固定大小的向量,从而难以表示上下文中所有的关键信息,才导致了长程依赖问题。

5. Self-Attention中Dropout层的作用

Dropout层用于增强模型的泛化能力,防止模型过拟合。

具体来说:Dropout层是随机将目前的隐藏层中的值(即神经元的输出)以一定概率置为0丢弃。

Dropout一般运用在注意力得分矩阵,FeedForward输出,和残差连接之前。

通过Dropout,可以防止模型过度关注某些节点的输出。

6. 多头注意力中最后一层线性层的作用是什么

由于多头注意力里面每个头的value是独立计算的,计算过程彼此之间并没有任何交互,也没有任何信息传递,所以通过一个线性层来让不同的注意力头的输出结果相连,从而彼此之间有信息交互。

7. Position Encoding位置编码专题

1)位置编码的目的和设计要求

由于self-attention机制利用的是全局的token信息,token和token的先后顺序性就丢失了,所以需要用一种方式来描述token之间的相对位置,于是transformer采用了位置编码的方式,位置编码函数的设计需要保证以下几点:

  1. 模型能够利用位置编码的信息间接捕获到token之间的相对位置或绝对位置
  2. 不同位置的token的位置编码不能相同
  3. 位置编码函数不能是隐函数

2)位置编码为什么采用三角函数?

因为位置编码是被加到嵌入中的,在后面的注意力计算中不同的token之间会有乘积运算,所以这里的位置编码在不同的token之间会有乘积的运算,而三角函数的积化和差公式则可以很好的建模这种内积到位置差的关系。

3)既然一个cos和sin就已经能够表达积化和差了,那直接用位置i交替使用cos i, sin i,cos i,sin i编码不就行了吗,为什么要设计不同频率的系数?

因为如果只有一种频率,模型其实是无法解构出真正的相对位置关系的,因为模型只能拿到内积的计算结果,假定为一个值v,这个v实际上等于cos(a-b+k*T),其中T为三角函数的周期,由于三角函数的周期性,这里没办法定位到真正的a-b那个解,所以通过不同的频率来求解到真正的相对位置解。所以在位置编码中,pos不变,随着i的增大,三角函数的周期在变大,且不同的i能保证周期不一致,高维的周期更长,频率更低。

4)为什么采用10000做分母的底数?

因为如果底数是一个较小值,那这会导致最高维的周期不会太大。试想,当token数量变多的时候,一旦后面某个token的位置正好是前面某个token的位置编码中所有三角函数周期的公倍数的整数倍(因为计算机浮点精度的存在),这会导致不同位置的token具有完全相同的位置编码,所以所有维度的三角函数周期的公倍数必须足够大,当选择10000时,最高维的周期已经足够长,可以满足绝大多数场景的需求了。

8. 为什么FeedForward层要先升维?

升维可以为模型提供更广阔的特征空间,使其能够捕捉到更丰富的信息,模型可以学习到更复杂的特征组合和交互,增强模型的表达能力。

9. 多头交叉注意力与多头自注意力的区别是什么?

多头交叉注意力中key和value来自于Encoder的输出,而query则来自于解码器中对生成的token的自注意力输出,多头交叉注意力的作用是希望生成的token能够利用到先前输入中存在的一些关键信息。

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

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

相关文章

python web开发-Flask数据库集成

Flask 数据库集成完全指南:Flask-SQLAlchemy 实践 1. 引言 数据库是现代Web应用的核心组件,Flask通过Flask-SQLAlchemy扩展提供了强大的数据库集成能力。本文将全面介绍如何在Flask应用中使用Flask-SQLAlchemy进行数据库操作,涵盖从基础配置…

一站式用AI编程神奇Cursor/Trae(VScode环境)开发运行Scala应用

平时开发时,我们常用 IDEA 搭配 Scala 来开发 Spark 或 Flink 等大数据应用。但如今像 Cursor 这样的编程神器层出不穷,它们只支持 VSCode。要是 Scala 应用能在 VSCode 环境下便捷运行,我们就无需在 VSCode 开发、却在 IDEA 运行&#xff0c…

【Django开发】django美多商城项目完整开发4.0第2篇:项目准备,配置【附代码文档】

教程总体简介:美多商城 商业模式介绍 1.B2B--企业对企业 2.C2C--个人对个人 5.O2O--线上到线下 开发流程 说明: 需求分析 1. 用户部分 注册 登录 个人信息 地址管理 修改密码 3. 购物车部分 购物车管理 项目架构 创建工程 1. 在git平台创建工程 2. 添加前…

基于 OpenCV 的图像亮度、对比度与锐度调节

图像亮度、对比度和锐度是图像质量感知的重要参数,调节这些属性常用于图像增强、图像美化或图像分析的预处理阶段。本文将基于 OpenCV 实现这三项基础图像处理功能,并提供滑动条交互界面与直方图可视化分析,方便调试和理解效果。 亮度调整 图…

WAF(web应用防火墙)的简单了解

WAF称之为Web应用防火墙,是一种专门设计用于保护web应用程序免受恶意攻击的安全设备,能实时监控过滤和拦截可能对网站造成危害的网络流量,从而避免网络服务器被恶意入侵导致性能异常、数据泄露、服务中断这些问题 (WAF是通过执行一系列针对HT…

跟着AI学习C# Day28

📅 Day 28:C# 源生成器(Source Generators)与编译时元编程 ✅ 学习目标: 理解什么是 源生成器(Source Generator);掌握如何在 编译阶段生成 C# 代码,而不是运行时动态处…

设计模式精讲 Day 4:建造者模式(Builder Pattern)

【设计模式精讲 Day 4】建造者模式(Builder Pattern) 文章简述: 在软件开发中,对象的构造过程往往复杂且容易出错,尤其是在对象包含多个可选参数或构建步骤时。建造者模式(Builder Pattern)正是…

如何轻松地将联系人从 iPhone 转移到 iPhone?

也许您升级到最新的 iPhone 型号,或者需要切换到另一部 iPhone 来工作。无论如何,您不能错过您的联系人,这对每个人来说都是最重要的数据。因此,今天我们将分享 5 种如何将联系人从 iPhone 转移到 iPhone 的方法,帮助您…

【51单片机简单的流水灯程序问题】2022-5-24

1.利用单片机的P2口接8个发光二极管。简单的流水灯程序问题-编程语言-CSDN问答 2.发光二极管自由闪烁(自己设计两种模式)。 3.可通过按键实现暂停、启动以及不用模式的切换。 4. 利用Proteus绘制电路原理图 5. 元件选型&#xff1…

第七节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 用户管理(上)

Vben5 系列文章目录 💻 基础篇 ✅ 第一节:Vben Admin 最新 v5.0 (vben5) 快速入门 ✅ 第二节:Vben Admin 最新 v5.0 (vben5) 快速入门 - Python Flask 后端开发详解(附源码) ✅ 第三节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 对接后端登录接口(上) ✅ 第四节:Vben Ad…

1572. 矩阵对角线元素的和

给你一个正方形矩阵 mat,请你返回矩阵对角线元素的和。 请你返回在矩阵主对角线上的元素和副对角线上且不在主对角线上元素的和。 示例 1: 输入:mat [[1,2,3],[4,5,6],[7,8,9]] 输出:25 解释:对角线的和为&#xf…

供应链场景使用ClickHouse最佳实践

一、概述 ClickHouse是一款由俄罗斯公司Yandex开发的开源列式数据库管理系统,以其高性能的分析查询能力和高压缩比著称。供应链场景中,数据量大且数据类型复杂,需要高效的数据存储和快速的查询性能,ClickHouse在这些方面具有显著…

RA4M2开发IOT(0)----安装e² studio

RA4M2开发IOT.0--安装e studio 概述视频教学样品申请安装 概述 瑞萨电子灵活配置软件包 (FSP) 是用于嵌入式系统设计的高质量增强型软件包,支持瑞萨电子 RA 产品家族 Arm 微控制器,提供用户友好的界面且可灵活扩展,确保从入门级到高性能的整…

【Ambari3.0.0 部署】Step2—免密登陆认证-适用于el8

如果有其他系统部署需求可以参考原文 戳我->所有组件编译教程 戳我->获取部署源代码 一、免密登录认证 🔐 在多台服务器协同工作的环境中,免密登录(SSH 免密认证)是一种常见的优化手段,能够极大地提升运维效率&…

网站自助广告投放系统源码 附安装教程(源码下载)

网站自助广告投放系统源码 全自动无人化出售网站广告位 站长必备 源码测试可用,部分加密。感兴趣自行下载 源码下载:https://download.csdn.net/download/m0_66047725/91093092 更多资源下载:关注我 图片:

日常运维问题汇总-15

42.SD开票计划产生的预收款在正式开票时未自动清账 统驭科目(应收、预收)对应的字段状态组中附加科目设置销售订单字段设置为了隐藏导致,更改为“可选输入项” 43.MIGO取消凭证时,用户反馈发现除一行外,其它都不能取消…

【设计模式】6.原型模式

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 原型模式 1. 基础 import copyclass Resume:def __init__(self, name):self.name nameself.sex Noneself.age Noneself.time_area Noneself.compan…

【算法 day08】LeetCode 151.翻转字符串里的单词 |卡码网:55.右旋转字符串

151.翻转字符串里的单词 题目链接 | 文档讲解 |视频讲解 : 链接 1.思路: 1.去除字符串头尾的空格 ,使用库函数 trim() 2.对字符串进行分割,使用库函数split() 3.创建StringBuilder sb&#x…

【WordPress优化插件】WPOPT v2.4.7

WPOPT插件,是由本站开发的一款WordPress优化插件,能对WordPress底层功能进行优化,支持功能开关,系统加速等功能。 2.0版本全新发布,采用vite打包,界面采用Vue3+element-plus制作。无论是外观,还是框架功能,都是空前的强大。 功能更多,更强,是所有WordPress网站都值得…

如何使用 mkimage 工具生成 uImage 文件(RISC-V 环境)

一、mkimage 命令参数详解 在 RISC-V Linux 环境下,使用 U-Boot 的 mkimage 工具生成 uImage 的基本命令格式如下: mkimage -A riscv -O linux -T kernel -C compression -a load_addr -e entry_addr -n "描述信息" -d Image uImage核心参数…