【问题标题】:Why my VAE for toy dateset doesn't learn?为什么我的玩具日期集的 VAE 不学习?
【发布时间】:2016-03-17 10:47:53
【问题描述】:

我用 VAE(变分自动编码器)玩了几天。它在 mnist 或 frayface 等演示数据集上运行良好。但是,当我将它应用到我自己的数据集时,它根本不起作用。

我找不到任何关于训练 VAE 潜在困难的参考资料,所以我做了一个小测试用例。

我的玩具数据集如下:

np.random.seed(1)
X = np.random.choice([0.05, 0.95], n)

而我的 VAE 结构是这样的:

X -> hidden layer 1 (50 units)
  -> hidden layer 2 (50 units)
  -> code layer (1 units)
  -> sampling layer (1 sampling)
  -> hidden layer 3 (50 units)
  -> hidden layer 4 (50 units)
  -> X (with Bernoulli loss + KL)

输入是一个概率,希望VAE学习后能弄清楚潜在变量其实就是X本身。

但是,我尝试了 Bernoulli 以及输出层的高斯损失,但都不起作用。

代码层被先前的 N(0,1) 卡住了,因此预测总是在 0.5 左右。

玩具脚本在这里,https://gist.github.com/colinfang/20abd925ad3140236e63。大部分代码来自https://jmetzen.github.io/2015-11-27/vae.html

【问题讨论】:

    标签: neural-network tensorflow


    【解决方案1】:

    VAE 中出现的一个非常常见的问题是“后部塌陷”(参见此处:https://datascience.stackexchange.com/questions/48962/what-is-posterior-collapse-phenomenon)。

    如果确实如此,我建议在这里查看解决方案: https://www.quora.com/How-do-you-fix-a-Variational-Autoencoder-VAE-that-suffers-from-mode-collapse

    对我来说效果很好。

    【讨论】:

      【解决方案2】:

      我建议采用适用于中等大小数据集(无模式崩溃等)的 VAE,并针对您热衷的数据集进行更新/调整。我已将VAE for new fruits 应用于我收集的包含 1000 个元素的家具(躺椅)数据集,并取得了一定的成功(模拟了形状和一些纹理,但还不是真正值得注意的模仿)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-30
        • 1970-01-01
        • 2021-05-14
        • 1970-01-01
        • 2021-02-23
        • 2016-09-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多