Slide 1

Slide 1 text

VECTOR QUANTIZED CONTRASTIVE PREDICTIVE CODING FOR TEMPLATE- BASED MUSIC GENERATION Presented by Yixiao Zhang on Aug 7, 2020

Slide 2

Slide 2 text

CONTRASTIVE LEARNING 对比学习 • 是Self-Supervised Learning的代表 • 自监督学习 • 是监督学习的一个特例,其中训练数据集不是由人手动标记的 • 通过设计学习任务,让模型学习到更好的数据表示 • 自监督学习代表:BERT(通过Mask来学习更好的表示) • 对比学习被认为是 “CV领域的BERT” https://mp.weixin.qq.com/s/SOaA9XNnymLgGgJ5JNSdBg

Slide 3

Slide 3 text

CONTRASTIVE LEARNING 对比学习 • 尽管我们已经见过很多次钞票长什么样子,但我们很少能一模一样的画 出钞票;虽然我们画不出栩栩如生的钞票,但我们依旧可以轻易地辨别 出钞票。 • 表示学习算法不需要关注每一个细节,只需要使其足以区分其他样本 • 即学习一个映射函数:

Slide 4

Slide 4 text

CONTRASTIVE LEARNING 对比学习 • 一个典型的score就是向量内积: • 如果对于一个x,有1个负例和(N-1)个负例,那么Loss就是N分类问题。 • 这个score在对比学习中被称为InfoNCE。

Slide 5

Slide 5 text

CONTRASTIVE LEARNING 对比学习 • 最小化这个loss,就能最大化f(x)和f(x+)的mutual information的下界, • 让两者的表示更接近。 • 对比学习的核心问题: • 如何定义一个合适的目标函数? • 如何构建正例和负例? • 三类经典模型:MoCo, SimCLR, Contrastive Predictive Coding(CPC)

Slide 6

Slide 6 text

MOCO(CVPR 2020) • a 将同一个batch的剩余样本作为负例。缺点:负例有batch size的限制 • b 将所有样本表示存起来,每次再随机采样。 缺点:内存、更新滞后 • MoCo 动态更新的queue作为负例缓存+使用momentum update

Slide 7

Slide 7 text

SIMCLR • MoCo重点:样本数量很重要 • SimCLR重点:构建负例的方式很重要 • 结论: • 对于样本进行变化,即构建正例和负例的 transformation 对于 结果至关重要 • 用 entropy loss 的 Contrastive Learning,可以通过 normalize representation embedding 以及 temperature adjustment 提升 • 在计算 loss 之前,让表示再过一个 non-linear hard 能大幅提升 效果(g()) • 大 batch-size 对于 CL 的增益比 Supervised Learning 更大

Slide 8

Slide 8 text

CPC • 更重视文本、音频数据;考虑了数据的时序性 • 用一定窗口内的Xt 和Xt+k作为Positive Pair • 从输入序列中随机采样一个输入Xt*作为负例 • 可以在z上增加自回归模型融入时序关系 • 最后既可以用z也可以用c

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

MAIN CONTRIBUTION OF THIS PAPER • 提出一种方法,给定template sequence,生成新颖的variation • 输出与输入有可感知的相似性,无需依赖任何label • 原因是:无监督地学习了高级表示 • 为此,提出了一种自监督的编码技术:VQ-CPC • 以了解codebook上unit的有meaningful assignment • 允许控制这些信息 • 使用一个额外的Transformer,从z生成到variation • 实验在J. S. Bach的四声部合唱中完成

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

VQ-CPC

Slide 13

Slide 13 text

GENERATING VARIATIONS • 通过压缩序列,RNN被迫学习到higher-level的context • z只包含local的信息 • 因此,必须在latent code序列上保持宏观结构

Slide 14

Slide 14 text

GENERATION VARIATIONS • VQ至关重要。通过设置VQ-bottleneck,Transformer无法完美重建, 而VAE的Decoder可以完美重建。因此,code的数量非常关键。 • 设置为16或者32,比传统VQ少了一个数量级。 • 这样设置的目的是舍弃重构,提取高级表示。

Slide 15

Slide 15 text

TRANSFORMER DECODER • 给定 生成 • 使用seq2seq Transformer + relative attention + mask

Slide 16

Slide 16 text

EXPERIMENTS • VQ-CPC Uniform: sampling subsequences uniformly from the dataset • VQ-CPC Sameseq: sampling negative subsequences from the same (complete) sequence

Slide 17

Slide 17 text

No content