贝叶斯深度学习:神经网络中的不确定性量化2025 年 6 月 23 日 | 阅读 10 分钟 引言神经网络已成为人工智能和机器学习中众多任务(从图像识别到自然语言处理)的极其强大的引擎。然而,典型的神经网络通常无法为其预测的不确定性赋予数值。这就是贝叶斯深度学习发挥作用的地方。通过将贝叶斯方法与深度学习相结合,我们能够开发出不仅能提供预测,还能预测相关置信度的模型。 下面将解释贝叶斯深度学习的概念及其必要性,例如如何测量网络中的不确定性以及如何为此目的实现它。 什么是贝叶斯深度学习?贝叶斯深度学习是一种将贝叶斯统计与深度学习相结合的方法。传统的神经网络为预测提供点估计,这意味着它们为输出提供一个单一的最佳猜测。相比之下,贝叶斯深度学习提供了一种可能的输出概率分布,使我们能够量化不确定性。 关键概念
为什么不确定性量化很重要?量化不确定性是构建一致且安全的机器学习框架的基石。它能指示模型预测的信任度,从而显著影响实际应用中的选择。我们将在随后的评论中阐明量化不确定性的关键理由。 1. 风险管理 在涉及高风险情况的应用中,如医疗、自动驾驶汽车和金融,风险管理变得更加重要。这些应用中的误判风险很高,可能导致不良后果。误诊会导致医疗中错误的治疗,而自动驾驶汽车中的错误选择会导致事故。表达不确定性有助于模型不仅进行预测,还能指示它们对这些预测的置信水平。 2. 模型可解释性 传统神经网络面临的挑战之一是它们是“黑匣子”,很难说模型是如何进行预测的。通过提供一些不确定性指示,贝叶斯深度学习使模型的预测更具可解释性和可理解性。例如,如果模型以低不确定性预测某事,则反映了对预测的高度置信,因此使其更值得信赖。 3. 主动学习 主动学习是一种范式,模型主动选择最有用的点进行标记,以用更少的标记样本提高其性能。不确定性量化在实现这一目标中起着核心作用。通过检测模型最不确定的点,主动学习算法可以优先标记它们,因为它们最有可能产生最有用的信息来增强模型。 4. 鲁棒性 定量不确定性模型对噪声数据和对抗性攻击更具鲁棒性。对抗性攻击涉及输入数据的细微变化,这些变化大部分时间都难以察觉,可能误导模型产生不正确的预测。不确定性模型可以通过识别导致高不确定性的输入来检测此类异常,从而识别潜在的对抗性攻击。 5. 更好的决策 不确定性测量还通过提供更详细的模型预测信息来更好地指导决策。决策通常不像二分法那样,而是权衡替代方案之间的利弊。例如,在交易市场中,可能会给出未来股价的预测,其中涉及一定程度的不确定性。这些信息可以导致交易者在高不确定性条件下以更谨慎的决策应对情况。 6. 符合法规 在大多数行业中,监管机构要求决策模型不仅要进行预测,还要估计预测的不确定性或置信度。例如,在制药行业,FDA 等监管机构要求药物开发中应用的预测模型提供不确定性估计,以便验证预测的安全性和可靠性。 7. 更好的模型校准 模型校准是使估计的概率与结果匹配。一个经过校准的模型将是,例如,当它给出事件发生 70% 的机会时,事件实际上有 70% 的时间发生。不确定性量化通过更准确的概率估计有助于实现改进的模型校准。 贝叶斯神经网络贝叶斯神经网络(BNN)是融合了贝叶斯推断的神经网络。BNN 不使用固定权重,而是将权重视为具有先验分布的随机变量。目标是根据数据找到权重的后验分布。 关键组件
挑战
贝叶斯神经网络中的变分推断变分推断是近似 BNN 中后验分布的常用方法。其思想是用更简单的分布(称为变分分布)近似真实后验,并使用 Kullback-Leibler (KL) 散度最小化两者之间的差异。 步骤:
优点
贝叶斯神经网络中的马尔可夫链蒙特卡罗 (MCMC)MCMC 是另一种近似后验分布的方法。它涉及使用马尔可夫链从后验分布中生成样本。 步骤:
优点
缺点
Python 中的实际实现 让我们通过一个使用 Pyro(一个基于 PyTorch 构建的概率编程库)的贝叶斯深度学习的实际实现。 1. 安装依赖项 2. 定义贝叶斯神经网络 说明 该代码使用 Pyro(一个 PyTorch 中的概率编程库)实现了一个贝叶斯神经网络(BNN)。BNN 通过将神经网络的权重建模为随机变量并在其上放置先验分布来量化预测中的不确定性。BayesianNN 类主要包含三个方法。model 方法定义了概率模型,即权重和偏差的先验分布,并定义了数据是如何生成的。guide 方法定义了用于近似权重和偏差的后验分布的变分分布。最后,infer 方法执行随机变分推断(SVI)以优化变分参数并近似后验分布。 在基于模型的方法中,指定了神经网络层权重和偏差的先验。先验通常指定为简单的高斯分布。通过使用 pyro.random_module 函数,神经网络被提升为概率模块,这使其能够从先验分布中采样。上下文管理器 pyro.plate 用于捕获有条件地依赖于模型参数的数据点。然后,从基于模型预测的正态分布中采样观测数据,并具有一个小的固定标准差,以包含观测噪声。 该方法公布了权重和偏差的变分分布,这些分布用于近似真实的后验分布。优化参数被视为变分分布的均值和标准差。这些参数使用 pyro.param 函数注册到 Pyro 的参数存储中。infer 方法使用 SVI 类执行随机变分推断,该类接受模型、指导、优化器(在我们的示例中是 Adam)和损失函数(Trace_ELBO)作为参数。优化旨在更新变分参数,以最大化证据下界(ELBO),这是一个用于优化数据边际似然的替代目标。训练循环还在每 100 次迭代后打印损失以跟踪优化过程。 可视化不确定性模型训练完成后,我们可以通过从后验分布中采样来可视化预测中的不确定性。 预测函数旨在从贝叶斯神经网络(BNN)进行预测,并估计不确定性。它使用指导方法从网络权重的后验分布中采样多个模型。对于每个样本,该函数预测输入数据 x 并返回一组预测(y_preds)。这些预测存储在一个 NumPy 数组中,其中每一行对应一个来自后验的样本,每一列对应 x 中的一个点。这通过显示预测如何随着从后验中采样的不同权重配置而变化来编码模型的不确定性。 生成预测后,代码通过绘制每个测试点的预测来可视化不确定性。它使用 matplotlib 绘制一个图,其中每条线代表每个测试点对每个样本的预测。它被设置为透明线(alpha=0.1),因此可以更直观地观察预测的散布,其中越靠近中心意味着不确定性越小,而分布越广意味着不确定性越大。这种可视化是查看模型对预测的置信度的自然方式,这是贝叶斯深度学习的优势之一。 未来方向可扩展性:用于大型神经网络的更具可扩展性的贝叶斯推断方法 可扩展性可以说是贝叶斯深度学习中最关键的问题。当前的贝叶斯方法,如马尔可夫链蒙特卡罗(MCMC),甚至一些变分推断方法,通常在计算上是不可行的,尤其是在应用于具有数百万参数的大规模神经网络时。随着深度学习模型规模和复杂性的不断扩大,有必要处理更具可扩展性的推断类型。 与其他模型的集成:贝叶斯深度学习与其他机器学习范式的集成 贝叶斯深度学习通过与其他机器学习范式(如强化学习(RL)和迁移学习)的结合得到进一步提升。在处理强化学习时,不确定性量化有可能通过对状态转换和奖励估计的置信度来增强策略优化和探索策略。例如,贝叶斯强化学习算法能够优先考虑不确定性较高的动作,从而改善利用-探索权衡。 实时应用:将贝叶斯深度学习应用于动态决策的实时系统 自动驾驶、机器人和金融交易等实时应用需要能够实时决策和行动并适应动态情况的模型。在这些系统中采用贝叶斯深度学习可以提供实时不确定性估计,从而实现更精确和动态的决策。例如,在自动驾驶汽车中,贝叶斯神经网络能够估计对世界感知的模糊度,从而使车辆在模型不确定障碍物或道路状况时保持谨慎。 结论贝叶斯深度学习提供了一种可靠的方法来估计神经网络中的不确定性,这使其在需要了解预测置信水平的领域中具有无与伦比的价值。 通过将贝叶斯理论与深度学习相结合,我们可以创建不仅性能更好,而且能对其自身可信度提供有用见解的模型。随着这项工作的不断进步,我们可以预期贝叶斯深度学习将对创建稳健且易于理解的人工智能系统变得越来越重要。 下一主题使用机器学习进行定向广告 |
我们请求您订阅我们的新闻通讯以获取最新更新。