Transformer开山论文惊天「翻车」?图与代码不一致,神秘bug看傻了
来源:51CTO.COM
时间:2023-05-11 11:34:58 156浏览 收藏
本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《Transformer开山论文惊天「翻车」?图与代码不一致,神秘bug看傻了》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~
今天,AI圈被一个惊天「翻车」刷屏了。
谷歌大脑的NLP奠基之作、提出Transformer架构的开山鼻祖级论文 《Attention Is All Your Need》 中的图,被网友扒出与代码并不一致。
论文地址:https://arxiv.org/abs/1706.03762
自2017年问世以来,Transformer已经成为AI领域的基石王者。就连大红大紫的ChatGPT真正的幕后大佬也是它。
2019年,谷歌还专门为它申请了专利。
归宗溯源,现在各类层出不穷的GPT(Generative Pre-trained Transformer),都起源于这篇17年的论文。
据Google Scholar,截止目前,这篇奠基之作已有7万多次的引用。
所以,ChatGPT的奠基石都不稳了?
作为「开山鼻祖」的论文,结构图竟是错的?
Lightning AI创始人、机器学习研究者Sebastian Raschka发现,这篇论文中Transformer的图是错误的。
图中被圈出的地方,LayerNorms是在注意力和全连接层之后。在残差块之间放置层归一化,会导致输出层附近参数的预期梯度很大。
而且,这也与代码不一致。
代码地址:https://github.com/tensorflow/tensor2tensor/commit/f5c9b17e617ea9179b7d84d36b1e8162cb369f25#diff-76e2b94ef16871bdbf46bf04dfe7f1477bafb884748f08197c9cf1b10a4dd78e
不过有网友指出,Noam shazeer在几周后对代码进行了纠正。
随后,Sebastian称,在论文Layer Normalization in the Transformer Architecture中,Pre-LN表现得更好,可以解决梯度问题。
这是很多或者大多数架构在实践中所采用的,但它可能导致表征崩溃。
如果层归一化在注意力和全连接层之前被放置在残差连接之中,就会实现更好的梯度。
Sebastian提出,虽然关于使用Post-LN或Pre-LN的讨论仍在进行中,但也有一篇新论文提议把二者结合起来。
论文地址:https://arxiv.org/abs/2304.14802
在这种双残差Tranformer中,表征崩溃和梯度消失的问题都得到了解决。
网友热议
针对论文中的疑点,有网友指出:中间不是已经有了PreLN和PostLN了吗?
Sebastian回答说,自己也觉得有点奇怪。或许2nd LN指的是最后一个输出层,而不是每个transformer块,但他对此也不确定。
有网友表示:「我们经常遇到与代码或结果不匹配的论文。大多数就是出于错误,但有时也会让人很奇怪。而这篇论文已经流传甚久了,为什么这种问题此前从没被人提出过,这真的很奇怪。」
Sebastian表示,公平地讲,最原始的代码是和图片一致的,但他们在2017年修改了代码版本,却没有更新图片。所以,这很令人困惑。
有网友表示,已经有论文在NormFormer中展示了一个不太复杂的架构,而他的团队最近也证实了他们的结果。而ResiDual论文没有在任何地方提到NormFormer,这让人很惊讶。
同时,评论区不断出现网友证实:Transformers中使用的LN,与CNN中使用的方式并不同。
所以,论文真的存在漏洞,还是乌龙事件?
让我们静观后续。
到这里,我们也就讲完了《Transformer开山论文惊天「翻车」?图与代码不一致,神秘bug看傻了》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于开源,代码的知识点!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
427 收藏
-
116 收藏
-
403 收藏
-
180 收藏
-
337 收藏
-
412 收藏
-
274 收藏
-
311 收藏
-
221 收藏
-
276 收藏
-
298 收藏
-
489 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 508次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习