ChatGPT危了!注意力机制的神秘bug曝光!Transformer模型恐大受冲击...

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

点击进入—>【Transformer】微信交流群

转载自:新智元

【导读】「注意力公式」存在8年的bug首现,瞬间引爆舆论。爆料者称,基于Transformer架构打造的模型或将面临重大考验。

「注意力公式」中存在了8年的bug,竟被国外小哥发现了?

瞬间,这个话题就在网上炸开了锅。

92535be5d3caa286e62205405ba227ac.png

现在基于Transformer打造的主流模型,GPT-4、Lalma 2、PaLM等都将受到影响。

Eppo初创公司的工程师Evan Miller今天在博客中介绍了这一重大发现,并表示:

研究人员上个月分离了bug——但是他们误失了一个简单的解决方案,「为什么LLM设计人员应该停止使用Softmax?」

dbb4d4cd77b829dfe7933adca590699d.png

那么,究竟是什么bug,能够暗藏8年?

作者在博文中,引用了维特根斯坦别有蕴意的一句话,「对于无法言说之事,必须保持沉默」。

de1bef202a948d1bc3959488846e0239.png

注意力是Off By One

这篇博文标题为「注意力是Off By One」。

6d452beb55d2e08257b14ff95dcff03c.png

你能看到这个公式的差一错误吗?

f8a6f18f0fc4cace0e7e933aa805cc7f.png

要知道,注意力公式是现代人工智能的核心等式,但其中有一个bug在上周让作者Evan Miller抓狂。

由此,Miller决定就这个漏洞和修复建议写篇博文。

文章中,他解释了当前一代AI模型是如何在一个关键的地方出现差一错误,这使得每个人的Transformer模型都难以压缩和部署。

不过,作者强调这只是一篇观点文章,但如果网上有人想做一些实验来证明这是对的,可以一起合作验证。

全与「离群值」有关

首先,先谈谈为什么差一错误很重要。ChatGPT工作得很好,有什么问题吗?

作者第一次发现了不对劲的地方,是在忙自己的事情和阅读量化研究论文时发现,这是一种通过LLM Edgers将大型模型压缩到Mac Minis、Rasberry Pis,以及破解家用恒温器的技术。

在AI领域,每个人都会受到RAM限制。

所以你使用的RAM越少,你就可以做的更多酷炫的事情,无论是在云端还是在边缘设备上。

LLM有数十亿的权重,如果我们可以让这些权重缩小,我们可以写出更好的十四行诗,或者剽窃更优秀的文章,又或者加速世界末日,这都取决于你使用语言的个人动机。

RAM存储信息,这听起来像是一种同义反复。信息是负对数概率,即我们需要多少位来存储事物。

如果一串数字流可预测,例如始终限制在一个有限的范围内,我们需要的比特数就会少一些。

如果一个数字流不可预测,比如偶尔出现一个超大数字,我们需要更多的二进制数字来编码这个庞然大物。

这就是在LLM中正在发生的事情(出于目前仅能部分理解的原因)。

Transformer模型包含这些离群权重(outlier weights),并且产生了相差一个数量级的巨大激活。

但是没有人能够消除它们。这些megalodons(研究命令行工具)看起来对这些模型的运行至关重要。

但是它们的存在与我们在构建优秀模型之前,所了解的关于神经网络的一切知识相矛盾。

已经有很多论文讨论这些离群值(outlier),人们已经想出了各种各样的位燃烧方案,以更少的1和0来进行编码。

因为现在,我们使用普通的比例和偏差整数量化得到的性能退化非常严重。

关于所有这些的最佳分析来自高通AI研究院的一篇论文:「Quantizable Transformers: Removing Outliers by Helping Attention Heads Do Nothing」。

1fb7200e143670772e63193c4f86948e.png

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

作者们将这些离群值的存在,追溯到注意力机制的softmax函数。这个看似无辜的指数函数,没有人发现其能够产生如此严重的峰度异常。

而研究人员也就差点发现这个边界错误。

对此,作者表示,高通研究人员暂时还未回复自己电子邮件,但必须通过这种方式呼吁国际学者社区。如果你读了这篇链接的论文,就忽略他们的建议吧。

修剪后的softmax带有一个旋转式的零梯度,他们的门控注意力提议虽然可行,但是为了解决这只是一个增量的失败而引入了数百万个新的参数。

在作者看来,这里有一个简单而明显的解决方案,就自己阅读的所有内容中,还没有人想过去尝试。

接下来,一起谈谈softmax函数,以及为什么在处理注意力时,它并非最适合的工具。

Softmax出现的问题


为了解释这个错误,你真的需要理解注意力机制的目标。

这么做个类比吧,大多数数值错误都是程序员错误地实现方程。

然而,当你处理的不是错误的代码,而是错误的数学时,你需要理解这个等式来自哪里,以及你应该怎么做,才有可能修复它。

对此,作者不得不阅读了大约50篇arXiV论文来理解所有这些。

首先,从输入嵌入开始理解,这是一个浮点向量,它表示输入字符串中的一个单词。

这个向量似乎每年都在变高,比如,最近的LLaMA 2模型从Meta使用了一个长度为3,204嵌入向量。

半精度浮点数计算为6KB+,仅仅是为了表示词汇表中的一个单词,而词汇表通常包含30,000——50,000个条目。

现在,如果你是节省内存的C程序员,你可能会想,为什么这些AI goober要使用6KB,来表示应该只需要2字节就能搞定的事情?

如果他们的词汇表小于84c499b97f256240d2fade8da4eb8bff.png,我们只需要16位就能表示一个条目,对吧?

这正是Transformer实际在做的事情:它将输入向量转换为相同大小的输出向量,这个最终的6KB输出向量需要编码绝对一切,以预测当前词语之后的词语。

每一层Transformer的工作就是,实实在在地向原始的单词向量添加信息。

这就是残差(née skip)连接的作用:所有的注意力机制只是向原始的两个字节信息添加补充材料,分析更大的上下文以指示。

例如,单词「pupil」指的是学生,而不是你的瞳孔。重复几十次注意力机制,你就掌握了英语和所有丰富的内容。

现在,Transformer 的最后一步是将这个输出向量与一个矩形矩阵相乘,并将结果的词汇长度向量塞入softmax,将那些指数输出视为下一个词的概率。

这是合理的,但每个人都知道它并非是完全正确的。

因为没有模型将那些输出概率视为正确,与之相反,每个实现和其他模型都使用采样机制来掩盖softmax过度表示低概率的事实。

这一切都很好,也可行。

在输出步骤中的softmax为词汇表中的每个词提供了梯度,这是一个合理的选择,直到有更好的词出现。

但作者想要辩论的是,Transformer的输出softmax与注意力机制的内部softmax有着不同的目的,我们都应该去除后者,或者至少用一些方便的东西支撑起它的分母。

那么什么是softmax?

softmax最初起源于统计力学中,用于基于能级预测状态分布:

b819211c44e22da6b8d70a903b708e9f.png

然后经济学家意识到,如果人们的线性效用函数中的噪声项恰好遵循Gumbel分布,那么某人选择某个项目的概率将与效用输入的指数成比例:

33ad0e56fbfbd24a467965cdba0e9cb3.png

而这也使得softmax在多项式逻辑函数中有了用武之地。

可以说,softmax是一种将实数映射为总和为1的概率的「作弊代码」。

在物理学中,它效果很好;在经济学中,它有点虚假,但是一旦它进入机器学习领域,每当涉及到离散选择时,它似乎就成为一种行之有效的东西。

ac8d27b5b7e621b74f828d713c11e529.png

这就是softmax的核心机制:它强制在竞争的替代方案中进行选择,无论是粒子选择能级状态,还是消费者选择汽车。

也就是说,如果softmax机制根本不想做出任何选择,softmax将需要进行修改,否则我们预期softmax在遇到实际数据时会产生扭曲。

就LLM而言,其中一个扭曲是对非语义token(逗号等)进行重点加权,而那些权重也就变成了难以压缩的异常值。

对此,高通AI研究人员发现,LLM中97%以上的异常激活发生在空白和标点位置。

哪里会出错?

接下来,让我们深入研究softmax在注意力中的使用,并看看它在哪里出错了:

79459511bee4763f828a9c8422281a75.png

分解一下:在仅解码器模型中(即ChatGPT之后的所有模型),、和都来自同一输入序列。

虽然它们并不相同,因为它们在途中被以不同的方式投影,但在每一层中,它们都始于相同的已注释(已添加到)嵌入向量。

现在:^正在寻找不同位置的token(嵌入)向量之间的相关性,实际上正在构建一个相关性(点积按1/√缩放)值的方阵,其中每列和行对应一个token位置。

然后,这个方阵的每一行都经过softmax处理,得到的概率用作矩阵中的值向量的混合函数。概率混合后的矩阵被加到输入向量中,并将其传递到神经网络中进行进一步处理。

多头注意力在每个层中同时经过这个过程,进行多次处理。它基本上将嵌入向量划分成多个部分,每个头使用整个向量中的信息来注释输出向量的一个(不重叠的)段。

如果你对原始Transformer论文中的Concatenation操作感到困惑,那就是在发生的事情:头1向段1添加信息,头2向段2添加信息,依此类推。

使用softmax的问题在于,它迫使每个注意力头都要进行注释,即使它没有任何信息可以添加到输出向量中。

在离散选择之间使用softmax是很好的;但作为可选注释(即输入到加法中)使用它,就有点不太好。其中,多头注意力则会加剧这个问题,因为专门的头比通用的头更有可能想要「通过」。

现在,可能应该全面替换softmax,但它在大部分情况下效果还不错,除了一个小问题,它阻止了注意力头发出空白注释。

因此,我提出了一个非常小的调整,我愿意将所有未来的互联网声明都寄托在这个正确性上。

这个调整是如此小,又是如此明显,自从注意力被发明(2014年)以来一直在大家的眼皮底下。

Softmax1和Quiet Attention

现在,经过改造的Softmax Super-Mod公式来了!

不过,实际上只是在分母上加了一个「1」。

3c1047d151d8eb523a593e2cab0c5b9f.png

作者表示,如果愿意的话,这可以让整个向量趋向于零,但除此之外,就只是将数值缩小了一些,而这将会在归一化过程中得到补偿。其中,归一化过程会在注意力之后进行。

关键的区别在于负极限,当中的条目明显小于零且模型试图完全避免一个注释时。

比较原始softmax的极限行为:

03e5d34eb70aa90b769f8525f60fc2f6.png

与新的改进softmax1的极限行为:

4a15fddf93dd5b44a40300ff377f9431.png

可以看到,原始的softmax总是会产生相同的总权重;softmax1虽然看起来大部分相同,但在负半轴中有一个逃生通道。

此外,softmax1还有其他一些特点。比如,它的导数是正数,因此我们始终有非零梯度;它的和在0和1之间,因此输出不会失控。

同时,softmax1还会保持如下函数性质,即输出向量中的相对值保持不变。

687e403d9b2d661355c58c7cc79e688b.png

而原始的softmax即便采用更高的精度,也无法解决这些问题。也就是说,所有的Transformers都受到影响。

尽管softmax1表面上看起来相当普通,但作者有99.44%的把握,它可以解决量化的离群反馈循环问题。

对于改进后的机制,作者称之为——QuietAttention,因为它允许注意力头保持安静:

81a6b7522cd9b1ddc21ba211788b3d62.png

基于此,作者认为可以很快地编写一个测试:

「如果在每个输入上下文前加上一个零向量,并确保选择的神经网络种不会增加任何偏差(包括位置编码),那么零向量应该会原封不动地通过,并且在每个后续的softmax分母中都添加一个单位。这样,也就不必纠结于梯度代码了。」

此外,作者还认为可以使用一个使用固定嵌入和特殊前缀token的LLaMA模型来完成这项工作。

不过,由于仍然需要重新训练模型,所以暂时不要在Raspberry Pi上进行尝试。

顺便,如果你真的进行测试了的话,记得把结果发给这位作者——他想在即将发表的arXiV论文中制作一张漂亮的表格。

作者介绍


本文作者Evan Miller其实说起来并不是那么有名。

他的履历和出身和一些科学大牛相比,确实是比不过。但并不影响他能做出本文所讲的重大发现。

fec1c02c1b6c678305798f8576d260cd.png

Miller本科、硕士和博士三个阶段其实都没有主修计算机科学。

本科阶段,他在威廉姆斯学院学的是物理。后来又在芝加哥大学攻读了经济学的博士。

14a86187830d8af36071b50fc1d1ea6c.png

而除了学业生涯,Miller写过很有名的排名算法,目前在很多网站上都有应用。

他设计的统计软件还曾被顶级医学期刊引用。

目前,Miller在一家名为 Eppo 的初创公司担任统计工程师。

74a29ecb06d2c8352c29494db8ebb346.png

而Miller在他自己的网站上所展示的内容,可以看出这哥们快是个全才了。

开源项目,做过7个。

7a2b587add01caec217c260552e195d9.png

各个专业的博客、文章、论文啥的,多的数不过来。

有编程类的,应用数学类的,甚至还有生意经。

1e53ec1cb0a3154f6ba1a58fb86bca9e.gif

参考资料:

https://news.ycombinator.com/item?id=36851494

https://twitter.com/EvMill/status/1683508861762695168

https://www.evanmiller.org/attention-is-off-by-one.html

 

点击进入—>【Transformer】微信交流群

ICCV / CVPR 2023论文和代码下载

 

后台回复:CVPR2023,即可下载CVPR 2023论文和代码开源的论文合集

后台回复:ICCV2023,即可下载ICCV 2023论文和代码开源的论文合集
目标检测和Transformer交流群成立
扫描下方二维码,或者添加微信:CVer333,即可添加CVer小助手微信,便可申请加入CVer-目标检测或者Transformer 微信交流群。另外其他垂直方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch、TensorFlow和Transformer等。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测或者Transformer+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群▲扫码或加微信号: CVer333,进交流群
CVer计算机视觉(知识星球)来了!想要了解最新最快最好的CV/DL/AI论文速递、优质实战项目、AI行业前沿、从入门到精通学习教程等资料,欢迎扫描下方二维码,加入CVer计算机视觉,已汇集数千人!▲扫码进星球
▲点击上方卡片,关注CVer公众号

整理不易,请点赞和在看85cc77a9358554cc7c46705466b3602c.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/48316.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

短视频抖音seo矩阵源码如何搭建开发?

抖音SEO矩阵源码排名逻辑采用一系列算法进行生成,其中包括用户行为、关键词匹配和内容质量等多维度指标的衡量。首先,用户行为是决定视频排名的主要因素,包括点赞数、评论数、观看时长和转发次数等。其次,关键词匹配也是影响排名的…

chatgpt赋能python:使用Python让照片动起来:一种新颖的SEO方法

使用Python让照片动起来:一种新颖的SEO方法 在当今数字时代,社交媒体已经成为营销策略中不可或缺的一部分。人们越来越喜欢以图像的形式来获取信息。然而,在面对大量的图像时,如何让自己的图片和品牌脱颖而出?答案是&…

chatgpt赋能python:PythonWand:用Python实现的ImageMagick工具箱

Python Wand: 用Python实现的ImageMagick工具箱 ImageMagick是一款强大的图像处理工具箱,经常被用于缩放、裁剪和转换图像等任务。Python Wand是对ImageMagick命令行工具的Python封装,使得Python程序员能够使用Python代码来操作图像。 为什么使用Pytho…

短视频如何进行高效制作?元引擎助你一臂之力

在当今社会,视频制作已经成为了一种非常流行和重要的创意方式。越来越多的人开始尝试制作自己的短视频,但是对于很多新手小白来说,短视频制作可能是一项相对困难的任务。但是现在,使用元引擎AI一键生成原创视频系统,可…

Python预测彩票中奖

文章目录[隐藏] python来解答你有生之年可以中双色球 python来解答你有生之年可以中双色球 昨天买了几注双色球开奖了,规划好了中奖后怎么花,紧张又刺激的等待后,狗带…… 到底我们能不能中双色球呢,用Python来验证一下吧&#xf…

基于GPT-4的 IDEA 神仙插件,无需魔法,非常不错!

大家好,我是不才陈某~ 最近发现了一款很厉害的 Intellij IDEA 插件——Bito。 Bito 插件无需魔法,亲测有效,可以基于 GPT-4 来写代码同时还提供了一些有用的功能,如自动补全提交信息、快速查看历史记录等。 没使用魔法的情况下&am…

IDEA懒人必备插件:自动生成单元测试,太爽了!

程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 7 分钟。 来自:blog.csdn.net/sun5769675/article/details/111043213 今天来介绍一款工具Squaretest,它是一款自动生成单元测试的插件,会用到它也是因为最近公司上了代…

Mac Automator 图片自动压缩上传 COS

把个人博客放在了 netilfy 托管,它给了一个优化建议,可以压缩图片节省带宽。但是每次截图后都要再压缩下图片有点麻烦,于是想着应该可以偷偷懒。目标很明确,截图后图片传到我的 git 仓库 images 目录后,能给我自动压缩…

IDEA 28 个天花板技巧,YYDS!

因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享 点击关注#互联网架构师公众号,领取架构师全套资料 都在这里 0、2T架构师学习资料干货分 上一篇:ChatGPT研究框架(80页PPT,附下载)…

CSDN 去除图片水印

想要保存 CSDN 博客中的一张图片时,发现图片上有水印,想要删除,怎么办呢? 如下图 右击图片 --> [在新标签中打开图片] 把问号以及问号后面的内容全部删掉,再访问 呐,水印不见了。 PS:写博…

免费的图片去水印消除水印清除水印去水印方法去水印软件免费下载

是一款免费的图片去水印工具。适用于微博下载的(偷的)图,从别的地方下载的(偷的)图等。 ** 直接说下载链接:请点击链接里的普通下载,(其他是别的下载器) 当然&#xff…

批量图片去水印,操作简单,赶紧收藏!

图片怎么去水印?在平时的日常生活中,我们有时候需要用到一些图片或者视频,但是这些视频或者图片往往会有烦人的水印,我们需要去除水印后才能更好来使用~那么你都是怎么去除水印的呢?有什么比较简单轻松的批量图片去水印方法吗?小编这里有一…

2023新版 多功能去水印工具微信小程序源码_带流量主功能(已更新)

简介: 2023新版 多功能去水印工具微信小程序源码_带流量主功能 自带去水印接口的多功能小程序 支持各大平台短视频去水印 支持保存封面,图集,标题等等 支持本地图片去水印 支持图片拼接 支持九宫格切图 支持修改视频的MD5等等 另外当然也有流量主功能的 链…

去除CSDN博客图片水印

今天写论文时要用到之前写博客时的一张图片,但是直接复制过来有水印 ,例如(右下角): 后来找到了解决办法,故在这里分享一下: 1.右击博客中的图片,选择复制图片地址,如下&…

二十行代码去除图片水印(别再找工具修图啦)

别再找工具修图啦,用代码吧 图片上常常有多余信息,如水印等,常常困扰啦多少痴男怨女。 在简书上看到一段有意思的内容。于是将它搬啦过来。 原地址:https://www.meiwen.com.cn/subject/dofckqtx.html。 消除水印 原图和效果图…

怎么把照片里的水印去掉?这三个办法教给你

图片水印是指在图片上添加一些文字或图形,以标识该图片的来源或版权归属。它可以让人们更容易地辨认出图片的来源,从而增强品牌的辨识度。如果我们在网上看到很喜欢的照片,想要用来个人收藏或者当做背景图,而它的图片水印只是为了…

智能软件aaas系统的整体设计的内容构成和简单介绍---正文开篇 之 现实模型 -----计算机科学、认知科学及其他们的混血儿:计算机认知科学

在开始之前,首先需要说明一下:aaas的设计中大量借鉴了http://www.jfsowa.com/ 中的内容。只是为了软件智能的目的,整体结构、架构和工作机制不同。所借鉴的Jfsowa中的内容被拆散后分布于aaas系统的各个地方。这里一并说明,文档各处…

一、初识MVC的混血宠儿Struts2

Struts 2是一个MVC框架,吸收了Struts1和WebWork两者的精华,以WebWork设计思想为核心,吸收了Struts 1的部分优点,因此一举成为MVC框架领域的混血新宠儿。 一、这里提到了MVC,首先对MVC做一下介绍: 首先控制…

国内技术帝不输国外 CryEngine 3引擎下“混血编辑器”诠释究极画质

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴! 有一款游戏,它用真实且精美的画质征服了无数的玩家,在06年E3展上,它绽放了耀眼的光彩,…

混血手感的逆袭!B.FRIENDit GK6A类青轴机械式键盘!

这太像了啦......!看来类青轴的机械式键盘应该也有可能也要掀起大战了,之前手感较好的多数都是POM导套设计系列,敲击起来就像是红轴手感,不过触底依然有一分或至少都有一丝弹弹的感觉。而类青轴最知名的应该就是雨林狼蛛&#xff…