0

0

从头开始构建,DeepMind新论文用伪代码详解Transformer

王林

王林

发布时间:2023-04-09 20:31:09

|

1660人浏览过

|

来源于51CTO.COM

转载

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 关键架构组件以及比较出名的模型预览。

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

图片

论文地址:https://arxiv.org/pdf/2207.09238.pdf

不过,阅读本文,读者需熟悉基础 ML 术语和简单的神经网络体系架构 (如 MLPs)。对于读者而言,在理解了文中的内容后,将会扎实的掌握 Transformer,并可能会使用伪代码实现自己的 Transformer 变体。

吐槽大师
吐槽大师

吐槽大师(Roast Master) - 终极 AI 吐槽生成器,适用于 Instagram,Facebook,Twitter,Threads 和 Linkedin

下载

这篇论文的主体部分是第 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 又提出了特征强化学习理论。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

500

2023.08.14

Python 自然语言处理(NLP)基础与实战
Python 自然语言处理(NLP)基础与实战

本专题系统讲解 Python 在自然语言处理(NLP)领域的基础方法与实战应用,涵盖文本预处理(分词、去停用词)、词性标注、命名实体识别、关键词提取、情感分析,以及常用 NLP 库(NLTK、spaCy)的核心用法。通过真实文本案例,帮助学习者掌握 使用 Python 进行文本分析与语言数据处理的完整流程,适用于内容分析、舆情监测与智能文本应用场景。

418

2026.01.27

http与https有哪些区别
http与https有哪些区别

http与https的区别:1、协议安全性;2、连接方式;3、证书管理;4、连接状态;5、端口号;6、资源消耗;7、兼容性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2916

2024.08.16

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

25

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

43

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

174

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

50

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

92

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

102

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 4.2万人学习

Kotlin 教程
Kotlin 教程

共23课时 | 4.4万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 1.0万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号