EMA对codebook进行更新
你好!请教几个问题: 1)论文中4.3部分中,首先使用cross-attention (CA)来进行模态信息交互,之后使用公式7进行codebook更新的。但看了下代码,好像是模态特征没有进行CA?见如下代码: `# video self.ema_count = self.decay * self.ema_count + (1 - self.decay) * torch.sum(v_encodings, dim=0) n = torch.sum(self.ema_count) self.ema_count = (self.ema_count + self.epsilon) / (n + M * self.epsilon) * n v_dw = torch.matmul(v_encodings.t(), v_flat) va_dw = torch.matmul(v_encodings.t(), a_flat) vt_dw = torch.matmul(v_encodings.t(), t_flat)
self.ema_weight = self.decay * self.ema_weight + 0.5*(1 - self.decay) * v_dw + 0.25*(1 - self.decay) * va_dw + 0.25*(1 - self.decay) * vt_dw
self.embedding = self.ema_weight / self.ema_count.unsqueeze(-1)`
考虑到CA是有weights的,且需要两个模态特征的交互,CA该放置在整个模型的什么位置?当下游任务仅有一个输入模态时的情况,若有CA,下游任务仅输入一个模态时,该如何对待CA?
2)对于codebook中n的设置有什么经验吗?同时,在我的数据集实验中,equal_num(不同模态对应同一码本的数量)的值较低,且两种模态对应的perplexity都不高,想要提高equal_num和perplexity的值,除了遍历不同的n,请问其它建议吗?
3)使用两种模态对应在codebook的quantized 特征(例如,a_quantized = audio_semantic + (a_quantized - audio_semantic).detach())进行下游分类任务时,使用两模态quantized 特征进行分类的性能和直接使用两模态semantic 特征进行分类的性能差不多,这种情况说明codebook已经更新的比较好了,还是需要再次提升?即理论上模型最好的状态是什么?
问题有些多,不一定合理,请多指教!
- 一开始是用了CA的,后面发现不用也没影响(不过可能是模型的尺寸比较小,所以不需要),代码开源为了简单起见丢掉了CA。
- perplexity我个人训练时没有很参考他,主要是看equal_num,而equal_num主要是用来可视化表征空间的,越高越好看,但不一定代表不同模态的分布对齐程度变高了;因为我在实验时发现equal_num变高下游效果不一定变好,因为如果不同模态量化到相近的code,没有完全相同,其实下游结果不会有明显区别,但是equal_num会明显变低;如果你想提升equal_num,可以调整MM-EMA这部分,对codebook的更新策略其实会更高程度影响equal_num。codebook中n的设置更多是与训练数据集的大小和语义丰富程度有关,数据量越多n相对需要越大。
- quantized特征与直接使用semnatic差不多说明codebook能比较好地代表semantic了,理论上最好状态我可能没法给出答案,这与你任务的需求有关,可能直接看下游任务的表现可以作为一个指标。 下面是2篇其他工作的讨论: Enhancing Multimodal Unified Representations for Cross Modal Generalization这篇工作讨论了音频,视频,文本三模态统一表征时怎么根据模态本身的差异调整训练对齐的策略。 Semantic Residual for Multimodal Unified Discrete Representation这篇工作讨论了表征空间的不同形式对于统一表征对齐程度的影响。