从头开始构建,DeepMind新论文用伪代码详解Transformer
2017 年 Transformer 横空出世,由谷歌在论文《Attention is all you need》中引入。这篇论文抛弃了以往深度学习任务里面使用到的 CNN 和 RNN。这一开创性的研究颠覆了以往序列建模和 RNN 划等号的思路,如今被广泛用于 NLP。大热的 GPT、BERT 等都是基于 Transformer 构建的。
Transformer 自推出以来,研究者已经提出了许多变体。但大家对 Transformer 的描述似乎都是以口头形式、图形解释等方式介绍该架构。关于 Transformer 的伪代码描述可参考的资料很少。
正如下面这段话所表达的:一位 AI 领域非常出名的研究者,曾向一位著名的复杂性理论家发送了一篇自认为写得非常好的论文。而理论家的回答是:我在论文中找不到任何定理,我不知道这篇论文是关于什么的。
对于从业者来说,论文可能足够详细,但理论家需要的精度通常更高。由于某些原因,DL 社区似乎不愿为他们的神经网络模型提供伪代码。
目前看来,DL 社区存在以下问题:
DL 出版物缺乏科学的准确性和细节。深度学习在过去 5 到 10 年间取得了巨大的成功,每年发表的论文数以千计。许多研究者只是非正式地描述了他们如何改变以前的模型,大约 100 多页的论文只包含几行非正式地模型描述。充其量是一些高级图表,没有伪代码,没有方程式,没有提到对模型的精确解释。甚至没有人为著名的 Transformer 及其编码器 / 解码器变体提供伪代码。
源代码与伪代码。开源源代码非常有用,但与数千行的真实源代码相比,精心设计的伪代码通常不到一页,并且基本上仍然是完整的。这似乎是一项没有人愿意做的苦工作。
解释训练过程同样重要,但有时论文中甚至没有提到模型的输入和输出以及潜在的副作用是什么。论文中的实验部分通常不会解释输入算法的内容以及如何输入。如果方法部分有一些解释,通常与实验部分中描述的内容脱节,可能是由于不同的作者编写了不同的部分造成的。
有人会问:真的需要伪代码吗? 伪代码有什么用?
来自 DeepMind 的研究者认为提供伪代码有很多用途,与阅读文章或滚动 1000 行实际代码相比,伪代码将所有重要的内容浓缩在一页纸上,更容易开发新的变体。为此,他们最近发表的一篇论文《 Formal Algorithms for Transformers 》,文章以完备的、数学上精确的方式来描述 Transformer 架构。
论文简介
本文涵盖了什么是 Transformer、Transformer 如何训练、Transformer 被用来做什么、Transformer 关键架构组件以及比较出名的模型预览。
论文地址:https://arxiv.org/pdf/2207.09238.pdf
不过,阅读本文,读者需熟悉基础 ML 术语和简单的神经网络体系架构 (如 MLPs)。对于读者而言,在理解了文中的内容后,将会扎实的掌握 Transformer,并可能会使用伪代码实现自己的 Transformer 变体。
这篇论文的主体部分是第 3-8 章,分别介绍了 Transformer 及其典型任务、tokenization、Transformer 的架构组成、Transformer 的训练和推理、实际应用。
论文中基本完整的伪代码大约有 50 行,而实际的真实源代码则有数千行。论文中表述算法的伪代码适用于需要紧凑、完整和精确公式的理论研究者、从头实现 Transformer 的实验研究人员,同时对使用形式 Transformer 算法扩充论文或教科书也大有裨益。
论文中伪代码示例
对于熟悉基本的 ML 术语和简单的神经网络架构(例如 MLP)的初学者来说,这篇论文将帮你掌握扎实的 Transformer 基础,并用伪代码模板实现自己的 Transformer 模型。
作者介绍
这篇论文的第一作者是今年 3 月正式入职 DeepMind 的研究员 Mary Phuong。她博士毕业于奥地利科学技术研究所,主要从事机器学习的理论研究。
论文的另一位作者是 DeepMind 的资深研究员 Marcus Hutter,也是澳大利亚国立大学 (ANU) 计算机科学研究院 (RSCS) 的名誉教授。
Marcus Hutter 多年来一直从事人工智能数学理论的研究。这一研究领域基于若干数学和计算科学概念,涉及强化学习、概率论、算法信息理论、优化、搜索和计算理论等。他的书《通用人工智能:基于算法概率的顺序决策》于 2005 年出版,这是一本技术性和数学性都很强的书。
2002 年,Marcus Hutter 与 Jürgen Schmidhuber 和 Shane Legg 一起提出了基于理想化智能体和奖励强化学习的人工智能数学理论 AIXI。2009 年,Marcus Hutter 又提出了特征强化学习理论。
以上是从头开始构建,DeepMind新论文用伪代码详解Transformer的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

有的用户在安装设备的时候遇到了错误,提示错误代码28,其实这主要是由于驱动程序的原因,我们只要解决win7驱动程序代码28的问题就可以了,下面就一起来看一下应该怎么来操作吧。win7驱动程序代码28怎么办:首先,我们需要点击屏幕左下角的开始菜单。接着,在弹出的菜单中找到并点击“控制面板”选项。这个选项通常位于菜单的底部或者附近。点击后,系统会自动打开控制面板界面。在控制面板中,我们可以进行各种系统设置和管理操作。这是怀旧大扫除关卡中的第一步,希望对大家有所帮助。然后,我们需要继续操作,进入系统和

但可能打不过公园里的老大爷?巴黎奥运会正在如火如荼地进行中,乒乓球项目备受关注。与此同时,机器人打乒乓球也取得了新突破。刚刚,DeepMind提出了第一个在竞技乒乓球比赛中达到人类业余选手水平的学习型机器人智能体。论文地址:https://arxiv.org/pdf/2408.03906DeepMind这个机器人打乒乓球什么水平呢?大概和人类业余选手不相上下:正手反手都会:对手采用多种打法,该机器人也能招架得住:接不同旋转的发球:不过,比赛激烈程度似乎不如公园老大爷对战。对机器人来说,乒乓球运动

蓝屏代码0x0000001怎么办蓝屏错误是电脑系统或硬件出现问题时的一种警告机制,代码0x0000001通常表示出现了硬件或驱动程序故障。当用户在使用电脑时突然遇到蓝屏错误,可能会感到惊慌和无措。幸运的是,大多数蓝屏错误都可以通过一些简单的步骤进行排除和处理。本文将为读者介绍一些解决蓝屏错误代码0x0000001的方法。首先,当遇到蓝屏错误时,我们可以尝试重

解决C++代码中出现的“error:expectedinitializerbefore'datatype'”问题在C++编程中,有时候我们在编写代码时会遇到一些编译错误,其中一种常见的错误是“error:expectedinitializerbefore'datatype'”。这个错误通常在变量声明或函数定义中发生,可能导致程序无法正确编译或

win10系统是一款非常优秀的高智能系统强大的智能可以为用户们带来最好的使用体验,一般正常的情况下用户们的win10系统电脑都不会出现任何的问题!但是在优秀的电脑也难免会出现各种故障最近一直有小伙伴们反应自己的win10系统遇到了频繁蓝屏的问题!今天小编就为大家带来了win10电脑频繁蓝屏不同代码的解决办法让我们一起来看一看吧。电脑频繁蓝屏而且每次代码不一样的解决办法:造成各种故障代码的原因以及解决建议1、0×000000116故障原因:应该是显卡驱动不兼容。解决建议:建议更换厂商原带驱动。2、

如果您需要远程编程任何设备,这篇文章会给您带来帮助。我们将分享编程任何设备的顶级GE通用远程代码。通用电气的遥控器是什么?GEUniversalRemote是一款遥控器,可用于控制多个设备,如智能电视、LG、Vizio、索尼、蓝光、DVD、DVR、Roku、AppleTV、流媒体播放器等。GEUniversal遥控器有各种型号,具有不同的功能和功能。GEUniversalRemote最多可以控制四台设备。顶级通用遥控器代码,可在任何设备上编程GE遥控器配备一组代码,使其能够与不同设备相配合。您可

作为一名程序员,对于能够简化编码体验的工具,我感到非常兴奋。借助人工智能工具的帮助,我们可以生成演示代码,并根据需求进行必要的修改。在VisualStudioCode中新引入的Copilot工具让我们能够创建具有自然语言聊天交互的AI生成代码。通过解释功能,我们可以更好地理解现有代码的含义。如何使用Copilot生成代码?要开始,我们首先需要获得最新的PowerPlatformTools扩展。要实现这一点,你需要进入扩展页面,搜索“PowerPlatformTool”,然后点击Install按钮

终止代码0xc000007b在使用电脑时,有时会遇到各种各样的问题和错误代码。其中,终止代码最为令人困扰,尤其是终止代码0xc000007b。这个代码表示某个应用程序无法正常启动,给用户带来了不便。首先,我们来了解一下终止代码0xc000007b的含义。这个代码是Windows操作系统的错误代码,通常发生在32位应用程序尝试在64位操作系统上运行时。它表示应
