zoukankan      html  css  js  c++  java
  • 基于图嵌入的高斯混合变分自编码器的深度聚类(Deep Clustering by Gaussian Mixture Variational Autoencoders with Graph Embedding, DGG)

    基于图嵌入的高斯混合变分自编码器的深度聚类

    Deep Clustering by Gaussian Mixture Variational Autoencoders with Graph Embedding, DGG

    作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

    1. 引言

        这篇博文主要是对论文“Deep Clustering by Gaussian Mixture Variational Autoencoders with Graph Embedding”的整理总结,这篇文章将图嵌入与概率深度高斯混合模型相结合,使网络学习到符合全局模型和局部结构约束的强大特征表示。将样本作为图上的节点,并最小化它们的后验分布之间的加权距离,在这里使用Jenson-Shannon散度作为距离度量。

        阅读这篇博文的前提条件是:了解高斯混合模型用于聚类的算法,了解变分推断与变分自编码器,进一步了解变分深度嵌入(VaDE)模型。在知道高斯混合模型(GMM)与变分自编码器(VAE)之后,VaDE实际上是将这两者结合起来的一个产物。与VAE相比,VaDE在公式推导中多了一个变量c。与GMM相比,变量c就相当于是GMM中的隐变量z,而隐层得到的特征z相当于原来GMM中的数据x。而基于图嵌入的高斯混合变分自编码器的深度聚类(DGG)模型可以看做在VAE的基础上结合了高斯混合模型与图嵌入来完成聚类过程,公式推导中同样增加了表示类别的变量c,同时,目标函数后面加了一项图嵌入的约束项。比起VaDE来说,可以理解为多了一个约束项——图嵌入,当然目标函数还是有所不同。

        下面主要介绍DGG模型目标函数的数学推导过程。推导过程用到了概率论与数理统计的相关知识,更用到了VaDE模型推导里面的知识,如果想要深入了解推导过程,请先看变分深度嵌入(VaDE)模型的“前提公式”。

    2. 目标函数的由来与转化

    3. 目标函数具体推导

        用Siamese网络来度量数据点之间的相似度,从而选出数据点xi的邻居。

        第二项和第四项最后一步怎么来的?用到了一个公式,公式的具体推导见:变分深度嵌入(VaDE)模型的“前提公式”。

    4. 参数更新过程及聚类结果

        我也搞不明白哪个图正确,或者都不正确,望指正。

    5. 我的思考

    • 在推导过程中我与原文中的推导有不一样的地方。

            1)我的推导过程中变分下界L中第二项系数是1/2,原文直接是1,而在支撑材料里面仍然是1/2,因此可以认为是作者笔误造成的。

            2)我的推导过程中变分下界L中的第二项与第四项都有常数项(蓝框框标出的),这两项正好正负抵消,才没有这个常数项,而在原文支撑材料里面直接第二四项都没有常数项。不过这只是支撑材料的内容,在原文中没有太大影响。

            3)我用的是πk,原文用的πik。这点没有太大影响。

    • 这里有一点和VaDE不一样,VaDE聚类结果是由rik后验概率通过贝叶斯公式得到的,中间过程并没有参与梯度下降的更新,而DGG这里是构建了一个分类器网络f2,从而得到聚类结果。

                1)DGG这里有三个网络,f1是编码器,g是解码器,而f2是分类器。

               2)这种架构和苏剑林博客中提到的VAE用于聚类的算法"变分自编码器(四):一步到位的聚类方案 - 科学空间|Scientific Spaces"的网络架构有异曲同工之妙,不过苏剑林博客中的网路框架还多了一个自定义的Gaussian层,有兴趣的可以看看苏剑林那篇文章及代码。

    • 原文中分类器的输入应该是VAE模型得到的隐层z,而代码里面是VAE得到的x_mean,没有经过采样得到z,直接用x_mean作为分类器的输入,这一点不知道是我理解有误,还是代码问题。
    • DGG原作者给的代码里面说预训练的参数是从VaDE代码里面获得的。这里VaDE与DGG在训练同一组数据用的VAE网络架构是一致的,因此可以直接拿来用。如果数据是新的,需要自己预训练参数,这种情况下需要构建深度自编码器,自行训练参数。

    6. 参考文献

    [1] Linxiao Yang, Ngai-Man Cheung, Jiaying Li, and Jun Fang, "Deep Clustering by Gaussian Mixture Variational Autoencoders with Graph Embedding", In ICCV 2019.

    [2] 论文补充材料:Deep Clustering by Gaussian Mixture Variational Autoencoders with Graph Embedding - Supplementary

    [3] DGG Python代码:https://github.com/ngoc-nguyen-0/DGG

    [4] 变分深度嵌入(Variational Deep Embedding, VaDE) - 凯鲁嘎吉 - 博客园 

    [5] 变分推断与变分自编码器 - 凯鲁嘎吉 - 博客园 

  • 相关阅读:
    试试 cocos creator 3.0 还算可以
    安卓按键辅助(类似按键精灵)
    一次github遭遇
    NSString
    Navicat for SQL Server V10.0.10
    申请博客第一天
    Google Earth的脫機應用-本地模擬瓦片系統
    Vs2010+opencv2.3.1 imread出现异常
    tcpdump工具注意事项
    选择服务器托管机房的注意事项
  • 原文地址:https://www.cnblogs.com/kailugaji/p/13261316.html
Copyright © 2011-2022 走看看