欢迎到我的博客查看最新文章: https://blog.zplayer.cloud

马尔可夫性

本章最重要的概念就是马尔可夫性. 马尔可夫性是指变量的状态只与其前一个时刻的状态有关, 而与其他的状态无关, 称为 “无后效性” . 这里可以作一个拓展, 即指变量的状态只与其周围的变量状态有关, 这里的 ‘周围’ 既可以是时间也可以是空间.

隐马尔可夫模型

隐马尔可夫模型包括两条链, 一条是由可观测的状态组成的, 一条是由不可观测的状态 (隐变量) 组成的. 那么究竟是什么呢, 我们举个例子.

假设每天的天气只与前一天的天气有关. 比如今天如果是晴天, 那么明天有 70%70\%70% 的可能还是晴天, 有 30%30\%30% 的可能是阴天. 如果今天是阴天, 那么明天有 50%50\%50% 的可能是晴天, 有 50%50\%50% 的可能还是阴天. 一天只能有一种天气, 所以我们每天都能观测到一种天气, 这是可观测的. 比如经过一个星期, 我们得到了天气关于时间的一个序列

1 2 3 4 5 6 7

现在假设你有个朋友在国外, 你想要知道他们那边的天气, 但是你只了解你的朋友是在家里还是外出, 并不知道具体天气如何, 而且你还知道假如是晴天, 那么他有 70%70\%70% 的可能出去, 有 30%30\%30% 的可能呆在家, 如果是阴天, 那么有 10%10\%10% 的可能出去, 有 90%90\%90% 的可能呆在家. 假如又过了一个星期, 虽然这个星期里的天气是确实存在的, 可是你并不知道, 这就是那条由隐变量组成的 “隐链” . 你的朋友的状态和天气有关, 你也了解你的朋友的状态, 那么朋友这一个星期里的状态也构成一天链, 这就是由可观测的状态组成的 “明链” .

1 2 3 4 5 6 7
出去 在家 在家 在家 在家 出去

明链和暗链结合在一起, 就有了隐马尔可夫模型.

[外链图片转存中…(img-13qryRKt-1585888415398)]

以上面的例子来说明. yiy_iyi​ 就是第 iii 天的天气, xix_ixi​ 是你朋友第 iii 天的活动. 而状态转移概率 A\boldsymbol AA 为
[0.70.30.50.5]\left[\begin{matrix} 0.7&0.3\\ 0.5&0.5 \end{matrix}\right] [0.70.5​0.30.5​]
输出观测概率 B\boldsymbol{B}B 为
[0.70.30.10.9]\left[\begin{matrix} 0.7&0.3\\ 0.1&0.9 \end{matrix}\right] [0.70.1​0.30.9​]
初始状态概率 π\boldsymbol{\pi}π 为
[10]\left[\begin{matrix} 1\\0 \end{matrix}\right] [10​]
产生观测序列 {x1,x2,…}\{x_1, x_2, \dots\}{x1​,x2​,…} 的过程书上已经有了, 这里不再详细叙述.

当然, 一个确定的模型并不一定能产生确定的结果, 上面的例子只是一种可能结果, 还有其他很多种结果, 出现的概率各不相同.

而隐马尔可夫模型的三个基本问题我们也用例子来说一下:

  • 即我们得到了朋友这一个星期的状态, 那么给定模型 λ=[A,B,π]\lambda = [\boldsymbol{A},\boldsymbol{B} , \boldsymbol{\pi}]λ=[A,B,π] , 计算出出现这个状态的概率.
  • 给定模型 λ=[A,B,π]\lambda = [\boldsymbol{A},\boldsymbol{B} , \boldsymbol{\pi}]λ=[A,B,π] 以及朋友这个星期的状态, 那么推测出这个星期朋友那里的天气是怎样的.
  • 给出朋友这个星期的状态, 如何调整参数 λ\lambdaλ 才能使朋友出现这样的状态的可能性最大.

马尔可夫随机场

Hammersley-Clifford 定理

Hammersley−Clifford\mathrm{Hammersley-Clifford}Hammersley−Clifford 定理指出概率无向图模型的联合概率可以分解为定义在极大团上的势函数的乘积. 即
P(x)=1Z∏Q∈CψQ(xQ)P(\boldsymbol{\mathrm{x}}) = \frac{1}{Z}\prod_{Q\in \mathcal{C}}\psi_Q(\boldsymbol{\mathrm{x}}_Q)\\ P(x)=Z1​Q∈C∏​ψQ​(xQ​)
定理充分性的证明在西瓜书中其实已经给出. (即西瓜书中所说的简单的验证)

极大团

若在一个团中加入另外任何一个节点都不再写成团, 则称该团为 “极大团” (maximal); 换言之, 极大团就是不能被其他团所包含的团.

换句话讲就是, 找不到这个团之外的一个结点和这个团中所有结点之间都有边, 那么这个团就是极大团. 可以利用反证法证明: 如果极大团被其他团所包含, 那么根据团的定义, 这个极大团之外还会有一个结点 (该结点在这个极大团之外却在那个包含这个极大团的团之内) 与团中所有节点都有边, 违背了极大团的定义, 因此不成立.

势函数

势函数从何而来, 为什么是这样定义? 相信你一开始也和我一脸懵逼. 现在我试着将我所理解的势函数尽我所能表达出来.

势函数本身用来刻画某种 ‘偏好’ . 即你依靠经验认为结点之间应该有某种关系. 比如说你如果认为结点之间的值应该要差不多, 那么当它们的值确实差不多时, 你应该给出更高的分数, 如果他们的值相差较大, 你就应该给出更低的分数. 依靠这样的准则, 就可以构造出一个势函数, 来实现你的给分策略. 势函数的形式不是唯一的, 只不过常用指数函数来定义势函数. 使用指数函数的目的是为了满足非负性 (概率总不可能是负的吧) .

至于势函数和后面提到的特征函数到底有什么根本上的区别… 好吧我也不清楚.

规范化因子

P(x)=1Z∏Q∈CψQ(xQ)P(\boldsymbol{\mathrm{x}}) = \frac{1}{Z}\prod_{Q\in \mathcal{C}}\psi_Q(\boldsymbol{\mathrm{x}}_Q)\\ P(x)=Z1​Q∈C∏​ψQ​(xQ​)

其中 Z=∑x∏Q∈CψQ(xQ)Z = \sum_\boldsymbol{\mathrm{x}}\prod_{Q\in\mathcal{C}}\psi_Q(\boldsymbol{\mathrm{x}}_Q)Z=∑x​∏Q∈C​ψQ​(xQ​) 是规范化因子, 那么它究竟起到什么作用呢? 其实它起到的作用就是保证 ∑xP(x)=1\sum_\boldsymbol{\mathrm{x}}P(\boldsymbol{\mathrm x}) = 1∑x​P(x)=1 , 即保证我们算出的是一个 “概率” . 而概率具有的性质就是所有可能结果的概率和为 111 .

**马尔可夫性

事实上, 这些 ‘**马尔可夫性’ 成立的前提都在于某个变量只与其相邻变量有关.

全局马尔可夫性

简单的来说, 就是两 ‘团’ 变量被中间的 ‘变量墙’ 隔开, 因此具有独立性.

局部马尔可夫性

可以形象的认为 n∗(v)n^*(v)n∗(v) 像一圈围墙将 vvv 包围了起来, 这堵墙存在时 (变量给定时) , 会将 vvv 与外界分离 (即独立于外界) .

这里说明一个可能不太清楚的点.

令 VVV 为图的结点集, n(v)n(v)n(v) 为结点 vvv 在图上的邻接结点, n∗(v)=n(v)∪{v}n^*(v) = n(v) \cup \{v\}n∗(v)=n(v)∪{v} , 有 xv⊥xV\n∗(v)\boldsymbol{\mathrm{x}}_v \perp \boldsymbol{\mathrm{x}}_{V\backslash n^*(v)}xv​⊥xV\n∗(v)​ .

这里的 xV\n∗(v)\boldsymbol{\mathrm{x}}_{V\backslash n^*(v)}xV\n∗(v)​ 中的 V\n∗(v)V\backslash n^*(v)V\n∗(v) 应该是集合 VVV 去除 n∗(v)n^*(v)n∗(v) 集合. 所有的 A\BA\backslash BA\B 运算都是集合 AAA 去掉其中的集合 BBB 部分.

成对马尔可夫性

只要两个变量不在同一条边上, 那么就可以将这两个变量完全用其他结点隔离开, 最极端的情况就是把除了这两个变量的节点都当成 ‘墙’ , 这两个变量的周围都是 ‘墙’ , 被这堵墙隔开后, 它们就具有独立性. 这就是成对马尔可夫性. 如果这两个变量在同一条边上, 那么无论是多厚的墙, 两个变量间还是有一条绳子 (边) 连着, 他们仍然不会分离, 不具有成对马尔可夫性.

条件随机场

条件随机场与隐马尔可夫模型、马尔可夫随机场的最主要区别在于条件随机场是判别式模型, 而隐马尔可夫模型和马尔科夫随机场是生成式模型. 顾名思义, 条件随机场就是有 ‘条件’ 的 马尔可夫 ‘随机场’ . 同样基于最大团定义了势函数, 只不过还多引入了一个特征函数.

条件随机场的结构是任意的. 但是一般我们会考虑 “链式条件随机场” (chain−structuredCRF\mathrm{chain-structured\;CRF}chain−structuredCRF).

[外链图片转存中…(img-5Gx9KNiG-1585888415400)]

特征函数

特征函数刻画了相邻变量之间的相关关系以及观测序列对它们的影响.

学习与推断

变量消去

变量消去一般用来求边缘概率 (可以理解为求和的过程可以一个个的 ‘消去’ 变量, 故为变量消去). 如果进行暴力求和来求边缘概率, 那么时间复杂度会达到可怕的 O(NT)O(N^T)O(NT) , 其中 NNN 是变量可能的取值数, TTT 是要消去变量的总数. 这个复杂度可以说是基本上不可能进行求解的, 但好在我们有更快的算法, 那就是动态规划.

动态规划

P(x5)=∑x4∑x3∑x2∑x1P(x1,x2,x3,x4)=∑x4∑x3∑x2∑x1P(x1)P(x2∣x1)P(x3∣x2)P(x4∣x3)P(x5∣x3)\begin{aligned} P(x_5) &= \sum_{x_4}\sum_{x_3}\sum_{x_2}\sum_{x_1}P(x_1, x_2, x_3, x_4)\\ &=\sum_{x_4}\sum_{x_3}\sum_{x_2}\sum_{x_1}P(x_1)P(x_2\mid x_1)P(x_3 \mid x_2)P(x_4 \mid x_3)P(x_5\mid x_3) \end{aligned} P(x5​)​=x4​∑​x3​∑​x2​∑​x1​∑​P(x1​,x2​,x3​,x4​)=x4​∑​x3​∑​x2​∑​x1​∑​P(x1​)P(x2​∣x1​)P(x3​∣x2​)P(x4​∣x3​)P(x5​∣x3​)​

上式可以等价的表达为
P(x5)=∑x3P(x5∣x3)∑x4P(x4∣x3)∑x2P(x3∣x2)∑x1P(x1)P(x2∣x1)P(x_5) = \sum_{x_3}P(x_5\mid x_3)\sum_{x_4}P(x_4 \mid x_3)\sum_{x_2}P(x_3 \mid x_2)\sum_{x_1}P(x_1)P(x_2\mid x_1) P(x5​)=x3​∑​P(x5​∣x3​)x4​∑​P(x4​∣x3​)x2​∑​P(x3​∣x2​)x1​∑​P(x1​)P(x2​∣x1​)
注意一个问题, 这里面加不加括号都是一样的, 什么意思呢? 其实就是
(∑ixi)(∑jxj)=∑i(xi∑jxj)(\sum_ix_i)(\sum_jx_j) = \sum_i(x_i\sum_jx_j) (i∑​xi​)(j∑​xj​)=i∑​(xi​j∑​xj​)
首先我们从最后一个 ∑\sum∑ 开始算
∑x1P(x1)P(x2∣x1)\sum_{x_1}P(x_1)P(x_2\mid x_1) x1​∑​P(x1​)P(x2​∣x1​)
可以看到这只与 x2x_2x2​ 有关, 即这是一个关于 x2x_2x2​ 的函数, 我们简写为 m12(x2)m_{12}(x_2)m12​(x2​) 那么我们再寻找 x2x_2x2​ 从何而来
∑x2P(x4∣x3)\sum_{x_2}P(x_4\mid x_3) x2​∑​P(x4​∣x3​)
这里就有了 x2x_2x2​ (前面的 ∑\sum∑ 是对 x2x_2x2​ 求和), 因此就可以结合起来
∑x2P(x3∣x2)m12(x2)\sum_{x_2}P(x_3\mid x_2)m_{12}(x_2) x2​∑​P(x3​∣x2​)m12​(x2​)
这是一个只与 x3x_3x3​ 有关的函数, 同样简写为 m23(x3)m_{23}(x_3)m23​(x3​) .

我们按照这样的方法一个个去向前推进, 即每次寻找未提供的变量 (就是没有说这个变量具体的值, 又或者说目前的函数可以表达为只与这个变量有关的函数) 在哪 (即 ∑\sum∑ 下的变量), 然后互相结合递推, 注意到, 可能有两个未提供的变量同时与一个 ∑\sum∑ 有关, 比如 ∑x2P(x3∣x2)\sum_{x_2}P(x_3\mid x_2)∑x2​​P(x3​∣x2​) 和 ∑x4P(x4∣x3)\sum_{x_4}P(x_4\mid x_3)∑x4​​P(x4​∣x3​) 同时与 x3x_3x3​ 有关, 于是分别求出, 再与 ∑x3\sum_{x_3}∑x3​​ 结合.

这样算法的复杂度就降为了 O(NT)O(NT)O(NT) .

但是就是有一个缺点, 再次计算另一个边缘分布时有些变量又要求一遍, 造成冗余计算.

信念传播

信念传播其实就是基于变量消去做了一些改进, 可以理解为存储了中间变量 (比如 m12(x2)m_{12}(x_2)m12​(x2​) ), 这样计算的时候直接使用就行了.

近似推断

我们的目标是要计算函数 f(x)f(x)f(x) 在概率密度函数 p(x)p(x)p(x) 下的期望
Ep[f]=∫f(x)p(x)dx\mathbb{E}_p[f] = \int f(x)p(x)\mathrm{d}x Ep​[f]=∫f(x)p(x)dx
由于积分比较困难, 所以可以根据 p(x)p(x)p(x) 采样作无偏估计
f^=1N∑i=1Nf(xi)\hat{f} = \frac{1}{N}\sum^{N}_{i = 1}f(x_i) f^​=N1​i=1∑N​f(xi​)
但是如果 p(x)p(x)p(x) 较为复杂, 直接采样可能比较复杂, 因此就有了其他间接采样的方法. MCMC\mathrm{MCMC}MCMC 就是概率图模型中最常用的方法.

MCMC 采样

MCMC(MarkovChainMonteCarlo)\mathrm{MCMC\,(Markov\;Chain\;Monte\;Carlo)}MCMC(MarkovChainMonteCarlo) 方法是构造一条马尔可夫链, 此马尔科夫链的平稳分布正是 p(x)p(x)p(x) . 也就是说, 运行马尔科夫链一段时间后 (即收敛到平稳分布), 此时产出的样本 x\mathrm{x}x 近似服从分布 ppp .

具体来说, MCMC\mathrm{MCMC}MCMC 有一个代表算法 Metropolis−Hastings(MH)\mathrm{Metropolis-Hastings\,(MH)}Metropolis−Hastings(MH) .

Metropolis-Hastings

令转移核为 p(x,x′)p(x, x')p(x,x′)
p(x,x′)=q(x,x′)α(x.x′)p(x, x') = q(x,x')\alpha(x.x') p(x,x′)=q(x,x′)α(x.x′)
其中 q(x,x′)q(x, x')q(x,x′) 与 α(x,x′)\alpha(x,x')α(x,x′) 分别称为建议分布 (proposaldistribution)(\mathrm{proposal\;distribution})(proposaldistribution) 和接受分布 (acceptancedistribution)(\mathrm{acceptance\;distribution})(acceptancedistribution) . 建议分布是一个你自由选择的分布, 一般来说要比较容易抽样 (比如均匀分布) . 接受分布 α(x,x′)\alpha(x,x')α(x,x′) 是
α(x,x′)=min{1,p(x′)q(x′,x)p(x)q(x,x′)}\alpha(x,x') = min\left\{1, \frac{p(x')q(x', x)}{p(x)q(x, x')}\right\} α(x,x′)=min{1,p(x)q(x,x′)p(x′)q(x′,x)​}
因此 p(x,x′)p(x, x')p(x,x′) 可以写为
KaTeX parse error: Unknown column alignment: q at position 35: … \begin{array} q̲q(x, x'),&p(x')…
  假设在时刻 (t−1)(t - 1)(t−1) 处于状态 xxx , 即 xt−1=xx_{t - 1} = xxt−1​=x, 那么有

  1. 按照建议分布 q(x,x′)q(x, x')q(x,x′) 抽取一个候选状态 x′x'x′
  2. 按照接受分布 α(x,x′)\alpha(x, x')α(x,x′) 决定是否接受 x′x'x′. 接受则产生下一个样本 xt=x′x_t = x'xt​=x′ , 拒绝就让 xt=xt−1x_t = x_{t - 1}xt​=xt−1​. 同时 t=t+1t = t + 1t=t+1 .

这个抽取样本过程等价于直接按照 p(x,x′)p(x, x')p(x,x′) 抽取.

每次抽样时刻都会增加 111 . 那么当经过一段时间后, 马尔可夫链可以达到平稳分布, 而 p(x)p(x)p(x) 正是其平稳分布. 这是因为对于分布 p(x)p(x)p(x) 来说, 这个马尔可夫链是可逆的, 而可逆马尔科夫链是平稳分布的充分条件. 达到平稳分布后, 其后产生的样本即满足分布 p(x)p(x)p(x) , 此时我们就能轻松抽样了.

单变量 Metropolis-Hastings 算法

单变量 MH\mathrm{MH}MH 算法与传统 MH\mathrm{MH}MH 算法的区别就在于单变量 MH\mathrm{MH}MH 算法是每一次样本产生是对多元变量的每一分量依次抽样, 从而实现对整个多元变量的一次抽样, 这大概就是 ‘单变量’ MH\mathrm{MH}MH 算法名字的由来.

吉布斯采样

吉布斯采样是 MH\mathrm{MH}MH 算法的特例, 更准确的说应该是单变量 MH\mathrm{MH}MH 算法的特例. 它将建议分布 q(x′,x)q(x', x)q(x′,x) 设置成 p(xj∣x−j′)p(x_j\mid x'_{-j})p(xj​∣x−j′​) , 即
q(x,x′)=p(xj′∣x−j)q(x, x') = p(x'_j\mid x_{-j}) q(x,x′)=p(xj′​∣x−j​)
x−jx_{-j}x−j​ 即为除了 xjx_{j}xj​ 外的其他分量的集合.

这样就可以让接受概率 α=1\alpha = 1α=1 , 从而大大提高采样效率.

变分推断

EM 算法

EM\mathrm{EM}EM 算法在 7.67.67.6 节就已经作了一个介绍, 其分为 E\boldsymbol{\mathrm{E}}E 步和 M\boldsymbol{\mathrm{M}}M 步. 对于某时刻的 Θt\Theta_tΘt​ 来说, 可以根据 Θt\Theta_tΘt​ 与已观测变量 X\boldsymbol{\mathrm X}X 计算隐变量 Z\boldsymbol{\mathrm Z}Z 的分布 P(Z∣X,Θt)P(\boldsymbol{\mathrm{Z}}\mid\boldsymbol{\mathrm{X}},\Theta_t)P(Z∣X,Θt​) , 并且还要计算出一个与 Θ\ThetaΘ 有关的函数 P(X,Z∣Θ)P(\boldsymbol{\mathrm{X}}, \boldsymbol{\mathrm{Z}}\mid\Theta)P(X,Z∣Θ) (以便后续 M\boldsymbol{\mathrm{M}}M 步计算期望) . 然后 M\boldsymbol{\mathrm{M}}M 步即令新的参数 Θt+1\Theta_{t + 1}Θt+1​ 能够最大化对数似然
Θt+1=arg⁡max⁡Θ∑ZP(Z∣X,Θt)ln⁡P(X,Z∣Θ)\Theta_{t + 1} = \underset{\Theta}{\arg\max}\sum_{\boldsymbol{\mathrm{Z}}}P(\boldsymbol{\mathrm{Z}}\mid\boldsymbol{\mathrm{X}},\Theta_t)\ln P(\boldsymbol{\mathrm{X}}, \boldsymbol{\mathrm{Z}}\mid\Theta) Θt+1​=Θargmax​Z∑​P(Z∣X,Θt​)lnP(X,Z∣Θ)

这个式子其实是对数似然函数在分布 P(Z∣X,Θt)P(\boldsymbol{\mathrm{Z}}\mid\boldsymbol{\mathrm{X}},\Theta_t)P(Z∣X,Θt​) 下的期望, 你也可以理解为一种 ‘概率’ (概率与期望也只是相差了一个常数) .

式 14.36 推导

L(q)=∫q(z)ln⁡{p(x,z)q(z)}dz\mathcal{L}(q) = \int q(\boldsymbol{\mathrm{z}})\ln \left\{\frac{p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}})}{q(\boldsymbol{\mathrm{z}})}\right\}\mathrm{d}\boldsymbol{\mathrm{z}} L(q)=∫q(z)ln{q(z)p(x,z)​}dz

根据
q(z)=∏i=1Mqi(zi)q(\boldsymbol{\mathrm{z}}) = \prod^{M}_{i = 1}q_i(\boldsymbol{\mathrm{z}}_i) q(z)=i=1∏M​qi​(zi​)
为了简化, 我们将 qi(zi≠j)q_i(\boldsymbol{\mathrm{z}}_{i\not=j})qi​(zi​=j​) 简写为 qiq_iqi​

代入可得
L(q)=∫∏iqiln⁡{p(x,z)q(z)}dz=∫∏iqi{ln⁡p(x,z)−∑iln⁡qi}dz=∫∏iqiln⁡p(x,z)−∫∏iqi∑iln⁡qidz=∫qj∏i≠jqiln⁡p(x,z)dz−∫∏iqi∑iln⁡qidz\begin{aligned} \mathcal{L}(q) &= \int \prod_{i}q_i\ln \left\{\frac{p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}})}{q(\boldsymbol{\mathrm{z}})}\right\}\mathrm{d}\boldsymbol{\mathrm{z}}\\ &= \int \prod_{i}q_i\left\{\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}) - \sum_i \ln q_i\right\}\mathrm{d}\boldsymbol{\mathrm{z}}\\ &= \int \prod_{i}q_i\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}) - \int\prod_{i}q_i\sum_i \ln q_i\mathrm{d}\boldsymbol{\mathrm{z}}\\ &= \int q_j\prod_{i \not= j}q_i\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}})\mathrm{d}\boldsymbol{\mathrm{z}} - \int \prod_{i}q_i\sum_i \ln q_i\mathrm{d}\boldsymbol{\mathrm{z}} \end{aligned} L(q)​=∫i∏​qi​ln{q(z)p(x,z)​}dz=∫i∏​qi​{lnp(x,z)−i∑​lnqi​}dz=∫i∏​qi​lnp(x,z)−∫i∏​qi​i∑​lnqi​dz=∫qj​i​=j∏​qi​lnp(x,z)dz−∫i∏​qi​i∑​lnqi​dz​
注意到
∫f(x)dx=∫{∫f(x)dx−i}dxi\int f(x) \mathrm{d}x = \int \left\{\int f(\boldsymbol{x})\mathrm{d}\boldsymbol{x}_{-i}\right\}\mathrm{d}\boldsymbol{x}_i ∫f(x)dx=∫{∫f(x)dx−i​}dxi​
其中 x\boldsymbol{x}x 是一个向量, xi\boldsymbol{x}_{i}xi​ 是 x\boldsymbol{x}x 的一个分量, x−i\boldsymbol{x}_{-i}x−i​ 是除了 xi\boldsymbol{x}_{i}xi​ 以外的分量集合.

更一般的, 可以将 x\boldsymbol{x}x 拆分成互斥的分量集合, 然后像这样嵌套积分.

因此
L(q)=∫qj∏i≠jqiln⁡p(x,z)dz−∫∏iqi∑iln⁡qidz=∫{∫qj∏i≠jqiln⁡p(x,z)dzi≠j}dzj−∫∏iqi∑iln⁡qidz\begin{aligned} \mathcal{L}(q) &= \int q_j\prod_{i \not= j}q_i\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}})\mathrm{d}\boldsymbol{\mathrm{z}} - \int \prod_{i}q_i\sum_i \ln q_i\mathrm{d}\boldsymbol{\mathrm{z}}\\ &= \int\left\{\int q_j\prod_{i \not= j}q_i\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}})\mathrm{d}\boldsymbol{\mathrm{z}}_{i\not=j}\right\}\mathrm{d}\boldsymbol{\mathrm{z}}_j - \int \prod_{i}q_i\sum_i \ln q_i\mathrm{d}\boldsymbol{\mathrm{z}} \end{aligned} L(q)​=∫qj​i​=j∏​qi​lnp(x,z)dz−∫i∏​qi​i∑​lnqi​dz=∫⎩⎨⎧​∫qj​i​=j∏​qi​lnp(x,z)dzi​=j​⎭⎬⎫​dzj​−∫i∏​qi​i∑​lnqi​dz​
为了表达更清晰, 这里的符号和西瓜书稍稍不同, 这里 dzi≠j\mathrm{d}\boldsymbol{\mathrm{z}}_{i\not =j}dzi​=j​ 代表了对除了 zi\boldsymbol{\mathrm{z}}_{i}zi​ 以外的分量积分, 西瓜书应该也是表达这个意思, 但是符号不太清晰.

同时由于 qjq_jqj​ 与 zi≠j\boldsymbol{\mathrm{z}}_{i\not=j}zi​=j​ 没有关系, 所以提出积分
L(q)=∫{∫qj∏i≠jqiln⁡p(x,z)dzi≠j}dzj−∫∏iqi∑iln⁡qidz=∫qj{∫∏i≠jqiln⁡p(x,z)dzi≠j}dzj−∫∏iqi∑iln⁡qidz\begin{aligned} \mathcal{L}(q) &= \int\left\{\int q_j\prod_{i \not= j}q_i\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}})\mathrm{d}\boldsymbol{\mathrm{z}}_{i\not=j}\right\}\mathrm{d}\boldsymbol{\mathrm{z}}_j - \int \prod_{i}q_i\sum_i \ln q_i\mathrm{d}\boldsymbol{\mathrm{z}}\\ &= \int q_j\left\{\int \prod_{i \not= j}q_i\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}})\mathrm{d}\boldsymbol{\mathrm{z}}_{i\not=j}\right\}\mathrm{d}\boldsymbol{\mathrm{z}}_j - \int \prod_{i}q_i\sum_i \ln q_i\mathrm{d}\boldsymbol{\mathrm{z}} \end{aligned} L(q)​=∫⎩⎨⎧​∫qj​i​=j∏​qi​lnp(x,z)dzi​=j​⎭⎬⎫​dzj​−∫i∏​qi​i∑​lnqi​dz=∫qj​⎩⎨⎧​∫i​=j∏​qi​lnp(x,z)dzi​=j​⎭⎬⎫​dzj​−∫i∏​qi​i∑​lnqi​dz​

我们单独取后一项进行进一步分析
∫∏iqi∑iln⁡qidz=∫(∑i{∏iqi}ln⁡qi)dz\int \prod_{i}q_i\sum_i \ln q_i\mathrm{d}\boldsymbol{\mathrm{z}} = \int \left(\sum_i\left\{\prod_{i}q_i\right\}\ln q_i\right)\mathrm{d}\boldsymbol{\mathrm{z}} ∫i∏​qi​i∑​lnqi​dz=∫(i∑​{i∏​qi​}lnqi​)dz
对于每一个 ∫({∏iqi}ln⁡qk)dz\int \left(\left\{\prod_{i}q_i\right\}\ln q_k\right)\mathrm{d}\boldsymbol{\mathrm{z}}∫({∏i​qi​}lnqk​)dz 来说, 有
∫({∏iqi}ln⁡qk)dz=∫{∫(qj{∏i≠jqi}ln⁡qk)dzi≠j}dzj\begin{aligned} \int \left(\left\{\prod_{i}q_i\right\}\ln q_k\right)\mathrm{d}\boldsymbol{\mathrm{z}} &= \int\left\{\int \left(q_j\left\{\prod_{i\not=j}q_i\right\}\ln q_k\right)\mathrm{d}\boldsymbol{\mathrm{z}}_{i\not = j}\right\}\mathrm{d}\boldsymbol{\mathrm{z}}_j \end{aligned} ∫({i∏​qi​}lnqk​)dz​=∫⎩⎨⎧​∫⎝⎛​qj​⎩⎨⎧​i​=j∏​qi​⎭⎬⎫​lnqk​⎠⎞​dzi​=j​⎭⎬⎫​dzj​​
由于 qjq_jqj​ 与 zi\boldsymbol{\mathrm{z}}_izi​ 没有关系, 于是可以提出积分
∫({∏iqi}ln⁡qk)dz=∫qj{∫({∏i≠jqi}ln⁡qk)dzi≠j}dzj\begin{aligned} \int \left(\left\{\prod_{i}q_i\right\}\ln q_k\right)\mathrm{d}\boldsymbol{\mathrm{z}} &= \int q_j\left\{\int \left(\left\{\prod_{i\not=j}q_i\right\}\ln q_k\right)\mathrm{d}\boldsymbol{\mathrm{z}}_{i\not = j}\right\}\mathrm{d}\boldsymbol{\mathrm{z}}_j \end{aligned} ∫({i∏​qi​}lnqk​)dz​=∫qj​⎩⎨⎧​∫⎝⎛​⎩⎨⎧​i​=j∏​qi​⎭⎬⎫​lnqk​⎠⎞​dzi​=j​⎭⎬⎫​dzj​​
注意到 {∫({∏i≠jqi}ln⁡qk)dzi}\left\{\int \left(\left\{\prod_{i\not=j}q_i\right\}\ln q_k\right)\mathrm{d}\boldsymbol{\mathrm{z}}_i\right\}{∫({∏i​=j​qi​}lnqk​)dzi​} 与 zj\boldsymbol{\mathrm{z}}_jzj​ 也没有关系, 而且 ∫qjdzj=1\int q_j \mathrm{d}\boldsymbol{\mathrm{z}}_j = 1∫qj​dzj​=1 , 于是
∫({∏iqi}ln⁡qk)dz=∫qj{∫({∏i≠jqi}ln⁡qk)dzi≠j}dzj=∫({∏i≠jqi}ln⁡qk)dzi≠j\begin{aligned} \int \left(\left\{\prod_{i}q_i\right\}\ln q_k\right)\mathrm{d}\boldsymbol{\mathrm{z}} &= \int q_j\left\{\int \left(\left\{\prod_{i\not=j}q_i\right\}\ln q_k\right)\mathrm{d}\boldsymbol{\mathrm{z}}_{i\not = j}\right\}\mathrm{d}\boldsymbol{\mathrm{z}}_j\\ &= \int \left(\left\{\prod_{i\not=j}q_i\right\}\ln q_k\right)\mathrm{d}\boldsymbol{\mathrm{z}}_{i\not = j} \end{aligned} ∫({i∏​qi​}lnqk​)dz​=∫qj​⎩⎨⎧​∫⎝⎛​⎩⎨⎧​i​=j∏​qi​⎭⎬⎫​lnqk​⎠⎞​dzi​=j​⎭⎬⎫​dzj​=∫⎝⎛​⎩⎨⎧​i​=j∏​qi​⎭⎬⎫​lnqk​⎠⎞​dzi​=j​​
事实上, 可以一直反复这种提取, 消去的过程, 最终得到
∫({∏iqi}ln⁡qk)dz=∫(qkln⁡qk)dzk\begin{aligned} \int \left(\left\{\prod_{i}q_i\right\}\ln q_k\right)\mathrm{d}\boldsymbol{\mathrm{z}} &= \int \left(q_k\ln q_k\right)\mathrm{d}\boldsymbol{\mathrm{z}}_k \end{aligned} ∫({i∏​qi​}lnqk​)dz​=∫(qk​lnqk​)dzk​​
于是
∫∏iqi∑iln⁡qidz=∫(∑i{∏iqi}ln⁡qi)dz=∫∑iqiln⁡qidzi=∫qjln⁡qjdzj+∫∑i≠jqiln⁡qidzi≠j=∫qjln⁡qjdzj+const\begin{aligned} \int \prod_{i}q_i\sum_i \ln q_i\mathrm{d}\boldsymbol{\mathrm{z}} &= \int \left(\sum_i\left\{\prod_{i}q_i\right\}\ln q_i\right)\mathrm{d}\boldsymbol{\mathrm{z}}\\ &= \int \sum_i q_i\ln q_i\mathrm{d}\boldsymbol{\mathrm{z}}_i\\ &= \int q_j\ln q_j\mathrm{d}\boldsymbol{\mathrm{z}}_j + \int \sum_{i\not=j} q_i\ln q_i\mathrm{d}\boldsymbol{\mathrm{z}}_{i\not = j}\\ &= \int q_j\ln q_j\mathrm{d}\boldsymbol{\mathrm{z}}_j + \mathrm{const} \end{aligned} ∫i∏​qi​i∑​lnqi​dz​=∫(i∑​{i∏​qi​}lnqi​)dz=∫i∑​qi​lnqi​dzi​=∫qj​lnqj​dzj​+∫i​=j∑​qi​lnqi​dzi​=j​=∫qj​lnqj​dzj​+const​

我们只关心与 zj\boldsymbol{\mathrm{z}}_jzj​ 有关的变量, 因此后面的项可以当作常量 const\mathrm{const}const .

因此
L(q)=∫qj{∫∏i≠jqiln⁡p(x,z)dzi≠j}dzj−∫∏iqi∑iln⁡qidz=∫qj{∫ln⁡p(x,z)∏i≠jqidzi≠j}dzj−∫qjln⁡qjdzj+const=∫qjln⁡p~(x,zj)dzj−∫qjln⁡qjdzj+const\begin{aligned} \mathcal{L}(q) &= \int q_j\left\{\int \prod_{i \not= j}q_i\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}})\mathrm{d}\boldsymbol{\mathrm{z}}_{i\not=j}\right\}\mathrm{d}\boldsymbol{\mathrm{z}}_j - \int \prod_{i}q_i\sum_i \ln q_i\mathrm{d}\boldsymbol{\mathrm{z}}\\ &=\int q_j\left\{\int \ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}})\prod_{i \not= j}q_i\mathrm{d}\boldsymbol{\mathrm{z}}_{i\not=j}\right\}\mathrm{d}\boldsymbol{\mathrm{z}}_j - \int q_j\ln q_j\mathrm{d}\boldsymbol{\mathrm{z}}_j + \mathrm{const}\\ &= \int q_j\ln\tilde{p}(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)\mathrm{d}\boldsymbol{\mathrm{z}}_j - \int q_j\ln q_j\mathrm{d}\boldsymbol{\mathrm{z}}_j + \mathrm{const} \end{aligned} L(q)​=∫qj​⎩⎨⎧​∫i​=j∏​qi​lnp(x,z)dzi​=j​⎭⎬⎫​dzj​−∫i∏​qi​i∑​lnqi​dz=∫qj​⎩⎨⎧​∫lnp(x,z)i​=j∏​qi​dzi​=j​⎭⎬⎫​dzj​−∫qj​lnqj​dzj​+const=∫qj​lnp~​(x,zj​)dzj​−∫qj​lnqj​dzj​+const​
(理解倒是不难, 可是这公式也太多了吧…写了我好长一段时间…公式是真的难写…)

式 14.40 推导

ln⁡p~(x,zj)=Ei≠j[ln⁡p(x,zj)]+constp~(x,zj)=exp⁡(Ei≠j[ln⁡p(x,zj)])⋅exp⁡(const)\begin{aligned}\ln \tilde{p}(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j) &= \mathbb{E}_{i\not=j}[\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)] + \mathrm{const}\\ \tilde{p}(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)&= \exp(\mathbb{E}_{i\not=j}[\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)]) \cdot \exp(\mathrm{const}) \end{aligned} lnp~​(x,zj​)p~​(x,zj​)​=Ei​=j​[lnp(x,zj​)]+const=exp(Ei​=j​[lnp(x,zj​)])⋅exp(const)​

而又因为
∫p~(x,zj)dzj=1∫exp⁡(Ei≠j[ln⁡p(x,zj)])⋅exp⁡(const)dzj=1exp⁡(const)=1∫exp⁡(Ei≠j[ln⁡p(x,zj)])dzj\begin{aligned} \int \tilde{p}(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)\mathrm{d}\boldsymbol{\mathrm{z}}_j &= 1\\ \int \exp(\mathbb{E}_{i\not=j}[\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)]) \cdot \exp(\mathrm{const})\mathrm{d}\boldsymbol{\mathrm{z}}_j&= 1\\ \exp(\mathrm{const})&=\frac{1}{\int \exp(\mathbb{E}_{i\not=j}[\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)])\mathrm{d}\boldsymbol{\mathrm{z}}_j} \end{aligned} ∫p~​(x,zj​)dzj​∫exp(Ei​=j​[lnp(x,zj​)])⋅exp(const)dzj​exp(const)​=1=1=∫exp(Ei​=j​[lnp(x,zj​)])dzj​1​​
于是
p~(x,zj)=exp⁡(Ei≠j[ln⁡p(x,zj)])⋅exp⁡(const)=exp⁡(Ei≠j[ln⁡p(x,zj)])∫exp⁡(Ei≠j[ln⁡p(x,zj)])dzj\begin{aligned} \tilde{p}(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)&= \exp(\mathbb{E}_{i\not=j}[\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)]) \cdot \exp(\mathrm{const})\\ &= \frac{\exp(\mathbb{E}_{i\not=j}[\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)])}{\int \exp(\mathbb{E}_{i\not=j}[\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)])\mathrm{d}\boldsymbol{\mathrm{z}}_j} \end{aligned} p~​(x,zj​)​=exp(Ei​=j​[lnp(x,zj​)])⋅exp(const)=∫exp(Ei​=j​[lnp(x,zj​)])dzj​exp(Ei​=j​[lnp(x,zj​)])​​
由于 qj∗(zj)=p~(x,zj)q_j^*(\boldsymbol{\mathrm z}_j) = \tilde{p}(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)qj∗​(zj​)=p~​(x,zj​) , 因此
qj∗(zj)=exp⁡(Ei≠j[ln⁡p(x,zj)])∫exp⁡(Ei≠j[ln⁡p(x,zj)])dzjq_j^*(\boldsymbol{\mathrm z}_j) = \frac{\exp(\mathbb{E}_{i\not=j}[\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)])}{\int \exp(\mathbb{E}_{i\not=j}[\ln p(\boldsymbol{\mathrm{x}}, \boldsymbol{\mathrm{z}}_j)])\mathrm{d}\boldsymbol{\mathrm{z}}_j} qj∗​(zj​)=∫exp(Ei​=j​[lnp(x,zj​)])dzj​exp(Ei​=j​[lnp(x,zj​)])​

话题模型

其实就是一个具体的模型, 理解了前面的内容这里应该也没什么问题.

参考

网络资料

白板推导: https://www.bilibili.com/video/av70839977

南瓜书: https://datawhalechina.github.io/pumpkin-book

书籍

《统计学习方法》李航

读懂西瓜书 14 : 概率图模型相关推荐

  1. 西瓜书学习记录-模型评估与选择(第二章)

    西瓜书学习记录-模型评估与选择 第二章啦 整个过程可以描述为在训练集上去训练,在验证集上去调参,调完参之后再到训练集上去训练,直到结果满意,最后到测试集上去测试. 例子(反例): 上图选择蓝色的线,坏 ...

  2. 【经典书】概率图模型:原理与技术

    来源:专知 本文为书籍,建议阅读5分钟概率图模型将概率论与图论相结合,是当前非常热门的一个机器学习研究方向. 概率图模型将概率论与图论相结合,是当前非常热门的一个机器学习研究方向.<概率图模型: ...

  3. 读懂python代码_读懂花里胡哨的14行Python代码!

    最近在项目里发现一段代码,初看比较难看懂,细看,也还是比较难看懂.遂研究了一下,证实了这段代码确实,没啥作用,遂删之.记录在下. 去掉几个用于封装的函数,保留最小代码后,剩下以下14行代码.你能说出这 ...

  4. 一文读懂经典卷积网络模型——LeNet-5模型(附代码详解、MNIST数据集)

    欢迎关注微信公众号[计算机视觉联盟] 获取更多前沿AI.CV资讯 LeNet-5模型是Yann LeCun教授与1998年在论文Gradient-based learning applied to d ...

  5. 西瓜书笔记之 模型评估与选择

    讲真,这书是越看觉得自己不会的越多,感觉好多概念,完全不是理工男喜欢的样子.. 首先了解一下NP问题,机器学习面临的问题多是NP完全问题(NP-C问题),号称世界七大数学难题之一. NP的英文全称是N ...

  6. 西瓜书第二章 模型评估与选择

    第2章 模型评估与选择 2.1 经验误差与过拟合 学习器在训练集上的误差称为"训练误差"或"经验误差",在新样本上的误差称为"泛化误差":过 ...

  7. 【机器学习百科全书目录】PRML ESL MLAPP 西瓜书 花书 RLAI 统计学习方法 蒲公英书

    文章目录 机器学习百科全书目录 Pattern Recognition and Machine Learning The Elements of Statistical Learning (Secon ...

  8. 让预训练语言模型读懂数字:超对称技术发布 10 亿参数 BigBang Transformer [乾元]金融大规模预训练语言模型

    导读:超对称技术公司发布10亿参数金融预训练语言模型BigBang Transformer[乾元].BBT大模型基于时序-文本跨模态架构,融合训练文本和时序两种模态数据,下游任务准确率较T5同级别模型 ...

  9. 让预训练语言模型读懂数字:超对称技术联合复旦知识工场等发布10亿参数BigBang Transformer[乾元]金融大规模预训练语言模型

    目录 1.通用大模型的缺陷 2.专注于融合训练时序-文本跨模态的预训练模型算法架构 3.学术和工业界覆盖最完整,规模最大的金融投资类数据集 4.创新的预训练方法可大幅提高语言模型准确度:Similar ...

  10. 【读过的书】《杠杆阅读术》

    杠杆阅读术 作者:叶冰婷 译 2018.4.15 整理 所谓的100倍就是1500日元变成15万日元:换句话说,1500元的书中,隐藏着15万日元的价值.再没有像读书这么廉价的自我投资了. 就是因为没 ...

最新文章

  1. Nginx 模块的使用
  2. 注入器 过检测_连云港管道检测服务
  3. java压缩源代码_【免费毕设】JAVA文件压缩与解压缩实践(源代码+论文)
  4. DM8168的SPI接口
  5. 添加到界面前获取尺寸
  6. 推荐系统组队学习——矩阵分解和FM
  7. Javascript数组函数库
  8. linux内存测试工具memtest,linux内存测试工具memtester使用
  9. URL编码(urlencoding)中关于空格的问题
  10. 非标准的CAN波特率计算
  11. Ardunio开发实例-MSA301三轴加速计
  12. 申论(基础题)之应用文写作
  13. Nginx的配置与开发学习(五):配置属于自己的HTTPS证书
  14. 高德地图API定位失败(浏览器定位、IP定位)
  15. 抖音素材哪里下-抖音素材哪里找-短视频素材库
  16. 有了vb.net,C#就是个鸡肋
  17. SSM+老年人社区服务平台 毕业设计-附源码211711
  18. Python调用谷歌翻译接口
  19. fiddler无法抓取微信小程序的请求信息
  20. 快来直播:互联网内容运营人员的文案写作技巧

热门文章

  1. 3个传教士与3个野人,哥带你们过河去
  2. Linux设置 鼠标滚轮方向,如何在Ubuntu中反转鼠标滚动方向(又名自然滚动) | MOS86...
  3. java 文件夹排序_Java 文件夹遍历与排序
  4. python画e指数函数_python绘制指数函数
  5. WIN10设置护眼 豆沙绿
  6. Mysql(2)事务
  7. 计算机课代表总结,计算机班的班主任工作总结.doc
  8. 大芒果单机修改服务器名字,大芒果服务器怎么创建GM账号?
  9. 【华为二面】2020/3/25_华为第二次技术面试_45分钟
  10. html 小喇叭图标,小喇叭不见了怎么办(小喇叭图标不见了的原因及解决办法)...