1 Sep

Decoder-only的LLM为什么需要位置编码?

众所周知,目前主流的LLM,都是基于Causal Attention的Decoder-only模型(对此我们在《为什么现在的LLM都是Decoder-only的架构?》也有过相关讨论),而对于Causal Attention,已经有不少工作表明它不需要额外的位置编码(简称NoPE)就可以取得非平凡的结果。然而,事实是主流的Decoder-only LLM都还是加上了额外的位置编码,比如RoPE、ALIBI等。

那么问题就来了:明明说了不加位置编码也可以,为什么主流的LLM反而都加上了呢?不是说“多一事不如少一事”吗?这篇文章我们从三个角度给出笔者的看法:

1、位置编码对于Attention的作用是什么?

2、NoPE的Causal Attention是怎么实现位置编码的?

3、NoPE实现的位置编码有什么不足?

点击阅读全文...

29 Apr

从对称角度看代数方程

大马国油双峰塔

大马国油双峰塔

这些日子来,BoJone迷上了两个东西:最小作用量和对称。这两个“东西”在物理学中几乎占据着最重要的地位,前边已经说过,通过最小作用量原理能够构建起当代整个物理学的框架,体现着自然界的“经济头脑”;后者则是守恒的体现,也对应着自然界的“美感”。本文主要是从最简单的层面谈谈对称。

对称的东西很重要,很美。当然,这里所指的是数学上的对称。数学上有很多问题都可以列出对称的式子,而且由于其对称性,因此求解过程一般比不对称的式子简单不少。据说,当代最前沿的物理学框架都是用群论描述的(包括广义相对论),而群论正是用来研究对称的有力工具,可见,对称和对称的方法在实际中有着广泛的应用。(当然本文不讨论群论,关键是BoJone也不懂群论...^_^)

我们先来看二次方程,根据韦达定理,二次方程都可以表达成下面的形式:
$$\begin{aligned}x_1+x_2=a \\ x_1 x_2=b\end{aligned}$$

这是一个多对称的形式!这里的对称体现在将$x_1,x_2$互相替换后方程形式依然不变。如果我们设$x_1=y_1+y_2,x_2=y_1-y_2$,就可以变成
$$2y_1=a,y_1^2-y_2^2=b$$

这样很快就求出$y_1,y_2$了,继而能够求出方程的两个根。

点击阅读全文...

30 Jan

【分享】千万级百度知道语料

发布

2018年01月30日

数目

共1千万条

格式

[
  {
    "url": "http://zhidao.baidu.com/question/565618371557484884.html",
    "question": "学文员有哪些专科学校",
    "tags": [
      "学校",
      "专科",
      "院校信息"
    ]
  },
  {
    "url": "http://zhidao.baidu.com/question/2079794100345438428.html",
    "question": "网赌和澳门赌有区别吗",
    "tags": [
      "网络",
      "澳门",
      "赌博"
    ]
  }
]

点击阅读全文...

26 Aug

【NASA每日一图】经典的猎户座星云

图片说明:猎户座的M42,版权: Kerry-Ann Lecky Hepburn,气象&天空摄影家

图片说明:猎户座的M42,版权: Kerry-Ann Lecky Hepburn,气象&天空摄影家

点击阅读全文...

22 Nov

测试一个强悍的功能——ScienceWord

本站准备整合ScienceWord,其功能有

在线实现方便快捷的公式、文字混合编排
在线快速绘制数学曲线
逻辑图形动态关联技术
强大的在线绘图功能
在线编辑有机化学高分子式

点击阅读全文...

27 Aug

与向量的渊源极深的四元数

当我们在使用向量进行几何、物理研究的时候,是否曾经想到:向量竟然起源于“数”?

当向量还没有发展起来的时候(虽然“有方向有大小的量”很早就被人们认识),复数已经得到了认可并且有了初步应用。当我们把复数跟向量联系起来时,我们也许会认为,因为复平面表示的复数运算与向量有着相似之处,才把复数跟几何联系起来。然而事实却相反,向量是从对复数乃至一种称为“四元数”的东西的研究中逐渐分离出来的。换句话说,历史中出现过“四元数”与向量分别研究几何的阶段,麦克斯韦(Maxwell) 将四元 数的数量部分和矢量部分分开,作为 实 体处理,作了大量的矢量分析。三维矢量分析的建立,及同四元数的正式分裂是18世纪80年代由Gibbs和Heaviside独立完成的。矢量代数被推广到矢量函数和矢量微积分,由此开始了四元数和矢量分析的争论,最终矢量分析占了上风。因而“四元数”渐渐离开了教科书。不过,“四元数”的一些特殊而巧妙的应用,仍然使我们不至于忘记它。

点击阅读全文...

17 Aug

从费马大定理谈起(四):唯一分解整环

在小学的时候,数学老师就教我们除法运算:

被除数 = 除数 × 商 + 余数

其中,余数要小于除数。不过,我们也许未曾想到过,这一运算的成立,几乎是自然数$\mathbb{N}$所有算术(数论)运算性质成立的基础!在代数中,上面的运算等式称为带余除法(division algorithm)。如果在一个整环中成立带余除法,那么该整环几乎就拥有了所有理想的性质,比如唯一分解性,也就是我们说的算术基本定理。这样的一个整环,被称为唯一分解整环(Unique factorization domain)。

欧几里得整环

Euklid-von-Alexandria_1

Euklid-von-Alexandria_1

唯一分解定理说的是在一个整环之中,所有的元素都可以分解为该整环的某些“素元素”之积,并且在不考虑元素相乘的顺序和相差单位数的意义之下,分解形式是唯一的。我们通常说的自然数就成立唯一分解定理,比如$60=2^2\times 3\times 5$,这种分解是唯一的,这看起来相当显然,但实际上唯一分解定理相当不显然。首先,并不是所有的整数环都成立唯一分解定理的,我们考虑所有偶数组成的环$2\mathbb{Z}$,要注意,在$2\mathbb{Z}$中,2、6、10、30都是素数,因为它们无法分解成两个偶数的乘积了,但是$60=6\times 10=2\times 30$,存在两种不同的分解,因此在这样的数环中,唯一分解定理就不成立了。

点击阅读全文...

19 Feb

Python的多进程编程技巧

过程

在Python中,如果要多进程运算,一般是通过multiprocessing来实现的,常用的是multiprocessing中的进程池,比如:

from multiprocessing import Pool
import time

def f(x):
    time.sleep(1)
    print x+1
    return x+1

a = range(10)
pool = Pool(4)
b = pool.map(f, a)
pool.close()
pool.join()

print b

这样写简明清晰,确实方便,有趣的是,只需要将multiprocessing换成multiprocessing.dummy,就可以将程序从多进程改为多线程了。

点击阅读全文...