【Transformer】模型输出模块处理

目录

  • 输出处理模块步骤
    • 1. 交叉注意力后的输出向量
    • 2. 线性变换(投影)
    • 3. Softmax 操作
    • 4. 选择最大概率的单词
    • 5. 输出词并进入下一轮预测
    • 总结:
  • 线性变换详解
    • 1. 交叉注意力后的输出向量
    • 2. 线性层的参数
    • 3. 线性变换的计算
    • 4. Softmax 转换为概率
    • 示例
    • 5. 线性层的作用

输出处理模块步骤

下方图像中,红框内即模型输出处理模块

在这里插入图片描述

在 Transformer 解码器中的 交叉注意力 后,得到的每个目标词的向量表示将用于生成下一个词的预测。为了从这些向量表示中选择概率最高的单词,通常会经过以下几个步骤:

1. 交叉注意力后的输出向量

经过交叉注意力(Cross Attention)后,解码器得到的每个目标词的向量表示包含了目标语言的上下文信息(来自解码器的自注意力)以及源语言的上下文信息(来自编码器的输出)。这些向量是未经过激活的原始表示

2. 线性变换(投影)

接下来,解码器中的每个目标词向量(经过交叉注意力后的输出)将通过一个 线性变换 投影到词汇表的维度上。具体来说,解码器的输出会经过一个 线性层,将每个词的向量表示从模型的维度(通常是 d_model)映射到词汇表的维度大小,即 V(词汇表的大小)。

假设:

  • d_model 是解码器中词向量的维度(通常是 512 或 1024)。
  • V 是词汇表的大小,例如,假设词汇表中有 10,000 个单词。

经过线性变换后,解码器的输出会被投影到一个长度为 V 的向量。这个向量的每个元素表示模型对词汇表中每个词的原始预测得分,也就是 logits

假设 d_model = 512,词汇表大小 V = 10,000,句子长度 T = 6,那么交叉注意力的输出会是 (6, 512)。经过线性变换后,得到的所有 logits 构成的矩阵的维度是 (6, 10,000),其中每行的 logits 是一个时间步上的词汇表分布

所以预测下一个词,就得选择得到的 logits 矩阵中的最后一个时间步中V维向量中最高的概率

3. Softmax 操作

为了将 logits 转换为概率分布,通常会使用 softmax 函数。Softmax 会将 logits 向量的每个元素转换为一个介于 0 和 1 之间的概率值,并且所有概率之和为 1。

假设 logits 向量是:

logits = [ 2.3 , − 0.5 , 1.1 , 3.5 , …   ] \text{logits} = [2.3, -0.5, 1.1, 3.5, \dots] logits=[2.3,0.5,1.1,3.5,]

softmax 操作会把这个 logits 向量转换为一个概率分布:

probabilities = [ P ( word 1 ) , P ( word 2 ) , P ( word 3 ) , P ( word 4 ) , …   ] \text{probabilities} = [P(\text{word}_1), P(\text{word}_2), P(\text{word}_3), P(\text{word}_4), \dots] probabilities=[P(word1),P(word2),P(word3),P(word4),]

其中,( P ( word i P(\text{word}_i P(wordi) ) 是词汇表中第 (i) 个词的预测概率。

4. 选择最大概率的单词

完成 softmax 后,你将得到一个包含所有词汇表单词的概率分布。然后,解码器会选择概率最高的单词作为下一个生成的词。

如果 softmax 输出的概率分布是:

probabilities = [ 0.02 , 0.05 , 0.01 , 0.85 , …   ] \text{probabilities} = [0.02, 0.05, 0.01, 0.85, \dots] probabilities=[0.02,0.05,0.01,0.85,]

那么,模型会选择概率值 0.85 对应的词(在这个例子中是第4个词)作为当前时间步的输出词。

5. 输出词并进入下一轮预测

选定的词将作为解码器的输出,并作为下一轮输入的一部分。对于序列生成任务(如机器翻译),这个过程会重复,直到遇到结束符号(如 <EOS>,表示句子的结束)为止。

总结:

  1. 交叉注意力 后得到的词向量会经过线性变换,得到一个与词汇表大小相同的 logits 向量。
  2. softmax 被应用于 logits 向量,将其转换为一个概率分布。
  3. 解码器根据概率选择下一个词(最大概率的词)。
  4. 选定的词会被作为输入传递给解码器,进行下一轮预测。

线性变换详解

在 Transformer 解码器中,线性变换的过程是通过一个 线性层 将解码器交叉注意力层的输出转换为一个与词汇表大小相同的向量。这一步称为“投影”,其目的是将解码器生成的高维向量映射到词汇表的每个单词对应的维度上。让我们更详细地看一下这个过程。

1. 交叉注意力后的输出向量

经过交叉注意力后,解码器每个时间步上的输出会包含目标语言和源语言的上下文信息。这些输出向量的维度是 d_model,通常是 512 或 1024。例如,如果句子长度是 T,那么解码器的交叉注意力输出的形状为 (T, d_model)

2. 线性层的参数

为了将解码器的输出映射到词汇表空间,线性层的权重矩阵 W_proj 的形状通常为 (d_model, V),其中:

  • d_model 是模型的隐藏层维度大小。
  • V 是词汇表的大小。

此外,线性层还包含一个偏置向量 b_proj,其长度为 V。因此,线性层的输出维度会从 (T, d_model) 映射到 (T, V)

3. 线性变换的计算

在这个过程中,每个输出向量 x 会经过如下线性变换:

logits = x ⋅ W proj + b proj \text{logits} = x \cdot W_{\text{proj}} + b_{\text{proj}} logits=xWproj+bproj

这里:

  • x x x 是交叉注意力后的输出向量,形状为 (1,d_model)
  • W p r o j W_{proj} Wproj 是线性层的权重矩阵,形状为 (d_model, V)
  • b p r o j b_{proj} bproj 是偏置项,形状为 (1,V)

最终结果 logits 的形状是 (1,V),代表对词汇表中每个词的预测分数。

4. Softmax 转换为概率

logits 输入 softmax 函数后,就能得到一个概率分布,使每个词的概率都介于 0 到 1 之间,并且所有概率之和为 1。

示例

假设 d_model = 512,词汇表大小 V = 10,000,句子长度 T = 6,那么交叉注意力的输出会是 (6, 512)。经过线性变换后,得到的 logits 矩阵的维度是 (6, 10,000),其中每行是一个时间步上的词汇表分布。

5. 线性层的作用

这个线性变换的作用是将高维向量投影到词汇表空间,使得模型的输出与特定的单词一一对应,从而能够通过 softmax 计算概率并进行词汇表中的选择。且这个线性层也是需要通过训练得到的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

对话流式数据加载

需求&#xff1a;根据接口返回的数据进行类似打字机渲染的效果 使用的fetch 流式处理 fetch(BASE_URL/api/apps/ this.app_Id /chat-messages, {signal: this.controller.signal,method: POST,headers: {Authorization: Bearer localStorage.getItem(token),Content-Type: …

关于git使用的图文教程(包括基本使用,处理冲突问题等等)超详细

目录 用户签名,初始化git git提交流程图 提交到本地库 版本穿梭 分支操作 分支合并冲突 团队协作 github的使用 推送代码 克隆 拉取代码 团队协作冲突 团队协作之分支管理 推送分支到分支&#xff1a; 拉去远程库分支到本地库&#xff1a; 本地删除远程分支&am…

6、If、While、For、Switch

6、If、While、For、Switch 一、If 1、if-else if (boolean) {代码块 } else if (boolean) {代码块 } else if (boolean) {代码块 } else { // 默认情况代码块 }关于IDEA单元测试控制台不能输入数据的问题&#xff1a; https://blog.csdn.net/m0_72900498/article/details/…

【智谱开放平台-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

贪心算法day05(k次取反后最大数组和 田径赛马)

目录 1.k次取反后最大化的数组和 2.按身高排序 3.优势洗牌 1.k次取反后最大化的数组和 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 代码&#xff1a; class Solution {public int largestSumAfterKNegations(int[] nums, int k) {//如…

简简单单的UDP

前言 上一篇了解了TCP的三次握手过程&#xff0c;目的、以及如何保证可靠性、序列号与ACK的作用&#xff0c;最后离开的时候四次挥手的内容&#xff0c;这还只是TCP内容中的冰山一角&#xff0c;是不是觉得TCP这个协议非常复杂&#xff0c;这一篇我们来了解下传输层另外一个协…

安科瑞工业绝缘监测装置:保障煤矿井下6kV供电系统安全运行的关键应用——安科瑞 丁佳雯

在现代煤矿开采中&#xff0c;供电系统的稳定性和安全性是至关重要的。特别是在煤矿井下&#xff0c;由于环境复杂、湿度大、易腐蚀等因素&#xff0c;供电系统面临着严峻的挑战。为了确保供电系统的正常运行和矿工的生命安全&#xff0c;采用先进的绝缘监测装置显得尤为重要。…

OKG Research:用户意图驱动的Web3应用变革

出品&#xff5c; OKG Research 作者&#xff5c;Samuel QIN 当前加密市场的快速演变中&#xff0c;用户增长成为行业可持续发展的基石。目前主流观点在推动行业前进的路上&#xff0c;从单纯的技术探索在向更注重应用价值的方向转变。尽管近年来Web3生态系统发展迅速&#xf…

人工智能:重塑医疗、企业与生活的未来知识管理——以HelpLook为例

一、医疗行业&#xff1a;AI引领的医疗革新 随着人工智能&#xff08;AI&#xff09;技术的持续飞跃&#xff0c;我们正身处一场跨行业的深刻变革之中。在医疗健康的广阔舞台上&#xff0c;人工智能技术正扮演着日益重要的角色。它不仅能够辅助医生进行病例的精准诊断&#xf…

Ubuntu 20.04安装CUDA 11.0、cuDNN 8.0.5

不知道咋弄的ubuntu20.04电脑的cuda驱动丢了&#xff0c;无奈需装PyTorch环境&#xff0c;只有CUDA11.0以上版本才支持Ubuntu20.04&#xff0c;所以安装了CUDA11.0、cuDNN8.0.5 为防止频繁在浏览器检索对应的贴子&#xff0c;今天记录一下。 一. 驱动安装 为防止驱动安装后没…

Vue Element-UI 选择隐藏表格中的局部字段信息

一、功能需求分析 为什么需要这个功能&#xff1f; &#xff08;1&#xff09;简化信息&#xff0c;减少混乱&#xff1a; 就像整理抽屉&#xff0c;只留下常用的东西&#xff0c;这样找起来更快&#xff0c;看起来也更整洁。在表格中&#xff0c;只展示需要的字段&#xff…

STL学习-排序算法

1.sort 使用快速排序,平均性能好O(nlogn),但最差情况可能很差O(n^2)。不稳定。 sort(v.begin(),v.end());//对v容器进行排序,默认升序 sort(v.begin(),v.end(),greater<int>());//降序排序 2.partial_sort 使用堆排序,平均性能和最差都是O(nlogn),但实际情况比sort慢…

WSL 2 中 FastReport 与 FastCube 的设置方法与优化策略

软件开发人员长期以来一直在思考这个问题&#xff1a;“我们如何才能直接在 Windows 中运行 Linux 应用程序&#xff0c;而无需使用单独的虚拟机&#xff1f;” WSL 技术为这个问题提供了一个可能的答案。WSL 的历史始于 2016 年。当时&#xff0c;其实现涉及使用 Windows 内核…

JVM的组成、字节码文件的组成

目录 java虚拟机的组成 字节码文件的组成 基础信息 常量池 字段 方法 属性 字节码相关的常用工具&#xff1a; 总结&#xff1a; 1、如何查看字节码文件&#xff1f; 2、字节码文件的核心组成有哪些&#xff1f; java虚拟机的组成 类加载器 ClassLoader运行时数据区…

李佳琦回到巅峰背后,双11成直播电商分水岭

时间倏忽而过&#xff0c;又一年的双11即将宣告结束。 从双11正式开始前的《新所有女生的offer》&#xff0c;到被作为“比价”标杆被其他平台直播间蹭、被与其他渠道品牌比较&#xff0c;再到直播间运营一时手快多发了红包……整个双11周期下来&#xff0c;李佳琦直播间在刷新…

使用iviewui组件库的坑

背景 使用view-design组件库的Input组件的时候&#xff0c;按照产品的要求&#xff0c;输入框中只能键入正整数。 使用效果 如果直接使用组件的type属性&#xff0c;设置类型为number时&#xff0c;乍一看没啥问题&#xff0c;但是当我们键入 小数点(.) 或者 e/E 后面没有跟任…

软件测试学习记录 Day1

根据黑马程序员最新版的软件测试课程所做的笔记&#xff0c;需要原件后台私信&#xff1a; 练习提取测试点&#xff1a; 博主的答案&#xff0c;有不一样看法的可评论区讨论&#xff1a;

uni-app选项卡制作 ⑥

文章目录 十、选项卡制作一 、组件创建二、scroll-view 组件使用三、点击设置按钮跳转到标签设置界面四、数据获取 十、选项卡制作 1.遇到错误&#xff1a; 2.解决问题&#xff1a; 3.this 指向问题 // 指向&#xff1a; get_label_list uniCloud.callFunction({name: "g…

最新x64dbg软件

最新x64dbg软件 1、简介2、调试程序界面3、开源官网 1、简介 最新x64dbg软件-比OD更好的工具&#xff0c;原生支持中文界面和插件。 x64dbg是一款专业的windows系统下的64位调试器&#xff0c;界面简洁、操作简单&#xff0c;与 “OllyDbg” 调试工具非常相似&#xff0c;如果…

【时间之外】IT人求职和创业应知【31】

目录 新闻一&#xff1a;2024年“秦创原沣东杯”陕西省科技工作者创新创业大赛颁奖仪式暨沣东新城机器人产业发展大会盛大启幕 新闻二&#xff1a;声网CEO赵斌&#xff1a;RTE将成为生成式AI时代AI Infra的关键部分 新闻三&#xff1a;“5G工业互联网”融合应用试点城市名单…