变分推断中证据下界(L)对变分分布q(z_k)的导数推导疑问
嗨,这个问题其实是混淆了普通函数求导和泛函求导的区别,这在变分推断入门阶段是个非常常见的困惑,我来一步步给你拆解清楚:
首先要明确一个核心点:这里的$L_k$不是关于变量$z_k$的函数,而是关于函数$q(z_k)$的泛函——简单来说,泛函是“以函数为输入,输出一个数值”的映射,$L_k$通过对$z_k$积分,把整个分布$q(z_k)$转化成了一个具体的数值。所以我们要做的不是对变量$z_k$求导,而是对整个函数$q(z_k)$求泛函导数,有时候会简写为$\frac{dL}{dq(z_k)}$,就是你看到的式(23)里的写法。
接下来我们用泛函求导的规则来推导式(23):
我们把$L_k$拆成两项来看:
$$
L_k = \underbrace{\int q(z_k) E_{-k} \bigg[ \log p(z_k|z_{-k},x) \bigg] dz_k}{项A} - \underbrace{\int q(z_k) \log q(z_k) dz_k}{项B}
$$
对项A求泛函导数
项A的被积函数是$q(z_k) \cdot C(z_k)$,其中$C(z_k) = E_{-k}[\log p(z_k|z_{-k},x)]$——注意这里$C(z_k)$只和$z_k$有关,和$q(z_k)$无关(因为期望是对$z_{-k}$求的,已经把$z_{-k}$积分掉了)。
根据泛函求导的基本规则(对于泛函$\int f(q(z), z) dz$,当$f$里没有$q(z)$的导数项时,泛函导数就是$\frac{\partial f}{\partial q(z)}$),对$q(z_k)$求导后,项A的导数就是$C(z_k)$,也就是:
$$
\frac{\delta}{\delta q(z_k)} \text{项A} = E_{-k} \bigg[ \log p(z_k|z_{-k},x) \bigg]
$$
对项B求泛函导数
项B的被积函数是$-q(z_k) \log q(z_k)$,我们先对$q(z_k)$求普通的偏导:
$$
\frac{\partial}{\partial q} \left( -q \log q \right) = -(\log q + 1)
$$
这里用到了导数公式$\frac{d}{dq}(q \log q) = \log q + 1$。再套泛函求导的规则,项B的泛函导数就是这个偏导结果,即:
$$
\frac{\delta}{\delta q(z_k)} \text{项B} = -(\log q(z_k) + 1)
$$
合并两项得到式(23)
我们的目标是找到让$L_k$取极值的$q(z_k)$,所以令整个泛函导数等于0:
$$
\frac{\delta L_k}{\delta q(z_k)} = \text{项A导数} + \text{项B导数} = 0
$$
代入上面的结果,就得到了:
$$
E_{-k} \bigg[ \log p(z_k|z_{-k},x) \bigg] - \log q(z_k) - 1 = 0
$$
这就是你看到的式(23)啦。
最后补充一句:这里的泛函导数$\frac{\delta L}{\delta q(z_k)}$的含义是,当$q(z_k)$在某个特定的$z_k$点上的取值有微小变化时,$L_k$会怎么变化。令它为0,就是在每个$z_k$点上都找到让$L_k$最大的$q(z_k)$取值,最终就能解出最优的$q(z_k)$分布(式(24))。
备注:内容来源于stack exchange,提问作者avocado

