• 深度学习中的互信息:无监督提取特征 Learner


    1 自编码器

      特征提取是无监督学习中很重要且很基本的一项任务,常见形式是训练一个编码器将原始数据集编码为一个固定长度的向量。自然地,我们对这个编码器的基本要求是:保留原始数据的(尽可能多的)重要信息。

      那么我们怎么知道编码向量保留了重要信息呢?一个很自然的想法是这个编码向量应该也要能还原出原始图片出来,所以我们还训练一个解码器,试图重构原图片,最后的损失就是原始图片和重构图片的MSE损失。这导致了标准的自编码器的设计。后来,我们还希望编码向量的分布尽量能接近高斯分布,这就导致了变分自编码器。

    2 重构的思考

      然而,值得思考的是 “重构” 这个要求是否合理?

      首先,我们可以发现通过低维编码重构原图的结果通常是很模糊的,这可以解释为损失函数MSE要求的 “逐像素” 重建过于苛刻。又或者可以理解为,对于图像重构事实上我们并没有非常适合的损失可以选用,最理想的方法是用对抗网络训练一个判别器出来,但是这会进一步增加任务难度。

      其次,一个很有趣的事实是:我们大多数人能分辨出很多真假币,但如果要我们画一张百元大钞出来,我相信基本上画得一点都不像。这表明,对于真假币识别这个任务,可以设想我们有了一堆真假币供学习,我们能从中提取很丰富的特征,但是这些特征并不足以重构原图,它只能让我们分辨出这堆纸币的差异。也就是说,对于数据集和任务来说,合理的、充分的特征并不一定能完成图像重构。

    3 最大化互信息

    3.1 互信息

      上面的讨论表明,重构不是好特征的必要条件。好特征的基本原则应当是“能够从整个数据集中辨别出该样本出来”,也就是说,提取出该样本(最)独特的信息。如何衡量提取出来的信息是该样本独特的呢?我们用“互信息”来衡量。

      让我们先引入一些记号,用  $X$  表示原始图像的集合,用  $x \in X$  表示某一原始图像,  $Z $ 表示编码向量的集合,  $z \in Z$  表示某个编码向量,$\mathrm{p}(\mathrm{z} \mid \mathrm{x})$  表示  $\mathrm{x}$  所产生的编码向量的分布,我们设它为高斯分布,或者简单理解它就是我们想要寻找的编码器。那么可以用互信息来表示 $X,Z$ 的相关性。

        $I(X, Z)=\iint p(z \mid x) \tilde{p}(x) \log \frac{p(z \mid x)}{p(z)} d x d z\quad\quad\quad(1)$

      这里的 $\tilde{\mathrm{p}}(\mathrm{x})$ 原始数据的分布,$\mathrm{p}(\mathrm{z})$ 是在 $\mathrm{p}(\mathrm{z} \mid \mathrm{x}) $ 给定之右整个 $Z$ 的分布,即: 

        $p(z)=\int p(z \mid x) \tilde{p}(x) d x \quad\quad\quad (2)$

      那么一个好的特征编码器,应该要使得互信息尽量地大,即:

        $p(z \mid x)=\underset{p(z \mid x)}{\text{max}} \quad I(X, Z)\quad\quad\quad (3)$

      互信息越大意味着 (大部分的)  $ \log \frac{p(z \mid x)}{p(z)}$  应当尽量大,这意味着  $\mathrm{p}(\mathrm{z} \mid \mathrm{x})$  应当远大于 $ \mathrm{p}(\mathrm{z}) $ ,即 对于每个  $x$  ,编码器能找出专属于  $x$  的那个  $z$  ,使得  $\mathrm{p}(\mathrm{z} \mid \mathrm{x})$  的概率远大于随机的概率  $\mathrm{p}(\mathrm{z})$  。这样一 来,我们就有能力只通过  $\mathrm{z}$  就从中分辨出原始样本来。

      注意:(1) 的名称为互信息,而对数项 $\log \frac{p(z \mid x)}{p(z)}$ 我们称为 "点互信息",有时也直接称为互 信息。两者的差别是:(1) 计算的是整体关系,比如回答 “前后两个词有没有关系" 的问题; $\log \frac{p(z \mid x)}{p(z)}$ 计算的是局部关系,比如回答 " '忐' 和 '患' 是否经常连在一起出现" 的问题。

    4 先验分布

      前面提到,相对于自编码器,变分自编码器同时还希望隐变量服从标准正态分布的先验分布,这有利于使得编码空间更加规整,甚至有利于解耦特征,便于后续学习。因此,在这里我们同样希望加上这个约束。

     

     

     

     

     

     

     

    https://zhuanlan.zhihu.com/p/46524857

     

  • 相关阅读:
    Windows下使用nmake编译C/C++的makefile
    poj 1228
    poj 1039
    poj 1410
    poj 3304
    poj 1113
    poj 2074
    uva 1423 LA 4255
    poj 1584
    poj 3277
  • 原文地址:https://www.cnblogs.com/BlairGrowing/p/16055132.html
Copyright © 2020-2023  润新知