|

楼主 |
发表于 2005-7-24 22:03:00
|
显示全部楼层
潜在空间的理想特性可以总结如下:
$ A& p$ C! R; w/ l7 r" r3 j5 ]
* @5 g) z7 x$ _' }1.表达性(Expression):任何真实的样本都可以映射到潜在空间中的某个点并从中进行重构。
# \& V# g F# t9 Y5 x5 Z
) b9 T# p# m$ H" `2.真实感(Realism):这个空间中的任何一点都代表了一些实际样本,那些不在训练集中的样本也涵盖在内。
+ v# ~ g* |) Y' a# u f( C
( v2 Z! T& v9 v0 |3.流畅性(Smoothness):潜在空间附近点的样本具有相似的性质。
/ S) \0 [' @2 V( y+ e1 e; {) ^, t0 d- N; N5 M* q7 H
这些属性类似于艺术家的调色板,她可以在该调色板上对颜色选项进行探索和混合,从而进行创作,而且更像调色板的一点是,这些属性可以增强创意。例如,由于Expression和Smoothness,一个潜在的空间,比如由SketchRNN学习的笔画序列,使得你能够通过在潜在空间中的点之间的插值以进行重建和融合:
, G8 B. q. u( F+ l1 `- L0 A
^/ h6 n. ]$ c8 n" C( l' C
$ v$ _- k+ r' x
# }9 k9 f, M. r+ D" m
Realism使得你能够通过对潜在空间中随机选取的点进行解码,从而随机抽取一些与你的数据集中样本相类似的样本。我们在上面演示了这种旋律,并在这里用SketchRNN示范一下:
, n8 V) x5 N2 R% N7 T9 n+ @
) e+ z" ^7 B+ z U8 z1 g K& ^
; m: V: H, H2 V" _1 t2 C t$ ?
2 k& m/ f' l5 B/ a我们还可以使用潜在空间的结构来执行语义上有意义的转换,例如“潜在约束”或“属性向量算术”。后一种技术利用了这一事实,即潜在空间可以“解开”数据集中的重要特征。通过对与共享给定质量的数据点集合相对应的潜在向量进行平均(例如,猫脸的草图),我们获得该属性的属性向量(“猫脸向量”)。通过从潜在代码中加入和减去各种属性向量并使用我们的模型进行解码,我们可以获得添加或删除相关属性的输出。再次,我们用SketchRNN来说明这一点:
* M' _: d9 ^. ~! k. N @
6 S* p! y% r! U9 b9 s) s- p9 q4 i4 P/ G: G7 O/ B2 x# a
( _5 y$ Z2 e/ o+ p
如何学习一个潜在空间
! a6 z. D. ]; H& @
# I, D, i3 s( `7 i- ?4 Q$ w$ G有许多不同的模型能够学习潜在的表示,每种模式都与我们所期望的三种属性有各种各样的折中。
( X) g, G/ u* Z5 Y, Q, F- x9 H5 m
# R7 v/ _& y6 ^这样的模型的一种被称为自动编码器(AE)。自动编码器通过学习将每个样本压缩(编码)为数字向量(潜在代码或z),然后从该数字向量重新生成(解码)为相同样本,从而构建数据集的潜在空间。AE的一个关键组成部分是通过使向量具有比数据本身更小的维度而引入的瓶颈,这迫使模型区学习一个压缩方案。在这个过程中,自动编码器以理想的形式提取整个数据集中通用的性质。NSynth是一个自动编码器的例子,它在音符的音频中学习了音色的潜在空间:# ^9 D1 V9 S$ ^# N; Z( G% Q
- A% d. |- U' ^1 l
; h) K! l# W1 B( H. i
5 P% ~1 j s1 j& P; X
这种类型的自动编码器的一个局限性在于,它的潜在空间中通常存在“漏洞”。这意味着如果你对一个随机向量进行解码,它可能不会产生任何实际的结果。例如,NSynth能够进行重构和插值,但由于这些漏洞,它缺乏真实性和随机采样能力。6 q# N* ?5 |4 X q4 M6 V5 k7 |8 |
2 C }! T: U% J3 u4 u
另一种加强瓶颈限制的方式是使用所谓的变分损失(variational loss)。它不是不是限制向量的维度,而是鼓励编码器产生具有预定义结构的潜在代码,例如来自多变量正态分布的样本。然后,通过构造具有这种结构的新代码,我们可以确保解码器产生一些具有实际意义的东西。( P9 ~; y+ C* o: D# m" i% ?6 I
m% v* N' @# H, ` ZSketchRNN是一个变分自动编码器(VAE)的例子,它学习了一个用笔画序列表示的草图的潜在空间。这些笔画由双向循环神经网络(RNN)编码并由单独的RNN自动解码。正如我们上面看到的,这个潜在空间具有我们所需的所有属性,部分归功于变分损失。' J4 b7 j1 o* e7 |, V" k3 E
7 |7 T- s. N7 r2 x3 \5 N6 }循环潜在空间4 A3 d+ ?$ k P1 [" z: @0 C
# z4 G- n/ A6 E- _ x通过Music VAE,我们开始使用与Sketch RNN非常相似的体系结构以学习包含所有属性在内的旋律片段(循环)的潜在空间。我们在这里用一些例子来展示我们的结果。4 ~! R, v& q9 p- p, ]
6 i/ G* Y: b- L, i* S6 R3 {首先,我们将展示我们在两个序列间的变形能力,正如我们所做的那样,中和它们的属性。 尽管我们展示了一个混合两首旋律的样本,但我们前期做了一些更有难度的事情,进而将bassline转变为旋律。9 z7 u" ^( O$ W( t/ Q& }0 |1 m
6 k$ K7 \# @* e( qBassline音频连接:The red segment is the first step of the interpolation, and the purple is the final one. Each segment is 4 seconds (2 bars).$ N! ^* g7 z j u6 j& D- b
; E6 g/ u2 R( z
1 B7 J) f( [+ ~2 u7 Y5 ~' y) @* m7 b3 M7 |
我们首先尝试在不使用MusicVAE的情况下,通过对两者之间的音符进行采样,类似于音频中的交叉衰减(cross-fading),来流畅地将bassline转化为旋律。你可以在下面听到这个朴素插值的结果。第一部分(黑色)是bassline,后一部分(黑色)是旋律。红色部分是插值的第一步,紫色部分是插值的最后一步,每段为4秒(2节拍)。# o" `; K- n% _7 K) @5 g; j9 R
: t" r7 ^; k8 s0 q
+ ?. t* v0 ]& g8 i( C尽管开始(红色)和结束(紫色)部分完全匹配原来的序列,但中间那部分是无效的旋律和bassline。附近确实存在类似的音符,但较高阶的音质丢失了。输出空间有表达性,但缺乏真实感和流畅性。另一方面,下面是通过MusicVAE潜在空间的插值进行的变形。
0 Q: p) k6 F6 o! I7 ~5 u! o7 j
! Q" [, o6 E9 ~ `4 M1 O
9 j! B, F! {. V! \# w- m5 t1 r# c h1 c% C! v F
" L+ b2 h7 L- F4 \# {
- |# X& R9 {6 I/ t' _' E需要注意的是,中间序列现在是有效的,它们之间的转换是流畅的。中间序列也不像像之前那样局限于原文件中的音符,而在端点的上下文中选择音符使得整体更具音乐感。在这一样本中,我们完全满足了表达性、真实感和流畅性的特性。$ r" M" o3 d8 |5 q# d; K1 M% y. q
1 H9 L' s5 H w' e" ~- t( Y我们还在鼓循环中训练了这种架构,取得了类似的结果。 a# G) x6 @# D' u% W" Q
6 ~, @& x P ]9 ]$ P4 K. n4 ^
9 {$ B5 ~. f/ w( o. y; r& f1 G; z. m# v
长期结构
) d) X3 ?3 l- Q
; m/ x8 ] D7 X& M" B5 Y' Z其中一种位置语言模型(如MelodyRNN和PerformanceRNN)的不足之处在于它们产生的输出通常缺乏连贯的长期结构。正如我们过去用SketchRNN所展示的那样,潜在空间模型可以编码长期结构以生成完整的草图。3 k/ S2 L1 @1 s
[5 s6 k! P" I
然而,要想在长音乐序列中获得类似的结果,通常要有比草图更多的步骤,我们发现不能依靠相同的体系结构。相反,我们开发了一种全新的分层解码器,能够从单个潜在代码生成长期结构。5 l5 P/ w& z s9 {" R/ ~6 u
1 b2 W0 W. `+ s( U+ e& M
0 \0 V3 ]& P8 r' J1 e" z0 `
6 L* i, C: ^1 L* C
我们不是使用我们的潜在代码来直接初始化音符RNN(note RNN)解码器,而是先将代码传递给一个“导体”RNN,该RNN为每个输出节拍输出一个新的嵌入。然后,音符RNN基于嵌入而不是潜在代码本身,独立生成16个节拍中的每一个,然后我们从音符解码器中进行自回归采样。
! x/ J# t ~, ^2 f1 ?$ t# C) O7 k
我们发现这种条件独立性是我们体系结构的一个重要特征。由于该模型不能简单地回归到音符解码器中的自回归以优化训练期间的损失,所以它更依赖潜在代码以重建序列。
6 p1 ~2 ^( ]" s1 D3 h
: O1 T3 j' k- N s o, }使用这种体系结构,我们可以像以前一样进行重建、采样和平滑插值,但现在需要更长的时间(16节拍)旋律。在本文中,我们将样本旋律A(顶部)与B(底部)混合在一起。
- I5 A; D* P3 |: u
@& A5 Q% Z# ~ x
9 y/ h9 r& }( g1 p& b
; B E3 D) f- l
4 f) q* v$ ], n" D5 ]7 x/ ?7 Y6 }, i/ I3 H3 w, d) S% d
1 k6 h2 v9 Y C# H0 f, P
8 }/ V ^: w# i
( x6 t, I* ~0 q! k$ x此外,我们可以使用属性向量算法(上面提到的“猫脸向量”)来控制音乐的特定品质,同时保留音乐的许多原始特征,包括整体结构。在本文中,我们展示了我们通过在潜码中添加或减去一个“音符密度向量”来调整旋律中音符数量的能力。
0 u3 L% R; d- ]9 i( d1 v( J
& s9 S# b# C& ~ l) w4 O, J0 s" k) `7 c
" G( I+ l. T$ V' m
. {9 v7 J( H6 S6 @) ^4 J, l5 L
" G" ?- E8 W+ I/ W4 W
, p$ j% Y/ q9 e7 n, A) e
8 |- f# o4 D9 ^6 @. E1 x: O; s( n
' Y! N! M7 y& N* `! y, I需要注意的是,我们并不是通过简单重复音符来增加它们的密度。相反,Music VAE增加了琵琶和其他与音乐相关的用户体验。# y2 a, \% |& D
4 W' K W. P: j- N' k
重新组建乐队
! f) \& n' i% Y5 m( l) {
& r3 g' J5 ? I4 V我们可以用短期和长期结构来模拟单个乐器,我们调整了我们的分层架构以对不同乐器之间的相互作用进行建模。在这些模型中,我们将嵌入传递给多个解码器、每个乐器或每个轨道,而并非是将嵌入从导管传递至单个音符解码器。1 Y8 f2 y! B8 f' d
0 p' u! G8 u8 G( d$ S# J G/ T; F! @6 o
通过在潜在空间中对简短的多乐器配置进行表示,我们可以完成所有与单曲操作相同的操作。例如,对于8种完全不同的乐器,我们可以在两个1度量配置之间进行差值。下面是由模型选择的乐器,在潜在空间中随机点对之间的两个插值合成的音频。每个点代表2秒(1节拍)。
8 e2 Z; K: b5 Z. p7 y& W
" S# P$ A. z, ^. @" ?
4 L- J& B2 h: h0 v7 S2 _1 S5 {' J
$ ^* P8 \( L6 K我们还可以将跨节拍的层次结构,重新添加到模型3的标准乐器(旋律、低音、鼓声)中的16个节拍。我们“trio”模型中的这个样本播放列表(https://www.youtube.com/watch?v= ... 2N7HIMQnZc0SMFk99Yl)证明,它已经学会了如何在长时间帧内模拟三种乐器之间的交互作用。
) e& C. h5 s% ~5 N7 H$ E- `, {( U3 T* m; r( c
音乐家的工具: [0 M! }. V9 S- j% d3 F" i
- O) H" l7 V1 w8 N
可以说,我们是刚刚触及对于音乐家、作曲家及音乐制作人来说,由MusicVAE所学习的音乐调色板的可能应用的表面,并且已经开始与开发人员合作,让尽可能多的人访问这些调色板。
. L$ y4 C/ n& K3 N7 T+ \, z5 U4 H, |( Y9 t4 \
3 y4 ^0 l& |' V0 V5 d7 P
& G( t# B( s1 d/ x8 m
第一个样本是由谷歌创意实验室的技术人员制作的旋律混音器,可以让人轻而易举地在短旋律循环之间轻松生成插值。! f! D! b2 V* P
' Y8 G8 K$ J, q% o' ^
& b0 G- {4 y7 N5 g! R0 Q) H# S$ c$ W) M# l ^
第二个样本是Beat Blender,也是由谷歌创意实验室开发的。你可以使用它来生成鼓点的二维调色板,并通过潜在空间绘制路径,以创建不断变化的节拍。4个角可以手动编辑,替换为预设或从潜在空间采样以重新生成调色板。
9 H; S3 e! h, v2 v
6 g3 k) F4 u- s5 f) o E& X- x6 Q第三个样本是谷歌Pie Shop的潜在循环(Latent Loops)。Latent Loops让你可以在调整到不同音阶的矩阵上勾勒旋律,探索生成旋律循环的调色板,并使用它们对更长的乐曲进行排序。! Q) K3 M8 r1 I( J6 p8 n
3 G: @1 ]* t9 b: D, e有了这个,音乐家就可以用这个界面创造出完整的旋律线,然后很容易地将它们转移到他们的音频工作站(DAW)上,进行创作。 |
|