Transformer中Decoder的计算过程及各部分维度变化
在Transformer模型中,解码器的计算过程涉及多个步骤,主要包括自注意力机制、编码器-解码器注意力和前馈神经网络。以下是解码器的详细计算过程及数据维度变化:
1. 输入嵌入和位置编码
解码器的输入首先经过嵌入层和位置编码:
Input d = Embedding ( x ) + PositionEncoding ( x ) \text{Input}_d = \text{Embedding}(x) + \text{PositionEncoding}(x) Inputd=Embedding(x)+PositionEncoding(x)
- 维度变化: x x x: 输入序列的标记,维度为 ( n , d m o d e l ) (n, d_{model}) (n,dmodel) Embedding ( x ) \text{Embedding}(x) Embedding(x): 输出维度为 ( n , d m o d e l ) (n, d_{model}) (n,dmodel) PositionEncoding ( x ) \text{PositionEncoding}(x) PositionEncoding(x): 输出维度为 ( n , d m o d e l ) (n, d_{model}) (n,dmodel)
2. 自注意力机制
自注意力机制计算如下:
Q = Input d W Q , K = Input d W K , V = Input d W V Q = \text{Input}_d W_Q, \quad K = \text{Input}_d W_K, \quad V = \text{Input}_d W_V Q=InputdWQ,K=InputdWK,V=InputdWV
- 这里 W Q , W K , W V W_Q, W_K, W_V WQ,WK,WV 是参数矩阵,维度为 ( d m o d e l , d k ) (d_{model}, d_k) (dmodel,dk),假设 d k = d m o d e l d_k = d_{model} dk=dmodel。
- 维度变化: Q , K , V Q, K, V Q,K,V: 输出维度为 ( n , d k ) (n, d_k) (n,dk)
自注意力的计算为:
Attention ( Q , K , V ) = softmax ( Q K T d k + M ) V \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}} + M\right)V Attention(Q,K,V)=softmax(dkQKT+M)V - 维度变化: Q K T QK^T QKT: 维度为 ( n , n ) (n, n) (n,n) softmax \text{softmax} softmax: 结果维度为 ( n , n ) (n, n) (n,n)最终输出的维度为 ( n , d v ) (n, d_v) (n,dv)(假设 d v = d m o d e l d_v = d_{model} dv=dmodel)。
3. 残差连接与层归一化
自注意力的输出与输入相加,然后进行层归一化:
Output d ( l ) = LayerNorm ( Attention + Input d ) \text{Output}_d^{(l)} = \text{LayerNorm}(\text{Attention} + \text{Input}_d) Outputd(l)=LayerNorm(Attention+Inputd)
- 维度变化:维度保持为 ( n , d m o d e l ) (n, d_{model}) (n,dmodel)。
4. 编码器-解码器注意力
接下来,解码器会对编码器的输出进行注意力计算:
Q ′ = Output d ( l ) W Q ′ , K ′ = EncoderOutput W K ′ , V ′ = EncoderOutput W V ′ Q' = \text{Output}_d^{(l)} W_Q', \quad K' = \text{EncoderOutput} W_K', \quad V' = \text{EncoderOutput} W_V' Q′=Outputd(l)WQ′,K′=EncoderOutputWK′,V′=EncoderOutputWV′
- 这里 W Q ′ , W K ′ , W V ′ W_Q', W_K', W_V' WQ′,WK′,WV′ 的维度也是 ( d m o d e l , d k ) (d_{model}, d_k) (dmodel,dk)。
- 编码器输出的维度为 ( T e , d m o d e l ) (T_e, d_{model}) (Te,dmodel)。
注意力计算为:
Attention ( Q ′ , K ′ , V ′ ) = softmax ( Q ′ K ′ T d k ) V ′ \text{Attention}(Q', K', V') = \text{softmax}\left(\frac{Q'K'^T}{\sqrt{d_k}}\right)V' Attention(Q′,K′,V′)=softmax(dkQ′K′T)V′ - 维度变化: Q ′ K ′ T Q'K'^T Q′K′T: 维度为 ( n , T e ) (n, T_e) (n,Te)最终输出的维度为 ( n , d v ) (n, d_v) (n,dv)。
然后与自注意力的输出进行残差连接和层归一化:
Output d ( l ) = LayerNorm ( EncoderDecoderAttention + Output d ( l ) ) \text{Output}_d^{(l)} = \text{LayerNorm}(\text{EncoderDecoderAttention} + \text{Output}_d^{(l)}) Outputd(l)=LayerNorm(EncoderDecoderAttention+Outputd(l))
5. 前馈神经网络
接下来是前馈神经网络的处理:
FFN ( x ) = ReLU ( x W 1 + b 1 ) W 2 + b 2 \text{FFN}(x) = \text{ReLU}(xW_1 + b_1)W_2 + b_2 FFN(x)=ReLU(xW1+b1)W2+b2
- W 1 W_1 W1 维度为 ( d m o d e l , d f f ) (d_{model}, d_{ff}) (dmodel,dff), W 2 W_2 W2 维度为 ( d f f , d m o d e l ) (d_{ff}, d_{model}) (dff,dmodel),其中 d f f d_{ff} dff 是前馈层的隐藏单元数。
- 维度变化:输入维度为 ( n , d m o d e l ) (n, d_{model}) (n,dmodel)输出维度为 ( n , d m o d e l ) (n, d_{model}) (n,dmodel)。
6. 最终输出
在最后一步,再次进行残差连接和层归一化:
Output d ( l ) = LayerNorm ( FFN + Output d ( l ) ) \text{Output}_d^{(l)} = \text{LayerNorm}(\text{FFN} + \text{Output}_d^{(l)}) Outputd(l)=LayerNorm(FFN+Outputd(l))
接下来,解码器的最终输出通过线性层和Softmax层生成词汇表的概率分布:
Logits = Output d ( l ) W o u t + b o u t \text{Logits} = \text{Output}_d^{(l)} W_{out} + b_{out} Logits=Outputd(l)Wout+bout
Probabilities = softmax ( Logits ) \text{Probabilities} = \text{softmax}(\text{Logits}) Probabilities=softmax(Logits)
- 维度变化: W o u t W_{out} Wout 维度为 ( d m o d e l , V ) (d_{model}, V) (dmodel,V),其中 V V V 是词汇表的大小。 Logits \text{Logits} Logits 的维度为 ( n , V ) (n, V) (n,V), Probabilities \text{Probabilities} Probabilities 的维度同样为 ( n , V ) (n, V) (n,V),表示每个时间步上各个词汇的概率。
通过这些步骤,解码器能够生成序列的下一个标记。
相关文章:
Transformer中Decoder的计算过程及各部分维度变化
在Transformer模型中,解码器的计算过程涉及多个步骤,主要包括自注意力机制、编码器-解码器注意力和前馈神经网络。以下是解码器的详细计算过程及数据维度变化: 1. 输入嵌入和位置编码 解码器的输入首先经过嵌入层和位置编码: I…...

QT实现滑动页面组件,多页面动态切换
这篇文章主要介绍了Qt实现界面滑动切换效果,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下。 一、简述 一个基于Qt的动态滑动页面组件。 二、 设计思路 1、自定义StackWidget类,继承自QWidget,实现一个堆叠…...
使用Python-docx库创建Word文档
哈喽,大家好,我是木头左! 简介 Python-docx是一个用于处理Microsoft Word文档的Python库。它允许用户创建、修改和提取Word文档的内容。在本文中,将详细介绍如何使用Python-docx库创建一个新的Word文档。 安装Python-docx库 要使用Python-docx库,首先需要安装它。可以使…...
C# 设计一个可变长度的数据通信协议编码和解码代码。
设计一个可变长度的数据通信协议编码和解码代码。 要有本机ID字段,远端设备ID字段,指令类型字段,数据体字段,校验字段。其中一个要求是,每次固定收发八个字节,单个数据帧超过八个字节需要分包收发。对接收的…...
【MATLAB库函数系列】MATLAB库函数pwelch之功率谱估计的详解及实现
功率谱估计 由于实际信号通常是非定常的,我们只能假设其在10ms的时间段内是定常的,并在此基础上对短的定常信号求PSD或者能谱。 窗函数的作用就是将原始的信号分割成一段段可以计算PSD和能谱的短信号,并且保证了周期结构的连续性、避免了频谱泄漏。不同的窗函数具有不同的…...

科技出海|百分点科技智慧政务解决方案亮相非洲展会
近日,华为非洲全联接大会在南非约翰内斯堡举办,吸引政府官员行业专家、思想领袖、生态伙伴等2,000多人参会,百分点科技作为华为云生态合作伙伴,重点展示了智慧政务解决方案,发表《Enable a Smarter Government with Da…...

Prometheus 云原生 - Prometheus 数据模型、Metrics 指标类型、Exporter 相关
目录 开始 Prometheus 数据类型 简单理解 时序样本 格式 和 命名要求 Metrics 指标类型 Counter 计数器 Gauge Histogram Summary Exporter 相关 概述 Exporter 类型 Exporter 规范 开始 Prometheus 数据类型 简单理解 a)安装好 Prometheus 后会暴露…...

Qt窗口程序整理汇总
到今日为止,通过一个个案例的实验,逐步熟悉了 Qt6下 窗体界面开发的,将走过的路,再次汇总整理。 Qt Splash样式的登录窗https://blog.csdn.net/castlooo/article/details/140462768 Qt实现MDI应用程序https://blog.csdn.net/cast…...

简单实现一个本地ChatGPT web服务(langchain框架)
简单实现一个本地ChatGPT 服务,用到langchain框架,fastapi,并且本地安装了ollama。 依赖安装: pip install langchain pip install langchain_community pip install langchain-cli # langchain v0.2 2024年5月最新版本 pip install bs4 pi…...
Elasticsearch-多边形范围查询(8.x)
目录 一、字段设计 二、数据录入 三、查询语句 四、Java代码实现 开发版本详见:Elasticsearch-经纬度查询(8.x-半径查询)_es经纬度范围查询-CSDN博客 一、字段设计 PUT /aoi_points {"mappings": {"properties": {"location": {…...

Kotlin Misk Web框架
Kotlin Misk Web框架 1 Misk 框架介绍2 Misk/SpringBoot 框架对比3 Misk 添加依赖/配置3.1 build.gradle.kts3.2 settings.gradle.kts3.3 gradle.properties 4 Misk 请求接口5 Misk 程序模块6 Misk 主服务类7 Misk 测试结果 1 Misk 框架介绍 Misk 是由 Square 公司开发的一个开…...
【设计模式之美】【建造型】工厂模式:通过面向接口编程思路,串起业务流程
文章目录 一. 简单工厂(Simple Factory)第一种简单工厂:面向接口编程与工厂类:划分功能职责第二种:单例简单工厂:节省内存和对象创建的时间 二. 工厂方法(Factory Method)࿱…...

AI算法19-偏最小二乘法回归算法Partial Least Squares Regression | PLS
偏最小二乘法回归算法简介 算法概述 偏最小二乘法模型可分为偏最小二乘回归模型和偏最小二乘路径模型。其中偏最小二乘回归模型是一种新型的多元统计方法,它集中了主成分分析、典型相关分析和线性回归的特点,特别在解决回归中的共线性问题具有无可比拟…...
live555关于RTSP协议交互流程
RTP在和h264 RTP在和h265 RTP载荷AAC live555关于RTSP协议交互流程 live555的核心数据结构值之闭环双向链表 live555 rtsp服务器实战之createNewStreamSource 概要 rtsp在交互的过程中用到很多协议:tcp,udp,rtp,rtcp,sdp等协议;该篇文章主要分析在live555中这些…...

Centos7 安装私有 Gitlab
在 CentOS 7上,下面的命令也会在系统防火墙中打开 HTTP、HTTPS 和 SSH 访问。这是一个可选步骤,如果您打算仅从本地网络访问极狐GitLab,则可以跳过它。 sudo yum install -y curl policycoreutils-python openssh-server perl sudo systemct…...

浅谈数学模型在UGC/AIGC游戏数值配置调参中的应用(AI智能体)
浅谈数学模型在UGC/AIGC游戏数值配置调参中的应用 ygluu 卢益贵 关键词:UGC、AIGC、AI智能体、大模型、数学模型、游戏数值调参、游戏策划 一、前言 在策划大大群提出《游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发》讨论之后就…...

第T5周:使用TensorFlow实现运动鞋品牌识别
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 文章目录 一、前期工作1.设置GPU(如果使用的是CPU可以忽略这步)2. 导入数据3. 查看数据 二、数据预处理1、加载数据2、数据可视化3、再…...

网络编程学习之tcp
按下*(星号)可以搜索当前光标下的单词。 Tcp编程的过程 打开网络设备 Bind:给服务地址把ip号和端口号连接进去 Tcp是有状态的 Listen是进入监听状态,看有没有客户端来连接服务器 Tcp比udp消耗过多资源 Upd类似于半双工&#…...
前端XMLHttpRequest、Fetch API、Axios实现文件上传、下载方法及后端Spring文件服务器处理方法
前言 本文总结Web应用开发中文件上传、下载的方法,即从前端表单输入文件并封装表单数据,然后请求后端服务器的处理过程;从基础的JavaScript中XmlHttpRequest对象、Fetch API实现上传、下载进行说明,并给出了前端常用的axios库的请…...

STM32智能交通监测系统教程
目录 引言环境准备智能交通监测系统基础代码实现:实现智能交通监测系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:交通监测与管理问题解决方案与优化收尾与总结 1. 引言 智能交通监测系统通…...

测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...

业务系统对接大模型的基础方案:架构设计与关键步骤
业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...