24 Aug

Transformer升级之路:14、当HWFA遇见ReRoPE

在上一篇文章《Transformer升级之路:13、逆用Leaky ReRoPE》中,笔者尝试通过在训练阶段逆用Leaky ReRoPE的思路,使得推理阶段的位置编码变为正常的RoPE,从而在达到长度外推的同时解决ReRoPE推理变慢的缺点。遗憾的是,从实验结果来看,“Leaky ReRoPE → RoPE”的效果并不如“RoPE → ReRoPE/Leaky ReRoPE”,因此这个问题尚未完全解决。

此时,笔者想到此前在《Transformer升级之路:9、一种全局长度外推的新思路》提出的HWFA本身就具有一定的长度外推能力,如果跟ReRoPE“强强联合”,是否会有更好的效果?更关键是,HWFA的加入可以大幅度降低推理成本,从而弥补ReRoPE的不足!

温故

首先,“例行公事”地回顾一下HWFA。HWFA(Hybird Window-Full Attention)并非一个具体的模型,而是一种Attention的组合方式,能够在基本保持效果不变的前提下,增强Attention模型的长度外推能力,同时还能降低训练和推理成本。

点击阅读全文...

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,为其后的优化提供一些参考结果。

点击阅读全文...

13 Oct

EMO:基于最优传输思想设计的分类损失函数

众所周知,分类任务的标准损失是交叉熵(Cross Entropy,等价于最大似然MLE,即Maximum Likelihood Estimation),它有着简单高效的特点,但在某些场景下也暴露出一些问题,如偏离评价指标、过度自信等,相应的改进工作也有很多,此前我们也介绍过一些,比如《再谈类别不平衡问题:调节权重与魔改Loss的对比联系》《如何训练你的准确率?》《缓解交叉熵过度自信的一个简明方案》等。由于LLM的训练也可以理解为逐token的分类任务,默认损失也是交叉熵,因此这些改进工作在LLM流行的今天依然有一定的价值。

在这篇文章中,我们介绍一篇名为《EMO: Earth Mover Distance Optimization for Auto-Regressive Language Modeling》的工作,它基于最优传输思想提出了新的改进损失函数EMO,声称能大幅提高LLM的微调效果。其中细节如何?让我们一探究竟。

点击阅读全文...

31 Oct

简单得令人尴尬的FSQ:“四舍五入”超越了VQ-VAE

正如“XXX is all you need”一样,有不少论文都以“简单得令人尴尬”命名(An Embarrassingly Simple XXX),但在笔者看来,这些论文大多数都是噱头多于实力。不过,笔者最近阅读到的一篇论文,真的让人不由得发出“简单得令人尴尬”的感叹~

论文的标题是《Finite Scalar Quantization: VQ-VAE Made Simple》,顾名思义,这是一篇旨在用FSQ(Finite Scalar Quantization)简化VQ-VAE的工作。随着生成模型、多模态LLM的逐渐流行,VQ-VAE及其后续工作也作为“图像的Tokenizer”而“水涨船高”。然而,VQ-VAE的训练本身也存在一些问题,而FSQ这篇论文则声称通过更简单的“四舍五入”就可以达到同样的目的,并且有着效果更好、收敛更快、训练更稳的优点。

FSQ真有这么神奇?接下来我们一起学习一下。

VQ

首先,我们来了解一下“VQ”。VQ全称是“Vector Quantize”,可以翻译为“向量量子化”或者“向量量化”,是指将无限、连续的编码向量映射为有限、离散的整数数字的一种技术。如果我们将VQ应用在自编码器的中间层,那么可以在压缩输入大小的同时,让编码结果成为一个离散的整数序列。

点击阅读全文...

1 Jan

新年快乐!记录一下 Cool Papers 的开发体验

上周在《写了个刷论文的辅助网站:Cool Papers》中,笔者分享了一个自己开发的刷论文网站Cool Papers,并得到了一些用户的认可。然而,“使用的人越多,暴露的问题就越多”,当用户量上来后,才感觉到之前写的代码是多么不严谨,于是过去一整周都在不停地修Bug之中,直到今天下午还发现了一个Bug在修。这篇文章简单总结一下笔者在开发和修Bug过程中的感想。

Cool Papers:https://papers.cool

技术

事实上,“papers.cool”这个域名已经注册了四年多,从这可以看出笔者其实很早以前就计划着做类似Cool Papers的网站,也做过一些雏形,但之所以这个网站在四年后才正式诞生,根本原因就只有一个:技术不行。

点击阅读全文...

31 Jan

幂等生成网络IGN:试图将判别和生成合二为一的GAN

前段时间,一个名为“幂等生成网络(Idempotent Generative Network,IGN)”的生成模型引起了一定的关注。它自称是一种独立于已有的VAE、GAN、flow、Diffusion之外的新型生成模型,并且具有单步采样的特点。也许是大家苦于当前主流的扩散模型的多步采样生成过程久矣,因此任何声称可以实现单步采样的“风吹草动”都很容易吸引人们的关注。此外,IGN名称中的“幂等”一词也增加了它的神秘感,进一步扩大了人们的期待,也成功引起了笔者的兴趣,只不过之前一直有别的事情要忙,所以没来得及认真阅读模型细节。

最近闲了一点,想起来还有个IGN没读,于是重新把论文翻了出来,但阅读之后却颇感困惑:这哪里是个新模型,不就是个GAN的变种吗?跟常规GAN不同的是,它将生成器和判别器合二为一了。那这个“合二为一”是不是有什么特别的好处,比如训练更稳定?个人又感觉没有。下面将分享笔者从GAN角度理解IGN的过程和疑问。

生成对抗

关于GAN(Generative Adversarial Network,生成对抗网络),笔者前几年系统地学习过一段时间(查看GAN标签可以查看到相关文章),但近几年没有持续地关注了,因此这里先对GAN做个简单的回顾,也方便后续章节中我们对比GAN与IGN之间的异同。

点击阅读全文...

2 Feb

更便捷的Cool Papers打开方式:Chrome重定向扩展

一些铺垫

自Cool Papers上线以来,很多用户就建议笔者加入搜索功能,后面也确实在前端用JS简单做了个页面内搜索,解决了部分用户的需求,但仍有读者希望引入更完整的全局搜索。诚然,笔者理解这个需求确实是存在,但Cool Papers的数据是逐天累积的,目前才上线一个月,论文数并不多,建立一个大而全的搜索引擎意义不大,其次做搜索也不是笔者的强项,以及并没有很好的利用LLM优化搜索的思路,等等。总而言之,暂时没有条件实现一个全面而又有特色的搜索,所以不如不做(也欢迎大家在评论区集思广益)。

后来,经过和同事讨论,想出了一个“借花献佛”的思路——写一个Chrome的重定向扩展,可以从任意页面重定向到Cool Papers。这样我们可以用任意方式(如Google搜索或者直接Arxiv官方搜索)找到Arxiv上的论文,然后右击一下就转到Cool Papers了。前两周这个扩展已经在Chrome应用商店上线,上周服务器配合做了一些调整,如今大家可以尝试使用了。

扩展地址:Cool Papers Redirector

点击阅读全文...

27 Feb

配置不同的学习率,LoRA还能再涨一点?

LoRA(Low-Rank Adaptation)是当前LLM的参数高效微调手段之一,此前我们在《梯度视角下的LoRA:简介、分析、猜测及推广》也有过简单讨论。这篇文章我们来学习LoRA的一个新结论:

给LoRA的两个矩阵分配不同的学习率,LoRA的效果还能进一步提升。

该结论出自最近的论文《LoRA+: Efficient Low Rank Adaptation of Large Models》(下称“LoRA+”)。咋看之下,该结论似乎没有什么特别的,因为配置不同的学习率相当于引入了新的超参数,通常来说只要引入并精调超参数都会有提升。“LoRA+”的特别之处在于,它从理论角度肯定了这个必要性,并且断定最优解必然是右矩阵的学习率大于左矩阵的学习率。简而言之,“LoRA+”称得上是理论指导训练并且在实践中确实有效的经典例子,值得仔细学习一番。

结论简析

假设预训练参数为$W_0 \in \mathbb{R}^{n\times m}$,如果使用全量参数微调,那么增量也是一个$n\times m$矩阵。为了降低参数量,LoRA将更新量约束为低秩矩阵,即设$W=W_0 + AB$,其中$A\in\mathbb{R}^{n\times r},B\in\mathbb{R}^{r\times m}$以及有$r\ll \min(n,m)$,用新的$W$替换模型原有参数,然后固定$W_0$不变,训练的时候只更新$A,B$,如下图所示:
$$\style{display: inline-block; width: 24ex; padding: 10ex 0; border: 1px solid #6C8EBF; background-color: #DAE8FC}{W_0\in\mathbb{R}^{n\times m}} \quad + \quad \style{display: inline-block; width: 8ex; padding: 10ex 0; border: 1px solid #D79B00; background-color: #FFE6CC}{A\in\mathbb{R}^{n\times r}}\quad\times\quad \style{display: inline-block; width: 24ex; padding: 3ex 0; border: 1px solid #D79B00; background-color: #FFE6CC}{B\in\mathbb{R}^{r\times m}}$$

点击阅读全文...