2020李宏毅学习笔记——49.More about Auto-Encoder(3_4)
第二个话题(More interpretable embedding)
接下来我们来看如何得到解释性更好的Embedding,这样的方法也可以称为Feature Disentangle(特征结构)。因为对于Encoder的输入数据来说,经过Encoder得到的Embedding其实包含了关于它的很多类型的信息。例如,如果现在输入的是一段声音讯号,那么Embedding可能包含内容信息、讲话者的信息……
1.Feature Disentangle
Disentangle意思是解开
An object contains multiple aspect information
如果输入的是一段文字,Embedding可能包含关于它的句法信息、语义信息……
1.1希望计算机告诉我们各个维度的embedding代表的关系
我们以声音讯号为例,假设通过Encoder得到的Embedding是一个100维 的向量,它只包含内容和讲话者身份两种信息。我们希望经过不断的训练,它的前50维代表内容信息,后50维代表讲话者的身份信息。
我们希望模型可以帮我们把这些信息disentangle开来。
两种方法:
一种是在训练出来的vector上已经把不同内容分开了:
一种是训练两个encoder分别抽取不同内容,然后把两个部分拼接起来,才能还原原来的内容。。
2.Voice Conversion变声器
人和说话的内容是放在同一个向量里面的。
然后把女生说话的内容,和男生说话的特点合起来,就变成了男生在说How are you?(抠男飘过)
那么如何来实现Feature Disentangle呢?
一种方法就是使用GAN对抗的思想,我们在一般的Encoder-Decoder架构中引入一个Classifier,判别Embedding某个具体的部分是否代表了讲话者身份的信息,通过不断地训练,希望Encoder得到的Embedding可以骗过Classifier,那么那个具体的部分就表示了讲话者的信息。Classifier用来分辨语者的性别,encoder的原目标要加上一个限制,就是要使得不能让Classifier分辨出语者的性别,因此在训练的过程中就会把语者的性别放到后100维中去了,前100维就只剩下内容的信息了。
在实作过程中,通常是利用GAN来完成这个过程,也就是把encoder看做generator,把Classifier看做discriminator。Speaker classifier and encoder are learned iteratively.
另一种方式是改变网络结构,比如使用两个Encoder来分别得到内容信息和讲话者身份信息的Embedding,同时在Encoder中使用instance normalization,然后将得到的两个Embedding结合起来送入Decoder重建输入数据。这里不展开,两个normalization 的方法应该会有归一化专题讲解。
除了将两个Embedding直接组合起来的方式,还可以在Decoder中使用Adaptive instance normalization
本文地址:https://blog.csdn.net/weixin_44554337/article/details/107281466