返回介绍

FCN(4) - Mean Field Variational Inference

发布于 2025-02-25 23:05:00 字数 2852 浏览 0 评论 0 收藏 0

上一篇我们介绍了 DenseCRF 的形式,我们已经了解了 denseCRF,下面我们花一点时间了解下 denseCRF 的求解方式 - Mean Field Variational Inference

Variational Inference 入坑

前面我们在介绍 Variational autoencoder 的时候刚刚提到过这种求解复杂模型的方法,不过在 VAE 那里我们只是借着它的坑做了一个简单的展开,而且 VAE 的计算和 Variational Inference 的关系并不算特别密切。而这一次我们就要用心了,因为 -

上面的 pairwise 特征确实有点多……

另外,在前面一篇文章中我们说过,对于无向图模型,我们要先求出模型整体的联合变量,才能再做其他的打算。也就是说我们要同时把所有的像素的类别解出来,这个解空间实在有点大,如果我们想用暴力的方法求解,恐怕要吃苦头 - 比方说 MCMC。

于是我们这里采用 Mean field variational approximation 的方法求解。那么什么是 Mean field 呢?其实我对这个高深的物理理论也不是特别了解(说实话,我读的本科专业没有大学物理课,所以物理水平基本停留在高中水平,勿喷……),但是我们可以用一个稍微形象的方式来理解。

通过前面的学习,我们知道无向图模型中的一些类似概率的表示可以用 factor 或者 feature 表示。由于我们每一对像素之间都有一条边相连,如果我们把每一条边用一个 factor 表示出来,那么这张无向图上就会布满 factor。我们假设一个像素的 energy 发生了变化,那么所有与它相连的像素点 - 当然就是剩下的所有像素点都有可能随着这个像素点发生变化。

于是乎,可怕的蝴蝶效应就开始了。所有的像素点中,可能有些像素点的 energy 伴随着发生了变化,那么所有连着它们的像素点 - 抱歉,这回又是所有像素点,会跟着它们继续发生变动,于是这个过程会持续不断地进行,直到它们都玩累了,玩不动了,enregy 保持不变了,这个游戏才算结束。

下面这个问题就抛给我们了 - 我们建立的模型具有非常强大的建模能力,但是也具有如此有尿性的能量传播特性,如果让我们自己去把这些 energy 传导的过程模拟出来,感觉是要死人的……没错是要死人的……

我们可以把所有的连接两个像素点的 factor 想象成一根弹簧,把像素点想象成可以有一定限度位移的小球。当有一个小球稍微动了一下,所有连着它的弹簧会发生震动,那么弹簧另一边的小球也会跟着动,于是顺着弹簧,所有球都被传导起来,大家一起动起来……好吧,我是希望用一个更容易想象出来、有画面感的例子让大家感受一下这个复杂模型的恐怖性。

下面我们就要祭出我们的 Mean field 大招了。我们的 Mean field approximation 帮助我们把这个问题进行了简化,问题变成了这个样子 -

我们要将每一个小球受到别的小球的弹簧力一次性计算完。

这话说得实在有些抽象,我们用更加详细的语言表达一下。我们刚才描述了那个混乱的力传导的场景,下面由上帝出马来调节这些力,上帝喊口号,所有小球听从指挥,准备!

第一步,小球如果你想动,你就动一下。注意!你的动作先别传递到弹簧上,上帝我这有一个小本本,我先记下来,一会儿我会按本子上记录的计量用我的魔法施加到这些弹簧上的。放心,你的力会原封不动的送上去,不会打折扣的。

第二步,上帝施展分解大法,把整个模型拆解开来,有多少个小球就有多少个子模型。在每一个子模型里,只有一个小球是主角,所有和这个小球相连的弹簧可以保留,所有和这个小球无关的弹簧全部被上帝拆掉。

第三步,上帝拿出刚才的小本本,把每个球的力施加到每一个子模型的弹簧上。听上去好像要做的工作很多,不过谁让他是上帝呢,能者多劳嘛。

第四步,不用说这个时候,每个子模型的主角 - 那个集万千弹簧于一身的小球受到了成吨的力,OK,尽情地享受弹簧传来的力道吧!

第五步,这些主角在享受完弹簧传来的力道,心想来而不往非礼也,我也得传点力回去啊,于是准备扭扭屁股动动身子传点力回去的。这时候上帝突然出现,放出大招,这些主角竟然无法把自己受到的力传回去。说好的雨露均沾呢,我得把力传回去啊,上帝你不能管得太多啊。不过上帝知道,在它们的另一个平行世界 - 也就是别的子模型中,自己最初移动产生的力也已经传递给别的“主角”了。

第六步,上帝施展大法,将所有的子模型合成原来的模型。这样我们的一次力的传递过程就结束了。不过瘾,还想再来一波?好,那我们回到第一步……

我们花了这么多笔墨,将这个过程大概讲了一遍,如果回来在看前面那句话 -

我们要将每一个小球受到别的小球的弹簧力一次性计算完。

没错,每一次每个小球给别的小球传的力一次性传完,别的小球的力也一次性接受完。那些二次传导的事情再我们的 Mean Field 中就没有了。大家瞬间感到了一丝轻松,听上去这个模型有解出来的希望了啊。

好了,那么 Variational Inference 的目标,就是用这个简化后的这个模型尽可能地靠近原来那个复杂的模型。如果两个模型能完全一样,那就太好了,我们有简单的模型来手,还要复杂的模型干啥?赶紧扔了。

那么下面的目标就是定义一个目标函数,目标是让这个简单模型和复杂模型靠近。前面我们在介绍 VAE 的时候曾经提到过 - 没错,就是 KL 散度。下面我们同样用 KL 散度来表示这个目标函数。

时间不早了,下一回我们来看看这个算法的真面目。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文