8 Aug

生成扩散模型漫谈(六):一般框架之ODE篇

上一篇文章《生成扩散模型漫谈(五):一般框架之SDE篇》中,我们对宋飏博士的论文《Score-Based Generative Modeling through Stochastic Differential Equations》做了基本的介绍和推导。然而,顾名思义,上一篇文章主要涉及的是原论文中SDE相关的部分,而遗留了被称为“概率流ODE(Probability flow ODE)”的部分内容,所以本文对此做个补充分享。

事实上,遗留的这部分内容在原论文的正文中只占了一小节的篇幅,但我们需要新开一篇文章来介绍它,因为笔者想了很久后发现,该结果的推导还是没办法绕开Fokker-Planck方程,所以我们需要一定的篇幅来介绍Fokker-Planck方程,然后才能请主角ODE登场。

再次反思

我们来大致总结一下上一篇文章的内容:首先,我们通过SDE来定义了一个前向过程(“拆楼”):
\begin{equation}d\boldsymbol{x} = \boldsymbol{f}_t(\boldsymbol{x}) dt + g_t d\boldsymbol{w}\label{eq:sde-forward}\end{equation}

点击阅读全文...

28 Jun

生成扩散模型漫谈(二十):从ReFlow到WGAN-GP

上一篇文章《生成扩散模型漫谈(十九):作为扩散ODE的GAN》中,我们介绍了如何将GAN理解为在另一个时间维度上的扩散ODE,简而言之,GAN实际上就是将扩散模型中样本的运动转化为生成器参数的运动!然而,该文章的推导过程依赖于Wasserstein梯度流等相对复杂和独立的内容,没法很好地跟扩散系列前面的文章连接起来,技术上显得有些“断层”。

在笔者看来,《生成扩散模型漫谈(十七):构建ODE的一般步骤(下)》所介绍的ReFlow是理解扩散ODE的最直观方案,既然可以从扩散ODE的角度理解GAN,那么必定存在一个从ReFlow理解GAN的角度。经过一番尝试,笔者成功从ReFlow推出了类似WGAN-GP的结果。

理论回顾

之所以说“ReFlow是理解扩散ODE的最直观方案”,是因为它本身非常灵活,以及非常贴近实验代码——它能够通过ODE建立任意噪声分布到目标数据分布的映射,而且训练目标非常直观,不需要什么“弯弯绕绕”就可以直接跟实验代码对应起来。

点击阅读全文...

14 Aug

Transformer升级之路:13、逆用Leaky ReRoPE

上周在《Transformer升级之路:12、无限外推的ReRoPE?》中,笔者提出了ReRoPE和Leaky ReRoPE,诸多实验结果表明,它们能够在几乎不损失训练效果的情况下免微调地扩展LLM的Context长度,并且实现了“longer context, lower loss”的理想特性,此外跟NTK-aware Scaled RoPE不同的是,其中ReRoPE似乎还有表现出了无限的Context处理能力。

总之,ReRoPE看起来相当让人满意,但美中不足的是会增加推理成本,具体表现为第一步推理需要算两次Attention,以及后续每步推理需要重新计算位置编码。本文试图通过在训练中逆用Leaky ReRoPE的方法来解决这个问题。

回顾

让我们不厌其烦地重温一下:RoPE形式上是一种绝对位置编码,但实际达到的效果是相对位置编码,对应的相对位置矩阵是:
\begin{equation}\begin{pmatrix}0 & \\
1 & 0 & \\
2 & 1 & 0 &\\
3 & 2 & 1 & 0 & \\
\ddots & 3 & 2 & 1 & 0 & \\
\ddots & \ddots & 3 & 2 & 1 & 0 & \\
\ddots & \ddots & \ddots & \ddots & \ddots & \ddots & \ddots \\
\tiny{L - 2} & \ddots & \ddots & \ddots & \ddots & \ddots & \ddots & \ddots \\
\tiny{L - 1} & \tiny{L - 2} & \ddots & \ddots & \ddots & 3 & 2 & 1 & 0 & \\
\end{pmatrix}\label{eq:rope}\end{equation}

点击阅读全文...

29 Nov

我在Performer中发现了Transformer-VQ的踪迹

前些天我们在《VQ一下Key,Transformer的复杂度就变成线性了》介绍了“Transformer-VQ”,这是通过将Key序列做VQ(Vector Quantize)变换来实现Attention复杂度线性化的方案。诚然,Transformer-VQ提供了标准Attention到线性Attentino的一个非常漂亮的过渡,给人一种“大道至简”的美感,但熟悉VQ的读者应该能感觉到,当编码表大小或者模型参数量进一步增加时,VQ很可能会成为效果提升的瓶颈,因为它通过STE(Straight-Through Estimator)估计的梯度大概率是次优的(FSQ的实验结果也算是提供了一些佐证)。此外,Transformer-VQ为了使训练效率也线性化所做的梯度截断,也可能成为将来的效果瓶颈之一。

为此,笔者花了一些时间思考可以替代掉VQ的线性化思路。从Transformer-VQ的$\exp\left(QC^{\top}\right)$形式中,笔者联想到了Performer,继而“顺藤摸瓜”地发现原来Performer可以视为Soft版的Transformer-VQ。进一步地,笔者尝试类比Performer的推导方法来重新导出Transformer-VQ,为其后的优化提供一些参考结果。

点击阅读全文...

8 Jul

百科翻译:盐酸的历史(氯化氢,HCl)

氯化氢(HCl),一种无色气体,当它溶于水后变成为了我们常用的盐酸(hydrochloric acid),学名“氢氯酸”。这是一种具有高强度腐蚀性的无机酸,在工业上具有重要的用途。我们胃中的酸也是胃酸。气态的HCl被称为海洋酸性气体。

盐酸是一种一元酸,在水中会发生以下反应:
$$HCl + H_2O=H_3O^+ + Cl^-$$

因此,盐酸可以用来制作其他氯化物(如NaCl)。盐酸是一种强酸,它在水中基本上能够完全解离。

点击阅读全文...

8 Jul

古老的火山爆发造成地球冰期?

翻译语录:总的来说,这篇文章的翻译还是比较顺利,不懂的词查一下软件就OK,所以这次要说一下翻译以外的问题:众所周知,二氧化碳会造成温室效应,而二氧化硫能够抑制温室效应。不过糟糕的是,几乎所有大气环境治理手段都将把其它污染性气体转变成二氧化碳为目标,包括处理二氧化硫。这就造成了约治理环境,温室效应越强的问题。这时我们的环境学家也应考虑下两者的均衡问题了

图片说明:俄罗斯Kamtchatka火山爆发

图片说明:俄罗斯Kamtchatka火山爆发

点击阅读全文...

19 Jul

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

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

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

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

点击阅读全文...

1 Aug

新的一个月:8月了

七月流逝,八月悄来。又迎来新的一个月,今天是第一天,也是建军节。 回味过去的一个月,我学会了很多,也体验了很多,自己似乎更加成熟了。 一切都会过去,一切都会流逝,惟有不变的,是人的情感。

——仅以此记

点击阅读全文...