【小白的大模型之路】基础篇:Transformer细节

基础篇:Transformer

  • 引言
  • 模型基础架构
    • 原论文架构图
    • Embedding
    • Postional Encoding
    • Multi-Head Attention
    • LayerNorm
    • Encoder
    • Decoder
    • 其他

引言

此文作者本身对transformer有一些基础的了解,此处主要用于记录一些关于transformer模型的细节部分用于进一步理解其具体的实现机制,输入输出细节,以及一些理解.此文会不定期更新用于记录新学习到的知识.

模型基础架构

原论文架构图

首先给出的是原论文 Attention is all you need中的架构图,我们会在这个篇章部分分列模型pipeline中的各个部件。在最后给出关于这个模型图中没有的细节补充。

论文原图

Embedding

其使用的是nn.embedding来进行初始化,根据词表里的数量和设置的隐层维度来初始化,可训练。(**TODO:**这里会存在词表的初始化问题,即分词方法,在后续介绍)

Postional Encoding

两种编码方式,learned PE是绝对位置编码,即直接随机初始化一个可训练的参数;Sinusoidal PE为相对位置的三角编码,首先根据位置pos和隐层维度位置i得到embedding值
f ( p o s , i ) = s i n ( p o s 1000 0 i N ) i f i 为奇数   e l s e c o s f(pos,i)=sin(\frac{pos}{10000^{\frac{i}{N}}}) \ \ \ \ if\ \ i为奇数\ \ else\ \ cos f(pos,i)=sin(10000Nipos)    if  i为奇数  else  cos

Multi-Head Attention

单头attention 的 Q/K/V 的shape和多头attention 的每个头的Qi/Ki/Vi的大小是不一样的,假如单头attention 的 Q/K/V的参数矩阵WQ/WK/WV的shape分别是[512, 512] (此处假设encoder的输入和输出是一样的shape),那么多头attention (假设8个头)的每个头的Qi/Ki/Vi的参数矩阵WQi/WKi/WVi大小是[512, 512/8].

LayerNorm

BatchNorm本质是对同一个批次中,每一个数据样本的不同通道求均值方差,通道之间不进行交互,并通过滑动动量平均的方式将批次的均值方差记录下来用于推理。BN相对更适合在数据批次上具有统计意义的问题,其会抹平特征之间的差异,保留样本之间的大小关系。而在NLP任务当中,每个句子内部的特征大小关系才是需要保留的,不同句子之间关联不大,因此抹平样本之间的大小关系更为合适。

Encoder

Encoder一般包含两部分,self-attention和feed-forward。每一层Encoder都有独立的一组权重参数。最后一层Encoder得到的Wk,Wv用于计算Decoder的cross-attention。

Decoder

Decoder一般包含三个部分,self-attention, encoder-decoder-attention和feed-forward。在这里和这里有一些关于Decoder实际部署时的运行细节。

在训练的时候,Decoder通过mask得到ground truth的shift-right的下三角矩阵,对于位置t,其拥有前t-1个时刻的所有信息,之后计算矩阵得到该位置的output,该output和同位置的ground truth计算损失(即teach forcing的方法)。在推理时,通过padding一个一个输入,但只取最后一个时刻的output作为全局的预测结果,因此可能存在非对应位置最优解(即beam search)。

其他

  • 编码层解码层堆栈:事实上encoder和decoder是可以进行stack的,原论文图中只展示了一层,其实际实现逻辑是下图。
    在这里插入图片描述
  • transformer只能够处理定长输入和定长输出,对于长度不定的数据,通过padding -INF等方法来进行补全,由于softmax的存在这些会约等于0。

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

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

相关文章

渗透之sql注入---宽字节注入

目录 宽字节注入原理: 实战: 源码分析: 开始注入: 找注入点: 注入数据库名: 注入表名: 注入列明: 注入具体值:http://sqli-labs:8084/less-32/?id-1%df%27unio…

luceda ipkiss教程 66:金属线的钝角转弯

案例分享:金属线的135度转弯: 所有代码如下: from si_fab import all as pdk import ipkiss3.all as i3 from ipkiss.geometry.shape_modifier import __ShapeModifierAutoOpenClosed__ from numpy import sqrtclass ShapeManhattanStub(__…

《ESP8266通信指南》11-Lua开发环境配置

往期 《ESP8266通信指南》10-MQTT通信(Arduino开发)-CSDN博客 《ESP8266通信指南》9-TCP通信(Arudino开发)-CSDN博客 《ESP8266通信指南》8-连接WIFI(Arduino开发)(非常简单)-CSD…

短信公司_供应群发短信公司

短信公司——供应群发短信公司 短信公司作为一种为企业提供群发短信服务的服务商,正逐渐受到市场的青睐。供应群发短信公司作为其中的一种类型,为各行各业的企业提供高效、便捷的短信推广渠道。本文将介绍短信公司的作用以及供应群发短信公司的特点和优势…

Django之创建Model以及后台管理

一,创建项目App python manage.py startapp App 二,在App.models.py中创建类,以下是示例 class UserModel(models.Model):uid models.AutoField(primary_keyTrue, auto_createdTrue)name models.CharField(max_length10, uniqueTrue, db…

ICode国际青少年编程竞赛- Python-2级训练场-坐标与列表练习

ICode国际青少年编程竞赛- Python-2级训练场-坐标与列表练习 1、 for i in range(6):Spaceship.step(Item[i].x - Spaceship.x)Dev.step(Item[i].y - Dev.y)Dev.step(Spaceship.y - Dev.y)2、 for i in range(5):Spaceship.step(Item[i].x - Spaceship.x)Flyer[i].step(Item[…

车载测试___面试题和答案归纳

车载面试题 一、实车还在设计开发阶段,大部分测试通过什么测试? 答案:通过台架和仿真来完成的 二、测试部分划分? 测试部门是分为自研,系统,验收,自研部门是开发阶段测试,系统部门…

重发被恶意举报的主食冻干测评,速看可能再被删!PR、希喂和SC真实对比PK!

要给猫咪提供高品质主食,主食冻干是不二之选。主食冻干不仅含肉量高、吸收消化率高,还有着丰富的、普通猫粮无法提供的各类营养素,满足猫咪微量元素的需求。可以说是营养与生骨肉喂养媲美,又能完美避开生骨肉细菌超标带来的一系列…

如何优雅的实现接口限流?

首先限流,其实解决方案有很多,比如通过nginx配置,通过gateway网关进行限流,比如Spring Cloud GateWay整合熔断器实现限流 但是以上都是全局的,如何灵活的针对某些接口进行不同级别的限流呢? 方案一&#…

超标量处理器设计:重排序缓存(ROB)

★超标量处理器的很多地方用到了重排序缓存,但是我对它不是很了解,所以我整理一下重排序缓存的知识点。 重排序缓存(ROB)在确保乱序执行的指令能够正确地完成和提交(Commit),也可以用来寄存器重命名。 ROB是一个先进先出的表,每个…

Re_Lasso

from sklearn.linear_model import LassoCV, Lasso import pandas as pd from sklearn.model_selection import train_test_split from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score from sklearn.model_selection import GridSearchCV# 读取数据…

【备战软考(嵌入式系统设计师)】10 - 软件工程基础

这一部分的内容是概念比较多,不要理解,去感受。 涉及的知识点是嵌入式系统开发和维护的部分,也就是和管理相关的,而不是具体如何进行嵌入式系统开发的细节。 系统开发生命周期 按照顺序有下面几个阶段,我们主要要记…

12 华三的二层链路聚合

12 华三的二层链路聚合 配置思路 1. 配置二层静态聚合组 (1) 进入系统视图。 system-view (2) 创建二层聚合接口,并进入二层聚合接口视图。 interface bridge-aggregation interface-number [ lite ] 创建二层聚合接口后,系统将自动生成…

代码随想录算法训练营DAY46|C++动态规划Part8|139.单词拆分、多重背包理论基础、背包问题总结篇

文章目录 139.单词拆分思路CPP代码 多重背包理论基础处理输入把所有个数大于1的物品展开成1个开始迭代,计算dp数组代码优化 背包问题总结篇 139.单词拆分 力扣题目链接 文章讲解:139.单词拆分 视频讲解:你的背包如何装满?| LeetCo…

计算方法实验9:Romberg积分求解速度、位移

任务 输出质点的轨迹 ( x ( t ) , y ( t ) ) , t ∈ { 0.1 , 0.2 , 0.3 , . . . , 10 } (x(t), y(t)), t\in \{0.1, 0.2, 0.3, ..., 10\} (x(t),y(t)),t∈{0.1,0.2,0.3,...,10},并在二维平面中画出该轨迹.请比较M分别取4, 8, 12, 16, 20 时,Romberg积分达…

蓝桥杯省三爆改省二,省一到底做错了什么?

到底怎么个事 这届蓝桥杯选的软件测试赛道,都说选择大于努力,软件测试一不卷二不难。省赛结束,自己就感觉稳啦,全部都稳啦。没想到一出结果,省三,g了。说落差,是真的有一点,就感觉和自己预期的…

汽车软件研发工具链丨怿星科技新产品重磅发布

“创新引领未来”聚焦汽车软件新基建,4月27日下午,怿星科技2024新产品发布会在北京圆满举行!智能汽车领域的企业代表、知名大企业负责人、投资机构代表、研究机构代表齐聚现场,线上直播同步开启,共同见证怿星科技从单点…

经典回溯算法之N皇后问题

问题描述: 有一个N*N的棋盘,需要将N个皇后放在棋盘上,保证棋盘的每一行每一列每一左斜列每一右斜列都最多只能有一个皇后。 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如…

Java | Leetcode Java题解之第71题简化路径

题目&#xff1a; 题解&#xff1a; class Solution {public String simplifyPath(String path) {String[] names path.split("/");Deque<String> stack new ArrayDeque<String>();for (String name : names) {if ("..".equals(name)) {if …

【基于 PyTorch 的 Python 深度学习】5 机器学习基础(3)

前言 文章性质&#xff1a;学习笔记 &#x1f4d6; 学习资料&#xff1a;吴茂贵《 Python 深度学习基于 PyTorch ( 第 2 版 ) 》【ISBN】978-7-111-71880-2 主要内容&#xff1a;根据学习资料撰写的学习笔记&#xff0c;该篇主要介绍了单 GPU 加速和多 GPU 加速&#xff0c;以及…