
无独有偶,近期发布在 arXiv 上的论文《Addressing Representation Collapse in Vector Quantized Models with One Linear Layer》[1] 提出了改善 VQ 的另一个技巧:给编码表加一个线性变换。这个技巧单纯改变了编码表的参数化方式,不改变 VQ 背后的理论框架,但实测效果非常优异,称得上是简单有效的经典案例。
基础
由于在《VQ-VAE的简明介绍:量子化自编码器》[2]、《简单得令人尴尬的FSQ:“四舍五入”超越了VQ-VAE》等文章中我们已经多次介绍了 VQ 和 VQ-VAE 了,所以这里不再娓娓道来,直接给出普通 AE 和 VQ-VAE 的数学形式:
▲ SimVQ 的实验效果
根据论文的描述,SimVQ 的代码就是在第一行 VQGAN 的代码上改的,改动就只有往 VQ 层插入了个线性变换,然后提升就非常显著了,不仅在相同编码表大小下达到了最优的重构质量,还能通过增加编码表大小进一步提高重构质量,这足以体现 SimVQ 的魅力——简单且有效。

可以看到:
2. 由于 的存在,不管编码i有没有被选中,它的更新都几乎不会为零;
3. 相当于是高利用率方向的投影,它使得每个编码都往高利用率方向走。
抛开 VQ 的背景,像 SimVQ 这种引入额外的参数但又在数学上等价,即不改变模型的理论拟合能力,只改变优化过程的动力学的做法,我们称为“过参数化(Overparameterization)”。
这是因为不少人认为,深度学习模型之所以“好训”,过参数化有不可忽视的作用,因此贸然去掉已经充分验证的模型的过参数化风险很大。这里的“好训”,主要是指梯度下降这种理论上容易陷入局部最优的方法居然经常可以找到一个实际表现很好的解,这本身就是一件很不可思议的事情。
还有《On the Optimization of Deep Networks: Implicit Acceleration by Overparameterization》[3] 等工作,表明过参数化隐式地加速了训练,作用类似于 SGD 中的动量。
最后,VQ 本质上可以理解为一种稀疏训练方案,所以 SimVQ 所带来的启发和改动,也许还能用于其他稀疏训练模型,比如 MoE(Mixture of Experts)。
本文介绍了 VQ(Vector Quantization)的另一个训练技巧——SimVQ——只在 VQ 的编码表多加一个线性变换,无需其他改动,就能达到加速收敛、提升编码利用率、降低重构损失等效果,相当简单有效。
(文:PaperWeekly)