配分函数|机器学习推导系列(二十六)

一、概述

对于有向概率图模型来说,由于图中存在天然的拓扑排序关系,所以有向概率图的因式分解的形式很容易写出来。而对于无向图来说就需要根据它图中的最大团来写成一个因式分解的形式,无向图模型在局部并没有表现出是一个概率模型,在整体上才表现地是一个概率模型,由此我们也就遇到了配分函数。在无向图模型的学习和评估问题中,我们会面对概率公式中的配分函数(Partition Function),往往这个配分函数是很难处理的。

对于连续或离散的高维随机变量x\in \mathbb{R}^{p}\; or\; \left \{0,1,\cdots ,k\right \}^{p},它可以表示成一个无向概率图,模型参数为\theta,它的概率公式也就可以写成以下形式:

P(x;\theta )=\frac{1}{Z(\theta )}\hat{P}(x;\theta )

其中Z(\theta )也就是配分函数,可以表示为:

Z(\theta )=\hat{P}(x;\theta )\mathrm{d}x

对于这个概率模型的参数估计,可以采用极大似然估计的方法,首先,我们有一些样本,表示为X=\left \{x_{i}\right \}_{i=1}^{N},然后使用这些样本来做极大似然估计:

\hat{\theta }=\underset{\theta }{argmax}\; P(X;\theta )\\ =\underset{\theta }{argmax}\prod_{i=1}^{N}P(x_{i};\theta )\\ =\underset{\theta }{argmax}\; log\prod_{i=1}^{N}P(x_{i};\theta )\\ =\underset{\theta }{argmax}\sum_{i=1}^{N} logP(x_{i};\theta )\\ =\underset{\theta }{argmax}\sum_{i=1}^{N}\left (log\hat{P}(x_{i};\theta )-logZ(\theta )\right ) \\ =\underset{\theta }{argmax}\sum_{i=1}^{N}log\hat{P}(x_{i};\theta )-NlogZ(\theta )\\ =\underset{\theta }{argmax}\underset{记作l(\theta )}{\underbrace{\frac{1}{N}\sum_{i=1}^{N}log\hat{P}(x_{i};\theta )-logZ(\theta )}}

这里我们也就得到了目标函数l(\theta )

l(\theta )=\frac{1}{N}\sum_{i=1}^{N}log\hat{P}(x_{i};\theta )-logZ(\theta )

接下来使用梯度上升的方法来求解参数\theta,因此也就需要对l(\theta )求导:

\nabla _{\theta }l(\theta )=\underset{①}{\underbrace{\frac{1}{N}\sum_{i=1}^{N}\nabla _{\theta }log\hat{P}(x_{i};\theta )}}-\underset{②}{\underbrace{\nabla _{\theta }logZ(\theta )}}

这里我们首先看一下②这一项的求导:

②=\nabla _{\theta }logZ(\theta )\\ ={\color{Red}{\frac{1}{Z(\theta )}}}{\color{Blue}{\nabla _{\theta }Z(\theta )}}\\ ={\color{Red}{\frac{P(x;\theta )}{\hat{P}(x;\theta )}}}{\color{Blue}{\nabla _{\theta }\int \hat{P}(x;\theta )\mathrm{d}x}}\\ =\frac{P(x;\theta )}{\hat{P}(x;\theta )}\int \nabla _{\theta }\hat{P}(x;\theta )\mathrm{d}x\\ =\int \frac{P(x;\theta )}{\hat{P}(x;\theta )}\nabla _{\theta }\hat{P}(x;\theta )\mathrm{d}x\\ =\int P(x;\theta )\nabla _{\theta }log\hat{P}(x;\theta )\mathrm{d}x\\ =E_{P(x;\theta )}\left [\nabla _{\theta }log\hat{P}(x;\theta )\right ]

注意这里的\frac{P(x;\theta )}{\hat{P}(x;\theta )}之所以能够放到积分号里面,是因为对于任意x来说\frac{P(x;\theta )}{\hat{P}(x;\theta )}都是个常数。

上面式子之所以这么变换的目的也就是要将这个导数写成关于P(x;\theta )的期望的形式,然而P(x;\theta )正是我们要求解的分布,是一个未知的分布,因此没办法精确求解,也就没办法计算这个梯度\nabla _{\theta }l(\theta ),只能近似采样。如果没有②这一项,l(\theta)就可以采用梯度上升,但是由于存在配分函数就无法直接采用梯度上升了。以上就是问题所在。

二、随机最大似然(Stochastic Maximum Likelihood)

现在我们可以把\nabla _{\theta }l(\theta )下面的形式:

\nabla _{\theta }l(\theta )=\frac{1}{N}\sum_{i=1}^{N}\nabla _{\theta }log\hat{P}(x_{i};\theta )-E_{P(x;\theta )}\left [\nabla _{\theta }log\hat{P}(x;\theta )\right ]

对于我们的训练数据,我们可以把它们看做服从一个分布P_{data},这个分布也就是训练数据的真实分布,是我们要去拟合的分布,然而也是一个我们永远不可能真正精确得到的分布,因为我们能够拿到的只有这个分布的若干样本(也就是训练数据)。有了P_{data}这个定义以后,我们也可以把上面梯度中减号左边的一项写成期望的形式:

\nabla _{\theta }l(\theta )={\color{Red}{E_{P_{data}}}}\left [\nabla _{\theta }log\hat{P}(x;\theta )\right ]-E_{P(x;\theta )}\left [\nabla _{\theta }log\hat{P}(x;\theta )\right ]

我们的目的也就是要让P(x;\theta )尽可能地逼近P_{data},这个P(x;\theta )也就是我们的模型,所以我们把P(x;\theta )这个分布记作P_{model},现在我们就有了两个定义的分布,即数据的真实分布P_{data}和用来拟合P_{data}P_{model}

\left\{\begin{matrix} data\; distribution:P_{data}\\ model\; distribution:P_{model}\triangleq P(x;\theta ) \end{matrix}\right.

现在\nabla _{\theta }l(\theta )就可以写成\nabla _{\theta }log\hat{P}(x;\theta )关于P_{data}P_{model}的期望的形式:

\nabla _{\theta }l(\theta )=\underset{positive\; phase}{\underbrace{{\color{Red}{E_{P_{data}}}}\left [\nabla _{\theta }log\hat{P}(x;\theta )\right ]}}-\underset{negative\; phase}{\underbrace{{\color{Red}{E_{P_{model}}}}\left [\nabla _{\theta }log\hat{P}(x;\theta )\right ]}}

这里分别定义等号左边和右边的部分为正相(positive phase)和负相(negative phase)。

我们期待使用梯度上升法来迭代地求解最优的\theta

\theta ^{(t+1)}=\theta ^{(t)}+\eta \nabla _{\theta }l(\theta ^{(t)})

对于负相来说,我们无法对这个期望值积分,因此只能采用近似的方法,也就是在每次迭代时利用MCMC的方法(比如吉布斯采样)从P_{model}=P(x;\theta ^{(t)})里采样得到样本,然后利用这些样本来近似计算负相这个积分值。这里采样得到的M个样本记作\left \{\hat{x}_{i}\right \}_{i=1}^{m},这些样本叫做幻想粒子(fantacy particles):

\left.\begin{matrix} \hat{x}_{1}\sim P(x;\theta ^{(t)})\\ \vdots \\ \hat{x}_{m}\sim P(x;\theta ^{(t)}) \end{matrix}\right\}fantacy\; particles

有了这些样本就可以计算负相,也就是说现在就可以用梯度上升的方法来迭代求解参数\theta了,以下就是迭代求解的公式(这里也会从训练集中抽m个样本):

\theta ^{(t+1)}=\theta ^{(t)}+\eta \left (\sum_{i=1}^{m}\nabla _{\theta }log\hat{P}(x_{i};\theta ^{(t)})-\sum_{i=1}^{m}\nabla _{\theta }log\hat{P}(\hat{x}_{i};\theta ^{(t)})\right )

这个方法就叫做Gradient Ascent based on MCMC。

上面介绍的内容中引入了几个不容易理解的名词:正相、负相和幻想粒子,现在可以直观地解释一下这几个名词的含义。\nabla _{\theta }l(\theta ^{(t)})中存在正相和负相,对比目标函数l(\theta )的表达式可以直观地理解这样命名的用意。

正相的作用是让模型分布在训练样本处概率增大,也就是从P_{data}中采样,然后让这些样本在P_{model}中的概率增大。负相的作用是让Z(\theta)的值变小,也就是说要让从P_{model}中采样出来的幻想粒子在P_{model}中的概率减小,这些样本可以认为我们是不信任它的,称它们是fantasy的,因此要让它们的概率减小。正相和负相共同作用,最终结果就会让P_{model}逼近P_{data},这个过程可以由下图表示:

正负相的作用

可以想象如果P_{model}已经非常逼近P_{data},那么采样得到的幻想粒子和从数据集中采样的样本就会非常一致,这时对这些样本既要增大它们的概率也要压低它们的概率,此时正相和负相的作用就会抵消,也就不会再产生梯度,训练也就必须停止。

三、对比散度

对于MCMC的方法,可以参考这两个链接:
MCMC-1|机器学习推导系列(十五)
MCMC-2|机器学习推导系列(十六)

上面的目标函数需要从P_{data}P_{model}里面都采样m个样本,从P_{data}里面采样是很容易的,只需要从训练数据中抽取m个训练数据,而从P_{model}中采样就要采用MCMC的方法,具体的操作就是使用一个初始分布初始化马尔可夫链,然后等马尔可夫链随机游走到达平稳分布时进行采样,这里可以构建一条马尔可夫链然后从中采集m个样本,也可以构建m条马尔可夫链然后从每条马尔可夫链中采集一个样本(只不过这样比较消耗资源)。上述MCMC方法的问题是对于高维数据分布,很可能马尔可夫链的混合时间(或者叫燃烧期)会非常地长。

下图展示了采样多条马尔可夫链的吉布斯采样方法的过程,假设燃烧期是k,由于数据维度过高,很可能k就会非常大,我们可以认为是无穷大\infty。这里也要注意,吉布斯采样的过程是对高维随机变量的每一维依次采样,因此这里的图中的每个step其实都表示高维随机变量每一维采样的过程:

\left.\begin{matrix} \overset{mixing\; time}{\overbrace{\underset{0-step}{\bigcirc} \rightarrow \underset{1-step}{\bigcirc}\rightarrow \cdots \underset{k-step}{\bigcirc}}}\rightarrow \cdots \bigcirc\rightarrow \hat{x}_{1}\\ \vdots \\ \underset{0-step}{\bigcirc} \rightarrow \underset{1-step}{\bigcirc}\rightarrow \cdots \underset{k-step}{\bigcirc}\rightarrow \cdots \bigcirc\rightarrow \hat{x}_{m} \end{matrix}\right\}Gibbs\; Sampling

对比散度(Contrastive Divergence)的方法可以避免燃烧期过长的问题,在上面的抽样过程中需要为0-step的\hat{x}_{i}按照一个初始化分布进行初始化,而对比散度的方法就是使用P_{data}这个分布来作为初始化分布,具体的做法也就是从训练数据中抽取m个样本来初始化这m条马尔可夫链,也就是:

\hat{x}_{1}=x_{1},\hat{x}_{2}=x_{2},\cdots ,\hat{x}_{m}=x_{m}

使用P_{data}初始化马尔可夫链以后只需要经过很短的几步就可以采集样本了,比如经过k步就开始采样,即使k=1也是可以的。总之,对比散度的方法与普通的直接MCMC采样的方法的区别就在于使用了P_{data}初始化马尔可夫链,然后不用等漫长的混合时间,只需要k步就可以采样了,无论k步时有没有达到平稳分布,而k=1,2,3等很小的数字也是可以的。这种对比散度的方法就叫做CD Learning,之前的方法叫做ML Learning。

接下来来看看对比散度这个名字的由来。首先,先看这个式子:

\hat{\theta }=\underset{\theta }{argmax}\frac{1}{N}\sum_{i=1}^{N}logP(x;\theta )\\ =\underset{\theta }{argmax}E_{P_{data}}\left [logP_{model}\right ]\\ =\underset{\theta }{argmax}\int P_{data}logP_{model}\mathrm{d}x\\ =\underset{\theta }{argmax}\int P_{data}logP_{model}\mathrm{d}x-\underset{与\theta 无关}{\underbrace{\underset{\theta }{argmax}\int P_{data}logP_{data}\mathrm{d}x}}\\ =\underset{\theta }{argmax}\int P_{data}log\frac{P_{model}}{P_{data}}\mathrm{d}x \\ =\underset{\theta }{argmax}-KL(P_{data}||P_{model})\\ =\underset{\theta }{argmin}KL(P_{data}||P_{model})

可以看到,原来的极大似然估计的方法其实是在最小化P_{data}P_{model}的KL散度。而现在在对比散度的方法中,我们用P_{data}作为第0步的初始化分布,而在经过很长的步数后才能达到平稳分布,我们现在把第0步的分布记作P^{(0)},最终的平稳分布记作P^{(\infty )},而中间的第k步的马尔可夫链的分布记作P^{(k)}。由于现在P_{model}采样的样本来自P^{(k)}而非P^{(\infty )},所以通过这些样本进行的参数估计就不是在最小化KL(P^{(0)}||P^{(\infty )})(也就是KL(P_{data}||P_{model}))了,而是在按照下面式子中的目标函数进行参数估计:

\hat{\theta }=argmin\underset{Contrastive\; Divergence}{\underbrace{\left [KL(P^{(0)}||P^{(\infty )})-KL(P^{(k)}||P^{(\infty )})\right ]}}

这个目标函数就是对比散度。使用CD-Learning的方法的算法如下:

t+1时刻:
①为正相从P_{data}中采样,x_{1},x_{2},\cdots ,x_{m}是采样的数据,也就是训练数据;
②为负相从P_{model}=P(x;\theta ^{(t)})中采样,使用为正相采样的数据初始化马尔可夫链:
\hat{x}_{1}=x_{1},\hat{x}_{2}=x_{2},\cdots ,\hat{x}_{m}=x_{m}
然后使用吉布斯采样从马尔可夫链中第k步的分布抽取m个样本,k可以是很小的数字,甚至是1
\left.\begin{matrix} \underset{0-step}{\bigcirc} \rightarrow \underset{1-step}{\bigcirc}\rightarrow \cdots \underset{k-step}{\bigcirc}\rightarrow \hat{x}_{1}\\ \vdots \\ \underset{0-step}{\bigcirc} \rightarrow \underset{1-step}{\bigcirc}\rightarrow \cdots \underset{k-step}{\bigcirc}\rightarrow \hat{x}_{m} \end{matrix}\right\}Gibbs\; Sampling

四、受限玻尔兹曼机的学习

  1. 表示

受限玻尔兹曼机在前一篇介绍了它的表示和推断问题,参考链接如下:受限玻尔兹曼机|机器学习推导系列(二十五)

它的概率模型如下:

\left\{\begin{matrix} P(h,v)=\frac{1}{Z}exp\left \{-E(h,v)\right \}\\ E(h,v)=-\left (h^{T}Wv+\alpha ^{T}v+\beta ^{T}h\right ) \end{matrix}\right.

其中:

h=\begin{pmatrix} h_{1} & h_{2} & \cdots & h_{m} \end{pmatrix}^{T}\\ v=\begin{pmatrix} v_{1} & v_{2} & \cdots & v_{n} \end{pmatrix}^{T}\\ W=\left [w_{ij}\right ]_{m\times n}\\ \alpha =\begin{pmatrix} \alpha _{1} & \alpha _{2} & \cdots & \alpha _{n} \end{pmatrix}^{T}\\ \beta =\begin{pmatrix} \beta _{1} & \beta _{2} & \cdots & \beta _{m} \end{pmatrix}^{T}

  1. 具有隐变量的能量模型

对于具有隐变量的能量模型来说,我们有的数据是观测变量v的数据,假设数据集是SS的规模是N,即\left |S\right |=N,另外用\theta表示参数(W,\alpha ,\beta ),那么数据的log似然就是:

l(\theta )=\frac{1}{N}\sum _{v\in S}logP(v)

对于概率logP(v),来求它对\theta的梯度,首先对这个概率做一些变换:

logP(v)=log\sum _{h}P(h,v)\\ =log\sum _{h}\frac{1}{Z}exp\left \{-E(h,v)\right \}\\ =log\sum _{h}exp\left \{-E(h,v)\right \}-logZ\\ =\underset{记作①}{\underbrace{log\sum _{h}exp\left \{-E(h,v)\right \}}}-\underset{记作②}{\underbrace{log\sum _{h,v}exp\left \{-E(h,v)\right \}}}

接下来看①和②这两项对参数\theta的导数:

\frac{\partial ①}{\partial \theta }=\frac{\partial}{\partial \theta }log\sum _{h}exp\left \{-E(h,v)\right \}\\ =-\frac{1}{\sum _{h}exp\left \{-E(h,v)\right \}}\sum _{h}exp\left \{-E(h,v)\right \}\frac{\partial E(h,v)}{\partial \theta }\\ =-\sum _{h}\frac{exp\left \{-E(h,v)\right \}}{\sum _{h}exp\left \{-E(h,v)\right \}}\frac{\partial E(h,v)}{\partial \theta }\\ =-\sum _{h}\frac{{\color{Red}{\frac{1}{Z}}}exp\left \{-E(h,v)\right \}}{{\color{Red}{\frac{1}{Z}}}\sum _{h}exp\left \{-E(h,v)\right \}}\frac{\partial E(h,v)}{\partial \theta }\\ =-\sum _{h}\frac{P(h,v)}{\sum _{h}P(h,v)}\frac{\partial E(h,v)}{\partial \theta }\\ =-\sum _{h}P(h|v)\frac{\partial E(h,v)}{\partial \theta }\\ \frac{\partial ②}{\partial \theta }=\frac{\partial}{\partial \theta }log\sum _{h,v}exp\left \{-E(h,v)\right \}\\ =-\frac{1}{\sum _{h,v}exp\left \{-E(h,v)\right \}}\sum _{h,v}exp\left \{-E(h,v)\right \}\frac{\partial E(h,v)}{\partial \theta }\\ =-\sum _{h,v}\frac{exp\left \{-E(h,v)\right \}}{\sum _{h,v}exp\left \{-E(h,v)\right \}}\frac{\partial E(h,v)}{\partial \theta }\\ =-\sum _{h,v}\frac{exp\left \{-E(h,v)\right \}}{Z}\frac{\partial E(h,v)}{\partial \theta }\\ =-\sum _{h,v}P(h,v)\frac{\partial E(h,v)}{\partial \theta }

那么最终logP(v)对参数\theta的梯度为:

\frac{\partial}{\partial \theta }logP(v)=\frac{\partial ①}{\partial \theta }-\frac{\partial ②}{\partial \theta }\\ =\sum _{h,v}P(h,v)\frac{\partial E(h,v)}{\partial \theta }-\sum _{h}P(h|v)\frac{\partial E(h,v)}{\partial \theta }

  1. RBM的log似然梯度

接下来以求解W为例来看RBM的参数学习方法。上面有了logP(v)对参数\theta的梯度,类似地logP(v)对参数w_{ij}的梯度为:

\frac{\partial}{\partial w_{ij}}logP(v)=\sum _{h,v}P(h,v)\frac{\partial E(h,v)}{\partial w_{ij}}-\sum _{h}P(h|v)\frac{\partial E(h,v)}{\partial w_{ij}}

然后观察一下能量函数E(h,v)

E(h,v)=-(h^{T}Wv+\underset{与W无关,记作\Delta }{\underbrace{\alpha ^{T}v+\beta ^{T}h}})\\ =-(h^{T}Wv+\Delta )\\ =-(\sum_{i=1}^{m}\sum_{i=1}^{n}h_{i}w_{ij}v_{j}+\Delta )

那么\frac{\partial E(h,v)}{\partial w_{ij}}也就很容易写出来:

\frac{\partial E(h,v)}{\partial w_{ij}}=-h_{i}v_{j}

代入\frac{\partial}{\partial w_{ij}}logP(v)就有:

\frac{\partial}{\partial w_{ij}}logP(v)=\sum _{h,v}P(h,v)(-h_{i}v_{j})-\sum _{h}P(h|v)(-h_{i}v_{j})\\ =\underset{记作①}{\underbrace{\sum _{h}P(h|v)h_{i}v_{j}}}-\underset{记作②}{\underbrace{\sum _{h,v}P(h,v)h_{i}v_{j}}}

有一点要回忆一下,就是RBM无论隐变量还是观测变量都是二值的,取值只能是01。接下来对①和②继续进行变换,需要利用这一点:

①=\sum _{h_{1}}\sum _{h_{2}}\cdots \sum _{h_{i}}\cdots \sum _{h_{m}}P(h_{1},h_{2},\cdots ,h_{i},\cdots ,h_{m}|v)h_{i}v_{j}\\ =\sum _{h_{i}}P(h_{i}|v)h_{i}v_{j}\\ =P(h_{i}=1|v)1\cdot v_{j}+P(h_{i}=0|v)0\cdot v_{j}\\ =P(h_{i}=1|v)v_{j}\\ ②=\sum_{h}\sum_{v}P(h,v)h_{i}v_{j}\\ =\sum_{h}\sum_{v}P(v)P(h|v)h_{i}v_{j}\\ =\sum_{v}P(v)\underset{同①}{\underbrace{\sum_{h}P(h|v)h_{i}v_{j}}}\\ =\sum_{v}P(v)P(h_{i}=1|v)v_{j}

因此也就有:

\frac{\partial}{\partial w_{ij}}logP(v)=P(h_{i}=1|v)v_{j}-\sum_{v}P(v)P(h_{i}=1|v)v_{j}

对于上面式子中的P(h_{i}=1|v)这个条件概率,我们是可以直接写出来的,这个概率在上一篇的推断问题中已经推导过了,可以参照本节开头的链接。

  1. RBM的CD-k方法

所有样本的log似然l(\theta)w_{ij}的梯度现在就可以表示为:

\frac{\partial l(\theta)}{\partial w_{ij}}=\frac{1}{N}\sum _{v\in S}\frac{\partial}{\partial w_{ij}}logP(v)\\ =\frac{1}{N}\sum _{v\in S}(P(h_{i}=1|v)v_{j}-\underset{E_{P(v)}\left [P(h_{i}=1|v)v_{j}\right ]}{\underbrace{{\color{Red}{\sum_{v}P(v)P(h_{i}=1|v)v_{j}}}}})

这里红色的项需要对v进行积分,是untrackable的,这一项其实也就是关于P(v)的期望,因此需要借助MCMC(这里指CD-k的方法,因为RBM里的随机变量也是高维的,只用MCMC也会面临燃烧期过长的问题)的方法。

使用的采样方法还是吉布斯采样,这里具体的采样过程如下图所示,首先使用训练数据来初始化v^{(0)},然后固定v^{(0)}来依次采样h^{(0)}的每一维,然后固定h^{(0)}再来依次采样v^{(1)}的每一维,按照如此流程进行k步,最终采样得到v^{(k)}这一个样本,这种固定一部分来采另一部分的方法叫做块吉布斯采样(block Gibbs Sampling):

CD-k

需要注意的是虽然按照吉布斯采样的方法需要依次采集每一个维度,但在RBM中由于模型的特殊性,在固定v或者h时,其余的随机变量都是相互独立的,因此实际操作中并行采每一维也是可以的。

另外我们一共有N个训练数据,因此使用每个训练数据初始化一次都可以采集到一个v^{(k)},因此最终采集到的v^{(k)}一共有N个。

具体的CD-k for RBM算法为:

for each v
  v^{(0)}\leftarrow v
  for l=0,1,2,\cdots ,k-1
    for i=1,2,\cdots ,m:sample h_{i}^{(l)}\sim P(h_{i}|v^{(l)})
    for j=1,2,\cdots ,n:sample v_{j}^{(l+1)}\sim P(v_{j}|h^{(l)})
  for i=1,2,\cdots ,m,j=1,2,\cdots ,n
    \Delta w_{ij}\leftarrow \Delta w_{ij}+\frac{\partial}{\partial w_{ij}}logP(v)

这里的\Delta w_{ij}初始化为0,这里的\frac{\partial}{\partial w_{ij}}logP(v)也就是:

\frac{\partial}{\partial w_{ij}}logP(v)\approx P(h_{i}=1|v^{(0)})v_{j}^{(0)}-P(h_{i}=1|v^{(k)})v_{j}^{(k)}

也就是说用每个训练数据采样得到的样本对应的P(h_{i}=1|v^{(k)})v_{j}^{(k)}来代替期望E_{P(v)}\left [P(h_{i}=1|v)v_{j}\right ],并且将所有训练数据计算得到的\frac{\partial}{\partial w_{ij}}logP(v)累计起来得到的\Delta w_{ij}作为\frac{\partial l(\theta)}{\partial w_{ij}}的近似值,即:

\frac{\partial l(\theta)}{\partial w_{ij}}=\frac{1}{N}\sum _{v\in S}\frac{\partial}{\partial w_{ij}}logP(v)\approx \frac{1}{N}\Delta w_{ij}

最后进行梯度上升迭代求解就可以了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容