10 Apr

从JL引理看熵不变性Attention

《从熵不变性看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}

点击阅读全文...

16 Sep

随机分词浅探:从Viterbi Decoding到Viterbi Sampling

上一篇文章《大词表语言模型在续写任务上的一个问题及对策》发布后,很快就有读者指出可以在训练阶段引入带有随机性的分词结果来解决同样的问题,并且已经有论文和实现。经过进一步查阅学习,笔者发现这是一个名为Subword Regularization的技巧,最早应用在NMT(机器翻译)中,目前SentencePiece也有相应的实现。看起来这个技巧确实能缓解前述问题,甚至有助于增强语言模型的容错能力,所以就有了将它加进去BytePiece的想法。

那么问题来了,如何将确定性分词改为随机性分词呢?BytePiece是基于Unigram模型的,它通过Viterbi算法找最大概率的分词方案,既然有概率,是否就可以自然地导出随机采样?本文来讨论这个问题,并分享自己的解决方案。

点击阅读全文...

16 Oct

随机分词再探:从Viterbi Sampling到完美采样算法

在文章《随机分词浅探:从Viterbi Decoding到Viterbi Sampling》中,笔者提出了一种名为“Viterbi Sampling”的随机分词算法,它只是在求最优解的Viterbi Decoding基础上进行小修改,保留了Viterbi算法的简单快速的特点,相比于已有的Subword Regularization明显更加高效。不过,知乎上的读者 @鶴舞 指出,当前的采样算法可能会在多次二选一“稀释”了部分方案的出现概率,直接后果是原本分数最高的切分并不是以最高概率出现。

经过仔细思考后,笔者发现相应的问题确实存在,当时为了尽快得到一种新的采样算法,在细节上的思考和处理确实比较粗糙。为此,本文将进一步完善Viterbi Sampling算法,并证明完善后的算法在效果上可以跟Subword Regularization等价的。

问题分析

首先,我们来看一下评论原话

点击阅读全文...

13 May

缓存与效果的极限拉扯:从MHA、MQA、GQA到MLA

前几天,幻方发布的DeepSeek-V2引起了大家的热烈讨论。首先,最让人哗然的是1块钱100万token的价格,普遍比现有的各种竞品API便宜了两个数量级,以至于有人调侃“这个价格哪怕它输出乱码,我也会认为这个乱码是一种艺术”;其次,从模型的技术报告看,如此便宜的价格背后的关键技术之一是它新提出的MLA(Multi-head Latent Attention),这是对GQA的改进,据说能比GQA更省更好,也引起了读者的广泛关注。

接下来,本文将跟大家一起梳理一下从MHA、MQA、GQA到MLA的演变历程,并着重介绍一下MLA的设计思路。

MHA

MHA(Multi-Head Attention),也就是多头注意力,是开山之作《Attention is all you need》所提出的一种Attention形式,可以说它是当前主流LLM的基础工作。在数学上,多头注意力MHA等价于多个独立的单头注意力的拼接,假设输入的(行)向量序列为$\boldsymbol{x}_1,\boldsymbol{x}_2,\cdots,\boldsymbol{x}_l$,其中$\boldsymbol{x}_i\in\mathbb{R}^d$,那么MHA可以形式地记为

点击阅读全文...

19 Jul

三次方程的根式求解(通俗版本)

(说明:由于本文章含有较多的根号,推荐使用IE直接阅读,或者使用IE+MathPlayer。火狐浏览器对根号的显示是相当的差。)

大家知道,1到4次的代数方程都有求根公式(尽管未必是最简单的方法),对于1次和2次方程的求根,大家可能滚瓜烂熟了。但是你了解三次方程的解法吗?
$$ax^3+bx^2+cx+d=0\,(a\neq0)$$

网上有不少关于这方面的资料,但是却有着两个缺点:一是缺乏描述专业数学公式的相关程序(很多网站都是这样);二是语言过于专业,不能大众化(如维基百科)。

点击阅读全文...

30 Jul

IMO42-1,我也会做几何题

七月再次“农忙”,农村里要插秧了,播下种苗,等待再次收获的季节^_^

我一直觉得我的数学能力偏向于分析计算而不擅长于几何,纵使遇到几何问题,也是满脑子的解析几何做法,没有纯几何的美。而这几天为了加强数学竞赛题目的能力,我一直在看IMO的题目,并且企图独立做出一些题目,但都无果。我比较感兴趣的是不等式,我感觉一道简单的式子,不用太多的文字就可以讲清楚的题目非不等式莫属,但是IMO的不等式题实在高深,我还没有能够独立做出一道来(参考答案可以看懂,只是想不到思路),或许是我在努力追求统一的方法而不肯研究那些特定的技巧的原因吧。不料今天看了一下2001年IMO的几何题目,发现我可能将它做出来,于是研究了一会,最终很幸运地做了出来。虽然不是最简单的方法,但也与大家分享一下。

IMO-42-1

IMO-42-1

如图,O是锐角三角形ABC的外心,AP是三角形的垂线段,∠B-∠C不小于30°。证明∠BAC+∠BOP < 90°

点击阅读全文...

13 Aug

对称多项式不等式的“物理证明”

本文将再次谈到对称这个话题,不过这一次的对象不是“等式”,而是“不等式”。

在数学研究中,我们经常会遇到各种各样的函数式子,其中有相当一部分是“对称”的。什么是对称的函数呢?对称有很多种说法,但是针对于多元对称式,我们的定义为满足$f(x_1,x_2,...,x_n)=f(y_1,y_2,...,y_n)$的函数,其中$(y_1,y_2,...,y_n)$是$(x_1,x_2,...,x_n)$的任意一个排列。通俗来讲,就是将式子中任意两个未知数交换位置,得到的式子还是和原来的式子一样。例如$\sin x+\sin y$,把$x,y$交换位置后得到$\sin y+\sin x$,还是和原来的一样;再如$xy+yz+zx$,将y,z互换后可以得到$xz+zy+yx$,结果还是和原式一样;等等。有些对称的函数是一个n次的多项式,那么就叫它为n次对称多项式,上边的例子$xz+zy+yx$就是一个三元二次对称多项式。

点击阅读全文...

2 Oct

[欧拉数学]素数有无穷多个的两个证明

素数是数的基本单元,就如同高楼大厦中的砖块一样。显然,素数有无穷多个是数论研究价值的前提。不然,数的研究就局限在有限个素数之内,那么很多数字就会失去了它们的魅力。就好比只有有限块砖头,就不能创建出建筑的奇迹一般。下面介绍两个关于素数无穷的经典证明,其中一个是欧几里得的证明,这是最原始、最简单的证法,相信很多读者已经学习过了,在此还是要提一下;另外一个是我在《怎样解题》中看到的,原作者是欧拉,也是一个非常美妙的证明。当然,本文强调的思想,论证过程可能会有一些不严谨的地方,请读者完善^_^

一、欧几里得证明

这个证明思想非常简单:若干个素数的积加上1后会产生新的素数因子。要是素数只有n个,那么我们就把它们相乘,然后加上1,得到的将会是什么呢?如果是一个素数,那么将会与素数只有n个矛盾;如果是一个合数,它除以原来的n个素数都不是整数,那么它就会拥有新的素数因子了,这还是和只有n个素数矛盾。不论哪种情况,只有素数有限,就会得出矛盾,于是素数必然是无限的。

点击阅读全文...