VAE与CVAE
Posted Paul-Huang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VAE与CVAE相关的知识,希望对你有一定的参考价值。
CVAE理论到代码
1. VAE的本质
1.1 深度理解VAE
-
VAE本质就是在我们常规的自编码器的基础上,对
encoder
的结果(在VAE中对应着计算均值的网络)加上了 “ 高 斯 噪 声 ” \\colorred“高斯噪声” “高斯噪声”, 使 得 结 果 d e c o d e r 能 够 对 噪 声 有 鲁 棒 性 \\colorred使得结果decoder能够对噪声有鲁棒性 使得结果decoder能够对噪声有鲁棒性;而那个额外的KL loss
(目的是让均值为0,方差为1),事实上就是相当于对encoder
的一个正则项,希望encoder
出来的东西均有零均值。 -
VAE 中的
encoder
(对应着计算方差的网络)的作用:是用来 动 态 调 节 噪 声 的 强 度 \\colorred动态调节噪声的强度 动态调节噪声的强度的。- 当
decoder
还没有训练好时( 重 构 误 差 \\colorblue重构误差 重构误差远大于KL loss
),就会适当 降 低 噪 声 \\colorblue降低噪声 降低噪声(KL loss增加
),使得拟合起来容易一些(重构误差开始下降); - 如果
decoder
训练得还不错时( 重 构 误 差 \\colorblue重构误差 重构误差小于KL loss
),这时 噪 声 就 会 增 加 \\colorblue噪声就会增加 噪声就会增加(KL loss
减少),使得拟合更加困难了(重构误差又开始增加),这时候decoder
就要想办法提高它的生成能力了。
具体理解参照:下图,以及以下公式
-
观测数据集 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θ(z∣x(i))=logqϕ(z∣x(i))pθ(x(i),z)−logqϕ(z∣x(i))pθ(z∣x(i))(qϕ(z∣x(i))=0).(1.1)
(2.2.2)式两边对 q ϕ ( z ∣ x ( i ) ) q_\\phi(\\mathttz|\\mathttx^(i)) qϕ(z∣x(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ϕ(z∣x(i))∣∣pθ(z∣x(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的主要内容,如果未能解决你的问题,请参考以下文章
- 当