变分推断(variational inference)
/ vair-ee-AY-shun-ul IN-fur-uns /
变分推断,是当精确答案遥不可及时,为贝叶斯问题求得一个近似答案的办法。真正的后验——看过数据之后那一整片信念的地貌——往往是一个你算不出来的纠缠形状。变分推断不就此放弃,而是从一族你能驾驭的、性状良好的简单形状里(比方说一条光滑的钟形曲线)挑一个,再调它的设定,直到它尽可能紧贴住真正的后验。它把一个棘手的积分问题,变成了一个优化问题:不是「把一切加总起来」,而是「拨动旋钮去拟合」。
衡量「尽可能贴近」的窍门,是一个量,用来给「简单替身离真相有多远」打分,算法则把旋钮往下坡滑动,以缩小那道缝隙。正因为优化是计算机能又快又大规模去做的事,变分推断能在海量数据上拟合极其庞大的模型,而采样方法在那里只会爬行。这份速度是它最大的卖点,也是它何以坐镇于变分自编码器这类现代工具核心的原因。
它为何重要,老实讲:变分推断是用精确性换速度,而你该清楚自己换的是什么。由于它把答案硬塞进一个更简单的族里,它可能错失真正的形状——最值得一提的是,流行的那些版本往往过度自信,报出的后验偏窄,从而低估了你真正的不确定程度。它也只找到一个局部的最佳拟合,而非有保证的全局最优。当你需要一个又快、又能扩展的近似时,它是一件极佳的实用工具——前提是你别把它那整洁、自信的输出,读作精确的真相。
设想真正的后验,是两个参数上方一团香蕉状的涂抹。精确计算毫无指望。变分推断用一个简单的圆形团块(一个高斯)去近似它,挪动并缩放这个团块,让它尽量与香蕉重叠。团块能舒舒服服地坐在香蕉肥厚的中段,可它是圆的,没法顺着弯曲伸进两端的尖角——于是它低估了散布的范围。
一个简单形状无法完美描摹一个复杂的后验,这正是变分推断常常低估不确定性的原因。
最重要的提醒:常见形式的变分推断往往过度自信,产出的后验过紧。如果你用了它,又把它给出的不确定性当成精确的来引用,你就会系统性地宣称自己比数据所支持的更有把握。