VAE与CVAE

Posted Paul-Huang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VAE与CVAE相关的知识,希望对你有一定的参考价值。

CVAE理论到代码

1. VAE的本质

1.1 深度理解VAE

  1. VAE本质就是在我们常规的自编码器的基础上,对encoder的结果(在VAE中对应着计算均值的网络)加上了 “ 高 斯 噪 声 ” \\colorred“高斯噪声” 使 得 结 果 d e c o d e r 能 够 对 噪 声 有 鲁 棒 性 \\colorred使得结果decoder能够对噪声有鲁棒性 使decoder;而那个额外的KL loss(目的是让均值为0,方差为1),事实上就是相当于对encoder的一个正则项,希望encoder出来的东西均有零均值。

  2. VAE 中的encoder(对应着计算方差的网络)的作用:是用来 动 态 调 节 噪 声 的 强 度 \\colorred动态调节噪声的强度 的。

    • decoder还没有训练好时( 重 构 误 差 \\colorblue重构误差 远大于KL loss),就会适当 降 低 噪 声 \\colorblue降低噪声 KL loss增加),使得拟合起来容易一些(重构误差开始下降);
    • 如果decoder训练得还不错时( 重 构 误 差 \\colorblue重构误差 小于KL loss),这时 噪 声 就 会 增 加 \\colorblue噪声就会增加 KL loss减少),使得拟合更加困难了(重构误差又开始增加),这时候decoder就要想办法提高它的生成能力了。

    具体理解参照:下图,以及以下公式

    1. 观测数据集 X = x ( i ) i = 1 N i . i . d X=\\left\\ \\mathttx^(i) \\right\\^N_i=1 i.i.d X=x(i)i=1Ni.i.d X X X本身可能是连续分布或者离散分布),对某个 x x x的概率处理:
      log ⁡    p θ ( x ( i ) ) = log ⁡    p θ ( x ( i ) , z ) − log ⁡    p θ ( z ∣ x ( i ) ) = log ⁡    p θ ( x ( i ) , z ) q ϕ ( z ∣ x ( i ) ) − log ⁡    p θ ( z ∣ x ( i ) ) q ϕ ( z ∣ x ( i ) )      ( q ϕ ( z ∣ x ( i ) ) ≠ 0 ) . (1.1) \\beginaligned\\log\\; p_\\theta(\\mathttx^(i) )&=\\log\\; p_\\theta (\\mathttx^(i),\\mathttz)- \\log\\; p_\\theta (\\mathttz|\\mathttx^(i))\\\\ &=\\log\\; \\fracp_\\theta (\\mathttx^(i),\\mathttz)q_\\phi(\\mathttz|\\mathttx^(i))-\\log\\; \\fracp_\\theta (\\mathttz|\\mathttx^(i))q_\\phi(\\mathttz|\\mathttx^(i))\\; \\; (q_\\phi(\\mathttz|\\mathttx^(i))\\neq 0).\\endaligned\\tag1.1 logpθ(x(i))=logpθ(x(i),z)logpθ(zx(i))=logqϕ(zx(i))pθ(x(i),z)logqϕ(zx(i))pθ(zx(i))(qϕ(zx(i))=0).(1.1)
      (2.2.2)式两边对 q ϕ ( z ∣ x ( i ) ) q_\\phi(\\mathttz|\\mathttx^(i)) qϕ(zx(i))求期望得:
      log ⁡ p θ ( x ( i ) ) = D K L ( q ϕ ( z ∣ x ( i ) ) ∣ ∣ p θ ( z ∣ x ( i ) ) ) + L ( θ , ϕ ; x ( i ) ) (1.2) \\log p_\\theta(\\mathttx^(i))=D_KL(q_\\phi(\\mathttz|\\mathttx^(i))||p_\\theta (\\mathttz|\\mathttx^(i)))+\\mathcalL(\\theta,\\phi;\\mathttx^(i))\\tag1.2 logpθ(x(i))=DKL(qϕ(zx(i))pθ(zx(i)))+L(θ,ϕ;x(i))(1.2)
      其中:
      L ( θ , ϕ ; x ( i ) ) = ∫ z q ϕ ( z ∣ x ( i ) ) log ⁡   p θ ( z , x ( i ) ) q ϕ ( z ∣ x ( i ) ) d z D K L ( q ϕ ( z ∣ x ( i ) ) ∣ ∣ p θ ( z ∣ x ( i ) ) ) = − ∫ z q ϕ ( z ∣ x ( i ) ) log ⁡   p θ ( z ∣ x ( i ) ) q ϕ ( z ∣ x ( i ) ) d z \\colorblue\\ \\beginaligned \\mathcalL(\\theta,\\phi;\\mathttx^(i))&=\\int_z q_\\phi(\\mathttz|\\mathttx^(i)) \\log\\ \\fracp_\\theta (\\mathttz,\\mathttx^(i))q_\\phi(\\mathttz|\\mathttx^(i))dz\\\\ D_KL(q_\\phi(\\mathttz|\\mathttx^(i))||p_\\theta (\\mathttz|\\mathttx^(i)))&= - \\int_z q_\\phi(\\mathttz|\\mathttx^(i))\\log\\ \\fracp_\\theta (\\mathttz|\\mathttx^(i))q_\\phi(\\mathttz|\\mathttx^(i))dz \\endaligned L(θ,ϕ;x(i))D以上是关于VAE与CVAE的主要内容,如果未能解决你的问题,请参考以下文章

      一文搞懂变分自编码器(VAE, CVAE)

      BicycleGAN详解与实现

      基于VAE-SVDD的ADS-B异常数据检测模型

      基于VAE-SVDD的ADS-B异常数据检测模型

      基于VAE-SVDD的ADS-B异常数据检测模型

      基于VAE-SVDD的ADS-B异常数据检测模型