当前位置: 首页 > news >正文

数解 transformer 之 self attention transformer 公式整理

句子长度为n;比如2048,或1024,即,一句话最多可以是1024个单词。

1, 位置编码

E=[e_1 e_2 \cdots e_{n}]\\ e_{pos}(2i) = PE(pos, 2i) = sin(pos/10000^{2i/n})\\ e_{pos}(2i+1) =PE(pos,2i+1)=cos(pos/10000^{(2i+1)/n})\\ where\,\, pos \in \{1,2,\cdots,n\}

可知,E是由n个列向量组成的矩阵,每个列向量表示该列号的位置编码向量。

2, 输入向量

加入本句话第一个单词的词嵌入向量是x_1, 第二个单词是 x_2, 以此类推,最多是x_n.

如果句子长度不足 n个单词,则后面没有单词对应的x_i = \mathbf{0}

X=(x_1\,x_2\,\cdots\,x_n)为句子的词嵌入编码矩阵表示,为了让单词携带位置信息,直接将每个单词的词嵌入向量上加位置编码向量:

x_i = x_i + e_i

矩阵表示为:

X=X+E

X=(x_1+e_1 \,\,x_2+e_2\,\,\cdots\,\,x_n+e_n)

作为第一层 self-attention 模块的输入向量。

3, 完整的一层编码器计算过程

X=(x_1\,\,x_2\,\, \cdots\,\,x_n)

[q_1\,q_2\cdots\,q_n] = Q = W_qX=W_q[x_1\,\,x_2\,\,\cdots\,\,x_n]

[k_1\,k_2\,\cdots\,k_n]=K=W_kX=W_k[x_1\,\,x_2\,\,\cdots\,\,x_n]

[v_1\,v_2\,\cdots\,v_n]=V=W_vX=W_v[x_1\,\,x_2\,\,\cdots\,\,x_n]

\left[ \begin{array}{cccc} a_{1,1} & a_{2,1} & \cdots &a_{n,1}\\ a_{1,2} & a_{2,2} & \cdots &a_{n,2}\\ \vdots & \vdots & \ddots & \vdots\\ a_{1,n} & a_{2,n} & \cdots &a_{n,n}\\ \end{array} \right] = A =K^TQ= \left[ \begin{array}{c} k_1^T\\ k_2^T\\ \vdots\\ k_n^T\\ \end{array} \right] [q_1\,q_2\, \cdots \,q_n]

\left[ \begin{array}{cccc} a_{1,1}^{'} & a_{2,1}^{'} & \cdots &a_{n,1}^{'}\\ a_{1,2}^{'} & a_{2,2}^{'} & \cdots &a_{n,2}^{'}\\ \vdots & \vdots & \ddots & \vdots\\ a_{1,n}^{'} & a_{2,n}^{'} & \cdots &a_{n,n}^{'}\\ \end{array} \right] = A^{'} = \mathbf{softmax}_{column}(\mathbf{A}) = \mathbf{softmax}_{column} ( \left[ \begin{array}{cccc} a_{1,1} & a_{2,1} & \cdots &a_{n,1}\\ a_{1,2} & a_{2,2} & \cdots &a_{n,2}\\ \vdots & \vdots & \ddots & \vdots\\ a_{1,n} & a_{2,n} & \cdots &a_{n,n}\\ \end{array} \right] )

Y=\mathbf{V}\mathbf{A}^{'}=[v_1\,v_2\,\cdots\,v_n]\mathbf{A}^{'}

\mathbf{Y}=\mathbf{Y}+\mathbf{X}

\mathbf{Y}=normalized(\mathbf{Y})

\mathbf{Z} =[\mathbf{Y_1Y_2 \cdots Y_8}] 

上面是把8个multihead的输出拼接起来了。

然后经过本层的这个个feed forward neuron network:

\mathbf{Z}=\mathbf{FFNN}(\mathbf{Z})

\mathbf{Y} = \mathbf{Y}+\mathbf{X}

然后将 \mathbf{Y} 送入下一层编码器,进行相同的计算过程,只是其中的\mathbf{W_q, W_k, W_v, FFN} 的权重不同而已。

4, 更多参考资料

 The Illustrated Transformer – Jay Alammar – Visualizing machine learning one concept at a time.

图解Transformer(完整版)!翻译

自然语言处理Transformer模型最详细讲解(图解版)-CSDN博客

未完待续 ... ...

相关文章:

数解 transformer 之 self attention transformer 公式整理

句子长度为n;比如2048,或1024,即,一句话最多可以是1024个单词。 1, 位置编码 可知,E是由n个列向量组成的矩阵,每个列向量表示该列号的位置编码向量。 2, 输入向量 加入本句话第一个单词的词嵌入向量是, 第…...

ubuntu22.04@laptop OpenCV Get Started

ubuntu22.04laptop OpenCV Get Started 1. 源由2. 步骤3. 预期&展望4. 参考资料 1. 源由 OpenCV在学校的时候接触过,不过当时专注在物理、研究方面,没有好好的学习下。 这次借后续视频分析刚性需求,对OpenCV做个入门的学习和研读&#…...

【Java】苍穹外卖 Day01

苍穹外卖-day01 课程内容 软件开发整体介绍苍穹外卖项目介绍开发环境搭建导入接口文档Swagger 项目整体效果展示: 管理端-外卖商家使用用户端-点餐用户使用当我们完成该项目的学习,可以培养以下能力: 1. 软件开发整体介绍 作为一名软件开…...

Ivanti Pulse Connect Secure VPN SSRF(CVE-2023-46805)漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…...

GPT-4:比ChatGPT3.5好得多,但它有多好你知道么?

GPT-4简介 GPT-4是一款由OpenAI开发的人工智能语言模型,它是ChatGPT3.5的升级版。GPT-4拥有更强大的学习能力、更高的生成质量和更广泛的知识覆盖范围,被誉为人工智能技术的重要突破。 GPT-4与ChatGPT3.5的对比 1. 学习能力 GPT-4采用了更多的神经网…...

测试:JMeter如何获取非json格式的响应参数

JMeter如何获取非json格式的响应参数 在 JMeter 中获取非 JSON 格式的响应参数通常涉及使用后置处理器来提取这些参数。以下是一些常见的方法来获取不同类型的响应数据: 正则表达式提取器: 适用于提取文本、HTML、XML 等格式中的特定文本。使用正则表达…...

2024年刘谦魔术大揭秘,其中竟用到了约瑟夫环?

目录 前言 魔术过程 揭秘过程 结尾 前言 不知道昨天春晚时刘谦的魔术大家看了没有,相信大家跟我一样也很疑惑,所以爆肝一天我得出了结论。如果你觉得还不错的话,记得点赞收藏,分享给更多的朋友看。 魔术过程 整个魔术可以分…...

openssl3.2 - update debian12‘s default openssl to openssl3.2

文章目录 openssl3.2 - update debian12s default openssl to openssl3.2概述笔记回到debian12自带的openssl版本从源码编译安装最新版的openssl配置ssl访问END openssl3.2 - update debian12’s default openssl to openssl3.2 概述 在debian12虚拟机中编译了openssl3.2(ope…...

VUE2和VUE3区别对比一览

## Vue3总结 ### 官方文档 * [Vue3](https://v3.cn.vuejs.org/api/options*data.html) * [Vue2](https://vuejs.bootcss.com/api/) ### Vue3相对于Vue2的语法特性#### 1.获取数据 * vue2 javascript export default {data() {return {name: myName,}},mounted() {console.log(t…...

Linux - updatedb 命令

1. 功能 updatedb 命令用来创建或更新slocate命令所必需的数据库文件。updatedb 命令的执行过程较长,因为在执行时它会遍历整个系统的目录树,并将所有的文件信息写入 slocate 数据库文件中。 补充说明:slocate 本身具有一个数据库&#xff…...

云计算市场分析

目录 一、云计算市场概述 1.1 概述 二、国外云计算厂商 2.1 亚马逊AWS 2.2 微软AzureAzure 2.3 Apple iCloud 三、国内云计算厂商 3.1 阿里云 3.2 腾讯云 3.3 华为云 3.4 百度智能云 一、云计算市场概述 1.1 概述 云计算从出现以来,其发展就非常迅速。以…...

前端JavaScript篇之call() 和 apply() 的区别?

目录 call() 和 apply() 的区别? call() 和 apply() 的区别? 在JavaScript中,call()和apply()都是用来改变函数中this指向的方法,它们的作用是一样的,只是传参的方式不同。 call()方法和apply()方法的第一个参数都是…...

Java设计模式大全:23种常见的设计模式详解(三)

本系列文章简介: 设计模式是在软件开发过程中,经过实践和总结得到的一套解决特定问题的可复用的模板。它是一种在特定情境中经过验证的经验和技巧的集合,可以帮助开发人员设计出高效、可维护、可扩展和可复用的软件系统。设计模式提供了一种在设计和编码过程中的指导,它用于…...

汇编语言程序设计(二)十六位汇编框架、子程序与堆栈

寄存器 如下是16位通用寄存器,存储在cpu硬件中 AX 返回值 AX寄存器分为两部分 AH和AL AH 高8位 存储功能号 AL 低8位 存储返回码 以下是一个AX寄存器应用: mov ax,4c00h 4c给高位AL,00低位AL,16进制要以h结尾 BX CX 计数…...

K8S之标签的介绍和使用

标签 标签定义标签实操1、对Node节点打标签2、对Pod资源打标签查看资源标签删除资源标签 标签定义 标签就是一对 key/value ,被关联到对象上。 标签的使用让我们能够表示出对象的特点,比如使用在Pod上,能一眼看出这个Pod是干什么的。也可以用…...

网络请求库axios

一、认识Axios库 为什么选择axios? 功能特点: 在浏览器中发送 XMLHttpRequests 请求在 node.js 中发送 http请求支持 Promise API拦截请求和响应转换请求和响应数据 补充: axios名称的由来? 个人理解没有具体的翻译. axios: ajax i/o system 二、axios发送请求 1.axios请求…...

程序设计语言的组成

程序设计语言的组成 程序设计语言基本上由数据、运算、控制、传输组成 数据成分 数据是程序操作的对象,具有存储类别、类型、名称、作用域和生存期等属性 从不同角度可将数据进行不同的划分。 数据类型的分类如下: 按程序运行过程中数据的值能否改…...

论文精读的markdown模板——以及用obsidian阅读网页资料做笔记

# The Investigation of S-P Chart Analysis on the Test Evaluations of Equality Axiom Concepts for Sixth Graders Tags: #/unread 本体论: 背景起源和发展 包含要素 # # # 可关联要素 # # # 逻辑 意义: 方法论: 方法论是一…...

LCP 30. 魔塔游戏

LCP 30. 魔塔游戏 难度: 中等 题目: 小扣当前位于魔塔游戏第一层,共有 N 个房间,编号为 0 ~ N-1。每个房间的补血道具/怪物对于血量影响记于数组 nums,其中正数表示道具补血数值,即血量增加对应数值;负数表示怪物造…...

RCE(命令执行)知识点总结最详细

description: 这里是CTF做题时常见的会遇见的RCE的漏洞知识点总结。 如果你觉得写得好并且想看更多web知识的话可以去gitbook.22kaka.fun去看,上面是我写的一本关于web学习的一个gitbook,当然如果你能去我的github为我的这个项目点亮星星我会感激不尽htt…...

SAP BAPI实战指南:核心模块高频接口速查与应用解析

1. SAP BAPI入门:为什么开发者需要这份速查手册 第一次接触SAP BAPI时,我盯着满屏的接口文档差点崩溃——光是FICO模块就有二十多个常用BAPI,每个接口的参数列表长得像毕业论文。后来在项目上踩过几次坑才明白,BAPI的难点不在于技…...

Adafruit ST7735/ST7789 TFT驱动库详解:SPI接口与GFX分层架构

1. 项目概述 Adafruit ST7735 和 ST7789 库是一个面向嵌入式平台(尤其是 Arduino 生态)的轻量级图形驱动库,专为基于 Sitronix ST7735、ST7789 及 ST7796S 显示控制器的彩色 TFT 液晶模组设计。该库并非仅适配单一型号,而是通过统…...

SerialLCD库深度解析:SerLCD v2.5串口LCD驱动实践

1. SerialLCD 库技术解析:面向嵌入式系统的 SparkFun SerLCD v2.5 串口 LCD 驱动深度实践 1.1 背景与工程定位 SerialLCD 是一个专为 SparkFun SerLCD v2.5 硬件模块设计的轻量级串口 LCD 控制库,其原始实现源自 Arduino.cc Playground 社区维护的 Ser…...

事务失效十大场景分析

1. 方法不是 public(最经典失效) 代码示例 Service public class UserService {Autowiredprivate UserMapper userMapper;// 非 public → 事务失效Transactionalprivate void addUser() {userMapper.insert(new User("张三"));// 模拟异常int…...

Anthropic:AI 编程从单打独斗到团队协作的生产关系升级

【导语:在 AI 时代,编程不再是少数人的特权。Anthropic 让 Claude 独自完成项目,从单智能体到多智能体结构,实现了从生成代码到交付成果的跨越,带来了生产关系的升级。】Claude 单枪匹马难交付,多智能体团队…...

深入解析 Android 开发高级工程师:职责、技能与面试精要

在移动互联网时代,Android 平台作为全球最大的移动操作系统之一,其应用开发人才的需求持续旺盛。对于追求技术深度和业务影响力的开发者而言,进阶成为 Android 开发高级工程师是一个重要的里程碑。这不仅要求开发者具备扎实的编码功底和丰富的项目经验,更需要其在架构设计、…...

YimMenu完全指南:GTA5免费辅助工具从入门到精通

YimMenu完全指南:GTA5免费辅助工具从入门到精通 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …...

《AI Money Hunter:智能财务侦探,你的理财新助手》

《AI Money Hunter:智能财务侦探,你的理财新助手》 【免费下载链接】aimoneyhunter ai副业赚钱大集合,教你如何利用ai做一些副业项目,赚取更多额外收益。The Ultimate Guide to Making Money with AI Side Hustles: Learn how to …...

VSCode本地历史记录插件Local History保姆级教程:从安装到.gitignore配置

VSCode本地历史记录插件Local History深度指南:从高效使用到项目集成 为什么开发者需要本地历史记录功能 在日常开发中,我们经常会遇到这样的场景:修改了一段代码后突然意识到之前的版本可能更好,或者不小心覆盖了重要内容却无法撤…...

告别编译报错!手把手教你用Keil MDK5搭建GD32F103开发环境(含AC5编译器配置)

告别编译报错!手把手教你用Keil MDK5搭建GD32F103开发环境(含AC5编译器配置) 嵌入式开发新手在初次接触GD32F103时,往往会被各种编译报错搞得焦头烂额。特别是从STM32转过来的开发者,本以为操作流程相似,结…...