• 变分推断


    变分推断的基本形式

    变分推断是使(q(z))逼近(p(zvert x))来求得隐变量(z)的后验分布(p(zvert x))。根据贝叶斯公式,有

    [egin{align*} underbrace{logleft(p(x) ight)}_{ ext{evidence}} &= logleft(pleft(x, z ight) ight)-logleft(p(zvert x) ight)\ &= underbrace{int_z q(z)logleft(frac{p(x, z)}{q(z)} ight)}_{ ext{evidence low bound}}-underbrace{int_z q(z)logleft(frac{p(zvert x)}{q(z)} ight)}_{ ext{KL divergence}}end{align*} ]

    (logleft(p(x) ight))被称为Evidence的原因是因为它是来自我们观察到的,又因为KL-divergence不为负,为了使得(q(z))逼近(p(zvert x)),优化的目标就是上面的ELOB

    Mean field

    中场理论(Mean field)一般假设

    [q(z)=prod_{i=1}^M q(z_i) label{eq:mean field} ag{1} ]

    代入(~ ef{eq:mean field})得到

    [int_z prod_{i=1}^M q(z_i) logleft(p(x,z) ight)\,dz-\ int_{z_1}q(z_i)int_{z_2}q(z_2)cdotsint_{z_M}q(z_M) sum_{i=1}^Mlogleft(q(z_i) ight)\,dz_Mcdots dz_1 ]

    [egin{align*}int_z prod_{i=1}^M q(z_i) logleft(p(x,z) ight)\,dz-sum_{i=1}^Mint_{z_1}q(z_1)logleft(q(z_1) ight)end{align*} ]

    [logleft( ilde{p}_j(x, z) ight)=E_{i eq j}left[logleft(p(x,z_j) ight) ight] ]

    针对第(z_j)ELOW

    [int_{z_j} q(z_j) logleft( ilde{p}_j(x,) ight) - int_{z_j} q(z_j) logleft(q(z_j) ight) ]

    因此当(q(z_j)= ilde{q}_j(x,z))时上式取得最小值(0)。因此通过迭代(z_j)可以求得逼近(p(zvert x))(q(z))

    指数函数变分推断例子

    假设(p(x),\,p(xvert z))都来自某指数族分布,指数族分布形式如下

    [p(xvert eta)=h(x)expleft(eta^TT(x)-A(eta) ight) ]

    且满足

    [egin{align*} A'(eta_{MLE}) &= frac{1}{n}sum_{i=1}^n T(x_i)\ A'(eta) &= E_{p(xvert eta)}left[T(x) ight]\ A''(eta) &= Varleft[T(x) ight]end{align*} ]

    假设隐变量(z)可以分为两部分(Z)(eta),那么ELOB可以写为

    [int_{Z,eta} q(Z,eta)logleft(p(x,Z,eta) ight)-int_{Z,eta}q(Z,eta)logleft(q(Z,eta) ight) ]

    根据指数族的性质后验分布(p(etavert Z,x))(p(Zvert eta, z))都属于指数族

    [egin{align*}p(etavert Z,x) &= h(eta) expleft(T(eta)^Teta(Z,x)-Aleft(eta(Z,x) ight) ight)\p(Zvert eta,x) &= h(Z) expleft(T(Z)^Teta(eta,x)-Aleft(eta(eta,x) ight) ight)end{align*} ]

    这里只展示(p(etavert Z,x))的近似分布(q(etavert lambda))求解,对于(p(Zvert eta, x))的近似分布(q(Zvert phi))也类似

    [q(etavert lambda)=h(lambda)expleft(T(eta)^Tlambda-A(lambda) ight) ]

    根据上一节的结果,ELOB是关于(lambda,\, phi)的函数

    [E_{q(Z,eta)}left[logleft(p(etavert Z,x) ight)logleft(p( Zvert x) ight)logleft(p(x) ight) ight]-\E_{q(Z,eta)}left[logleft(q(Z) ight)logleft(q(eta) ight) ight] ]

    固定(phi),上式中与(lambda)有关的项为

    [E_{q(Z,eta)}left[logleft(q(etavert Z,x) ight) ight]-E_{q(Z,eta)}left[logleft(q(eta) ight) ight] ]

    (logleft(q(etavert Z,x) ight))(logleft(q(eta) ight))定义带入,得到与(lambda)有关的项为

    [E_{q(eta)}left[T(eta) ight]^TE_{q(Z)}left[eta(Z,x) ight]-lambda^TE_{q(eta)}left[T(eta) ight]+A(lambda) ]

    利用(A'(eta)=E_{p(xvert eta)}left[T(x) ight])得到

    [egin{align*}L(lambda,phi) &= A'(lambda)^TE_{q(Z)}left[eta(Z,x) ight]-lambda^T A'(lambda) + A(lambda)\frac{partial L(lambda, phi)}{partial lambda}&=A''(lambda)^TE_{q(Z)}left[eta(Z,x) ight]-A'(lambda) - lambda^T A''(lambda) + A'(lambda)end{align*} ]

    因为(A''(lambda) eq0),因此

    [lambda=E_{q(Zvert phi)}left[eta(Z, x) ight] ]

    同理

    [phi = E_{q(etavert lambda)}left[eta(eta, x) ight] ]

    随机梯度变分推断

    不同于mean field,随机梯度变分推断将分布(q(zvert phi))看为关于(phi)的分布,通过对(phi)进行优化得到最优的分布。

    [egin{align*} abla_{phi}L&= abla_{phi}E_{q(zvert phi)}left[logleft(p(x,z) ight)-logleft(q(zvertphi) ight) ight]\&=E_{q(zvert phi)}left[ abla_{phi}left[log q(zvert phi ight]left(log p(x,z)-log q(zvert phi) ight) ight]end{align*} ]

    随后用蒙塔卡罗就可以近似出梯度,虽然直接使用蒙特卡洛会造成方差较大,可以通过重参数技巧进行减小方差(在VAE中也有用到)。重参数后的计算参见SGVI。

    参考

    1. WallE-Chang SGVI repository

    2. ws13685555932 machine learning derivative repository

    3. shuhuai008 SGVI

  • 相关阅读:
    LG P4161 [SCOI2009]游戏/LG P6280 [USACO20OPEN]Exercise G
    BZOJ3473 字符串
    BZOJ4545 DQS的trie
    LG P5212 SubString
    batj ,tmd用的都是什么技术。
    java社招面试题目
    python,go,java 的发展
    互联网 后端技术必备知识
    java语言三件套
    java spring全家桶
  • 原文地址:https://www.cnblogs.com/DemonHunter/p/12771044.html
Copyright © 2020-2023  润新知