梯度流:探索通向最小值之路
By 苏剑林 | 2023-06-16 | 30134位读者 | 引用在这篇文章中,我们将探讨一个被称为“梯度流(Gradient Flow)”的概念。简单来说,梯度流是将我们在用梯度下降法中寻找最小值的过程中的各个点连接起来,形成一条随(虚拟的)时间变化的轨迹,这条轨迹便被称作“梯度流”。在文章的后半部分,我们将重点讨论如何将梯度流的概念扩展到概率空间,从而形成“Wasserstein梯度流”,为我们理解连续性方程、Fokker-Planck方程等内容提供一个新的视角。
梯度下降
假设我们想搜索光滑函数$f(\boldsymbol{x})$的最小值,常见的方案是梯度下降(Gradient Descent),即按照如下格式进行迭代:
\begin{equation}\boldsymbol{x}_{t+1} = \boldsymbol{x}_t -\alpha \nabla_{\boldsymbol{x}_t}f(\boldsymbol{x}_t)\label{eq:gd-d}\end{equation}
如果$f(\boldsymbol{x})$关于$\boldsymbol{x}$是凸的,那么梯度下降通常能够找到最小值点;相反,则通常只能收敛到一个“驻点”——即梯度为0的点,比较理想的情况下能收敛到一个极小值(局部最小值)点。这里没有对极小值和最小值做严格区分,因为在深度学习中,即便是收敛到一个极小值点也是很难得的了。
“闭门造车”之多模态思路浅谈(三):位置编码
By 苏剑林 | 2024-09-06 | 31415位读者 | 引用在前面的文章中,我们曾表达过这样的观点:多模态LLM相比纯文本LLM的主要差异在于,前者甚至还没有形成一个公认为标准的方法论。这里的方法论,不仅包括之前讨论的生成和训练策略,还包括一些基础架构的设计,比如本文要谈的“多模态位置编码”。
对于这个主题,我们之前在《Transformer升级之路:17、多模态位置编码的简单思考》就已经讨论过一遍,并且提出了一个方案(RoPE-Tie)。然而,当时笔者对这个问题的思考仅处于起步阶段,存在细节考虑不周全、认识不够到位等问题,所以站在现在的角度回看,当时所提的方案与完美答案还有明显的距离。
因此,本文我们将自上而下地再次梳理这个问题,并且给出一个自认为更加理想的结果。
多模位置
多模态模型居然连位置编码都没有形成共识,这一点可能会让很多读者意外,但事实上确实如此。对于文本LLM,目前主流的位置编码是RoPE(RoPE就不展开介绍了,假设读者已经熟知),更准确来说是RoPE-1D,因为原始设计只适用于1D序列。后来我们推导了RoPE-2D,这可以用于图像等2D序列,按照RoPE-2D的思路我们可以平行地推广到RoPE-3D,用于视频等3D序列。
微积分学习(二):导数
By 苏剑林 | 2009-09-12 | 20041位读者 | 引用自从上次写了关于微积分中的极限学习后,就很长的时间没有与大家探讨微积分的学习了(估计有20多天了吧)。启事,我自己也是从今年的9月下旬才开始系统地学习微积分的,到现在也就一个月的时间吧。学习的内容有:集合、函数、极限、导数、微分、积分。不过都是一元微积分,多元的微积分正在紧张地进修中......
现在不妨和大家探讨一下关于微积分中的最基本内容——“导数”的学习。
其实,用最简单的说法,如果存在函数$f(x)$,那么它的导数(一阶导数)为
$$\lim_{\Delta x->0} f'(x)=\frac{f(x+\Delta x)-f(x)}{\Delta x}$$
《方程与宇宙》:活力积分和开普勒方程(二)
By 苏剑林 | 2010-03-27 | 56965位读者 | 引用在上一回的讨论中,我们已经解决了大部分的问题,并且表达了找到r或者$\theta$关于时间t的函数的希望。在最后的内容中,我们做了以下工作:
由(7)得到$\dot{\theta}=h/r^2$,代入(6)得到:
$$\ddot{r} -h^2/r^3=-\frac{\mu}{r^2}\tag{10}$$这是一个二阶微分方程,它的解很容易找出,但是这个积分太复杂:
$$\dot{r}\frac{d\dot{r}}{dr}=h^2/r^3-\frac{\mu}{r^2}$$
$\dot{r}d\dot{r}=(h^2/r^3-\frac{\mu}{r^2})dr$,两端积分
$$\dot{r}^2={2\mu}/r-h^2/r^2+K_1\tag{11}$$$$\Rightarrow {dt}/{dr}=\frac{r}{\sqrt{K_1 r^2+2\mu r-h^2}}$$
$t=\int \frac{r}{\sqrt{K_1 r^2+2\mu r-h^2}}dr$
《向量》系列——5.平面向量微分方程与复数
By 苏剑林 | 2010-10-03 | 20373位读者 | 引用《方程与宇宙》:三体问题和它的初积分(六)
By 苏剑林 | 2011-01-20 | 61955位读者 | 引用The Three Body Problem and its Classical Integration
很多天文爱好者都已经接触到了“二体问题”(我们在高中学习到的“开普勒三定律”就是内容之一),由于在太阳系中行星质量相对较小而且距离相对较远,应用“二体问题”的解对天体进行计算、预报等能够满足一定的近似需求。不过,如果需要更高精度的计算,就不能把其他行星的引力给忽略掉了,于是就产生了所谓N体问题(N-Body Problem),即N个质点尽在它们各自引力的相互作用下的运动规律问题。最简单的二体已经被彻底解决,而三体或更多体的问题则与二体大相径庭,因为庞加莱证明了,三体问题不能严格求解,而且这是一个混沌系统,任何微小的扰动都会造成不可预期的效果。
根据牛顿力学,选择惯性参考系,设三个质点分别为$M_1,M_2,M_3$,向径分别为$\vec{r_1},\vec{r_2},\vec{r_3}$,可以列出运动方程(以下的导数都默认是对时间t求导)
昨天在研究一个最优化问题时,遇到了一个这样的积分:
$$\int \frac{1}{\cos^3 \theta} d\theta$$
然后就顺便研究了一下这种类型的函数的积分。一般来讲,这类积分可以写成$\int cos^n \theta d\theta$或$\int sin^n \theta d\theta$,其中n是一个整数。
首先我们来解决n=1的情况,我们很容易就有$\int cos\theta d\theta=sin\theta +C$或$\int sin\theta d\theta=-cos\theta +C$,这是一个基本的结果。
如果n是大于1的正整数,那么可以用递推的方法来搞定:
最近评论