搜出来的文本:从MCMC到模拟退火

©PaperWeekly 原创 · 作者|苏剑林

单位|追一科技

研究方向|NLP、神经网络

上一篇文章中,我们介绍了“受限文本生成”这个概念,指出可以通过量化目标并从中采样的方式来无监督地完成某些带条件的文本生成任务。同时,上一篇文章还介绍了“重要性采样”和“拒绝采样”两个方法,并且指出对于高维空间而言,它们所依赖的易于采样的分布往往难以设计,导致它们难以满足我们的采样需求。

此时,我们就需要引入采样界最重要的算法之一“Markov Chain Monte Carlo(MCMC)”方法了,它将马尔可夫链和蒙特卡洛方法结合起来,使得(至少理论上是这样)我们从很多高维分布中进行采样成为可能,也是后面我们介绍的受限文本生成应用的重要基础算法之一。本文试图对它做一个基本的介绍。

马尔可夫链

马尔可夫链实际上就是一种“无记忆”的随机游走过程,它以转移概率 为基础,从一个初始状态 出发,每一步均通过该转移概率随机选择下一个状态,从而构成随机状态列 ,我们希望考察对于足够大的步数 t, 所服从的分布,也就是该马尔可夫链的“平稳分布”。

假设 所服从的分布为 ,那么 所服从的分布就是:

如果已经达到平衡,那么应该有 ,所以如果 是平稳分布,那么它满足:

或者说,平稳分布就是上述关于 的方程的非零解。

那么,有一个需要回答的问题是:上述方程的非零解唯一吗? 这个问题的答案关系到马尔可夫链的平稳分布是否依赖于初始状态 。很遗憾,答案是不一定。简单来说,非零解唯一的条件是该马尔可夫链的任意两个状态都是连通的,说具体点就是对于任意两个状态 ,存在状态链 ,使得:

说白了,就是从状态 跳转到 (不要求一步到位,可以多步)的概率大于 0。其实这个判据也不难理解,形象比喻就是指平稳分布唯一的条件是马尔可夫链不能存在“孤岛”,要不然如果 在孤岛内,那么就永远在孤岛内游走了,如果 在孤岛外,那么也就永远在孤岛外游走了,从而不同的初始状态导致了不同的平稳分布。

细致平稳

由于马尔可夫链存在一个平稳分布,而构建马尔可夫链则只需要一个转移矩阵,如果我们可以构建一个易于采样的转移矩阵,并且它的平稳分布就是我们要采样的分布 ,那么迭代足够多步后,不就相当于从 中采样了?这就是所有 MCMC 方法的思想。

当然,马尔可夫链往往需要迭代多步才能达到平稳,因此采样往往比较费时,但即便如此,终究能在有限成本内完成了采样过程,因此在很多情况下依然是实用的。

假设 MCMC 是可行的,那么很显然关键之处就是如何构造出一个转移概率 ,使得它的平稳分布是我们给定的分布 ,同时,根据上一篇文章的介绍,我们往往只知道跟 成正比的 ,而不知道归一化因子,因此构建 的过程中,不能依赖于 的归一化因子。

为此,我们需要用到一个“细致平稳条件”

细致平稳条件: 如果分布 和转移概率 满足恒等式:

那么 就是 的平稳分布。

名字看上去高端,实际上它非常容易证明,只要两端对 求和,马上就得到式(2)了,满足式(2)就说明 的平稳分布。“细致平稳条件”是判断平稳分布的一个充分条件,但不是必要的,它的价值在于提供了一种比较方便的为任意分布构建转移概率的方式。

转移概率

给定平稳分布 以及任意的参考转移概率 ,如果它满足细致平稳条件,那么就万事大吉,直接用参考转移概率 作为最终的概率就好,如果它不满足,那么记

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以教你如何用MCMC生成样本并计算失效概率。 首先,你需要定义一个概率分布函数,它描述了系统失效的概率。例如,你可以假设系统失效的概率服从贝塔分布: $$P(p) = \frac{(1-p)^{\alpha-1}p^{\beta-1}}{B(\alpha,\beta)}$$ 其中,$p$ 是失效概率,$\alpha$ 和 $\beta$ 是贝塔分布的参数,$B(\alpha,\beta)$ 是贝塔函数。 接下来,你可以使用MCMC算法生成样本。MCMC算法是一种随机采样算法,它可以生成服从某个概率分布的样本。在这里,你可以使用Metropolis-Hastings算法,它是一种常见的MCMC算法。 具体来说,Metropolis-Hastings算法需要定义一个转移概率分布 $q(x'|x)$,它描述了从当前状态 $x$ 转移到下一个状态 $x'$ 的概率。然后,从任意一个起始状态 $x_0$ 开始,重复进行以下步骤: 1. 从转移概率分布 $q(x'|x)$ 中随机生成一个状态 $x'$; 2. 计算接受概率 $\alpha(x,x') = \min\left(1,\frac{P(x')q(x|x')}{P(x)q(x'|x)}\right)$; 3. 以概率 $\alpha(x,x')$ 接受状态 $x'$,否则保持状态 $x$ 不变。 最终,你可以得到一系列服从概率分布 $P(p)$ 的样本 $p_1,p_2,\dots,p_N$,其中 $N$ 是采样次数。然后,你可以使用这些样本计算失效概率的期望值: $$E(p) = \frac{1}{N}\sum_{i=1}^N p_i$$ 失效概率的标准差可以使用样本方差来估计: $$\sigma_p = \sqrt{\frac{1}{N-1}\sum_{i=1}^N (p_i-E(p))^2}$$ 希望这些内容能够帮助你。如果还有疑问,请随时问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值