从熵不变性看Attention的Scale操作
By 苏剑林 | 2021-12-21 | 111461位读者 | 引用当前Transformer架构用的最多的注意力机制,全称为“Scaled Dot-Product Attention”,其中“Scaled”是因为在$Q,K$转置相乘之后还要除以一个$\sqrt{d}$再做Softmax(下面均不失一般性地假设$Q,K,V\in\mathbb{R}^{n\times d}$):
\begin{equation}Attention(Q,K,V) = softmax\left(\frac{QK^{\top}}{\sqrt{d}}\right)V\label{eq:std}\end{equation}
在《浅谈Transformer的初始化、参数化与标准化》中,我们已经初步解释了除以$\sqrt{d}$的缘由。而在这篇文章中,笔者将从“熵不变性”的角度来理解这个缩放操作,并且得到一个新的缩放因子。在MLM的实验显示,新的缩放因子具有更好的长度外推性能。
熵不变性
我们将一般的Scaled Dot-Product Attention改写成
\begin{equation}\boldsymbol{o}_i = \sum_{j=1}^n a_{i,j}\boldsymbol{v}_j,\quad a_{i,j}=\frac{e^{\lambda \boldsymbol{q}_i\cdot \boldsymbol{k}_j}}{\sum\limits_{j=1}^n e^{\lambda \boldsymbol{q}_i\cdot \boldsymbol{k}_j}}\end{equation}
其中$\lambda$是缩放因子,它跟$\boldsymbol{q}_i,\boldsymbol{k}_j$无关,但原则上可以跟长度$n$、维度$d$等参数有关,目前主流的就是$\lambda=1/\sqrt{d}$。
从JL引理看熵不变性Attention
By 苏剑林 | 2023-04-10 | 28961位读者 | 引用在《从熵不变性看Attention的Scale操作》、《熵不变性Softmax的一个快速推导》中笔者提出了熵不变性Softmax,简单来说就是往Softmax之前的Attention矩阵多乘上一个$\log n$,理论上有助于增强长度外推性,其中$n$是序列长度。$\log n$这个因子让笔者联系到了JL引理(Johnson-Lindenstrauss引理),因为JL引理告诉我们编码$n$个向量只需要$\mathcal{O}(\log n)$的维度就行了,大家都是$\log n$,这两者有没有什么关联呢?
熵不变性
我们知道,熵是不确定性的度量,用在注意力机制中,我们将它作为“集中注意力的程度”。所谓熵不变性,指的是不管序列长度$n$是多少,我们都要将注意力集中在关键的几个token上,而不要太过分散。为此,我们提出的熵不变性Attention形式为
\begin{equation}Attention(Q,K,V) = softmax\left(\frac{\log_{512} n}{\sqrt{d}}QK^{\top}\right)V\label{eq:core}\end{equation}
VQ一下Key,Transformer的复杂度就变成线性了
By 苏剑林 | 2023-11-09 | 63431位读者 | 引用Efficient Transformer,泛指一切致力于降低Transformer的二次复杂度的工作,开始特指针对Attention的改进,后来更一般的思路,如傅里叶变换、线性RNN等,也被归入这个范畴。不得不说,为了降低Transformer的二次复杂度,各路大牛可谓是“八仙过海,各显神通”,各种神奇的思路“百花齐放”,笔者也从中学习到了不少理论知识。然而,尽管Efficient Transformer在理论上是精彩的,但实际上该领域一直都是不愠不火的状态,并没有实际表现十分出色的模型,在LLM火爆的今天,甚至已经逐渐淡出了大家的视野,也淡出了笔者的兴趣范围。
不过,最近有一篇论文《Transformer-VQ: Linear-Time Transformers via Vector Quantization》,却让笔者为之拍案叫绝。作者非常高明地洞察到,只需要对标准Attention的Key做一下VQ(Vector Quantize),复杂度就会自动降低为线性!这种线性化思路保留了标准Attention的形式,是标准Attention到线性Attention的一个完美过渡,同时最大程度上保留了标准Attention的能力。
高效难题
说起来,本站也算是比较早关注Efficient Transformer相关工作了,最早可以追溯到2019年解读Sparse Transformer的一篇博客《为节约而生:从标准Attention到稀疏Attention》。此后,陆续写的关于Efficient Transformer的其他博文还有
当Batch Size增大时,学习率该如何随之变化?
By 苏剑林 | 2024-11-14 | 2948位读者 | 引用随着算力的飞速进步,有越多越多的场景希望能够实现“算力换时间”,即通过堆砌算力来缩短模型训练时间。理想情况下,我们希望投入$n$倍的算力,那么达到同样效果的时间则缩短为$1/n$,此时总的算力成本是一致的。这个“希望”看上去很合理和自然,但实际上并不平凡,即便我们不考虑通信之类的瓶颈,当算力超过一定规模或者模型小于一定规模时,增加算力往往只能增大Batch Size。然而,增大Batch Size一定可以缩短训练时间并保持效果不变吗?
这就是接下来我们要讨论的话题:当Batch Size增大时,各种超参数尤其是学习率该如何调整,才能保持原本的训练效果并最大化训练效率?我们也可以称之为Batch Size与学习率之间的Scaling Law。
方差视角
直觉上,当Batch Size增大时,每个Batch的梯度将会更准,所以步子就可以迈大一点,也就是增大学习率,以求更快达到终点,缩短训练时间,这一点大体上都能想到。问题就是,增大多少才是最合适的呢?
VQ的又一技巧:给编码表加一个线性变换
By 苏剑林 | 2024-11-06 | 4989位读者 | 引用在《VQ的旋转技巧:梯度直通估计的一般推广》中,我们介绍了VQ(Vector Quantization)的Rotation Trick,它的思想是通过推广VQ的STE(Straight-Through Estimator)来为VQ设计更好的梯度,从而缓解VQ的编码表坍缩、编码表利用率低等问题。
无独有偶,昨天发布在arXiv上的论文《Addressing Representation Collapse in Vector Quantized Models with One Linear Layer》提出了改善VQ的另一个技巧:给编码表加一个线性变换。这个技巧单纯改变了编码表的参数化方式,不改变VQ背后的理论框架,但实测效果非常优异,称得上是简单有效的经典案例。
《自然极值》系列——1.前言
By 苏剑林 | 2010-11-27 | 51742位读者 | 引用附:期中考过后,课程紧了,自由时间少了,因此科学空间的更新也放缓了。不过BoJone也会尽量地更新一些内容,和大家一同分享学习的乐趣。
上一周和这一周的时间里,BoJone将自己学习物理和极值的一些内容进行了总结和整合,写成了《自然极值》一文。因此从今天起,到十二月的大多数时间里,科学空间将和大家讲述并讨论关于“极值”的问题,希望读者会喜欢这部分内容。当然,我不是专业的研究人员,更不是经验丰富的物理和数学教师,甚至可以说是一个“乳臭未干的小子”,因此,错误在所难免,只希望同好不吝指出,更希冀能够起到我抛出的这一块“砖”能够引出美妙的“玉”。
《自然极值》系列——3.平衡态公理
By 苏剑林 | 2010-11-28 | 18708位读者 | 引用《自然极值》系列——5.最速降线的故事
By 苏剑林 | 2010-12-09 | 69020位读者 | 引用如果说前面关于这个系列的内容还不能使得读者您感到痛快,那么接下来要讲述的最速降线和悬链线问题也许能够满足你的需要。不过在进入对最速降线问题的理论探讨之前,我们先来讲述一个发生在17世纪的激动人心的数学竞赛的故事。我相信,每一个热爱数学和物理的朋友,都将会为其所振奋,为其所感动。里边渗透的,不仅仅是一次学术的竞争,更是一代又一代的人对真理的追求与探路的不懈精神。
(以下内容来源于网络,科学空间整理)
意大利科学家伽利略在1630年提出一个分析学的基本问题── “一个质点在重力作用下,从一个给定点A到不在它垂直下方的另一点B,如果不计摩擦力,问沿着什么曲线滑下所需时间最短。”这算是这个著名问题的起源了(为什么别人没有想起这个问题呢?所以说大科学家的素质就是思考、创新,要有思想,人没有思想,就和行尸走肉没有什么区别)。可惜的是伽利略说这曲线是圆,但这却是一个错误的答案。
最近评论