重新认识ELBO,对“后验失效”(posterior collapse)问题的新理解,探索VAE,pPCA和贝叶斯模型世界

有时一件事做的不够好,不是准备的不够好,只是因为我们不够“聪明”。 —— David 9

神经网络一个有意思的地方是,它的信息容量总是比要处理的问题大,它的复杂度往往是“过剩”的。但是其他传统模型,包括今天聊的贝叶斯概率模型世界,复杂度就不能简单地用“加深层数”和“跳层连接”实现,这些模型,增加模型复杂度就要用其他“聪明”些的方式。

在贝叶斯模型世界(如VAEpPCA),所担心的不是神经网络的梯度消失”或“梯度爆炸,而是“后验失效”(posterior collapse)现象。本质上,任何模型(传统或非传统)都要从每个新样本“汲取信息”,更新自身。当信息无法汲取并用来更新模型,就会出现上述问题。

不同的是,GAN(或神经网络)信息传递是内部“混沌”的,VAE的信息传递在内部总要映射到一个假想的隐变量z的分布上(常见高斯分布)

VAE与GAN结构比较

即,GAN训练的是如何生成一个样本,而VAE训练的是如何生成一个分布(这个分布可以生成样本)。

VAE的变分推断中,直接计算数据x的相似度边际分布log p(x) 非常困难,但是可以用变分分布q(z|x)去估计后验(实际上变分分布就是VAE的编码器encoder),这就引出了VAE的目标函数ELBO,即the Evidence Lower Bound

log p(x)一定是大于ELBO的,那么让ELBO最大就是VAE的最终解了:ELBO的广泛使用使得“后验失效”(posterior collapse)现象的根源看似就是ELBO目标函数。 继续阅读重新认识ELBO,对“后验失效”(posterior collapse)问题的新理解,探索VAE,pPCA和贝叶斯模型世界

当变分推断(variational inference)遇上神经网络,贝叶斯深度学习以及Pytorch开源代码

如果人脑在执行任务时有特定模式,那么神经网络在增强学习中也应该有特定模式,而不是杂乱无章地更新 — David 9

我们在之前的文章中讨论过,Evolution Strategy遗传算法等传统算法都可以在深度增强学习中发挥作用。其实,人们早就在神经网络中植入各种传统机器学习的方法(包括L2正则法等等)。

在2015年google的论文中就提到结合变分推断(variational inference)启发式更新神经网络的内部参数:

来自:https://arxiv.org/pdf/1505.05424.pdf

其性能效果堪比dropout方法,并且在增强学习中有较好表现。

那么,贝叶斯深度学习或者说变分推断(variational inference)如何应用在神经网络呢?

理论上,对于一般的深度神经网络,Loss如下:

θ 是神经网络的内部参数集。xi, yi 即样本集中的一个样本。上式只是让训练损失最小。

即,要找到一个最好的 θ* ,让  Ln(θ) 最小。 继续阅读当变分推断(variational inference)遇上神经网络,贝叶斯深度学习以及Pytorch开源代码