视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降

Transformer 架构已经在现代机器学习领域得到了广泛的应用。重点是要集中注意力是 transformer 的一大核心组件,其中包含了一个 softmax,作用是产生 token 的一个概率分布。softmax 有较高的成本,因为其会执行指数计算和对序列长度求和,这会使得并行化难以执行。

Google DeepMind 想到了一个新思路:用某种不一定会输出概率分布的新方法替代 softmax 运算。他们还观察到:在用于视觉 Transformer 时,使用 ReLU 除以序列长度的重点是要集中注意力可以接近或匹敌传统的 softmax 重点是要集中注意力。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降

论文链接:https://arxiv.org/abs/2309.08586

这一结果为并行化带来了新方案,因为ReLU重点是要集中注意力可以在序列长度维度上并行化,而且所需的gather运算比传统的重点是要集中注意力少

方法

重点是要集中注意力

重点是要集中注意力的作用是通过一个两步式流程对 d 维的查询、键和值 {q_i, k_i, v_i} 进行转换

在第一步,通过下式得到重点是要集中注意力权重 视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降

视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降

其中 ϕ 通常是 softmax。

下一步,使用这个重点是要集中注意力权重来计算输出视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降 这篇论文探索了使用逐点式计算的方案来替代 ϕ。

ReLU 重点是要集中注意力

DeepMind 观察到,对于 1 式中的 ϕ = softmax,视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降是一个较好的替代方案。他们将使用 视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降的重点是要集中注意力称为 ReLU 重点是要集中注意力。

已扩展的逐点式重点是要集中注意力

研究者也通过实验探索了更广泛的 视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降 选择,其中 α ∈ [0, 1] 且 h ∈ {relu,relu² , gelu,softplus, identity,relu6,sigmoid}。

需要进行重新编写的内容是:序列长度的扩展

他们还发现,如果使用一个涉及序列长度 L 的项目进行扩展,可以提高准确度。以前试图去除 softmax 的研究工作并没有使用这种扩展方案

在目前使用 softmax 重点是要集中注意力设计的 Transformer 中,有 视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降 ,这意味着 视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降 尽管这不太可能是一个必要条件,但 视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降能确保在初始化时 视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降 的复杂度是 视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降 ,保留此条件可能会减少替换 softmax 时对更改其它超参数的需求。

在初始化的时候,q 和 k 的元素为 O (1),因此 视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降 也将为 O (1)。ReLU 这样的激活函数维持在 O (1),因此需要因子视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降才能使 视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降 的复杂度为  视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降

实验与结果

主要结果

新CG儿 新CG儿

数字视觉分享平台 | AE模板_视频素材

新CG儿 147 查看详情 新CG儿

图 1 说明在 ImageNet-21k 训练方面,ReLU 重点是要集中注意力与 softmax 重点是要集中注意力的扩展趋势相当。X 轴展示了实验所需的内核计算总时间(小时)。ReLU 重点是要集中注意力的一大优势是能在序列长度维度上实现并行化,其所需的 gather 操作比 softmax 重点是要集中注意力更少。

视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降

需要进行重新编写的内容是:序列长度的扩展的效果

图 2 对比了需要进行重新编写的内容是:序列长度的扩展方法与其它多种替代 softmax 的逐点式方案的结果。具体来说,就是用 relu、relu²、gelu、softplus、identity 等方法替代 softmax。X 轴是 α。Y 轴则是 S/32、S/16 和 S/8 视觉 Transformer 模型的准确度。最佳结果通常是在 α 接近 1 时得到。由于没有明确的最佳非线性,所以他们在主要实验中使用了 ReLU,因为它速度更快。

视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降

qk-layernorm 的效果可以重新表述如下:

主要实验中使用了 qk-layernorm,在这其中查询和键会在计算重点是要集中注意力权重前被传递通过 LayerNorm。DeepMind 表示,默认使用 qk-layernorm 的原因是在扩展模型大小时有必要防止不稳定情况发生。图 3 展示了移除 qk-layernorm 的影响。这一结果表明 qk-layernorm 对这些模型的影响不大,但当模型规模变大时,情况可能会不一样。

视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降

重新描述:门的增添效果

先前有移除 softmax 的研究采用了添加一个门控单元的做法,但这种方法无法随序列长度而扩展。具体来说,在门控重点是要集中注意力单元中,会有一个额外的投影产生输出,该输出是在输出投影之前通过逐元素的乘法组合得到的。图 4 探究了门的存在是否可消除对需要进行重新编写的内容是:序列长度的扩展的需求。总体而言,DeepMind 观察到,不管有没有门,通过需要进行重新编写的内容是:序列长度的扩展都可以得到最佳准确度。也要注意,对于使用 ReLU 的 S/8 模型,这种门控机制会将实验所需的核心时间增多大约 9.3%。

视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降

以上就是视觉Transformer中ReLU替代softmax,DeepMind新招让成本速降的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/493575.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 16:48:57
下一篇 2025年11月8日 16:55:22

相关推荐

  • Go语言函数与包文档的高效查看方法

    本教程详细介绍了多种高效查看go语言函数和包文档的方法,旨在替代耗时的在线搜索。内容涵盖了官方在线文档、本地`godoc`服务、命令行`godoc`工具以及rob pike的`doc`工具的使用,并提供了具体示例,帮助开发者快速获取所需的go语言api信息,提升开发效率。 在Go语言开发中,快速准确…

    2025年12月16日
    000
  • Go语言函数与包文档查询指南

    本文详细介绍了多种高效查询go语言函数与包文档的方法,旨在帮助开发者快速获取所需信息。内容涵盖官方在线文档、本地`godoc`服务、命令行`godoc`工具以及rob pike的`doc`工具,通过这些途径,开发者可以方便快捷地浏览、搜索并理解go语言的api,从而显著提升开发效率。 在Go语言开发…

    2025年12月16日
    000
  • 深入探索Go语言函数与包文档的多种查阅方式

    掌握go语言函数与包文档的查阅技巧对于开发者至关重要。本文将详细介绍四种高效获取go文档的方法:官方在线文档、本地godoc服务、命令行godoc工具以及rob pike的doc工具,旨在帮助go开发者摆脱低效的搜索引擎依赖,实现快速、便捷的文档查询。 Go语言开发者在日常工作中,频繁查阅标准库或第…

    2025年12月16日
    000
  • 优化日志处理:从文件系统到事件分析的转变

    本文探讨了高效处理日志以理解用户行为的方法。针对传统文件系统日志存储在行为分析方面的局限性,我们推荐采用事件驱动的分析平台,如mixpanel或keen.io。这些平台通过结构化事件收集和强大的可视化功能,能够更直接、更深入地洞察用户行为,避免了手动解析和关联大量原始日志的复杂性。 在现代应用开发中…

    2025年12月16日
    000
  • 如何在Golang中处理gRPC异常

    答案:在Golang中处理gRPC异常需使用status和codes包统一错误格式,服务端用status.Errorf返回标准错误,客户端通过status.FromError解析状态码和消息,并可借助WithDetails携带额外信息,实现高效、一致的错误通信。 在Golang中处理gRPC异常,关…

    2025年12月16日
    000
  • 解决Go语言go get命令中$GOPATH未设置错误的指南

    本教程旨在解决go语言开发中常见的`go get`命令报错“cannot download, $gopath not set”的问题。即使您已通过`gopath=…`设置了环境变量,该错误仍可能发生。核心原因是`gopath`变量未正确导出到子进程。文章将详细解释`export`命令的作…

    2025年12月16日
    000
  • 解决 Google App Engine Go 应用部署时 ctypes 错误

    本文旨在帮助开发者解决在使用 Google App Engine (GAE) 部署 Go 应用时遇到的 “WindowsError: [Error 6] The handle is invalid” 错误。我们将深入探讨该错误的常见原因,并提供详细的解决方案,确保你的 Go …

    2025年12月16日
    000
  • Golang如何配置VS Code插件提升开发效率

    首先安装 VS Code 官方 Go 扩展,随后自动或手动配置 gopls、dlv、gofmt 等工具链,启用保存时格式化、自动导入整理及语言服务器功能,并通过 launch.json 设置调试环境,确保 gopls 正常运行以获得完整开发体验。 使用 VS Code 配合 Go(Golang)开发…

    2025年12月16日
    000
  • Go语言中创建HTML表单模板:App Engine环境下的实践

    本教程将详细介绍在go语言中如何创建和使用html表单模板,特别是在app engine等文件系统受限的环境下。通过将html内容直接嵌入为字符串,并结合`html/template`包进行解析和渲染,开发者可以高效地构建动态网页,无需依赖文件系统,确保应用的灵活性和部署的便捷性。 Go语言模板引擎…

    2025年12月16日
    000
  • Go语言中创建HTML表单模板的实践指南

    分别创建了用户名字段和密码字段。name属性对于表单提交至关重要,它定义了字段的键名。 创建了一个提交按钮。 解析与准备模板 定义了HTML字符串后,我们需要使用html/template包将其解析成可执行的模板对象。template.New()用于创建一个新的模板实例,Parse()方法则负责解析…

    2025年12月16日
    000
  • Go语言Web开发:构建与渲染HTML表单模板

    本教程详细介绍了如何在go语言中使用`html/template`包创建和渲染html表单模板。通过一个登录表单的实例,演示了如何将html结构定义为字符串常量,利用`template.parse`方法解析模板,并最终通过http处理函数将其渲染到客户端。文章还特别强调了在app engine等特定…

    2025年12月16日
    000
  • 解决Go语言连接MSSQL数据库时ODBC相关问题的教程

    本文旨在帮助Go开发者在使用ODBC连接MSSQL数据库时遇到的常见编译和运行时问题,特别是在macOS环境下。我们将探讨如何配置CGO,解决头文件缺失、链接错误以及类型转换等问题,并提供一些调试和问题解决的思路。 前期准备 在开始之前,请确保已安装以下组件: Go: 确保安装了Go语言的最新版本。…

    2025年12月16日
    000
  • Golang反射在依赖注入框架中的应用

    Go语言通过反射实现依赖注入,利用reflect包动态解析结构体字段标签(如inject:””),自动为标记的字段赋值,从而解耦组件依赖。 在Go语言开发中,依赖注入(Dependency Injection, DI)是一种常见的设计模式,用于解耦组件之间的依赖关系。Gola…

    2025年12月16日
    000
  • Golang集成开发环境常用插件推荐与安装

    先安装VS Code Go官方插件,再配置gopls和dlv,结合格式化与静态检查工具,可构建高效Go开发环境。 Go语言开发中,选择合适的集成开发环境(IDE)和插件能显著提升编码效率。目前主流的Go开发环境多基于 Visual Studio Code、GoLand 或 Vim/Neovim 搭配…

    2025年12月16日
    000
  • Go语言Web模板实践:在受限环境下构建登录表单

    本文将详细介绍如何在go语言中创建web表单模板,特别是针对像google app engine这样文件系统访问受限的环境。我们将通过一个登录表单的实例,演示如何将html模板内容直接嵌入到go代码的字符串常量中,并使用`html/template`包进行解析和渲染,从而实现高效且可部署的web界面…

    2025年12月16日
    000
  • 解决Go App Engine中模板文件路径错误:理解app.yaml与文件访问

    本文旨在解决Go App Engine应用中常见的模板文件路径错误,即“panic: open templates/base.html: The system cannot find the path specified”。核心在于理解Go App Engine的文件访问机制以及`app.yaml`…

    2025年12月16日
    000
  • Go 语言 Cgo 程序 GDB 调试在 Go 1.1 中的已知问题与应对

    本文深入探讨了 go 1.1 版本中 gdb 调试包含 cgo 代码的 go 程序时遇到的一个已知问题。具体表现为 gdb 无法正确显示 go 变量的值。该问题是 go 1.0 到 1.1 升级过程中引入的回归性 bug,目前 go 官方正在积极修复。对于 go 1.1 用户,了解此限制并关注官方更…

    2025年12月16日
    000
  • GAE Go应用中登录URL出现%A(MISSING)错误的解析与解决

    在google app engine (gae) go应用开发中,当使用`user.loginurl`获取登录链接并尝试通过`c.debugf`或`fmt.printf`直接拼接字符串打印时,可能会遇到url中出现`%a(missing)`的异常。这并非url本身有误,而是go语言`fmt`包在处理…

    2025年12月16日
    000
  • 在 Go 语言中实现 Datastore 结构体数据存储与检索

    本文详细介绍了在 Go 语言中如何将结构体数据存储到 Google Cloud Datastore 并进行读取。核心步骤包括定义带有公共字段的结构体,使用 `appengine.NewContext` 获取上下文,通过 `datastore.NewKey` 创建键,以及利用 `datastore.P…

    2025年12月16日
    000
  • Go Web应用中表单数据与Datastore的集成:存取实践

    本文详细介绍了如何在go语言开发的web应用中,将html表单提交的数据(`r.formvalue`)存储到google app engine的datastore,并从datastore中检索这些数据。通过具体代码示例,涵盖了数据模型的定义、上下文的获取、数据写入(`datastore.put`)和…

    2025年12月16日
    000

发表回复

登录后才能评论
关注微信