Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
vq-cpc
Search
Zhang Yixiao
August 07, 2020
0
340
vq-cpc
Zhang Yixiao
August 07, 2020
Tweet
Share
More Decks by Zhang Yixiao
See All by Zhang Yixiao
CoCon
ldzhangyx
0
340
MixPoet
ldzhangyx
4
370
diora
ldzhangyx
0
240
drummernet
ldzhangyx
0
200
ON-LSTM
ldzhangyx
0
150
Featured
See All Featured
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.1k
Side Projects
sachag
452
42k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Music & Morning Musume
bryan
46
6.2k
How GitHub (no longer) Works
holman
311
140k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Documentation Writing (for coders)
carmenintech
66
4.5k
Speed Design
sergeychernyshev
25
670
Why Our Code Smells
bkeepers
PRO
335
57k
Transcript
VECTOR QUANTIZED CONTRASTIVE PREDICTIVE CODING FOR TEMPLATE- BASED MUSIC GENERATION
Presented by Yixiao Zhang on Aug 7, 2020
CONTRASTIVE LEARNING 对比学习 • 是Self-Supervised Learning的代表 • 自监督学习 • 是监督学习的一个特例,其中训练数据集不是由人手动标记的
• 通过设计学习任务,让模型学习到更好的数据表示 • 自监督学习代表:BERT(通过Mask来学习更好的表示) • 对比学习被认为是 “CV领域的BERT” https://mp.weixin.qq.com/s/SOaA9XNnymLgGgJ5JNSdBg
CONTRASTIVE LEARNING 对比学习 • 尽管我们已经见过很多次钞票长什么样子,但我们很少能一模一样的画 出钞票;虽然我们画不出栩栩如生的钞票,但我们依旧可以轻易地辨别 出钞票。 • 表示学习算法不需要关注每一个细节,只需要使其足以区分其他样本 •
即学习一个映射函数:
CONTRASTIVE LEARNING 对比学习 • 一个典型的score就是向量内积: • 如果对于一个x,有1个负例和(N-1)个负例,那么Loss就是N分类问题。 • 这个score在对比学习中被称为InfoNCE。
CONTRASTIVE LEARNING 对比学习 • 最小化这个loss,就能最大化f(x)和f(x+)的mutual information的下界, • 让两者的表示更接近。 • 对比学习的核心问题:
• 如何定义一个合适的目标函数? • 如何构建正例和负例? • 三类经典模型:MoCo, SimCLR, Contrastive Predictive Coding(CPC)
MOCO(CVPR 2020) • a 将同一个batch的剩余样本作为负例。缺点:负例有batch size的限制 • b 将所有样本表示存起来,每次再随机采样。 缺点:内存、更新滞后
• MoCo 动态更新的queue作为负例缓存+使用momentum update
SIMCLR • MoCo重点:样本数量很重要 • SimCLR重点:构建负例的方式很重要 • 结论: • 对于样本进行变化,即构建正例和负例的 transformation
对于 结果至关重要 • 用 entropy loss 的 Contrastive Learning,可以通过 normalize representation embedding 以及 temperature adjustment 提升 • 在计算 loss 之前,让表示再过一个 non-linear hard 能大幅提升 效果(g()) • 大 batch-size 对于 CL 的增益比 Supervised Learning 更大
CPC • 更重视文本、音频数据;考虑了数据的时序性 • 用一定窗口内的Xt 和Xt+k作为Positive Pair • 从输入序列中随机采样一个输入Xt*作为负例 •
可以在z上增加自回归模型融入时序关系 • 最后既可以用z也可以用c
None
MAIN CONTRIBUTION OF THIS PAPER • 提出一种方法,给定template sequence,生成新颖的variation • 输出与输入有可感知的相似性,无需依赖任何label
• 原因是:无监督地学习了高级表示 • 为此,提出了一种自监督的编码技术:VQ-CPC • 以了解codebook上unit的有meaningful assignment • 允许控制这些信息 • 使用一个额外的Transformer,从z生成到variation • 实验在J. S. Bach的四声部合唱中完成
None
VQ-CPC
GENERATING VARIATIONS • 通过压缩序列,RNN被迫学习到higher-level的context • z只包含local的信息 • 因此,必须在latent code序列上保持宏观结构
GENERATION VARIATIONS • VQ至关重要。通过设置VQ-bottleneck,Transformer无法完美重建, 而VAE的Decoder可以完美重建。因此,code的数量非常关键。 • 设置为16或者32,比传统VQ少了一个数量级。 • 这样设置的目的是舍弃重构,提取高级表示。
TRANSFORMER DECODER • 给定 生成 • 使用seq2seq Transformer + relative
attention + mask
EXPERIMENTS • VQ-CPC Uniform: sampling subsequences uniformly from the dataset
• VQ-CPC Sameseq: sampling negative subsequences from the same (complete) sequence
None