Transformer架构图与代码不一致引发争论,Post-LN和Pre-LN的争论解析

释放双眼,带上耳机,听听看~!
一篇关于Transformer架构图与代码不一致引发争论的文章,分析了Post-LN和Pre-LN的争论,讨论了梯度问题。

机器之心报道

编辑:杜伟、陈萍

论文中的图有时会出现与实现代码不对应的情况,这会让读者头大,不知是有意还是无意为之。这次,没想到大名鼎鼎的 Transformer 论文也「翻车」了。

2017 年,谷歌大脑团队在其论文《Attention Is All You Need》中创造性的提出 Transformer 这一架构,自此这一研究一路开挂,成为当今 NLP 领域最受欢迎的模型之一,被广泛应用于各种语言任务,并取得了许多 SOTA 结果。

不仅如此,在 NLP 领域一路领先的 Transformer,迅速席卷计算机视觉(CV)、语音识别等领域,在图像分类、目标检测、语音识别等任务上取得良好的效果。

Transformer架构图与代码不一致引发争论,Post-LN和Pre-LN的争论解析

论文地址:arxiv.org/pdf/1706.03…

从推出至今,Transformer 已经成为众多模型的核心模块,比如大家熟悉的 BERT、T5 等都有 Transformer 的身影。就连近段时间爆火的 ChatGPT 也依赖 Transformer,而后者早已被谷歌申请了专利。

Transformer架构图与代码不一致引发争论,Post-LN和Pre-LN的争论解析

图源:patentimages.storage.googleapis.com/05/e8/f1/cd…

此外 OpenAI 发布的系列模型 GPT(Generative Pre-trained Transformer),名字中带有 Transformer,可见 Transformer 是 GPT 系列模型的核心。

与此同时,最近 OpenAI 联合创始人 Ilya Stutskever 在谈到 Transformer 时表示,当 Transformer 刚发布之初,实际上是论文放出来的第二天,他们就迫不及待的将以前的研究切换到 Transformer ,后续才有了 GPT。可见 Transformer 的重要性不言而喻。

6 年时间,基于 Transformer 构建的模型不断发展壮大。然而现在,有人发现了 Transformer 原始论文中的一处错误。

Transformer 架构图与代码「不一致」

发现错误的是一位知名机器学习与 AI 研究者、初创公司 Lightning AI 的首席 AI 教育家 Sebastian Raschka。他指出,原始 Transformer 论文中的架构图有误,将层归一化(LN)放置在了残差块之间,而这与代码不一致。

Transformer架构图与代码不一致引发争论,Post-LN和Pre-LN的争论解析

Transformer 架构图如下左,图右为 Post-LN Transformer 层(出自论文《On Layer Normalization in the Transformer Architecture》[1])。

Transformer架构图与代码不一致引发争论,Post-LN和Pre-LN的争论解析

不一致的代码部分如下,其中 82 行写了执行顺序「layer_postprocess_sequence=”dan”」,表示后处理依次执行 dropout、residual_add 和 layer_norm。如果上图左中的 add&norm 理解为:add 在 norm 上面,即先 norm 再 add,那确实代码和图不一致。

Transformer架构图与代码不一致引发争论,Post-LN和Pre-LN的争论解析

代码地址:

github.com/tensorflow/…

接下来,Sebastian 又表示,论文《On Layer Normalization in the Transformer Architecture》认为 Pre-LN 表现更好,能够解决梯度问题。这是很多或者大多数架构在实践中所采用的,但它可能导致表示崩溃。

当层归一化在注意力和全连接层之前被放置于残差连接之中时,能够实现更好的梯度。

Transformer架构图与代码不一致引发争论,Post-LN和Pre-LN的争论解析

因此,虽然关于 Post-LN 或 Pre-LN 的争论仍在继续,但另一篇论文结合了这两点,即《ResiDual: Transformer with Dual Residual Connections》[2]。

Transformer架构图与代码不一致引发争论,Post-LN和Pre-LN的争论解析

对于 Sebastian 的这一发现,有人认为,我们经常会遇到与代码或结果不一致的论文。大多数是无心之过,但有时令人感到奇怪。考虑到 Transformer 论文的流行程度,这个不一致问题早就应该被提及 1000 次。

Sebastian 回答称,公平地讲,「最最原始」的代码确实与架构图一致,但 2017 年提交的代码版本进行了修改,同时没有更新架构图。所以,这实在令人困惑。

Transformer架构图与代码不一致引发争论,Post-LN和Pre-LN的争论解析

正如一位网友所说,「读代码最糟糕的是,你会经常发现这样的小变化,而你不知道是有意还是无意。你甚至无法测试它,因为你没有足够的算力来训练模型。」

不知谷歌之后会更新代码还是架构图,我们拭目以待!

参考链接:

论文[1]:arxiv.org/pdf/2002.04…

论文[2]arxiv.org/pdf/2304.14…

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

Amazon SageMaker机器学习平台为文本生成图像提供便利

2023-12-21 10:43:14

AI教程

最小二乘法在线性回归中的应用及代码示例

2023-12-21 10:53:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索