非常有才华的想法啊,用一棵树撑起整个特征空间。 从网络参数分配的角度讲,我感觉直观上存在这样一个问题:第 i 层网络负责的区域实际上会分散在特征空间的各处,它做的事是把负责的这一块空间再向下切分成 K 小块。也就是说每一层并不会去擅长某种类型的特征,而是专门做某一级的细分。给我一种缺乏“局部性”的感觉,好像这个专家分配并没有很优,会不会潜在地影响能力呢。 当然这是用线性的参数量去拟合指数的空间肯定会遇到的问题。默认的多层实现相当于按照树深度、也即特征空间中的位置层级来分配参数,属于一种人为、简洁有效的策略;而共享参数实现和 diffusion 类似,是把全部任务交给整个模型,让模型自己学习不同位置的策略(以 v-pred diffusion 为例,使用全部参数去完成在任意位置 x_t 上的 v_t(x_t)预测)。
@Simon95 DDN 和 VQ-VAE ( RVQ ) 明显不同。 相似之处: - 两者都把数据映射到离散的潜空间。 区别: - VQ-VAE 需要额外的先验模型(如 PixelCNN 或 transformer 先验)来建模码本的分布; DDN 自己就能构建层次离散分布,甚至可作为类似 VQ-VAE 系统的先验模型。 - DDN 的 K 个输出是随输入变化的特征; VQ-VAE 的码本是一组与输入无关、固定不变的独立参数( embedding )。 - VQ-VAE 输出二维 code index 网格 latent ; DDN 输出一维/树状结构的 latent 。 - VQ-VAE 需要 Straight-Through 梯度估计器。 - DDN 支持零样本条件生成。 因此,我认为它们挺互补的。(参见论文中的“Connections to VQ-VAE”部分。) --- 我对 VQ-VAE 不是很了解,在我看来 VQ-VAE codebook collapse 应该有很多方法能缓解,比如和 DDN 论文中 Split-and-Prune 类似的 reinitialization 的方案。(也在“Connections to VQ-VAE”部分。)