概率编程与“传统”机器学习

机器算法验证 机器学习 贝叶斯 马尔可夫链蒙特卡罗 pymc 概率规划
2022-03-22 06:51:38

我正在浏览 Pymc 的 github 存储库并找到了这个笔记本:

变分推理:贝叶斯神经网络

作者赞扬了贝叶斯/概率编程的优点,但接着说:

不幸的是,当涉及到分类或(非线性)回归等传统 ML 问题时,概率编程通常(在准确性和可扩展性方面)次于更多算法方法,如集成学习(例如随机森林或梯度增强回归树) .

有人可以解释一下:

  1. 如果这个陈述通常是正确的
  2. 为什么这个说法是正确的
2个回答
  1. 在我作为专业数据科学家的个人经验中,这通常是正确的。

  2. 这在我个人的经验中是正确的,因为这是我大部分时间观察到的。如果你问为什么会这样,有几个原因:

  3. 如今,许多传统的 ML 算法都是“现成的”,包括复杂的集成方法、神经网络等。概率方法仍然经常需要定制解决方案,要么用 Stan 等 DSL 编写,要么直接用通用编程语言编写。

  4. 现在进入数据科学领域的许多人都来自工程和自然科学背景,他们具有很强的数学和“算法”技能,但在概率建模方面没有太多经验或直觉。只是不在他们的雷达上,而且他们对实现它们所需的方法和软件并不满意。

  5. 从概率模型做出“硬”预测涉及挥手或正式决策理论。人工智能研究人员和高薪统计顾问知道这一点,他们欣然接受。但是对于普通的数据科学家来说,转向你的经理并开始谈论分布和概率并不是那么容易。业务(或您正在构建的自动化系统)只需要一个该死的答案。当你不再对概率和事物模棱两可时,生活会变得容易得多,在这种情况下,你不妨一开始就不要理会它们。

  6. 概率建模通常最终计算量非常大,尤其是贝叶斯建模,其中封闭形式的解决方案是一种罕见的奢侈品,尤其是在“大”数据集上。我会毫不犹豫地在包含 1000 万行的数据集上运行 XGBoost。我什至不会考虑在包含 1000 万行的数据集上运行 Stan 模型。

鉴于上述所有缺点,数据科学家或数据科学家小组可以使用概率较小的机器学习技术更快地迭代,并获得“足够好”的结果。

编辑:正如评论中所指出的,#1 和#2 都可能是因为概率编程方法尚未被证明在现实世界问题上具有淘汰性能。CNN 之所以流行,是因为它们颠覆了现有技术。

编辑 2:似乎概率在时间序列建模中越来越流行,其中深度学习似乎不如其他领域有效。

编辑 3(2020 年 12 月):概率编程现在在各个领域变得越来越流行,因为概率编程语言越来越好,求解器越来越好。

为了对抗 ShadowTalker 上面关于概率 ML 还没有完全满足的观点,这绝对是正确的,但是由于变分推理绝对仍然是前沿研究,因此在可扩展性和复杂性方面已经有了一些非常令人兴奋的进步。我认为这仍然是一个有趣的问题,如果概率 ML 可以提供与传统方法相同的性能,我们是否会更喜欢它而不是那些方法?在很多方面,在 PML 估计的后验中传达了更多信息。

不管上述问题的答案如何,我认为这两组方法在未来几年将生活在不同的领域。我认为传统方法可能会在一定程度上保留性能优势,但当我们真正担心问题中的潜在变量(未知数)时,PML 将是适合这项工作的机器。