文章目录
More about Auto-Encoder
还是Auto-Encoder,已经很熟悉那个模型类吧
Auto-encoder是一个基本的生成模型,更重要的是它提供了一种encoder-decoder的框架思想,广泛的应用在了许多模型架构中。简单来说,Auto-encoder可以看作是如下的结构,它主要包含一个编码器(Encoder)和一个解码器(Decoder),通常它们使用的都是神经网络。Encoder接收一张图像(或是其他类型的数据,这里以图像为例)输出一个vector,它也可称为Embedding、Latent Representation或Latent code,不管它叫什么,我们只需要知道它是关于输入图像的表示;然后将vector输入到Decoder中就可以得到重建后的图像,希望它和输入图像越接近越好,即最小化重建误差(reconstruction error),误差项通常使用的平方误差。
那么今天主要讲三件事:
- More than minimizing reconstruction error
- Feature Disentangle
- More interpretable embedding
What is good embedding?(好的embedding是怎样的?)
之前要做embedding的根本原因是:An embedding should represent the object.虽然我们希望Decoder输出的重建图像和输入到Encoder中的图像越接近越好,但是通常我们并不关注重建后的图像是什么样的,更多的希望得到一个关于输入图像有意义、解释性强的embedding。
如何评价一个embedding是否是好的呢?最直观的想法是它应该包含了关于输入的关键信息,从中我们就可以大致知道输入是什么样的。或是从流形学习的角度来看,希望它可以学到关于高维输入数据的低维嵌入。比如当我们看到蓝色耳机时,我们想到的是三九,而不应是一花,那么蓝色耳机对于三九就是一个好的embedding,对于一花来说就不是一个好的embedding。
Beyond Reconstruction:Discriminator
除了使用重建误差来驱动模型训练外,可以使用其他的方式来衡量Encoder是否学到了关于输入的重要表征吗?答案自然是YES!假设我们现在有两类动漫人物的图像,一类是三玖,一类是凉宫春日。如果将三玖的图像丢给Encoder后,它就会给出一个蓝色的Embedding;如果Encoder接收的是凉宫春日的图像,它就会给出一个黄色的Embedding。那么除了Encoder之外,还有一个Discriminator(这里可以就看作一个二分类的Classifier),它接收图像和Embedding,然后给出一个结果表示它们是否是两两对应的。
借助GAN的思想,我们用
ϕ
\phi
ϕ 来表述Discriminator(Φ来表述Discriminator参数),希望通过训练最小化D的损失函数,loss of the classification task is 输出与标签的交叉熵
L
D
L_D
LD,那么训练模型参数来最小化
L
D
L_D
LD得到最小的损失值
L
D
∗
L^*_D
LD∗ :
L
D
∗
=
min
ϕ
L
D
L^*_D = \min\limits_{\phi}L_{D}
LD∗=ϕminLD
其中
L
D
∗
L^*_D
LD∗来评估向量表示的好和不好。
- 如果 L D L_D LD的值比较小,就认为Encoder得到的Embedding很有代表性
- 相反如何 L D L_D LD的值很大时,就认为得到的Embedding不具有代表性
既然我们知道如何来评估向量表示的好和不好,我们就是要调整encoder的参数
θ
\theta
θ ,然后用评估方法(根据L∗D 来评估)来让生成向量最优。
θ
∗
=
a
r
g
max
θ
L
D
∗
\theta^* = arg\max\limits_{\theta}L^*_D
θ∗=argθmaxLD∗
带入
L
D
∗
L^*_D
LD∗ 得到:
θ
∗
=
a
r
g
min
θ
min
ϕ
L
D
\theta^* = arg\min\limits_{\theta}\min\limits_{\phi}L_D
θ∗=argθminϕminLD
也就是说我们要训练encoder的参数
θ
\theta
θ和discriminator的参数
ϕ
\phi
ϕ,使得
L
D
L_D
LD 最小化。
这个东西实际可以类比到最原始的auto-encoder模型要同时训练encoder和decoder使得reconstruction error最小。也就是说auto-encoder模型:
我们现在知道,auto-encoder跟刚才所说的,同使训练encoder和binary classifer一样,只是可以将auto-encoder视为一个特别情况。
如上图所示,刚才我们所说的discriminator是同时将image与embedding做为输入,但如果先将embedding做为input,得到的结果再跟image相减,那它就是一个reconstruction error了。
Sequential Data
除了图像数据外,我们也可以在序列数据上使用Encoder-Decoder的结构模型。
Skip thought
模型在大量的文档数据上训练结束后,Encoder接收一个句子,然后给出输入句子的上一句和下一句是什么。