蒙特卡罗方法 - 不同的峰值之间的混合挑战篇

序言

蒙特卡罗方法,也称为统计模拟法或统计试验法,是一种以概率统计理论为基础的数值模拟方法。自 20 20 20世纪 40 40 40年代中期提出以来,它因能灵活处理复杂计算问题而广泛应用于多个领域,如金融工程学、宏观经济学和计算物理学等。该方法的核心思想是通过构造概率模型或随机过程,并利用随机数进行模拟试验,以求解问题的统计特性或期望值。然而,在应用蒙特卡罗方法时,特别是在处理具有不同峰值的复杂问题时,常常面临混合挑战。

不同的峰值之间的混合挑战

  • 使用 MCMC \text{MCMC} MCMC方法的主要难点在于他们经常混合得很糟糕。

    • 理想情况下,从设计好的马尔可夫链中采出的连续样本之间是完全独立的,而且在 x \boldsymbol{x} x 空间中,马尔可夫链以正比于不同区域对应概率的概率访问这些区域。
    • 然而, MCMC \text{MCMC} MCMC方法采出的样本可能会具有很强的相关性,尤其是在高维的情况下。
    • 我们把这种现象称为慢混合甚至混合失败。
    • 具有缓慢混合的 MCMC \text{MCMC} MCMC方法可以被视为对能量函数无意地执行类似于带噪声的梯度下降的操作,或者说等价于相对于链的状态(随机变量被采样)依据概率进行等效的噪声爬坡。
    • (在马尔可夫链的状态空间中)从 x ( t − 1 ) \boldsymbol{x}^{(t−1)} x(t1) x ( t ) \boldsymbol{x}^{(t)} x(t) 该链倾向于选取很小的步长,其中能量 E ( x ( t ) ) E(\boldsymbol{x}^{(t)}) E(x(t)) 通常低于或者近似等于能量 E ( x ( t − 1 ) ) E(\boldsymbol{x}^{(t−1)}) E(x(t1)),倾向于向较低能量的区域移动。
    • 当从可能性较小的状态(比来自 p ( x ) p(\boldsymbol{x}) p(x) 的典型样本拥有更高的能量)开始时,链趋向于逐渐减少状态的能量,并且仅仅偶尔移动到另一个峰值。
    • 一旦该链已经找到低能量的区域(例如,如果变量是图像中的像素,则低能量的区域可以是同一对象所对应图像的一个相连的流形),我们称之为峰值,链将倾向于围绕着这个峰值游走(以某一种形式的随机游走)。
    • 它时不时会走出该峰值,但是结果通常会返回该峰值或者(如果找到一条离开的路线)移向另一个峰值。
    • 问题是对于很多有趣的分布来说成功的离开路线很少,所以马尔可夫链将在一个峰值附近抽取远超过需求的样本。
  • 当考虑到 Gibbs \text{Gibbs} Gibbs 采样算法(见蒙特卡罗方法 - Gibbs采样篇)时,这种现象格外明显。

    • 在这种情况下,我们考虑在一定步数内从一个峰值移动到一个临近峰值的概率。决定这个概率的是两个峰值之间的 ‘‘能量障碍’’ 的形状。
    • 隔着一个巨大 ‘‘能量障碍” (低概率的区域)的两个峰值之间的转移概率是(随着能量障碍的高度)指数下降的,如在图例1中展示的一样。
    • 当目标分布有很多峰值并且以很高的概率被低概率区域所分割,尤其当 Gibbs \text{Gibbs} Gibbs 采样的每一步都只是更新变量的一小部分而这一小部分变量又严重依赖其他的变量时,这会导致严重的问题。
  • 举一个简单的例子,考虑两个变量 a \text{a} a b \text{b} b 的基于能量的模型,这两个变量都是二元的,取值 + 1 +1 +1 或者 − 1 −1 1

    • 如果对某个较大的正数 w w w E ( a , b ) = − w ab E(\text{a}, \text{b}) = −w\text{ab} E(a,b)=wab,那么这个模型传达了一个强烈的信息, a \text{a} a b \text{b} b 有相同的符号。
    • a = 1 \text{a} = 1 a=1 时用 Gibbs \text{Gibbs} Gibbs 采样更新 b \text{b} b
    • 给定 b \text{b} b 时的条件分布满足 p ( b = 1 ∣ a = 1 ) = σ ( w ) p(\text{b} = 1 \mid \text{a} = 1) = \sigma(w) p(b=1a=1)=σ(w)
    • 如果 w w w 的值很大, sigmoid \text{sigmoid} sigmoid函数趋近于饱和,那么 b \text{b} b 取到 1 1 1 的概率趋近于 1 1 1
    • 相同的道理,如果 a = − 1 \text{a} = −1 a=1,那么 b \text{b} b 取到 − 1 −1 1 的概率也趋于 1 1 1
    • 根据模型 p model ( a , b ) p_{\text{model}}(\text{a}, \text{b}) pmodel(a,b),两个变量取一样的符号的概率几乎相等。
    • 根据 p model ( a ∣ b ) p_{\text{model}}(\text{a}\mid \text{b}) pmodel(ab),两个变量应该有相同的符号。
    • 这也意味着 Gibbs \text{Gibbs} Gibbs采样很难会改变这些变量的符号。
  • 在实际问题中,这种挑战更加地艰巨因为在实际问题中我们不能仅仅关注在两个峰值之间的转移而是需要关注在多个峰值之间地转移。如果由于峰值之间混合困难导致几个这样的转移是很艰难的,那么得到一些可靠的覆盖大部分峰值的样本集合的代价是很昂贵的,同时马尔可夫链收敛到它的静态分布的过程也会非常缓慢。

  • 通过寻找一些高度依赖变量的组以及分块同时更新块(组)中的变量,这个问题有时候可以被解决的。然而不幸的是,当依赖关系很复杂的时候,从这些组中采样的过程从计算角度上说是难以处理的。归根结底, 马尔可夫链最初就是被提出来解决这个问题,即从大量变量中采样的问题。

  • 含有潜变量的模型中定义了一个联合分布 p model ( x , h ) p_{\text{model}}(\boldsymbol{x}, \boldsymbol{h}) pmodel(x,h),我们经常通过交替地从 p model ( x ∣ h ) p_{\text{model}}(\boldsymbol{x} \mid \boldsymbol{h}) pmodel(xh) p model ( h ∣ x ) p_{\text{model}}(\boldsymbol{h} \mid \boldsymbol{x}) pmodel(hx) 中采样来达到抽 x \boldsymbol{x} x 的目的。

    • 从快速混合的角度上说,我们更希望 p model ( h ∣ x ) p_{\text{model}}(\boldsymbol{h} \mid \boldsymbol{x}) pmodel(hx) 有很大的熵。
    • 然而,从学习一个 h \boldsymbol{h} h 的有用表示的角度上考虑,我们还是希望 h \boldsymbol{h} h 能够包含 x \boldsymbol{x} x 的足够信息从而能够较完整地重构它,这意味 h \boldsymbol{h} h x \boldsymbol{x} x有着非常高的互信息。
    • 这两个目标是相互矛盾的。
    • 我们经常学习到能够将 x \boldsymbol{x} x 精确地编码为 h \boldsymbol{h} h 的生成模型,但是无法很好混合。
    • 这种情况在玻尔兹曼机中经常出现,一个玻尔兹曼机学到的分布越尖锐,该分布的马尔可夫链采样越难混合得好。
    • 这个问题在图例2中有所描述。
  • 当感兴趣的分布对于每个类具有单独的流形结构时,所有这些问题可以使 MCMC \text{MCMC} MCMC方法不那么有用:分布集中在许多峰值周围,并且这些模式由大量高能量区域分割。我们在许多分类问题中遇到的是这种类型的分布,由于峰值之间混合缓慢,它将使得 MCMC \text{MCMC} MCMC方法非常缓慢地收敛。

不同峰值之间通过回火来混合

深度也许会有助于混合

  • 当我们从潜变量模型 p ( h , x ) p(\boldsymbol{h},\boldsymbol{x}) p(h,x)中采样的时候,我们可以发现如果 p ( h ∣ x ) p(\boldsymbol{h} \mid \boldsymbol{x}) p(hx) x \boldsymbol{x} x 编码得非常好,那么从 p ( x ∣ h ) p(\boldsymbol{x} \mid \boldsymbol{h}) p(xh) 中采样的时候,并不会太大地改变 x \boldsymbol{x} x,那么混合结果会很糟糕。

    • 解决这个问题的一种方法是使得 h \boldsymbol{h} h 成为一种将 x \boldsymbol{x} x 编码为 h \boldsymbol{h} h 的深度表达,从而使得马尔可夫链在 h \boldsymbol{h} h 空间中更容易混合。
    • 在许多表示学习算法诸如自编码器和 RBM \text{RBM} RBM中, h \boldsymbol{h} h 的边缘分布相比于关于 x \boldsymbol{x} x 的原始数据分布,通常表现为更加均匀、更趋近于单峰值。
    • 值得指出的是,这些方法往往利用所有可用的表达空间并尽量减小重构误差。
    • 因为当训练集上的不同样本之间在 h \boldsymbol{h} h空间能够被非常容易地区分时,我们也会很容易地最小化重构误差。
    • Bengio et al. (2013a) \text{Bengio et al. (2013a)} Bengio et al. (2013a) 观察到这样的现象,堆叠越深的正则化自编码器或者 RBM \text{RBM} RBM,顶端 h \boldsymbol{h} h空间的边缘分布越趋向于均匀和发散,而且不同峰值(比如说实验中的类别)所对应区域之间的间距也会越模糊。
    • 在高层次的空间训练 RBM \text{RBM} RBM使得 Gibbs \text{Gibbs} Gibbs 采样混合得更快。然而,如何利用这种观察到的现象来辅助训练深度生成模型或者从中采样仍然有待探索。
  • 尽管存在混合的难点,蒙特卡罗技巧仍然是一个有用的也是最好的可用工具。事实上,在遇到难以处理的无向模型中的配分函数时, 蒙特卡罗方法仍然是最基础的工具,这将在后续篇章中详细阐述。


  • 图例1:对于三种分布使用 Gibbs \text{Gibbs} Gibbs 采样所产生的路径,所有的分布马尔可夫链初始值都设为峰值。
    • 对于三种分布使用 Gibbs \text{Gibbs} Gibbs 采样所产生的路径,所有的分布马尔可夫链初始值都设为峰值
      在这里插入图片描述

    • 说明:

      • 左图:
        • 一个带有两个独立变量的多维正态分布。
        • 由于变量之间是相互独立的, Gibbs \text{Gibbs} Gibbs 采样混合得很好。
      • 中图:
        • 变量之间存在高度相关性的一个多维正态分布。
        • 变量之间的相关性使得马尔可夫链很难混合。
        • 因为每一个变量的更新需要相对其他变量求条件分布,相关性减慢了马尔可夫链远离初始点的速度。
      • 右图:
        • 峰值之间间距很大且不在轴上对齐的混合高斯分布。
        • Gibbs \text{Gibbs} Gibbs 采样混合得很慢,因为每次更新仅仅一个变量很难跨越不同的峰值。

  • 图例2:深度概率模型中一个混合缓慢问题的例证。每张图都是按照从左到右从上到下的顺序的。
    • 深度概率模型中一个混合缓慢问题的例证。每张图都是按照从左到右从上到下的顺序的
      在这里插入图片描述

    • 说明:

      • 左图:
        • Gibbs \text{Gibbs} Gibbs 采样从 MNIST \text{MNIST} MNIST 数据集训练成的深度玻尔兹曼机中采出的连续样本。
        • 这些连续的样本之间非常相似。
        • 由于 Gibbs \text{Gibbs} Gibbs 采样作用于一个深度图模型,相似度更多地是基于语义而非原始视觉特征。
        • 但是对于吉布斯链来说从分布的一个峰值转移到另一个仍然是很困难的,比如说改变数字。
      • 右图:
        • 从生成式对抗网络中抽出的连续原始样本。
        • 因为原始采样生成的样本之间互相独立,所以不存在混合问题。
        • 译者注:此处左右好像搞反了。

总结

  • 蒙特卡罗方法在处理具有不同峰值的复杂问题时,其主要挑战在于马尔可夫链的混合效果不理想。马尔可夫链蒙特卡罗( MCMC \text{MCMC} MCMC)方法是蒙特卡罗方法中的一种重要手段,它通过构建马尔可夫链来模拟随机过程,并从链中采样以获取所需统计特性。然而,在实际应用中,马尔可夫链可能会因强相关性而导致慢混合,甚至混合失败,尤其是在高维空间中。这种现象表现为链中的连续样本之间具有很强的相关性,难以充分遍历整个样本空间,从而影响了蒙特卡罗方法的效率和准确性。

  • 为解决这一问题,研究者们提出了多种策略,如通过调整温度参数β的回火转移策略来改善不同峰值间的混合效果。这些策略旨在提高马尔可夫链的混合速度,使其能够更有效地遍历样本空间,从而提高蒙特卡罗方法在处理复杂问题时的效率和准确性。尽管面临挑战,但蒙特卡罗方法仍因其强大的适应能力和广泛的应用前景而受到广泛关注和研究。

往期内容回顾

蒙特卡罗方法 - Gibbs采样篇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/889777.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Transformer 模型和 BERT 模型:概述

语言模型发展历程Language modeling history 多年来,语言建模一直在不断发展。过去十年的最新突破,包括使用神经网络来表示文本,比如2013年的Word2vec和N元语法,2014年开发的序列到序列模型,如RNN和LSTM帮助提高机器学…

(C语言贪吃蛇)16.贪吃蛇食物位置随机(完结撒花)

目录 前言 修改方向 修改内容 效果展示 两个新的问题🙋 1.问题1 2.问题2 代码如下: 前言 我们上一节实现了贪吃蛇吃食物身体节点变长,但是食物的刷新位置不是随机的,并且初始化几次后食物就刷不见了,本节我们就来…

[AWS云]kafka调用和创建

背景:因为因为公司的项目需要使用AWS的kafka,但是在创建和使用过程中都遇到了一些报错和麻烦,毕竟老外的东西,和阿里云、华为使用起来还是不一样。 一、创建(创建的配置过程就略了,就是配置一下可用区、型号&#xff0…

RNN心脏病预测

本文为为🔗365天深度学习训练营内部文章 原作者:K同学啊 一 前期准备 1.数据导入 import pandas as pd from keras.optimizers import Adam from matplotlib import pyplot as plt from sklearn.model_selection import train_test_split from sklearn.p…

Flink job的提交流程

在Flink中,作业(Job)的提交流程是一个复杂的过程,涉及多个组件和模块,包括作业的编译、优化、序列化、任务分发、任务调度、资源分配等。Flink通过分布式架构来管理作业的生命周期,确保作业在不同节点上以高…

std::future::then的概念和使用方法

std::future::then是 C 中用于异步操作的一种机制,它允许在一个异步任务完成后,接着执行另一个操作(即延续操作)。以下是关于 std::future::then 的概念和使用方法: 1. 概念: std::future::then 的主要目…

python 边际分布图

import seaborn as snspenguins sns.load_dataset("penguins") colors {"Gentoo": #AE5259, "Adelie": #CF992C, "Chinstrap": #6B9DAA}# 分类散点图 sns.jointplot(datapenguins, x"bill_length_mm", y"bill_depth_…

MyBatisPlus分页查询

一、导入依赖 <!-- MyBatis-plus的依赖 --> <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.4</version> </dependency><!-- mysql的依赖 --> &l…

CocosCreator 快速部署 TON 游戏:Web2 游戏如何使用 Ton支付

在本篇文章中&#xff0c;我们将继续探讨如何使用 Cocos Creator 开发 Telegram 游戏&#xff0c;重点介绍如何集成 TON 支付功能。通过这一教程&#xff0c;开发者将学会如何在游戏中接入 TON Connect&#xff0c;实现钱包连接、支付以及支付后的校验流程&#xff0c;最终为 W…

贴吧软件怎么切换ip

在网络使用中&#xff0c;有时我们需要切换IP地址来满足特定的需求&#xff0c;比如需要切换贴吧软件IP以进行不同的操作。本文将介绍几种贴吧切换IP地址的方法&#xff0c;帮助用户更好地管理自己的网络身份和访问权限。 1、更换网络环境‌ 通过连接到不同的Wi-Fi网络或使用移…

TON生态小游戏开发:推广、经济模型与UI设计的建设指南

随着区块链技术的快速发展&#xff0c;基于区块链的Web3游戏正引领行业变革。而TON生态小游戏&#xff0c;借助Telegram庞大的用户基础和TON&#xff08;The Open Network&#xff09;链上技术&#xff0c;已成为这一领域的明星之一。国内外开发者正迅速涌入&#xff0c;开发和…

【开源】RISC-V 修改neofetch中的Host描述

neofetch 介绍 neofetch 是一款用于在终端中显示系统信息的工具&#xff0c;其主要特点是以美观的方式展示宿主机的基本信息。它通常用于展示系统的分发版本、内核版本、硬件信息、桌面环境&#xff0c;以及一些个性化的设置&#xff0c;配合 ASCII 艺术风格的 logo&#xff0…

基于Opencv中的DNN模块实现图像/视频的风格迁移

一、DNN模块的介绍 1、简介 OpenCV中的DNN&#xff08;Deep Neural Network&#xff09;模块是一个功能强大的组件&#xff0c;它支持深度学习网络模型的加载和推理。虽然DNN模块不提供模型的训练功能&#xff0c;但它可以与主流的深度学习框架&#xff08;如TensorFlow、Caf…

Visual Studio的实用调试技巧总结

对于很多学习编程的老铁们来说&#xff0c;是不是也像下面这张图一样写代码呢&#xff1f; 那当我们这样编写代码的时候遇到了问题&#xff1f;大家又是怎么排查问题的呢&#xff1f;是不是也像下面这张图一样&#xff0c;毫无目的的一遍遍尝试呢&#xff1f; 这篇文章我就以 V…

iPhone使用指南:如何在没有备份的情况下从 iPhone 恢复已删除的照片

本指南将向您展示如何在没有备份的情况下从 iPhone 恢复已删除的照片。我们所有人在生活中的某个时刻都一定做过一些愚蠢的事情&#xff0c;例如从手机或电脑中删除一些重要的东西。这是很自然的&#xff0c;没有什么可羞耻的。您可能在辛苦工作一天后回来。当突然想看一些照片…

科技云报到:云服务的中场战事,从AI应用开始

科技云报到原创。 从去年的大模型之战&#xff0c;到今年的AI应用之争&#xff0c;云服务正在迈入全新的发展阶段。AI这个杠杆将各家厂商的竞争策略更向前推进了一步。 “云AI”能够孵化出多少可能&#xff1f;在业界眼中&#xff0c;“云AI”则意味着新的悬念&#xff1a;云计…

Java基础知识全面总结

第一章&#xff1a;类与对象 第一课&#xff1a;什么是面向对象编程 1.面向对象编程和面向过程编程的区别 无论是面向过程编程还是面向对象编程都是用于解决一个实际问题&#xff0c;当面向过程编程在解决一个问题时&#xff0c;更多的情况下是不会做出重用的设计思考的&…

蓝桥杯【物联网】零基础到国奖之路:十七. 扩展模块之单路ADC和NE555

蓝桥杯【物联网】零基础到国奖之路:十七. 扩展模块之单路ADC和NE555 第一节 硬件解读第二节 CubeMx配置第三节 代码1&#xff0c;脉冲部分代码2&#xff0c;ADC部分代码![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/57531a4ee76d46daa227ae0a52993191.png) 第一节 …

pytorh学习笔记——波士顿房价预测

机器学习的“hello world”&#xff1a;波士顿房价预测 波士顿房价预测的背景不用提了&#xff0c;简单了解一下数据集的结构。 波士顿房价的数据集&#xff0c;共有506组数据&#xff0c;每组数据共14项&#xff0c;前13项是影响房价的各种因素&#xff0c;比如&…

Nullinux:一款针对Linux操作系统的安全检测工具

关于Nullinux Nullinux是一款针对Linux操作系统的安全检测工具&#xff0c;广大研究人员可以利用该工具针对Linux目标设备执行网络侦查和安全检测。 该工具可以通过SMB枚举目标设备的安全状况信息&#xff0c;其中包括操作系统信息、域信息、共享信息、目录信息和用户信息。如…