6 Sep

“闭门造车”之多模态思路浅谈(三):位置编码

在前面的文章中,我们曾表达过这样的观点:多模态LLM相比纯文本LLM的主要差异在于,前者甚至还没有形成一个公认为标准的方法论。这里的方法论,不仅包括之前讨论的生成和训练策略,还包括一些基础架构的设计,比如本文要谈的“多模态位置编码”。

对于这个主题,我们之前在《Transformer升级之路:17、多模态位置编码的简单思考》就已经讨论过一遍,并且提出了一个方案(RoPE-Tie)。然而,当时笔者对这个问题的思考仅处于起步阶段,存在细节考虑不周全、认识不够到位等问题,所以站在现在的角度回看,当时所提的方案与完美答案还有明显的距离。

因此,本文我们将自上而下地再次梳理这个问题,并且给出一个自认为更加理想的结果。

多模位置

多模态模型居然连位置编码都没有形成共识,这一点可能会让很多读者意外,但事实上确实如此。对于文本LLM,目前主流的位置编码是RoPE(RoPE就不展开介绍了,假设读者已经熟知),更准确来说是RoPE-1D,因为原始设计只适用于1D序列。后来我们推导了RoPE-2D,这可以用于图像等2D序列,按照RoPE-2D的思路我们可以平行地推广到RoPE-3D,用于视频等3D序列。

点击阅读全文...

26 Oct

浅谈神经网络中激活函数的设计

激活函数是神经网络中非线性的来源,因为如果去掉这些函数,那么整个网络就只剩下线性运算,线性运算的复合还是线性运算的,最终的效果只相当于单层的线性模型。

那么,常见的激活函数有哪些呢?或者说,激活函数的选择有哪些指导原则呢?是不是任意的非线性函数都可以做激活函数呢?

这里探究的激活函数是中间层的激活函数,而不是输出的激活函数。最后的输出一般会有特定的激活函数,不能随意改变,比如二分类一般用sigmoid函数激活,多分类一般用softmax激活,等等;相比之下,中间层的激活函数选择余地更大一些。

浮点误差都行!

理论上来说,只要是非线性函数,都有做激活函数的可能性,一个很有说服力的例子是,最近OpenAI成功地利用了浮点误差来做激活函数,其中的细节,请阅读OpenAI的博客:
https://blog.openai.com/nonlinear-computation-in-linear-networks/

或者阅读机器之心的介绍:
https://mp.weixin.qq.com/s/PBRzS4Ol_Zst35XKrEpxdw

点击阅读全文...

3 Oct

《向量》系列——5.平面向量微分方程与复数

首先我们考虑一个复微分方程
$$\dot{z}=f(z,t)\tag{1}$$如果令$z=x+yi,f(z,t)=f(x+yi,t)=g(x,y,t)+i*h(x,y,t)$,则方程对应于
$$\begin{aligned}\dot{x}=g(x,y,t) \\ \dot{y}=h(x,y,t)\end{aligned}$$
这说明,二元微分方程在一定程度上等价于复微分方程。

点击阅读全文...

6 Nov

这个星期对微分方程的认识

这个星期研究了两道微分方程问题:“导弹跟踪”以及“太阳炉”问题。从中我加深了对微分方程的理解,也熟悉了微分方程的相关运算。仅此记录,权当抛砖引玉。

一、微分方程的本质

很多读者都知道,自从牛顿和莱布尼兹发明微积分之后,微积分就迅速地渗透到了几乎所有的学科,后来发展出许多出色的分支,如变分、微分方程等。众所周知,微分方程是解决很多重要问题的工具。不知道各位读者对微分及微分方程的认识如何?其实对于常微分方程而言,它的本质和我们已经学习过的代数方程一样,只不过相互之间的对应运算关系除了常规的加减乘除幂等之外,还多了两个相互关系:微分和积分。例如对于一阶微分方程$\dot{y}=f(x,y)$,也许大家都认为它是一个二元方程,其实不然,这是一个“四个未知数、三道方程”所组成的方程组,我们可以将它写成

$$dy=f(x,y)dx,y=\int dy,x=\int dx$$

点击阅读全文...

10 Jun

费曼积分法——积分符号内取微分(1)

帅气的天才科学家费曼

帅气的天才科学家费曼

似乎有好久都没有写文章感觉,高考结束了,继续研究。先总结一下考前的一些结果。

这个文章讲的是一个叫“积分符号内取微分”东西,这是一个很有趣而且有用的求定积分的方法。在这里我又擅自把它叫做“费曼积分法”,因为我是从费曼的自传《别闹了,费曼先生》中看到这种方法的。当然,费曼不是这个方法的首创者,他仅仅是是喜欢、熟练这种方法,并将它记载在了自传中。具体情况是怎样的呢?我先不多说,请读者直接看《别闹了,费曼先生》中的情节。

点击阅读全文...

12 Jun

费曼积分法——积分符号内取微分(2)

上一篇文章我对“费曼积分法”做了一个简单的介绍,并通过举例来初步展示了它的操作步骤。但是,要了解一个方法,除了知道它能够干什么之外,还必须了解它的原理和方法,这样我们才能够更好地掌握它。因此,我们需要建立“积分符号内取微分”的一般理论,为进一步的应用奠基。

一般原理

我们记
$$G(a)=\int_{m(a)}^{n(a)} f(x,a)dx$$

在这里,f(x,a)是带有参数a的关于x的函数,而积分区间是关于参数a的两个函数,这样的积分也叫变限积分,可以理解为是普通定积分的推广。我们记F(x,a)为f(x,a)的原函数,也就是说$\frac{\partial F(x,a)}{\partial x}=f(x,a)$,那么按照微积分基本定理,我们就有:
$$G(a)=F(n(a),a)-F(m(a),a)$$

点击阅读全文...

2 Aug

复分析学习1:揭示微分与积分的联系

笔者这段时间对复数尤其感兴趣,当然,严格来讲应该是复变函数内容,其中一个原因是通过它,我们可以把一些看似毫不相关的内容联系了起来,体现了数学的简洁美和统一美。我相当有兴趣的其中一个内容是实分析中的泰勒级数傅里叶级数。这两者都是关于某个函数的级数展开式,其中泰勒级数是用于一般函数展开的,其各项系数通过求n阶导数得到;傅里叶级数的对象是周期函数,其各项系数是通过定积分求得的。在实数世界里,两者毫不相关,但是,复分析却告诉我们:它们只是同一个东西!只是将其在不同的角度“投影”到实数世界里,就产生了不同的“物像”,以至于我们认为它们是不同东西而已。

我们直接来看一个变魔术般的运算:
我们知道,在实数世界里头,我们有
$ln(1+x)=x-\frac{x^2}{2}+\frac{x^3}{3}-\frac{x^4}{4}+...$,其中$|x| < 1$

点击阅读全文...

30 Nov

算子与线性常微分方程(下)

不可交换

很自然会想到把这种方法延伸到变系数微分方程的求解,也许有读者回去自己摆弄了一下却总得不到合适的解而感到困惑。在这里群的非Abel性就体现出来了,首先用一个例子来说明一下,我们考虑算子的复合
$$(D-x)(D+x)=D^2-x^2+(Dx-xD)$$

我们要谨慎使用交换律,我们记$[P,Q]=PQ-QP$

其中P和Q是两个算子,此即量子力学中的“对易式”,用来衡量算子P和算子Q的可交换程度,当然,它本身也是一个算子。我们先来求出$[D,x]$给出了什么(要是它是0的话,那就表明运算可以交换了)。究竟它等于什么呢?直接看是看不出的,我们把它作用于一个函数:
$$[D,x]y=(Dx-xD)y=D(xy)-xDy=yDx+xDy-xDy=y$$

由于“近水楼台先得月”,所以$Dxy$表示x先作用于y,然后D再作用于(xy);而$xDy$表示D先作用于y,然后x再作用于Dy。最终我们得到了

点击阅读全文...